二狗聊科技|Vitalik:区块链“验证”的哲学

区块链最强大的特性之一 , 就是可独立验证区块链执行的每个部分 。 即使大多数区块链矿工被攻击者接管 , 但如果该攻击者试图推送无效区块 , 网络也可以简单地拒绝它们 。 即使是某些时间段未验证区块的那些用户 , 也可以获得验证用户的警告 , 此时他们可检查攻击者的链是否无效 , 并自动拒绝它 , 然后协调接受遵循规则的区块链 。
但我们实际上需要多少验证呢?我们需要100个独立的验证节点 , 还是1000个?我们是否需要一种文化 , 使得全世界的普通人都能运行检查每笔交易的软件?这些问题是一个挑战 , 尤其是当我们要构建一个比“中本聪”最初创建的工作量证明共识机制更好的区块链 , 那解决上面这些问题就显得非常重要 。
为什么需要验证?
有两个主要原因可以解释 , 为什么用户去验证区块链是有益的 。
【二狗聊科技|Vitalik:区块链“验证”的哲学】1、首先 , 它最大限度地提高了节点能够正确地确定 , 并辨识规范链的机会 。 通常 , 规范链被定义为“拥有最多矿工/验证者支持的有效链” 。 而无效链会被定义拒绝 , 如果在多个有效链之间进行选择 , 那么从矿工/验证者那获得最多支持的区块链就会获胜 。 因此 , 如果你有一个节点来验证所有的有效条件 , 从而检测出哪些链是有效的 , 哪些链是无效的 , 那你就可以最大限度地检测出规范链到底是什么 。
2、验证区块链是有益的 , 还有另一个更深层次的原因 。 假设一个强大的参与者试图对协议发起更改 , 并且其得到了大多数矿工的支持 。 如果没有其他人验证这条链 , 那么这种攻击就很容易成功:每个人的客户端都会默认地接受新链 , 当任何人看到发生的事情时 , 将由持不同意见者来协调对这一区块链的拒绝 。 但是 , 如果普通用户正在进行验证 , 那么协调问题就落在另一面:现在 , 无论是谁试图更改协议 , 都有责任说服用户主动下载软件补丁 , 以接受协议更改 。
如果有足够多的用户在验证 , 那么一个有争议的协议更改尝试 , 将默认为混乱 , 而不是默认为胜利 。 默认混乱仍然会造成很多混乱 , 这需要社区协调来解决 , 但它在攻击者面前设置了一个更大的障碍 , 它大大降低了攻击者的信心 , 从而降低其试图发动攻击的积极性 。 如果大多数用户正在验证 , 而攻击只获得了大多数矿工的支持 , 那么攻击将完全默认为失败 , 这会是所有攻击中最好的结果 。
请注意 , 这种推理与我们经常听到的另一种推理方式截然不同:根据“定义” , 改变规则的链在某种程度上不是正确的链 , 而且不管有多少其他用户接受一些新规则 , 重要的是你个人可以继续使用你喜欢的旧规则 。
以下是GavinAndresen提出的“按定义”视图的一个示例:
下面则是来自Wasabi钱包的另一个示例 , 从解释全节点为何有价值的角度来看 , 这一点更为直接:
二狗聊科技|Vitalik:区块链“验证”的哲学
文章图片
请注意此视图的两个核心组件:
1、根据定义 , 不接受你认为基本、不可协商规则的链不是比特币 , 而不管有多少人接受这条链 。
2、重要的是 , 你要留在一条你认为有可接受规则的区块链上 。
然而 , 我认为这种“个人主义”的观点是非常错误的 。 为了了解原因 , 让我们看看我们所担心的场景:绝大多数参与者接受了协议规则的某些更改 , 而这些改变是你所无法接受的 。 例如 , 设想一个交易费用非常低的未来 , 为了保证区块链的安全 , 几乎所有其他人都同意修改一套增加发行量的新规则 。 然后你顽固地继续运行一个执行旧规则的节点 , 并且分叉到与大多数节点不同的区块链上 。
从你的角度来看 , 你仍然可以将币放在可接受规则下运行的系统中 。 但是那又怎样呢?其他用户将不会接受你的币 , 交易所将不接受你的币 , 公共网站可能会显示新币的价格 , 但他们指的是大多数人接受的那条链 , 而你的币是没有价值的 。