AsicBoost到底是个什么技术让矿圈炸了

  • 时间:
  • 来源: 网络
  • 分类: 百科
  • 205条评论
  • 991浏览

昨晚的一则快讯引爆了矿圈,快讯称比特大陆发布了S9新固件,新固件用于实现“显性Asic Boost”功能。不少朋友问我这是项什么技术,大家如此关注。其实简单的从矿工[kuàng gōng]朋友切身利益来说,就是使用该项技术可以降低功耗10%-20%(AsicBoost[AsicBoost]官网数据显示)。那么AsicBoost到底是什么,今天我们[wǒ men]就来揭开它的神秘面纱。

(图1)

一、比特币的核心算法:SHA256

首先我们来简要梳理下比特币的挖矿[wā kuàng]原理,比特币的挖矿是对区块头[kuài tóu](blockheader)做两次SHA256运算[yùn suàn],运算出来的结果必须小于当前难度周期所对应的难度目标。区块头有80个字节[zì jié],包括4字节的版本号(Version)、32字节的父区块哈希[hā xī](PreviousHash),32字节的当前候选区块打包交易[jiāo yì]的Merkle Root,4字节的时间戳(timestamp),4字节的难度,4字节的随机数(Nonce)。在挖矿过程中,版本号、父哈希、难度都是确定的,矿机[kuàng jī]需要去不断修改随机数来运算,而随机数只有4字节,只能做2^ 32次运算。因此矿工还需要修改Coinbase交易,得到新的Merkle Root,即每2^32次哈希后更改一次。随着算力的暴涨,独立矿机已经几乎不能出块,矿工都选择加入矿池来挖矿。挖矿过程就变成了矿池给不同的矿机发送不同的job,矿机计算出的share提交即可。

(图2)

在做区块头的SHA256时,需要64字节一组去处理,很明显80字节超出了,这就需要用48字节的填充位将块头补充至128字节,填充位全填写0,所以被称作padding-zero。

这样区块头就被分成了前后两组来运算,结合上图可以看出,Merkle Root的前28个字节和后4个字节被分开了。

二、AsicBoost

从图2中我们不难看出,MerkleRoot很尴尬,被分割在两个组中,而区块头的结构是写死不能修改的,于是AsicBoost就诞生了,2016年3月Dr.Timo Hanko提出了白皮书,后经过不断完善,最终确定了两种优化的方法,一种就是Version-rolling,另一种是MerkleRootCollisions。不过目前都是第一种实现方式,第二种暂时没人宣称使用。

这边就重点介绍一下Version-rolling。

Version-rolling(版本轮动)。4字节的Version总共有32个位,只有前3位是固定的,其他位用在技术升级或者软分叉时候的投票时使用,可是在实际应用过程中,不可能同时有29个软分叉投票吧,如果我们只取4位来用,那么就多了2^4次,也就是说在收到同一个任务后,可以进行2^4轮的2^32次运算,降低了矿机接受数据的次数,从而降低了功耗,据AsicBoost.com测算,可以降低约20%的功耗,当然实际使用效果还要经过长期的测试。随着越来越多的人涌入区块链世界,全网算力一直处于不断攀升的阶段,挖矿的利润可能会进一步下降,20%的功耗节约对于矿工来说可能也是一笔不小的钱。

感兴趣的朋友也可了解一下MerkleRootCollisions(梅克尔根碰撞)。如图2所示,32字节的MerkleRoot被分割成两组来做SHA256运算,第一部分为28字节,第二部分为4字节。MerkleRootCollisions的原理就是构建出很多后4个字节相同的MerkleRoot,这样在随机数固定的情况下,我们只需要对区块头的前半部分做SHA256运算,而后半部分是不变的。这种方法的本质是一个32位的哈希碰撞,根据“生日悖论”,找到一组碰撞需要的尝试次数其实并不多。尝试新的Merkle Root通常有两种方法:一是修改Coinbase交易,但这里有个问题,矿池可能会恶意打空块,因为当区块只有coinbase交易的时候,要保证MerkleRoot后4个字节要容易的很多;第二是交换任意交易的顺序,这种方法的问题是,在隔离见证(Segwit)中,哈希运算量会增加一倍。隔离见证引入了一个全新的WitnessMerkleTree和WitnessMerkleRoot(见图3),如果修改交易顺序,那么WitnessMerkleTree也会更改,这就导致了在原有MerkleTree中的coinbase交易进一步更改,从而使得整个MerkleTree需要从下到上重新计算一次,增加了一倍的工作量,而我们都知道在之前更新的bitcoincoreversion中,早已经全面支持了隔离见证。

(图3)

昨日官方公告还表示R4、T9、T9+、S9i、S9j能激活“显性Asic Boost”功能的新固件也将在本周内发布,而币印矿池(Poolin.com)已率先支持Asic Boost,矿工更新固件后不需要多余操作,连接矿池就可直接开挖!

参考链接

固件下载地址:

https[https]://service.Bitmain.com/support/download

官方公告:

https://blog.bitmain.com/en/new-firmware-activate-overt-asicboost-bm1387-antminer-models/

AsicBoost官网:

https://www.asicboost.com/

BDPL官网:

https://blockchaindpl.org/

Slushpool的stratum扩展协议:

https://github.com/slushpool/stratumprotocol/blob/master/stratum-extensions.md

Bitmex关于隐形AsicBoost的论述:

https://blog.bitmex.com/graphical-illustration-of-a-bitcoin-block/

Gregory Maxwell关于AsicBoost的提案:

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-April/013996.html

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

精彩评论

匿名用户

我把想你的时候能做的事 全做了一遍 还是比不了你在我身边

匿名用户

那些年立下的FLAG自己删了吧,反正也没人记得。

匿名用户

我只是喜欢你,我没有恶意。

匿名用户

花径不曾缘客扫,蓬门今始为君开

匿名用户

让我占有你 在你最好的年纪