摘要:前言是以太坊封定義的一個接口,它的功能可以分為類驗證區塊類,主要用在將區塊加入到區塊鏈前,對區塊進行共識驗證。輔助類生成以太坊共識相關的。被使用,是以太坊狀態管理服務,當報告數據的時候,需要獲取區塊的信息。
前言
engine是以太坊封定義的一個接口,它的功能可以分為3類:
驗證區塊類,主要用在將區塊加入到區塊鏈前,對區塊進行共識驗證。
產生區塊類,主要用在挖礦時。
輔助類。
接下來我們看一下engine具體定義了哪些功能,還有各功能的使用場景。
engine定義的具體功能engine有3類功能,驗證區塊類、產生區塊類、輔助類。因為產生區塊在前,驗證區塊在后,接下來采用產生區塊類、驗證區塊類、輔助類,分別介紹它們的功能和使用場景。
驗證區塊類Prepare:初始化區塊頭信息,不同的共識算法初始化不同。使用場景是,worker創建work的時候調用。
Finalize:根據數據生成“基本定型”的區塊,但區塊頭中還缺少部分數據。使用場景是,1)模擬區塊鏈的時候,被GenerateChain調用,用來生成區塊鏈。2)交易狀態管理時,被StateProcessor.Process調用用來執行交易。3)worker創建work的時候調用。
Seal:根據傳入的塊,進行的是挖礦工作,使用挖礦的結果,修改區塊頭,然后生成新的區塊。使用場景是,被agent.mine調用。
驗證區塊類VerifyHeader:驗證區塊頭。使用在fetcher中,當fetcher要插入區塊的時候,需要先對區塊頭進行校驗。
VerifyHeaders:驗證一批區塊頭。有2種使用場景,1)區塊鏈中,insertChain當把一批區塊插入到區塊鏈這個鏈條的時候,需要進行檢查;2)LightChain中,把一批區塊頭插入到本地鏈。
VerifyUncles:驗證區塊中的叔塊。insertChain當區塊插入區塊鏈的時候,需要對叔塊進行驗證,調用在VerifyHeaders之后。
VerifySeal:針對Seal函數做的功能進行驗證。驗證Seal()所修改的區塊頭中的數據。對外的使用場景是,把Work發送給遠端Agent的時候調用。對內的使用場景是,驗證區塊頭的時候會被調用。
輔助類APIs:生成以太坊共識相關的API。在以太坊啟動RPC服務時,生成API。
Author:讀取區塊頭中的coinbase。被ethstats使用,ethstats是以太坊狀態管理服務,當報告數據的時候,需要獲取區塊的Author信息。
最后關注一下藍色的線條,它們代表insertChain所調用的范圍,先關的有VerifyHeaders、VerifyUncles、Finalize,涉及到塊頭的驗證、叔塊的驗證,以及執行區塊中的交易,一個區塊加入到區塊鏈中,不僅要驗證,還要執行各種交易,改變各種狀態,所有節點執行確定性的行為之后,達成一致性。
FAQQ:誰實現engine
A:以太坊中的Ethash和Clique實現了engine,Ethash是基于PoW的共識,Clique是基于PoA的共識。
Q:為什么insertChain沒有調用VerifySeal?
A:因為Seal()修改的是header中的部分數據,在驗證區塊頭的時候,會被調用。只是調用流程在Ethash和Clique中的實現略有不同,后續講解。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24397.html
摘要:下面來看看具體是怎么實現接口的可以看到,啟動了多個線程調用函數,當有線程挖到時,會通過傳入的通道傳出結果。可以看到在主要循環中,不斷遞增的值,調用函數計算上面公式中的左邊,而則是公式的右邊。 前言 挖礦(mine)是指礦工節點互相競爭生成新區塊以寫入整個區塊鏈獲得獎勵的過程.共識(consensus)是指區塊鏈各個節點對下一個區塊的內容形成一致的過程在以太坊中, miner包向外提供挖...
摘要:在中,該隨機數稱為,它需要滿足一個公式其中,去除區塊頭中生成的哈希值,見。固定值,生成的哈希值的最大取值。哈希值滿足條件的概率是,礦工需要進行次的判斷,才有可能找到一個符合條件的,當前以太坊難度為。 前言 Ethash實現了PoW,PoW的精妙在于通過一個隨機數確定,礦工確實做了大量的工作,并且是沒有辦法作弊的。接下來將介紹: Ethash的挖礦本質。 Ethash是如何挖礦的。 如...
摘要:接下來我們將從以下角度介紹礦工角色。我們分別使用礦長副礦長礦工進行類比。副礦長,負責具體挖礦工作的安排,把挖礦任務安排給。礦工的主要函數介紹和的主要函數,他們是礦工的具體運作機制。負責處理外部事件。 前言 礦工在PoW中負責了產生區塊的工作,把一大堆交易交給它,它生成一個證明自己做了很多工作的區塊,然后將這個區塊加入到本地區塊鏈并且廣播給其他節點。 接下來我們將從以下角度介紹礦工: ...
摘要:以太坊中除了基于運算能力的外,還有基于權利證明的共識機制,是以太坊的共識算法的實現,這里主要對的相關源碼做一個解讀分析。檢查包頭中包含的簽名是否滿足共識協議 以太坊中除了基于運算能力的POW(Ethash)外,還有基于權利證明的POA共識機制,Clique是以太坊的POA共識算法的實現,這里主要對POA的Clique相關源碼做一個解讀分析。 Clique的初始化在 Ethereum.S...
閱讀 3376·2021-11-22 13:53
閱讀 3411·2021-10-11 11:11
閱讀 932·2019-08-30 14:12
閱讀 1222·2019-08-29 17:16
閱讀 640·2019-08-29 16:45
閱讀 3349·2019-08-29 12:56
閱讀 670·2019-08-28 17:55
閱讀 2065·2019-08-26 13:24