主页 > imtoken新版app > 区块链安全系列——什么是双花问题?

区块链安全系列——什么是双花问题?

imtoken新版app 2023-11-11 05:08:44

什么是双花?

双重支出问题是数字现金系统中的一个潜在问题,在这种系统中,相同的资金会同时支付给两个接收者。 如果没有合适的机制,单靠协议是无法彻底解决双花问题的。 用户无法验证他们收到的资金是否同时没有在其他地方支付过。

比特币双花攻击的原理分析_比特币攻击_比特币源码分析

对于数字现金比特币双花攻击的原理分析,确保特定货币单位不可重复至关重要。 如果 Alice 可以收到 10 个货币单位,可以复制粘贴 10 次,然后发现自己有 100 个货币单位,那么整个系统就会崩溃。 同样,如果她可以同时向 Bob 和 Carol 发送相同的 10 个货币单位,则该机制将无法正常工作。 因此,为了使数字货币正常运行,必须有适当的机制来防止这种行为的发生。

如何防止双花的发生?中心化方式

集中式方法比分散式方法更容易实施。 通常,需要监督者来管理系统并控制单位的发行和分配。 David Chaum 的 eCash 是集中解决双花问题的一个有效例子。

为了向用户发行类似现金的数字资产(具有匿名性和点对点交易属性),银行可以使用盲签名——密码学家 David Chaum 在他 1982 年的论文“A Non-Traceable Blind Signature Payment Scheme”中描述了这一点。 了解详情。

在这种情况下,如果用户(Dan)希望提取 100 美元的数字现金到他的银行账户,他必须首先通知银行。 如果他的账户中有余额,那么他会生成一个随机数(或者对于较小面额的多个随机数)。 假设他生成了五个随机数,每个代表价值 20 美元。 为了防止银行能够追溯到特定的货币单位,Dan 通过向每个随机单位添加致盲因子来混淆 nonce。

然后他将此数据提供给银行,银行从他的账户中扣除 100 美元的余额并签署消息比特币双花攻击的原理分析,证明这五条消息中的每条都可以代表 20 美元。 之后,丹可以使用银行发行的数字现金。 现在他花 40 美元在 Erin 的餐厅吃饭。

Dan 可以移除致盲因子以暴露与每个数字现金“账单”关联的随机数,它可以用作每个单元的唯一标识符(很像序列号)。 他向 Erin 透露了其中两笔,Erin 现在必须立即向银行申请核实资金,以防止 Dan 将它们支付给其他任何人。 银行将检查签名是否有效,如果一切正确,它将向 Erin 的帐户存入 40 美元。

既然以上所有交易都已核对,如果艾琳想以同样的方式使用她的账户余额,她必须在银行账户上做同样的事情。

Chaumian eCash 设置对于私人转账非常有价值。 但是,由于银行是中心化节点,可能会出现单点故障,所以在某些情况下会无法正常工作。 而且在一定程度上,银行发行的资产可能一文不值,因为它值的正是银行想要的,再换算成美元。 客户会受到银行的影响,必须依靠银行的信用背书才能体现自己的价值。 这正是加密货币旨在解决的问题。

分散方式

如何确保在没有监控机制的生态系统中不发生“双花”支付,则更具挑战性。 具有同等能力的参与者必须根据一套规则进行谈判,以防止欺诈并激励所有用户诚信经营。

比特币白皮书提出的最大创新是解决双花问题。 中本聪提出了一种现在被广泛称为区块链的数据结构,尽管它并没有被这样引用。

区块链实际上只是具有某些独特属性的数据库。 网络上的参与者(称为节点)运行专门的软件,使节点能够将其数据库副本与其他节点同步。 使整个网络能够从创世块开始审计和跟踪链上发生的交易。 通过公开查看区块链,可以轻松检测和防止欺诈活动,例如识别双花交易。

当用户广播交易时,它不会立即被添加到区块链中,它必须首先通过挖矿被包含在一个块中。 这样,收款方只有在确认交易已被添加到区块链后,才能认为交易有效。 否则,他们可能会损失资金,因为发件人可能已经在其他地方支付了相同的代币。

如果交易由区块链正式确认,则代币不可能被重复使用,因为所有权已分配给新用户,并且可以由整个网络验证。 出于这个原因,许多人建议在接受有效付款之前等待多次确认。 后续每个区块的验证都会大大增加修改或重写区块链的工作量(类似于51%攻击)。

让我们回顾一下刚才餐厅的消费场景。 丹回到餐厅,这次看到橱窗上贴着“这里接受比特币付款”的标签。 上一顿吃得太满足了,他又点了同样的套餐。 花费他 0.005 BTC。

艾琳向他展示了一个公共地址,他必须将资金汇至该地址。 Dan 付款后,交易被广播,这实质上是一条签名消息,表明 Dan 拥有的 0.005 BTC 现在由 Erin 拥有。 无需过多赘述,与 Dan 签署交易的任何人都可以验证他确实拥有这些代币,因此有权发送它们。

但是,如前所述,交易只有在区块链确认后才有效。 如果在没有区块链确认的情况下确认收到资金,就像在之前的案例中收到 40 美元的 eCash 一样,如果没有立即通过银行兑现,汇款人可以将资金转移到其他地方。 因此,我们建议 Erin 至少等待 6 个区块确认(约 1 小时)后,再确认 Dan 的付款。

比特币双花问题

比特币经过精心设计,可以防止双花攻击,至少在协议按预期使用的现阶段是这样。 也就是说,如果我们等待交易在一个区块中得到确认,发送方就没有简单的方法来撤销它。 为此,他们将需要“逆转”区块链,这需要非常大的哈希计算资源。

但是,对于一些未确认的交易,可能会发生少量的双花攻击。 例如,对于一些小额消费场景,商家可能不会等到交易经过区块链验证后才进行确认。 一家繁忙的快餐店可能无法等待每一笔购物交易都在区块链上得到验证。 因此,如果企业启用了“即时”支付,则可能会发生双重支出。 有人可能会点一个汉堡包,付钱,然后立即将相同的资金发送到他们自己的地址。 当后面的交易手续费较高时,后面的交易很可能先被确认,从而使前面的交易无效。

双花攻击有两种常见的方式:

正如我们所见,等待区块确认可以大大降低成为双花受害者的风险。

总结

“双花”问题可能导致部分用户在电子现金系统上多次使用同一笔资金,谋取不正当的经济利益。 传统上,该领域也缺乏相应的解决方案。

不过值得庆幸的是,中心化金融解决方案采用了盲签的方式来解决这个问题。 后来,工作量证明机制和区块链技术的诞生催生了比特币作为一种强大的去中心化货币形式,有效地防止了双重支出,这反过来又激发了数以千计的其他加密货币项目。