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

2018-10-23 15:48 来源:币印矿池 阅读:16755
昨晚的一则快讯引爆了矿圈,快讯称比特大陆发布了S9新固件,新固件用于实现“显性Asic Boost”功能。

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

(图1)

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

首先我们来简要梳理下比特币的挖矿原理,比特币的挖矿是对区块头(blockheader)做两次SHA256运算,运算出来的结果必须小于当前难度周期所对应的难度目标。区块头有80个字节,包括4字节的版本号(Version)、32字节的父区块哈希(Previous Hash),32字节的当前候选区块打包交易的Merkle Root,4字节的时间戳(timestamp),4字节的难度,4字节的随机数(Nonce)。在挖矿过程中,版本号、父哈希、难度都是确定的,矿机需要去不断修改随机数来运算,而随机数只有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中我们不难看出,Merkle Root很尴尬,被分割在两个组中,而区块头的结构是写死不能修改的,于是AsicBoost就诞生了,2016年3月Dr. Timo Hanko提出了白皮书,后经过不断完善,最终确定了两种优化的方法,一种就是Version-rolling,另一种是Merkle Root Collisions。不过目前都是第一种实现方式,第二种暂时没人宣称使用。

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

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

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

(图3)

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

参考链接

固件下载地址:

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

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

点击阅读全文