跳转到正文
buybitcoinsmart

术语表 /挖矿与共识

共识规则

共识规则是什么?
共识规则是每个全节点对区块适用的有效性检查,违反其中任何一条都会使该区块无效,无论其包含多少工作量。

共识规则对细节规定得十分具体:不得双花,任何输出的价值不得超过其输入,脚本必须有效,coinbase 交易领取的金额不得超过区块补贴加手续费。Bitcoin Core 将这些数字直接写入代码:每个区块4,000,000个权重单位,80,000次签名操作,以及新挖出的比特币须等待100个区块后才能花费。正因为有这些规则,任何交易所都无法为您记入一枚网络从未创造的比特币。

运作方式

共识规则分为四组,而且几乎所有规则都刻意设计得平淡无奇。

第一组规范货币。区块奖励每隔210,000个区块减半,coinbase 输出领取的金额不得比该区块补贴加上实际打包交易的手续费多出一聪。区块创造的币在之后的100个区块内不能花费。其他每笔交易都必须花费真实存在、尚未被花费、且满足锁定它们的脚本的输出,并且支出总额不得超过收入总额。

第二组规范资源,因为验证成本必须保持在普通机器能够承受的水平。一个区块不得超过4,000,000个权重单位,也不得超过80,000个签名操作单位。第三组规范结构:coinbase 交易排在最前,且只能出现一次;区块头中的默克尔根必须与区块内的交易一致;区块头哈希必须小于或等于难度规则要求的目标值。第四组规范时间。区块的时间戳必须晚于前十一个区块的中位数,且比节点自身时钟快出的时间不得超过两小时,并且自 BIP113 起,锁定时间也以同一个中位时间为基准来衡量。

这些规则写在哪里,是最尴尬的部分。并不存在独立的规范文档:规则就是已部署代码所接受的内容,对绝大多数网络节点而言,也就是 Bitcoin Core 的验证逻辑,其中的怪异之处和意外缺陷也包括在内。因此,用另一种语言重写被视为风险而非改进,也因此最知名的变体 Bitcoin Knots 逐字节保持 Core 的共识行为,只在交易转发和挖矿策略上有所不同。

修改这份规则清单有两个方向。软分叉是减少可能性,因此按新规则生成的区块在旧软件看来仍然有效:严格 DER 签名编码在区块363,725起成为强制要求,OP_CHECKLOCKTIMEVERIFY 在区块388,381起生效,两者都没有造成网络分裂。硬分叉是增加可能性,使新区块在尚未升级的人看来无效,除非全网一致采用,否则会产生两条链。

购买比特币时为何重要

共识规则是拥有比特币过程中唯一一个事后没有人能与您重新协商的部分。

它们为少数几类风险设置了硬性底线。没有人能在发行计划之外印制新币,没有人能在没有密钥的情况下花费一笔输出,也没有人能删除已被真实工作量掩埋的付款。这条底线很窄,而且有必要准确说明哪些风险不在其中,因为人们真正亏钱的地方恰恰在这里:交易所资不抵债,钓鱼网站骗取助记词,客服人员冻结账户,一笔未做预算的税单寄到。这些情形都不涉及违反任何规则,它们涉及的是信任规则从未覆盖的对象。

这一区别为您检验营销宣传提供了一个标准。如果某项服务能撤销一笔已确认的付款,那它撤销的并不是一笔比特币交易,而是调整了自己的账本,您从未真正处于链上。如果某个产品宣称结算速度快于区块所允许的速度,那它是在向您提供信用并自行承担风险,只要您清楚自己购买的就是这样的服务,它也可能是一项完全合理的服务。如果某种币宣称拥有比特币的安全性,同时每秒处理数千笔交易,那么上文所述的资源限制,正是比特币做不到这一点的原因。

共识规则绝对不是法律。网络对全球每一位用户适用相同的检验,而法律体系每过一道边境就会改变,这也是本站的国家指南独立于本页内容的原因。有效性由节点决定。合法性、申报义务,以及交易所是否会接纳您,则由您所在的司法管辖区决定,两者从未同意过相互参考。

只存在了五小时的1,840亿枚比特币

2010年8月15日,区块74,638中的一笔交易创建了两个输出,每个输出都超过920亿枚比特币。

问题出在算术上。代码检查了每个输出的金额是否合理,却把它们相加成了一个溢出的数值,于是一个大于整个发行计划的总额被读成了一个很小的正数并通过了检验。Satoshi Nakamoto 在数小时内发布了带有修复的0.3.10版本,节点随之切换,53个区块之后,修正后的链超过了有缺陷的链。该事件的编号为 CVE-2010-5139,也是比特币供应量唯一一次超出其发行计划。

有两点教训留存下来。其一,2,100万的上限不是物理定律,而是一行代码,代码可能出错。其二,修复之所以奏效,恰恰因为无人主管:成千上万的独立运营者各自选择运行修正后的软件,而这正是共识规则一直以来唯一的机制。

共识规则 vs 内存池策略

共识规则决定什么是有效的,内存池策略决定节点会转发什么。策略更宽松、属于本地设置,并且每个节点都可以调整:默认最低转发手续费为1 sat/vB,传统输出的粉尘阈值为546聪,对携带数据的输出设有限制,另有一份被视为标准的脚本类型清单。违反策略,您的交易可能只是无法传播。违反共识规则,则包含该交易的区块永远不可能存在。矿工经常打包一些部分节点不会转发的交易,由此产生的区块完全有效,因此“我的钱包提示非标准”是一个有变通办法的路由问题,而“无效”则是最终结论。

请勿混淆

常见问题

比特币的2,100万上限可以更改吗?

只有在几乎所有运行节点的人都选择运行允许这种更改的软件时才可以,而这将是一次偏离现有比特币的硬分叉。持有者、交易所和矿工都会因供应量增发而受损,因此从未有过有意义的支持。

我的节点拒绝转发的交易是否无效?

不是。转发取决于策略,各节点之间可能不同,而有效性取决于共识,在所有节点上都相同。未通过您的节点策略的交易,仍可能被打包进一个完全有效的区块。

比特币的共识规则记录在哪里?

记录在代码中,而不是规范文档中。Bitcoin Core 的验证逻辑是事实上的规则手册,个别变更由 BIP 加以描述,因此其他实现都力求精确复制其行为,而不是重新诠释。

接着阅读

相关术语

挖矿与共识中的更多术语

阅读本页英文版