区块链|观点 有关区块链验证的哲学

区块链最强大的一个特质就是我们能独立验证其执行中的每一个部分。即使大部分区块链矿工(或者权益证明中的验证者)被攻击,如果该攻击者企图让无效区块上链,网络也会拒绝。哪怕是没有实时验证区块的用户,(在变故发生时)也能够收到正在验证区块的用户的警告(这个过程有可能实现自动化),进而自行验证发现攻击者的链无效,自动拒绝接收这条链,然后与其他节点协调一致接收另一条遵循规则的链。

但在实践中,我们到底需要多少验证者?一百个独立验证的节点?一千个?我们是否需要让世界上每个普通人都运行软件来检查所有交易?回答这些问题是我们的挑战,尤其是,如果我们还想构建出比单一链的中本聪工作量证明更有优势的共识机制的区块链,解决这些问题就格外重要。

为什么要验证

- 51% 攻击者尝试让网络接受一个无效区块,而我们希望网络不会接受无效链!-

用户对区块链进行验证主要有两个好处。首先,这可以在最大程度上让节点参与到决定合法链(也就是被整个社区接受的、具备合法性的链)的过程中。通常来说,合法链被定义为 “有最多矿工或验证者支持的有效区块链”,比如比特币中的 “最长有效链”。无效链根据定义就会被拒绝,如果有多条有效链竞争,则获得最多矿工或验证者支持的链获胜。因此如果你运行一个验证所有区块有效性的节点,你将能检测到哪些链有效哪些无效,从而将最大程度地提高检测出合法链的机会。

但用户对区块链进行验证其实还有一个更深层的益处。假如一个强大的参与者企图让网络接受某个对协议的变更(比如改变发行量),并且有多数矿工支持,在没有其他人对区块链进行验证的情况下,这个攻击很容易就实现了。并且,所有客户端都会 默认 接受这条新链。等到所有人回过神来意识到这件事时,只能靠 反对者 通过协调来拒绝这条新链。但如果普通用户也参与验证,那么情况就完全不同了,企图变更协议的攻击者需要说服验证用户主动下载他们的软件补丁以变更协议。

 

如果有足够多的用户参与验证,那么当有人尝试对协议进行有争议的更改时,默认情况就不会是成功,而是造成混乱。天然混乱也会对网络产生破坏,需要协议层面外的社会协调来解决,但这也在攻击者面前放置了更大的障碍,让他们无法自信自己可以一击成功然后一走了之,也就大大降低了他们发动攻击的意愿。如果多数用户参与直接或间接的验证,并且攻击者只有多数矿工的支持,那么这次攻击天然会失败,这也是对所有人最好的结果。

定义的视角 vs 协作的视角

要注意的是,上述推理的逻辑跟我们经常听到的另一种推理是很不一样的:他们说,只要是改变协议规则的链 “从定义上来说” 就不会是合法链,而且重要的不是有多少用户愿意接收新的规则集合,而是你永远可以留在使用自己喜欢的旧规则的链上。

看一看这个从 “定义的视角” 来讨论这件事的例子,来自 Gavin Andresen:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值