我知道加密货币网络中的对等方可以参与决定必须添加到区块链中的下一个区块。为了做到这一点并获得一些奖励,这样的对等体必须是第一个能够解决某些PoW算法的对等体。据我所知,挖掘池使用客户端机器的计算能力来尽快解决PoW。我想,挖掘池服务器是唯一直接参与网络的对等体,它完全利用只执行一些次要任务的客户端的计算能力来执行算法。
如何将此计算任务拆分为多个客户端?
池服务器通过请求getblocktemplate
从当前币节点接收"任务"。然后,服务器根据接收到的任务,为参与者矿工准备子任务,并为他们提供另一个getblocktemplate
结构,该结构具有减少的difficulty
参数。当miner解决子任务(难度降低(时,他会将自己的解决方案发送到一个池中,这个部分解决方案名为share
。Pool根据提交的股票数量和股票难度计算参与者的贡献。
一些股票的难度足以顺应币网的难度。这样的共享名为solving share
,这就是块解决方案。结果,这个solving share
作为区块添加到区块链中,池获得区块奖励。从技术上讲,矿工可以直接使用钱包工作,而不需要池。此模式命名为solo mining
。
参见getblocktemplate
的规范:https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki