成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

以太坊源碼分析:共識(2)引擎

YuboonaZhang / 3566人閱讀

摘要:前言是以太坊封定義的一個接口,它的功能可以分為類驗證區(qū)塊類,主要用在將區(qū)塊加入到區(qū)塊鏈前,對區(qū)塊進行共識驗證。輔助類生成以太坊共識相關(guān)的。被使用,是以太坊狀態(tài)管理服務(wù),當報告數(shù)據(jù)的時候,需要獲取區(qū)塊的信息。

前言

engine是以太坊封定義的一個接口,它的功能可以分為3類:

驗證區(qū)塊類,主要用在將區(qū)塊加入到區(qū)塊鏈前,對區(qū)塊進行共識驗證。

產(chǎn)生區(qū)塊類,主要用在挖礦時。

輔助類。

接下來我們看一下engine具體定義了哪些功能,還有各功能的使用場景。

engine定義的具體功能

engine有3類功能,驗證區(qū)塊類、產(chǎn)生區(qū)塊類、輔助類。因為產(chǎn)生區(qū)塊在前,驗證區(qū)塊在后,接下來采用產(chǎn)生區(qū)塊類、驗證區(qū)塊類、輔助類,分別介紹它們的功能和使用場景。

驗證區(qū)塊類

Prepare:初始化區(qū)塊頭信息,不同的共識算法初始化不同。使用場景是,worker創(chuàng)建work的時候調(diào)用。

Finalize:根據(jù)數(shù)據(jù)生成“基本定型”的區(qū)塊,但區(qū)塊頭中還缺少部分數(shù)據(jù)。使用場景是,1)模擬區(qū)塊鏈的時候,被GenerateChain調(diào)用,用來生成區(qū)塊鏈。2)交易狀態(tài)管理時,被StateProcessor.Process調(diào)用用來執(zhí)行交易。3)worker創(chuàng)建work的時候調(diào)用。

Seal:根據(jù)傳入的塊,進行的是挖礦工作,使用挖礦的結(jié)果,修改區(qū)塊頭,然后生成新的區(qū)塊。使用場景是,被agent.mine調(diào)用。

驗證區(qū)塊類

VerifyHeader:驗證區(qū)塊頭。使用在fetcher中,當fetcher要插入?yún)^(qū)塊的時候,需要先對區(qū)塊頭進行校驗。

VerifyHeaders:驗證一批區(qū)塊頭。有2種使用場景,1)區(qū)塊鏈中,insertChain當把一批區(qū)塊插入到區(qū)塊鏈這個鏈條的時候,需要進行檢查;2)LightChain中,把一批區(qū)塊頭插入到本地鏈。

VerifyUncles:驗證區(qū)塊中的叔塊。insertChain當區(qū)塊插入?yún)^(qū)塊鏈的時候,需要對叔塊進行驗證,調(diào)用在VerifyHeaders之后。

VerifySeal:針對Seal函數(shù)做的功能進行驗證。驗證Seal()所修改的區(qū)塊頭中的數(shù)據(jù)。對外的使用場景是,把Work發(fā)送給遠端Agent的時候調(diào)用。對內(nèi)的使用場景是,驗證區(qū)塊頭的時候會被調(diào)用。

輔助類

APIs:生成以太坊共識相關(guān)的API。在以太坊啟動RPC服務(wù)時,生成API。

Author:讀取區(qū)塊頭中的coinbase。被ethstats使用,ethstats是以太坊狀態(tài)管理服務(wù),當報告數(shù)據(jù)的時候,需要獲取區(qū)塊的Author信息。

最后關(guān)注一下藍色的線條,它們代表insertChain所調(diào)用的范圍,先關(guān)的有VerifyHeaders、VerifyUncles、Finalize,涉及到塊頭的驗證、叔塊的驗證,以及執(zhí)行區(qū)塊中的交易,一個區(qū)塊加入到區(qū)塊鏈中,不僅要驗證,還要執(zhí)行各種交易,改變各種狀態(tài),所有節(jié)點執(zhí)行確定性的行為之后,達成一致性。

FAQ

Q:誰實現(xiàn)engine
A:以太坊中的Ethash和Clique實現(xiàn)了engine,Ethash是基于PoW的共識,Clique是基于PoA的共識。

Q:為什么insertChain沒有調(diào)用VerifySeal?
A:因為Seal()修改的是header中的部分數(shù)據(jù),在驗證區(qū)塊頭的時候,會被調(diào)用。只是調(diào)用流程在Ethash和Clique中的實現(xiàn)略有不同,后續(xù)講解。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24397.html

相關(guān)文章

  • 以太源碼分析—挖礦與共識

    摘要:下面來看看具體是怎么實現(xiàn)接口的可以看到,啟動了多個線程調(diào)用函數(shù),當有線程挖到時,會通過傳入的通道傳出結(jié)果??梢钥吹皆谥饕h(huán)中,不斷遞增的值,調(diào)用函數(shù)計算上面公式中的左邊,而則是公式的右邊。 前言 挖礦(mine)是指礦工節(jié)點互相競爭生成新區(qū)塊以寫入整個區(qū)塊鏈獲得獎勵的過程.共識(consensus)是指區(qū)塊鏈各個節(jié)點對下一個區(qū)塊的內(nèi)容形成一致的過程在以太坊中, miner包向外提供挖...

    walterrwu 評論0 收藏0
  • 以太源碼分析共識(3)Ethash

    摘要:在中,該隨機數(shù)稱為,它需要滿足一個公式其中,去除區(qū)塊頭中生成的哈希值,見。固定值,生成的哈希值的最大取值。哈希值滿足條件的概率是,礦工需要進行次的判斷,才有可能找到一個符合條件的,當前以太坊難度為。 前言 Ethash實現(xiàn)了PoW,PoW的精妙在于通過一個隨機數(shù)確定,礦工確實做了大量的工作,并且是沒有辦法作弊的。接下來將介紹: Ethash的挖礦本質(zhì)。 Ethash是如何挖礦的。 如...

    huashiou 評論0 收藏0
  • 以太源碼分析共識(1)礦工

    摘要:接下來我們將從以下角度介紹礦工角色。我們分別使用礦長副礦長礦工進行類比。副礦長,負責具體挖礦工作的安排,把挖礦任務(wù)安排給。礦工的主要函數(shù)介紹和的主要函數(shù),他們是礦工的具體運作機制。負責處理外部事件。 前言 礦工在PoW中負責了產(chǎn)生區(qū)塊的工作,把一大堆交易交給它,它生成一個證明自己做了很多工作的區(qū)塊,然后將這個區(qū)塊加入到本地區(qū)塊鏈并且廣播給其他節(jié)點。 接下來我們將從以下角度介紹礦工: ...

    tylin 評論0 收藏0
  • 區(qū)塊鏈技術(shù)學習指引

    摘要:引言給迷失在如何學習區(qū)塊鏈技術(shù)的同學一個指引,區(qū)塊鏈技術(shù)是隨比特幣誕生,因此要搞明白區(qū)塊鏈技術(shù),應(yīng)該先了解下比特幣。但區(qū)塊鏈技術(shù)不單應(yīng)用于比特幣,還有非常多的現(xiàn)實應(yīng)用場景,想做區(qū)塊鏈應(yīng)用開發(fā),可進一步閱讀以太坊系列。 本文始發(fā)于深入淺出區(qū)塊鏈社區(qū), 原文:區(qū)塊鏈技術(shù)學習指引 原文已更新,請讀者前往原文閱讀 本章的文章越來越多,本文是一個索引帖,方便找到自己感興趣的文章,你也可以使用左側(cè)...

    Cristic 評論0 收藏0
  • 以太POA共識機制Clique源碼分析

    摘要:以太坊中除了基于運算能力的外,還有基于權(quán)利證明的共識機制,是以太坊的共識算法的實現(xiàn),這里主要對的相關(guān)源碼做一個解讀分析。檢查包頭中包含的簽名是否滿足共識協(xié)議 以太坊中除了基于運算能力的POW(Ethash)外,還有基于權(quán)利證明的POA共識機制,Clique是以太坊的POA共識算法的實現(xiàn),這里主要對POA的Clique相關(guān)源碼做一個解讀分析。 Clique的初始化在 Ethereum.S...

    Stardustsky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<