168炒股学习网 - 专注提供股票金融知识

【转】AsicBoost和SegWit的技术讨论

2018年3月31日  10:10:35 来源:168炒股学习网  阅读:2442人次

网友发帖:

【转】AsicBoost和SegWit的技术讨论。关于AsicBoost和SegWit的讨论已经冷清了很多,但我还是想从技术的角度尝试解释下:

  • AsicBoost是什么
  • AsicBoost和SegWit有什么关系
在说这两件事情之前,离不开一个关键词:挖矿,那就先来说说挖矿吧!
挖矿
比特币的挖矿机制:比特币挖矿机制采用的是SHA256算法,但SHA256算法并不是针对整个块做的,而是只是针对块头(Block Header)做SHA256,下图是block的组成:
从上图中可以看到Block hash是从哪些字段组合之后再做hash而得到的,其中黄色背景的字段就是块头,它包含:
  • 版本号
  • 上一个块的hash
  • Merkle root
  • timestamp(时间戳)
  • bits(难度)
  • Nonce (随机数)
在一轮挖矿过程中,其中的版本号、上一块的hash、难度都是确定的,矿工需要做的就是不断的修改Nonce,以改变当前块的hash值以找到小于当前难度的Block Header。但Nonce的可用搜索空间是不够的,原因就是Nonce的位数只有4bytes。Block Header中各字段所占的位数:4bytes的Nonce的意味着他的搜索概率空间为2^32,也就4G次的hash运算就能遍历完,对于当前的单个矿机来说也就是一瞬间就可以完成的事。在Nonce的搜索空间不够的情况下,就只剩下timestamp和Merkle root可以改变了,timestamp可以前后调整,但是调整之后的搜索空间还是不够。矿工通过修改Coinbase交易、或者交易顺序、或者其他的方式,获取新的Merkle Root,再重新做232次Nonce的遍历。而`Merkle Root`是32 bytes,它的搜索空间足够大。总结比特币的挖矿:
简单来说比特币挖矿就是通过不断更改Nonce来改变块hash以寻找小于当前难度的Block Header,但是Nonce的搜索空间太小了,在做完232 次哈希没有找到对应的块头就需要变更Merkle Root重新计算。
上面说了简单说了下比特币挖矿机制,那AsicBoost又是怎么回事呢?
AsicBoost
AsicBoost是和SHA256的计算、Block Header结构有关的一种算法,在开始计算块头hash的时候是需要补齐到128 bytes再做SHA256计算,而上面所示块头只有80 bytes,剩下的需要使用固定的48 bytes填充到128 bytes。而在计算128 bytes的hash的过程是分两个过程进行的,前64 bytes一起计算,后64 bytes一起运算:
这样一个被填充过的块头就被分成了两个部分,比较有意思的是Merkle Root,Merkle Root的32个bytes中前28个bytes被放在前部分计算,后4个bytes被放在后部分计算,Block Header hash的计算公式为:SHA256=F(Chunk1)+B(Chunk2)Chunk1=(version)+(Previous hash)+F28(Merkle root)Chunk2=B4(Merkle Root)+Timetamp+Bits+No
评论专区
   本站有缓存,一般1小时内能看到您的评论
相关文章:
168炒股学习网
一家专注为中小股民提供炒股入门知识的网站!
我们相信客户至上,并真诚为您服务!祝您投资愉快!
商务合作微信QQ:765565686,联系人:陈经理
版权所有:168chaogu.com,粤ICP备14098693号