国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記(五) ——以太坊的交易、共識機制和數(shù)據(jù)結(jié)構(gòu)

這篇具有很好參考價值的文章主要介紹了《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記(五) ——以太坊的交易、共識機制和數(shù)據(jù)結(jié)構(gòu)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記 第五部分

  • 5. 以太坊交易
    • 5.1 交易內(nèi)容
    • 5.2 交易費用
    • 5.3 交易的周期
    • 5.4 交易的執(zhí)行類型
  • 6. 以太坊的共識機制
    • 6.1 解決以太坊分叉:Ghost協(xié)議
    • 6.2 新的共識機制:PoS
  • 7. 以太坊挖礦難度調(diào)整
    • 7.1 自適應(yīng)難度調(diào)整
    • 7.2 難度炸彈
  • 8. 數(shù)據(jù)結(jié)構(gòu)與存儲
    • 8.1 區(qū)塊和叔塊
    • 8.2 默克爾前綴樹(Merkle Patricia Trie)
    • 8.3 布隆過濾器(Bloom Filter)

5. 以太坊交易

以太坊中,交易承載了賬戶轉(zhuǎn)賬和合約創(chuàng)建、調(diào)用合約等功能。

5.1 交易內(nèi)容

交易中的數(shù)據(jù)大體分為基本的交易、交易的執(zhí)行參數(shù)、交易的簽名三個部分。

基本交易內(nèi)容

  • From:交易發(fā)送者的地址,實際上由簽名中的<r,s,v>計算得到。
  • To:交易接收者的地址。創(chuàng)建合約時設(shè)置為0x0000,調(diào)用合約時是合約的地址。
  • Value:交易的金額。1Ether = 10^18 Wei。

交易的執(zhí)行參數(shù)

  • Input Data:交易附帶數(shù)據(jù),傳遞創(chuàng)建合約的代碼/構(gòu)造函數(shù)、調(diào)用合約的函數(shù)和參數(shù)。
  • Nonce:交易發(fā)送者的Nonce。
  • MaxFeePerGas:發(fā)送者為交易愿意付出的最大price
  • MaxPriorityFeePerGas:給礦工付出的最大小費
  • gasLimit: 交易允許消費的最大gas,解決智能合約不能停機的問題。

交易的簽名

  • hash:由以上字段生成的哈希值
  • r,s,v:由發(fā)送者的私鑰對交易的哈希做數(shù)字簽名而成,用于確認轉(zhuǎn)賬的合法性。

5.2 交易費用

以太坊中交易的的手續(xù)費由Gas機制計算,主要包括以下概念:

  • Gas:計算資源消耗的基礎(chǔ)單位
  • GasLimit:允許消耗的最大Gas值
  • GasUsed:執(zhí)行后消耗的Gas值
  • GasPrice:每個Gas的以太幣價格

其中交易的Gas由基礎(chǔ)的交易Gas加上EVM運行時消耗的Gas值累加得到。當(dāng)GasUsed超過GasLimit,交易執(zhí)行失敗。
交易的GasUsed*GasPrice就是用戶為交易支付的手續(xù)費。

5.3 交易的周期

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)

1.發(fā)起

  • 用戶輸入from,to,value,data,gasPrice等
  • 用戶確認發(fā)送至以太坊節(jié)點
  • 以太坊錢包軟件為用戶補充gasLimit,nonce,使用私鑰得到r,s,v,最后將交易序列化后發(fā)送到網(wǎng)絡(luò)。

2.廣播

  • 節(jié)點收到/發(fā)起交易后,對交易進行驗證
  • 節(jié)點驗證為合法交易,將交易加入節(jié)點的交易池中
  • 節(jié)點根據(jù)P2P網(wǎng)絡(luò)廣播的策略向相鄰節(jié)點繼續(xù)廣播交易

3.打包與執(zhí)行

  • 全節(jié)點將交易打包,并將交易按順序執(zhí)行
  • 所有需要打包的交易執(zhí)行后,將交易、狀態(tài)、收據(jù)的信息打包到區(qū)塊中。
  • 記賬節(jié)點獲得合法區(qū)塊后,廣播到相鄰節(jié)點

4.驗證與執(zhí)行

  • 沒有獲得記賬權(quán)的節(jié)點在收到廣播的區(qū)塊后,對區(qū)塊進行合法性驗證,并進行交易的執(zhí)行。

5.4 交易的執(zhí)行類型

根據(jù)to值的不同,交易的執(zhí)行分為以下3種:

1.創(chuàng)建合約交易
to為空的交易,交易根據(jù)from和nonce值生成合約地址,并執(zhí)行data中的智能合約代碼。EVM會將代碼存儲到合約地址中。

2.調(diào)用合約交易
to為合約賬戶的交易。EVM獲取to地址中的代碼,并執(zhí)行data中的代碼。
本質(zhì)上來說。對合約的調(diào)用就是對合約狀態(tài)的修改。

3.普通轉(zhuǎn)賬交易
to為人控制的賬戶(外部賬戶),交易直接將以太幣從from轉(zhuǎn)到to

6. 以太坊的共識機制

6.1 解決以太坊分叉:Ghost協(xié)議

叔塊
指不在主鏈但被主鏈記錄的滿足難度的區(qū)塊。礦工在打包區(qū)塊時,可以自主選擇合法的0-2個叔塊。
以太坊中規(guī)定,7代以內(nèi)的有共同祖先的都可以認為是叔父塊。

叔父塊的接納和獎勵規(guī)則

  • 對于主鏈上的區(qū)塊,每個區(qū)塊最多接納2個叔父塊,每接納一個叔父塊,主鏈區(qū)塊獎勵增加1/32。
  • 接納的叔父塊應(yīng)該是主鏈上祖先的直接子塊,且不能重復(fù)接納叔父塊。
  • 被接納的叔父塊,獲得出塊獎勵為1-(接納塊高度-叔父塊高度)/8
  • 叔父塊中的交易不需要執(zhí)行。

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)

叔父塊可以盡量收縮和統(tǒng)一整個區(qū)塊鏈的主鏈,同時維護礦工的積極性。

6.2 新的共識機制:PoS

權(quán)益證明(Proof-of-Stake):持有幣的數(shù)量和占有幣數(shù)的時間來決定你獲得本次記賬權(quán)利的概率。持有越多,獲得記賬概率越大。

相比PoW縮短了達成共識時間,節(jié)省能源,但是容易分叉和中心化。

7. 以太坊挖礦難度調(diào)整

挖礦難度的公式為:
H = 0 , D ( H ) = 0 D ( H ) = m a x ( D 0 , P ( H ) H d + x × ζ 2 ) + ? H=0,D(H)=0 \\ D(H)=max(D_0,P(H)_{H_d}+x × \zeta_2)+\epsilon H=0,D(H)=0D(H)=max(D0?,P(H)Hd??+x×ζ2?)+?
其中 P ( H ) H d P(H)_{H_d} P(H)Hd??是父區(qū)塊的難度, x × ζ 2 x×\zeta_2 x×ζ2? 用于自適應(yīng)調(diào)節(jié)出塊難度, ? \epsilon ?表示設(shè)定的難度炸彈

基礎(chǔ)部分有下界,最小值為 D 0 = 131072 D_0=131072 D0?=131072

7.1 自適應(yīng)難度調(diào)整

x = ? P ( H ) H d 2048 ? , ? ζ 2 = m a x ( y ? ? H s ? P ( H ) H s 9 ? , ? 99 ) x= \left\lfloor \frac{P(H)_{H_d}}{2048} \right\rfloor, \ \zeta_2=max \left( y-\left\lfloor \frac{H_s-P(H)_{H_s}}{9} \right\rfloor, -99 \right) x=?2048P(H)Hd????,?ζ2?=max(y??9Hs??P(H)Hs????,?99)
x為調(diào)整的單位, ζ 2 \zeta_2 ζ2? 為調(diào)整的系數(shù)
如果父區(qū)塊中包含uncle,y為2,否則為1
H s H_s Hs?是本區(qū)塊的時間戳, P ( H ) H s P(H)_{H_s} P(H)Hs??是父區(qū)塊的時間戳,并規(guī)定 H s > P ( H ) H s H_s > P(H)_{H_s} Hs?>P(H)Hs??

7.2 難度炸彈

? = ? 2 ? H i ′ / 100 , 000 ? ? 2 ? , ? H i ′ = m a x ( H i ? 30 , 000 , 000 ) \epsilon = \left\lfloor 2^{\lfloor H'_i / 100,000 \rfloor -2} \right\rfloor, \ H'_i=max(H_i-30,000,000) ?=?2?Hi?/100,000??2?,?Hi?=max(Hi??30,000,000)
? \epsilon ? 是2的指數(shù)函數(shù)。每100000塊擴大一倍

設(shè)置難度炸彈是為了降低遷移到PoS協(xié)議時發(fā)生fork的風(fēng)險,引導(dǎo)礦工有意愿遷移到PoS。

8. 數(shù)據(jù)結(jié)構(gòu)與存儲

8.1 區(qū)塊和叔塊

以太坊區(qū)塊的區(qū)塊頭包括:

  • 記錄以太坊狀態(tài)的狀態(tài)根
  • 交易列表、收據(jù)列表、父塊和叔塊的哈希值
  • 區(qū)塊號、難度、礦工地址、時間戳、Nonce值
  • gas上限、交易gas之和、工作量證明摘要
  • 可變長度字段

以太坊區(qū)塊體的內(nèi)容:

  • 由交易組成的TX列表
  • 有交易執(zhí)行信息組成的收據(jù)列表
  • 用于改進以太坊共識過程的叔塊列表

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)

世界狀態(tài)
以太坊中所有賬戶的狀態(tài)的匯總,也就是區(qū)塊頭的狀態(tài)根,通過一個特殊的樹狀哈希數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。

收據(jù)
對應(yīng)交易的數(shù)據(jù)結(jié)構(gòu),代表交易執(zhí)行的一些中間狀態(tài)寫入交易的執(zhí)行結(jié)果等信息。
收據(jù)的內(nèi)容包括:

  • 以太坊的智能合約向EVM輸出的執(zhí)行日志
  • 智能合約執(zhí)行的Gas
  • 單個交易執(zhí)行完畢后以太坊的狀態(tài)根
  • 如果交易創(chuàng)建合約,收據(jù)中寫入新建合約的地址

8.2 默克爾前綴樹(Merkle Patricia Trie)

由于以太坊潛在的賬戶數(shù)量巨大,單使用Merkle Tree無法存儲數(shù)據(jù),且修改成本高,因此以太坊使用了十六叉壓縮前綴樹,作為地址到賬戶的索引,然后利用Merkle Tree將每一層節(jié)點合并計算節(jié)點的哈希值,最后得到根哈希值。

壓縮前綴樹
普通的字典樹(Trie)為每一個字母作為樹的節(jié)點,這樣導(dǎo)致樹的高度太高,浪費存儲空間;壓縮前綴樹(Patricia Trie)將共同的前綴部分組成一個子樹,逐級向下劃分,提高了查找效率。

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)

MPT
在MPT中,“單詞”對應(yīng)賬戶的哈希值,“指針”對應(yīng)哈希指針。葉子節(jié)點記錄(前綴+賬戶哈希值)的哈希值,父節(jié)點的哈希值為(前綴+子分支)的哈希值。

以下圖為例:
H1=H(“”+賬戶1的哈希值),H3=H(d+賬戶3的哈希值)
H5=H(bc+H1+H2+“”+“”+…+“”)
H6=H(b+H4+…+“”+H3+“+”“)
H_root=H(”“+…+”“+H5+…+”“+H6+”")

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)

狀態(tài)樹
以太坊的狀態(tài)樹記錄各個賬號的狀態(tài),當(dāng)狀態(tài)改變后只會影響對應(yīng)分支的狀態(tài),區(qū)塊存儲對應(yīng)狀態(tài)樹的狀態(tài)根。

合約存儲樹
合約賬戶存儲樹也使用了MPT來記錄存儲地址到存儲值的映射,映射表的哈希值叫做存儲根(storage root)。
由于合約存儲空間中的一個單位剛好為256位,所以可以直接當(dāng)葉子節(jié)點

交易樹和收據(jù)樹
這兩棵樹通過交易/收據(jù)在區(qū)塊中的序號來構(gòu)建MPT,收據(jù)和交易的信息一一對應(yīng)。

8.3 布隆過濾器(Bloom Filter)

布隆過濾器可以檢索一個值是否在一個集合中,以太坊用來對收據(jù)的日志進行索引、查找。
在容忍一定錯誤率的情況下,它的效率很高。

原理:用多個哈希函數(shù)將鍵值映射到一個位圖中。對于一個鍵值,若在同樣的哈希函數(shù)映射下,沒有在位圖中出現(xiàn)標記位,則鍵值一定不在集合中。

以太坊的共識機制,區(qū)塊鏈原理與技術(shù),區(qū)塊鏈,學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-517202.html

到了這里,關(guān)于《區(qū)塊鏈原理與技術(shù)》學(xué)習(xí)筆記(五) ——以太坊的交易、共識機制和數(shù)據(jù)結(jié)構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包