以太坊漫談(一)
2018-8-12 19:04
來源:
兄弟連教育
區塊鏈和挖礦
雖然有一些不同,但以太坊的區塊鏈在很多方面類似于比特幣區塊鏈。它們的區塊鏈架構的不同在于,以太坊區塊不僅包含交易記錄和最近的狀態,還包含區塊序號和難度值。以太坊中的區塊確認算法如下:
檢查區塊引用的上一個區塊是否存在和有效。
檢查區塊的時間戳是否比引用的上一個區塊大,而且小于15分鐘。
檢查區塊序號、難度值、 交易根,叔根和瓦斯限額(許多以太坊特有的底層概念)是否有效。
檢查區塊的工作量證明是否有效。
將S[0]賦值為上一個區塊的STATE_ROOT。
將TX賦值為區塊的交易列表,一共有n筆交易。對于屬于0……n-1的i,進行狀態轉換S[i+1]= APPLY(S[i],TX[i])。如果任何一個轉換發生錯誤,或者程序執行到此處所花費的瓦斯(gas)超過了GASLIMIT,返回錯誤。
用S[n]給S_FINAL賦值, 向礦工支付區塊獎勵。
檢查S-FINAL是否與STATE_ROOT相同。如果相同,區塊是有效的。否則,區塊是無效的。
這一確認方法乍看起來似乎效率很低,因為它需要存儲每個區塊的所有狀態,但是事實上以太坊的確認效率可以與比特幣相提并論。原因是狀態存儲在樹結構中(tree structure),每增加一個區塊只需要改變樹結構的一小部分。因此,一般而言,兩個相鄰的區塊的樹結構的大部分應該是相同的,因此存儲一次數據,可以利用指針(即子樹哈希)引用兩次。一種被稱為“帕特里夏樹”(“Patricia Tree”)的樹結構可以實現這一點,其中包括了對默克爾樹概念的修改,不僅允許改變節點,而且還可以插入和刪除節點。另外,因為所有的狀態信息是最后一個區塊的一部分,所以沒有必要存儲全部的區塊歷史-這一方法如果能夠可以應用到比特幣系統中,經計算可以對存儲空間有10-20倍的節省。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。