对于第一个问题,白话区块链曾在《一个经典的故事,让你3分钟搞懂比特币挖矿》一文给出过解释:
比特币系统给矿工出的难题就是让矿工找出符合要求的随机数。矿工构造区块,确定区块头中其他5个字段,另一个需要不断试错的变量就是随机数。只有符合要求的随机数才能召唤“神龙”。符合要求的意思是:对整个区块头取哈希值,使得该哈希值小等于难度目标(准确的说是小于目标值Target)。我们今天主要来回答第二个问题:比特币系统挖矿难度目标是什么,它是怎么调整的?
难度目标是比特币系统中调控挖出区块所用平均时间的参数,是区块头中6个字段之一。
比特币挖矿难度(Difficulty),是对挖矿困难程度的度量,挖矿难度越大,挖出区块就越困难。目标值(Target)与挖矿难度成反比。难度越高,目标值越小。而难度目标是目标值通过转化得到,是一个只有4个字节的字段(为了便于理解,本文将难度目标等同目标值处理)。比特币系统正是通过调整区块头中难度目标来控制挖出区块所需平均时间的。
目标值是个长度为256比特的字符串,换句话说目标值约有2^256种可能的取值。调整难度目标就是调整目标值在整个输出空间的占比。
举例说明:挖矿就如射击,所有射出去的子弹都会落在一个很大的靶子上。难度目标就是这个大靶子上圈出一个范围,这个范围越小,被射中的难度就越高。调节难度目标,就是调节这个圈在整个靶子上的占比。
挖矿算力增大,单位时间射击的次数就越多,目标范围被射中所需的时间就越短。反之,挖矿算力减小,目标范围被击中所需的时间就越长。而比特币系统追求的平均出块时间为10分钟,这时候就需要调整难度目标来实现。
比特币系统是怎样调整难度目标的呢?在《白话区块链入门080 |数说比特币,了解比特币必须知道这10个数字》一文中,我们介绍了比特币系统每过2016区块(大约为14天时间),会自动调整一次难度目标。所有区块高度为2016整数倍的区块,系统就会自动调整难度目标。如果上一个难度目标调整周期(也就是之前2016个区块),平均出块时间大于10分钟,说明挖矿难度偏高,需要降低挖矿难度,增大难度目标(准确地说是目标值);反之,前一个难度目标调整周期,平均出块时间小于10分钟,说明挖矿难度偏低,需要缩小难度目标.
比特币每2016个区块(大约14天)调整一次挖矿难度,相比于BCH每个区块都调整(大约10分钟调整一次),有明显的滞后性。你认为是哪种调整方式更合理呢?为什么呢?欢迎在留言区分享你的观点。
——End——
『声明:本系列内容仅供区块链科普入门学习,不构成任何投资意见或建议。如有任何错漏,敬请留言指出。』https://mp.weixin.qq.com/s/2zFOlt1SeOa4_fIzR84S6w 作者 | 晏文春 出品|白话区块链(ID:hellobtc)
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:区块链从入门到精通,看我就够了
评论0条