Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

今天,我将分享Miner'的知识,这也将解释米诺斯。如果你碰巧解决了你现在面临的问题,不要';别忘了关注这个网站。如果你有不同的看法和意见,请在评论区积极留言,马上进入正题!

矿工的过程';以太坊中的移除方块在不同版本中有所改变。以下基于1.7.3版和1.8.4版分享

通道:用于一送一收

发送:sampleChan-

接收:-sampleChan?

馈送:用于一发多收,参考chainHeadCh

接收者注册:Subscribe(sampleChan)

发送:发送,发送地点不好找,需要通过发送类型和事件/渠道来查找。比如在miner中,主要涉及的是PostChainEvents

接收:-sampleChan

数据结构:

可以理解为操作室(eth)里有一个矿(tx),那么矿主(矿工)安排工人挖掘这个矿(封印)。.Thestructureisdefinedasfollows:

typediggerstructure{?-understoodasthemineowner

?mux?*events.TypeMux

?Workers?*Workers?-understoodasworkingworkers

?coinbase?Common.Address

?eth?后端?-理解为操作室

?Engine?Consensus.Engine?-understoodasatoolformining

?exitCh?Changestructure{}

?canStart?Int32//canstartindicateswhetherwecanstartminingoperations

?Shouldwestart?Int32//shouldstartindicateswhetherweshouldstartaftersync

}

.

?Theflowchartisasfollows:

1.NodeStart:Backend.NewMiner.NewWorker.New:CallCommitteeWork.Init,pushisusedtopasstheworktocpuAgent,andthen-miner.start-worker.start-CPUAgent.startistypedatthegethcommandlinetocallSeal.,计算nonce值,然后发送recv消息通知worker。等待,收到后打包并插入块到区块链,然后调用PostChainEvents发送消息chainHeadCh。收到消息后,Worker.update再次调用commitNewWork,形成一个循环。

?2.Genesisblock:调用geth的init命令会触发调用initGenesis-SetupGenesisBlock,其中特别强调了time使用genesisBlock.json中的值。,一般为0。

?3.正常情况:工人。等待,收到后,打包并插入块到区块链,然后调用PostChainEvents发送消息chainHeadCh。收到消息后,Worker.update再次调用commitNewWork,形成一个循环。

矿工。new:后端新建时调用。当节点启动时调用。

矿工。update:节点启动时调用,用于监控是否有块同步,如果有,则停止挖掘。如果没有采矿,这在POW的竞争性封闭环境中是需要的。

工人。new:使用miner.new时调用,节点启动时调用?

Worker.update:在节点启动时调用。如果不是完整节点,则用于监控和接受事务,关键函数commitTransactions也用于在收到chainHeadCh的消息后调度和触发commitNewWork。

其中,commitNewworkpush用于将挂起的tx输入到系统中,计算trie等操作,生成一个block,将工作推送到cpuAgent进行处理,注意没有盖章

工人。wait(对应1.8.4的resultLoop):节点启动时调用,循环监听recv消息。,将携带的块插入区块链,发送广播消息(NewMinedBlockEvent),发送消息PostChainEvents(SendChainHeadEvent)。,即chainHeadCh),其中的关键函数是WriteBlockAndState。

代理人.更新()在CPU代理。start()-worker。开矿机。开始-开始的命令行调用之后启动循环,用来接收commitNewWork分配的工作,关键函数mine调用Seal,主要完成POW求nonce值的运算,发送recv消息通知worker,也可以叫stamping。

类图如下:

具体结构就不详细描述了

进程:

Miner.update:用来监控是否有块同步,如果有就停止挖掘,这是在POW的竞争封锁环境下。

Mainloop:Afterreceivingthenewworkmessage,processit,andcallthecrimesintheworkoftheCommitteetosendthetaskChmessage

.

newworkcycle:sendanewworkmessageafterreceivingthestartChmessageandthechainheadermessage

resultcycle:listentotheresultChmessagecircularly.,将携带的块插入区块链,发送广播消息,按键功能WriteBlockAndState,发送chainHeadCh消息

taskLoop:代理之前做的事情。,收到taskCh消息后,调用seal,在里面发送resultCh消息

一个也在创建块的节点。例如在比特币中,它是一个PoW链,矿工用递增的随机数对hash头进行哈希,直到通过难度测试(有足够多的零值预哈希)

一个也在创建块的节点。比如在比特币,就是一个权力链。挖掘器使用递增的随机数对散列头进行散列,直到它通过难度测试(具有足够的零值预散列)

挖掘器。Mine是矿,直接意思是矿工,中文是矿工

pitman也可以指矿工和锯木工人';助理、维修技工、乐手等。

只要你认真看完以上,你就已经对mineros有所了解了。如果你对屏幕前的Miner有什么好的建议和想法,请在下面的评论区评论,我们会及时回复。