以太坊中的賬戶、交易、Gas和區塊Gas Limit等基本概念

什么是賬戶

以太坊賬戶與我們所知的賬戶概念有一定相似之處,卻又有很大的區別,更不同于比特幣中UTXO。

賬戶分兩類:

- 外部擁有賬戶(EOA),也就是普通賬戶

- 合約賬戶

普通賬戶

所謂的普通賬戶就是我們存放以太幣的賬戶,可以隨意生成,它具有以下特性:

?- 擁有以太幣余額(以太幣存放的地方,與比特幣的UTXO模式不同)的balance。

?- 用于確定每筆交易只能被處理一次的計數器(nonce)。

?- 發送交易(以太幣轉賬、發布合約、調用智能合約)

- 通過私鑰控制

- 沒有相關聯的代碼

合約賬戶

合約賬戶也是最激動人心的概念和底層代碼實現,它是功能和數據的集合,存在于以太坊的特定地址(發布智能合約的地址上),擁有以下特性:

- 擁有以太幣余額

- 有相關聯的代碼

- 通過交易或消息調用的方式觸發并由以太坊虛擬機(EVM)解釋執行

- 當被執行時:

- 運行在隨機復雜度(圖靈完備性)

- 只能操作其擁有的特定儲存,例如可以擁有其永久state

- 可以call其他合約

所有以太坊區塊鏈上的操作都是由各賬戶發起的交易來出發。智能合約賬戶收到一筆交易,交易所帶的參數都會成為代碼的入參。合約代碼會被以太坊虛擬機(EVM)在每一個參與網絡的節點上運行,以作為它們新區塊的驗證。

交易和消息

交易

“交易”術語通俗來講就是一個賬戶向另外一個賬戶發送一筆被簽名的消息數據包的過程,區塊鏈會記錄并存儲相應的數據。延伸一下,調用智能合約改變一個合約賬戶的數據狀態,也是一筆交易,同樣需要花費手續費。

交易包括:?

- 消息的發送者

- 消息的接收者

- 簽名信息,用來證明發送者有意向通過區塊鏈向接收者發送消息

- 價值域,從發送方轉移到接受方的以太幣的數量

- 可選的數據域,用來儲存智能合約或調用智能合約的代碼

- gasLimit,該交易的執行時使用gas的上限

- gasPrice,交易發送者愿意支付的gas費用的價格。一個單位的gas表示了執行一個基本指令,例如一個計算步驟。

消息

合約具有發送”消息”到其他合約的能力。

消息是一個永不串行且只在以太坊執行環境中存在的虛擬對象。它們可以被理解為函數調用(function calls)。曾有人咨詢,智能合約是否可以調用比特幣轉賬,這里的解釋已經給出了明確的答復。

消息包括:

?- 消息發送者

- 消息的接收者

- 可選的數據域,合約實際上的輸入數據 - gasLimit,同交易。

總體來說,一個消息就是一筆交易,除了它不是由外部賬戶生成,而是合約賬戶生成。當合約正在執行的代碼中運行了call 或者delegatecall這兩個命令時,就會生成一個消息。消息有的時候也被稱為”內部交易”。與一個交易類似,一個消息會引導接收的賬戶運行它的代碼。因此,合約賬戶可以與其他合約賬戶發生關系。

什么是gas

以太坊的運行環境,也被稱為以太坊虛擬機(EVM)。每個參與到網絡的節點都會運行EVM作為區塊驗證協議的一部分。每個網絡中的全節點都會進行相同的計算并儲存相同的值。合約執行會在所有節點中被多次重復,而且任何人都可以發布執行合約,這使得合約執行的消耗非常昂貴,所以為防止以太坊網絡發生蓄意攻擊或濫用的現象,以太坊協議規定交易或合約調用的每個運算步驟都需要收費。。這筆費用以gas作為單位計數,也就是俗稱的燃料。

gas和交易消耗的gas

每筆交易都包含gas limit和gas price。礦工可以有選擇的打包這些交易并收取這些費用。gasprice 會影響到該筆交易被打包所需等待的時間。如果該交易的操作所使用的gas數量小于或等于所設置的gas limit,交易會被處理。但如果gas總消耗超過gas limit,所有的操作都會被重置,但手續費依舊會被收取。區塊鏈會顯示這筆交易完成嘗試,但因為沒有提供足夠的gas導致所有的合約命令都被復原。交易完成之后沒有被使用的gas會以以太幣的形式返還給發起者。gas消耗只是一個預估值,所以許多用戶會超額支付gas來保證他們的交易會被接受。

估算交易消耗

交易費由兩部分組成:

gasUsed:該交易消耗的總gas數量

gasPrice:該交易中單位gas的價格(用以太幣計算)

交易費 = gasUsed * gasPrice

gasUsed

每個EVM中的命令都被設置了相應的gas消耗值。gasUsed是所有被執行的命令的gas消耗值總和。如果希望估算gasUsed,可以web3.eth.estimateGas。

gasPrice

用戶可以自行設置的gasPrice的價格。由于網絡擁堵等多種情況,此價格會動態變化,可根據交易字節數和當前區塊中打包的平均值進行大概的預估。

交易案例

可以將gasLimit理解為你汽車油箱的上限。同時將gasPrice理解為油價。

對于一輛車來說,油價可能是2.5(價格)每升(單位)。在以太坊中,就是20GWei(價格)每gas(單位)。為了填滿你的"油箱",需要10升 2.5(價格)每升(單位)。在以太坊中,就是20GWei(價格)每gas(單位)。為了填滿你的"油箱",需要10升2.5(價格)每升(單位)。在以太坊中,就是20 GWei(價格)每gas(單位)。為了填滿你的"油箱",需要 10升2.5的油 = $25。同樣的,21000個20 GWei的gas = 0.00042 ETH。

以太幣單位換算

gas limit

區塊gas limit是單個區塊允許的最多gas總量,以此可以用來決定單個區塊中能打包多少筆交易。

例如,我們有5筆交易的gas limit分別是10、20、30、40和50.如果區塊gas limit是100,那么前4筆交易就能被成功打包進入這個區塊。礦工有權決定將哪些交易打包入區塊。所以,另一個礦工可以選擇打包最后兩筆交易進入這個區塊(50+40),然后再將第一筆交易打包(10)。如果你嘗試將一個會使用超過當前區塊gas limit的交易打包,這個交易會被網絡拒絕,你的以太坊客戶端會反饋錯誤”交易超過區塊gas limit”。

目前使用的gas limit為21000。

區塊的gas limit是由在網絡上的礦工決定的。與可調整的區塊gas limit協議不同的是一個默認的挖礦策略,即大多數客戶端默認最小區塊gas limit為4,712,388。

以太坊網絡上的”DoS”攻擊

最近有些評論表示以太坊網絡正在慢慢減速,變得擁堵甚至無法使用。這些評論把這個減速的過程稱為對以太坊網絡的”DoS”攻擊。當以太坊網絡上持續地出現全滿區塊并且有大量交易在網絡上待處理時就會出現所謂的DoS情況。同時,礦工有權利根據交易費選擇打包哪些交易。如果當時隊列中(交易池中)有上千筆交易正在等待打包,那么就有可能造成幾個小時的非正常交易延遲。DDoS可能是惡意的也有可能是非惡意的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容