时间:2021-11-23|浏览:3071
有一种说法是,如果你控制比特币、以太网或其他区块链超过 50% 如果你有计算能力,你可以在网上做任何你想做的事情。股权证书的类似重申是,如果你控制了三分之二以上的股权,你可以做任何事情。你可以拿走别人的硬币。你可以打印新硬币,这不是真的。让我们讨论一下 51% 攻击能做什么?它们可以阻止你使用链条,也就是阻止任何你不喜欢的交易。这叫审查制度。它们可以恢复链条,即取消一定数量的块,改变交易顺序。他们不能做的是改变系统的规则。这意味着例如:除了区块链系统的规定,他们不能简单地印刷新的代币。
例如,比特币现在给每个新的区块生产者 6.25 BTC;他们不能简单地把它变成 100 万个 BTC。他们不能从没有私钥的地址消费代币。它们不能制造比共识规则允许的更大的块。这并不是说 51% 攻击没有破坏性。他们仍然是非常糟糕的攻击。重新排序允许双花硬币,这是一个很大的问题。但是他们能做的有限。现在,包括比特币和以太网在内的大多数区块链如何确保这一点?矿工开采违规块会怎么样?还是大部分股权都签了违规块?
区块链安全模型
有时候人们声称最长的链条是有效的比特币或者以太坊链。它有点不完整。当前链条的正确定义是:总难度最高的有效链。因此,在接受应用链表示当前历史记录之前,客户端需要验证两个属性:1. 它必须有效。这意味着所有的状态转换都是有效的;例如,在比特币中,这意味着所有交易只花费以前没有花费的交易输出。coinbase 只有交易费用和区块奖励等。2. 它必须是最困难的链条。
一般来说,这是最长的链条,但它不是用块来衡量的,而是在这个链条上花费了多少总挖掘能力。这听起来可能有点抽象。问谁来验证第一个条件,就是链条上的所有块都要有效,这是合理的?因为如果只有矿工验证这个链条有效,那么这就是同义反复,我们并没有真正得到什么。但是区块链不不同。让我们看看为什么,从普通客户端。/服务器数据库架构开始:
请注意,对于典型的数据库,用户信任数据库服务器。他们不检查反应是否正确;客户端保证根据协议有效格式化,仅此而已。客户端(这里用空方块表示)是哑巴:不能验证任何内容。
所以我们来总结一下这里发生的事情。有生产链的矿工(或质押者)。有一个点对点网络——它的作用是保证一个有效的链总能被所有人使用,即使有些节点不诚实(你需要至少连接一个诚实良好的链接 P2P节点,以确保您将始终与有效链保持同步)。还有一个客户端,他将交易发送到 P2P 网络,并从网络中的其他节点接收最新的链更新(或完整的链,如果它们同步)。它们其实是网络的一部分,会通过转发块和交易做出贡献,但这在这里并不重要。
重要的部分是用户正在运行一个完整的节点,如客户端中的圆柱体所示。每当客户端得到一个新块,就像任何其他节点一样,无论是矿工还是 P2P 在网络中一个节点将验证该节点是否是有效的状态转换。如果不是有效的状态转换,这一块就会被忽略。这也是矿工试图在网络中挖掘无效状态转换意义不大的原因。大家只会忽略。
许多用户运行自己的节点来与以太网或比特币等区块链互动。许多社区已经把它作为他们文化的一部分,并非常重视每个人都在运行自己的节点,所以它们是验证过程的一部分。其实你可以说大部分用户,尤其是有很多价值的用户,运行整个节点真的很重要;如果大部分用户变得太懒,矿工可能会突然被诱惑产生无效块,这种模式将不再成立。
类比:三权分立
你可以把它想象成一个有点像自由民主国家的权力分立——政府有不同的部门,只是因为你在其中一个部门(比如立法)中占大多数,并不意味着你可以做任何你想做的事情,喜欢并忽略所有的法律。矿工或权益持有者有权在区块链订购交易;他们没有权利简单地为社区规定新规则。
但是所有的区块链都是这样工作的吗?这是个好问题。需要注意的是,这只有在完整节点易于运行时才有效。作为普通用户,如果这意味着必须花钱 5,000 美元购买另一台计算机永久需要 1 GBit/s 如果你连接互联网,你根本不会这么做。即使你能在某些地方得到这样的连接,也不一定方便它被你的区块链节点永久堵塞。在这种情况下,你可能不会运行自己的节点(除非你的交易非常有价值),这意味着你会信任别人为你做。
想象一下,一条链的运营成本如此之高,以至于只有质押者和交易所才能运营一个完整的节点。你刚刚改变了信任模式,大部分质押者和交易所都可以联合起来改变规则。我不会和用户争论——如果用户根本控制不了链条,就无法领导分叉。他们可以坚持旧规则,但除非他们开始运行完整的节点,否则他们不知道是否使用符合他们想要的规则的链条来回答他们的要求。这就是为什么关于增加块大小(如以太网或比特币)的争论——每次这样做,都会增加运行自己节点的人的负担。对于矿工来说,这不是什么大问题——相对于实际的采矿操作,运行节点的成本很小——所以它将权力的平衡从用户转移到矿工(或抵押者)。