内容简介:昨晚的一则快讯引爆了矿圈,快讯称比特大陆发布了S9新固件,新固件用于实现“显性Asic Boost”功能。不少朋友问我这是项什么技术,大家如此关注。其实简单的从矿工朋友切身利益来说,就是使用该项技术可以降低功耗10%-20%(AsicBoost官网数据显示)。那么AsicBoost到底是什么,今天我们就来揭开它的神秘面纱。一、比特币的核心算法:SHA256
昨晚的一则快讯引爆了矿圈,快讯称比特大陆发布了S9新固件,新固件用于实现“显性Asic Boost”功能。不少朋友问我这是项什么技术,大家如此关注。其实简单的从矿工朋友切身利益来说,就是使用该项技术可以降低功耗10%-20%(AsicBoost官网数据显示)。那么AsicBoost到底是什么,今天我们就来揭开它的神秘面纱。
一、比特币的核心算法: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提交即可。
在做区块头的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中,早已经全面支持了隔离见证。
昨日官方公告还表示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官网:
BDPL官网:
https://github.com/slushpool/stratumprotocol/blob/master/stratum-extensions.md
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
来源:微信公众号币印矿池
AD:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
以上所述就是小编给大家介绍的《AsicBoost到底是个什么技术?让矿圈炸了。》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 技术布道师DevRel到底是什么?
- Java 后端技术栈,到底如何深入学习?
- Netty、Kafka中的零拷贝技术到底有多牛?
- 现如今的技术浪潮中,我们到底该做些什么?
- 技术分析 Lendf.me 被攻击,ERC777到底该不该用?
- IPFS技术解读:Merkle DAG中的Merkle树到底是什么?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!