網(wǎng)上有很多關于pos機eth接口,以太坊源碼分析的知識,也有很多人為大家解答關于pos機eth接口的問題,今天pos機之家(www.bulldancerbisonranch.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機eth接口
Go語言中文網(wǎng),致力于每日分享編碼、開源等知識,歡迎關注我,會有意想不到的收獲!前言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的時候調用。Finalize:根據(jù)數(shù)據(jù)生成“基本定型”的區(qū)塊,但區(qū)塊頭中還缺少部分數(shù)據(jù)。使用場景是,1)模擬區(qū)塊鏈的時候,被GenerateChain調用,用來生成區(qū)塊鏈。2)交易狀態(tài)管理時,被StateProcessor.Process調用用來執(zhí)行交易。3)worker創(chuàng)建work的時候調用。Seal:根據(jù)傳入的塊,進行的是挖礦工作,使用挖礦的結果,修改區(qū)塊頭,然后生成新的區(qū)塊。使用場景是,被agent.mine調用。驗證區(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ū)塊鏈的時候,需要對叔塊進行驗證,調用在VerifyHeaders之后。VerifySeal:針對Seal函數(shù)做的功能進行驗證。驗證Seal()所修改的區(qū)塊頭中的數(shù)據(jù)。對外的使用場景是,把Work發(fā)送給遠端Agent的時候調用。對內的使用場景是,驗證區(qū)塊頭的時候會被調用。輔助類APIs:生成以太坊共識相關的API。在以太坊啟動RPC服務時,生成API。Author:讀取區(qū)塊頭中的coinbase。被ethstats使用,ethstats是以太坊狀態(tài)管理服務,當報告數(shù)據(jù)的時候,需要獲取區(qū)塊的Author信息。最后關注一下藍色的線條,它們代表insertChain所調用的范圍,先關的有VerifyHeaders、VerifyUncles、Finalize,涉及到塊頭的驗證、叔塊的驗證,以及執(zhí)行區(qū)塊中的交易,一個區(qū)塊加入到區(qū)塊鏈中,不僅要驗證,還要執(zhí)行各種交易,改變各種狀態(tài),所有節(jié)點執(zhí)行確定性的行為之后,達成一致性。
FAQQ:誰實現(xiàn)engineA:以太坊中的Ethash和Clique實現(xiàn)了engine,Ethash是基于PoW的共識,Clique是基于PoA的共識。Q:為什么insertChain沒有調用VerifySeal?A:因為Seal()修改的是header中的部分數(shù)據(jù),在驗證區(qū)塊頭的時候,會被調用。只是調用流程在Ethash和Clique中的實現(xiàn)略有不同,后續(xù)講解。如果這篇文章對你有幫助,不妨關注下我的Github,有文章會收到通知。本文作者:大彬,原創(chuàng)授權發(fā)布如果喜歡本文,隨意轉載,但請保留此原文鏈接:http://lessisbetter.site/2018/06/22/ethereum-code-consensus-2/以上就是關于pos機eth接口,以太坊源碼分析的知識,后面我們會繼續(xù)為大家整理關于pos機eth接口的知識,希望能夠幫助到大家!

轉發(fā)請帶上網(wǎng)址:http://www.bulldancerbisonranch.com/newsone/83405.html








