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









