Gavin : 区块头优先挖矿(head first mining)将杜绝DoS攻击

2016-03-17 09:59 来源:巴比特资讯 阅读:5960
实行“区块头优先挖矿”(head first mining):在网络上尽可能快地传播新的80字节的区块头,一旦矿工们得悉区块头,就可以给他们机会去开始挖取一个空块。

gavinandresen

实行“区块头优先挖矿”(head first mining):在网络上尽可能快地传播新的80字节的区块头,一旦矿工们得悉区块头,就可以给他们机会去开始挖取一个空块。

只有有效的,连接到最长链的工作量证明区块头才会被中继,所以拒绝服务攻击将是不可行的。

一旦整个区块被接受和验证时,矿工们会尽快切换至挖取常规块。

这里会有一个硬编码的30秒逾时段;如果整个数据块得到验证并传播到网络的时间超过了30秒,或者说它没有被发送出去,矿工们会切换回最后一个完全验证的区块,来挖取非空块。

细节:

新的getblocktemplate行为:在接受一个新区块的‘区块头’信息与接受及验证这个‘区块’信息之 间,getblocktemplate返回一个空(只有coinbase交易)区块模版。当一个新的最佳区块头(best-header)被接受时,并且 当区块被完全验证时, 长getblocktemplate 连接就会中断。

新的命令行选项,-blockheadernotify。类似 -blocknotify,区别是当一个新的最多工作区块头(most-work-header)被接受时才会进行通知。

新的P2P消息,‘无效块’( ‘invalidblock’)。类似‘区块’信息,区别是当一个无效区块的有效工作量证明被接受时,这些信息会发送到对等节点, 告诉它们应该停止在这个区块头上进行挖矿。

只有遵循 BIP130 ‘sendheaders’协议的对等节点才会立即中继区块头,也只有它们会接受到‘无效块’信息。轻客户端(SPV)不会有‘sendheaders’,因此它们应该不会受到影响。而无法理解这些‘无效块’信息的旧版客户端就会忽略它。

请在github上审查代码并讨论测试结果。辩论区块头优先挖矿是否有利于比特币网络,是否应该在bitcoin-classic软件中实施,你可以在slack channel或者#bitcoin-dev IRC channel进行讨论。

 

原文:https://github.com/bitcoinclassic/bitcoinclassic/pull/152
作者:gavin andresen
译者:洒脱喜
稿源(译):巴比特资讯( http://www.8btc.com/head-first-mining)


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文