以太坊client的transaction處理

2021-07-30 02:28:43 字數 1295 閱讀 9961

**以太坊客戶端 p2p 協議是乙個相當標準的加密貨幣協議,並且能夠容易地為其它加密貨幣使用;僅有的改動是引入了上述的「幽靈「協

議。以太坊客戶端基本上是被動的;如果沒有被觸發,它自己做的僅有工作是呼叫網路守護程序維護連線及定期傳送訊息索要以當前

區塊為父區塊的區塊。然而,該客戶端同時會更強大;與只儲存與塊鏈相關的有限資料的 bitcoind 不同,以太坊客戶端將同時扮演一

個功能完整的區塊瀏覽器的後台的角色**

步驟如下

1. 雜湊該資料,並且檢查該資料與其雜湊是否已經接收過,如果是,退出,否則將資料傳送給資料分析器。

2. 確認資料型別。如果該資料項是乙個交易,如果交易合法則將其加入本地交易列表,加入當前區塊並發布至網路。如果該數

據項是乙個訊息,作出回應。如果該資料項是乙個區塊,轉入步驟 3。

//虛擬後端處理,原始碼位於ethereum/go-ethereum/accounts/abi/bind/backends

3. 檢查區塊中的「父區塊「引數是否已儲存於資料庫中。如果沒有,退出。

4. 檢查該區塊頭以及其「叔區塊列表」中所有區塊頭中的工作量證明是否合法,如有任意乙個非法,退出。

5. 檢查「叔區塊列表」中每乙個區塊的區塊頭以確定其是否以該區塊的「祖父區塊」為父區塊。如有任何否,退出。注意叔區

塊頭並不必須在資料庫中;他們只需有共同的父區塊並有合法的工作量證明。

6.檢查區塊中的時間戳是否最後至未來 15 分鐘並且在其父區塊的時間戳之後。檢查該區塊的難度與區塊號碼匹配。如任何檢

查失敗,退出。

7.由該區塊的父區塊的狀態開始,加上該區塊中的每一筆合法交易。最後,加上礦工獎勵。如果結果狀態樹的根雜湊與區塊頭

中的狀態根不匹配,退出。如匹配,將該區塊加入資料庫並前進至下一步。

8.為新區塊確定 td(block) (「總難度」)。td 由 td(genesis_block) = 0 及 td(b) = td(b.parent) + sum(u.difficulty for u in

b.uncles) + b.difficulty 遞迴定義。如新區塊擁有比現區塊更高的總難度,則新區塊將成為「現區塊「並進入下一步,否則,

退出9.如果新區塊被改動,向其中加入交易列表中的所有交易,廢除交易列表中的所有變為不合法的交易,將該區塊及這些交易向

全網重新廣播.

具體流程圖

ps:翻譯自以太坊***

3 3 以太坊 以太坊核心詞彙詳解

以太坊虛擬機器 以太坊中智慧型合約的執行環境。賬戶外部賬戶 被公鑰 私鑰對控制 合約賬戶 合約賬戶被儲存在賬戶中的 控制 外部賬戶與合約賬戶區別 內部結構 訊息 類似於位元幣上的交易與位元幣交易的不同點 以太坊的訊息可以由外部實體或者合約建立,位元幣的交易只能外部建立 以太坊的訊息可以包含資料 如果...

以太坊的歷史

2015年11月9日到13日,以太坊在倫敦舉行了為期五天的開發者大會 devcon 1 吸引了全世界三百多名開發者參加。第三次開著大會 devcon 2 將於2016年9月份在上海舉行。在2016年3月14日 圓周率節 以太坊發了homestead階段。homestead階段與frontier階段相...

以太坊的未來

以太坊建立起了穩固的地位,未來一片光明 以太幣長期以來一直穩坐在僅次於位元幣的第二大虛擬貨幣寶座上,在二 一九年名為君士坦丁堡 constantinople 的大規模更新後,一直持續順利的進行研發 之後,以太幣應該還可繼續保持其穩定的地位,不會有需求急劇降低的情形發生。雖說如此,推測以太坊還會繼續保...