在没有监督者的生态系统中确保资金不会被双重支付更具挑战性。同样强大的参与者必须围绕一组规则协调行动,以防止欺诈行为并激励所有用户诚实行事。 比特币白皮书中提出的最大创新是解决双重支付问题的方法。虽然没有这样的引用,但是中本聪提出了现在广为人知的数据结构,即区块链。 区块链实际上只是一个具有一些独特属性的数据库。网络上的参与者(称为节点)运行专门的软件,使它们能够将其数据库副本与其同行进行同步。其结果是整个网络可以审计自创世块以来的交易历史。通过公开查看区块链,可以轻松检测和防止欺诈行为,例如试图进行双重支付的交易。 当用户广播一笔交易时,它不会立即添加到区块链中——它必须通过挖矿首先包含在一个区块中。因此,接收者只应在其区块被添加到链中后才将交易视为有效。否则,他们有可能失去资金,因为发送者可能会在其他地方花费相同的硬币。 一旦交易被确认,硬币就不能被双重支付,因为所有权已分配给新用户——整个网络都可以验证这一点。正是因为这个原因,许多人建议在接受付款有效之前等待多次确认。每个后续的区块都大大增加了修改或重写链所需的工作量(这可能在51%攻击期间发生)。 让我们重新审视一下餐馆的情景。Dan回到餐馆,这次注意到了窗户上有一个"比特币接受"的标志。他很喜欢上次吃的那顿饭,所以再次点了同样的菜,花费了0.005个比特币。 Erin向他提供了一个公共地址,他必须将资金发送到该地址。Dan广播了交易,实质上是一个签名消息,说明了他手中的0.005个比特币现在已经转到了Erin的手中。不详细说明,任何收到Dan签名的交易的人都可以验证他确实拥有这些硬币,并且因此有权将它们发送。 正如前文所述,交易仅在包含在确认后的区块中才有效。接受未经确认的交易就像接受前面示例中的40美元eCash,而不立即与银行兑现一样——这允许发送者在其他地方花费它。因此,建议Erin在接受Dan的付款之前等待至少6个区块确认(大约一个小时)。

视频信息