主页 > 苹果imtoken钱包安装 > 比特币的双花问题——哈尔滨工程大学计算机学院2021年区块链技术课程

比特币的双花问题——哈尔滨工程大学计算机学院2021年区块链技术课程

苹果imtoken钱包安装 2023-03-27 07:39:36

2018201104 刘玉丹

2018201501 邓明学

1.1 什么是“双花”问题?

“双花”,即双重支付,是指在数字货币系统中,由于数据的可再现性,系统可能会因操作不当而导致相同的数字资产被重复使用。

在区块链加密技术出现之前,加密数字货币与其他数字资产一样,具有无限的可复制性。如果没有中心化的中介机构,人们无法确认是否已经花费了一笔数字现金。因此,交易中必须有可信的第三方来保存交易账本,从而保证每笔数字现金只会被使用一次。

如果一种数字货币可以重复使用,同样数额的钱花两次或多次,它就没有价值。数字货币背后的数据是一样的比特币解决了什么问题,伪造数据的成本远低于伪造现金。因此,在数字货币交易中,必须解决双花问题。

2.1 常见支付工具如何解决“双花”问题?

我们每天在淘宝等各种平台购物,不需要使用现金。支付宝如何解决“双花问题”?

其实支付宝里的钱在数字世界是不存在的。相反,它仍然存在于现实世界的银行中。当您在淘宝下单并付款给卖家时,您实际做的是:

1.您支付支付宝;

2.支付宝将你的钱存入他们的银行账户;

3.在您确认收货后,支付宝会从他们的银行账户中取出款项并支付给卖家。

简单来说,支付宝只是一个第三方中介。如果你想用数字货币支付,你必须把钱交给第三方中介,可以是支付宝、微信等。这些机构集中管理数据,通过实时修改账户余额来防止“双花” 交易只有在第三方确认后才能成功。

这样做的问题是,人类为交易的第三方验证支付巨额费用。

虽然每笔交易的“中介费”不高,但全球有数十亿人,交易量巨大。而且,此类第三方机构对数据进行集中管理,我们很难判断他们是否会有意或无意(被黑客入侵)篡改数据(当然,这只是一种可能性,并没有明确的方向)。

2.2 比特币如何解决“双花”问题?

我们先假设两种情况:

场景一(假设诈骗者是用户):诈骗者使用数字货币购买数字产品,例如购买电子书,价格为 1 EOS。他先将 EOS 发送到 store,假设交易为 tx1;然后他同时将等量的 EOS 发送到自己的另一个钱包地址,调用交易 tx2。店铺网站程序检测到交易tx1后,感觉没有问题,程序自动将电子书发过去;但由于交易 tx1 和交易 tx2 有冲突,矿工在一个时间点只会打包一笔交易。其他节点矿工会验证并拒绝区块打包成功,因此如果交易 tx2 打包成功,则交易 tx1 将无效。在这种情况下,骗子成功双花EOS,即买了电子书,拿回了自己的。 EOS。

解决方案:这种情况下的双重支出更容易解决。在商店网站程序自动发送电子书之前,让区块确认交易,至少一个区块交易,并且只有至少一个区块确认的交易,它是时间戳并且之前从未存在过,才被考虑对交易有效。目前比特币交易需要6个区块确认才能安全、有效、可靠,避免出现孤立区块的情况; EOS充值确认需要币安至少32个区块确认。

场景2(假设骗子是矿池或矿工):骗子矿工首先构造交易tx1和tx2。 tx1 的费用很低,将 tx1 发送给商家购买电子书,但交易 tx2 是隐藏的,不广播。只需将其保存在自己的块中即可。因为 tx1 的手续费太低,其他节点矿工不想打包;而 tx2 是隐藏的,区块链浏览器不可能找到冲突的交易,商家也无法找到。当商家认为是正常交易时,一旦交易发出,骗子矿工就会将其打包在自己挖出的区块中。这时候区块会被广播,全网所有节点都会发现tx1是非法的,直接作废。如果掉落,商家将不会收到金币。

解决方案:要防御这种双花攻击,我们必须依靠其他矿池矿工的合作。因为欺诈构建的 tx2 交易不会被广播,直接打包到欺诈矿池的区块会被其他矿池发现。如果其他矿池将包含延迟交易(tx2))的区块隔离出来,那么这个欺诈矿池的区块就会白白挖出,区块奖励也会丢失,这是一件非常悲惨的事情。 .具体设置可以是矿池会超过一定的时间,比如10秒内没有看到的交易(tx2),但是包含在最新的区块中),该块将被直接隔离。在该区块之前的高度开采。

(但是如果实现这个隔离策略的算力超过51%,那么基本上没有矿池敢发起这种隐藏交易(tx2)攻击零确认交易。)

比特币作为一种去中心化的点对点电子现金系统,主要依靠未花费交易输出(UTXO)和时间戳来解决“双花”问题。

2.21 什么是 UTXO?

比特币交易的基本单位是未使用的交易输出,简称 UTXO。 UTXO 是一定数量的比特币,不可分割,由所有者锁定并记录在区块链网络中。当用户收到比特币时,该金额将作为 UTXO 记录在区块链中。用户拥有的比特币实际上将作为 UTXO 分散在数百个交易和数百个区块中。

“用户的比特币余额”,源自比特币钱包创建的概念。比特币钱包通过扫描区块链并聚合属于该用户的所有 UTXO 来计算用户的比特币余额。事实上,比特币现金系统中没有账户,没有钱包比特币解决了什么问题,没有余额,只有被记录在区块链中并被所有者锁定的 UTXO。

当一个比特币交易被创建并广播到区块链网络时,收到交易信息的节点会验证该交易并检查它是否存在于UTXO中。如果交易输出不再存在于 UTXO 中,则验证失败。

说白了,UTXO是一个包含交易数据和执行脚本(Pubkeys)的数据结构。此数据结构包含有关每笔交易和未使用交易输出的信息。

以真实钱包为例。一个钱包里有一个10元,一个5元,一个1元,一共16元。比特币账户的余额也是根据该账户的UTXO计算的。

当你花12元买东西的时候,可以拿出10元和5元,然后得到3元找零,那么之前的10元和5元就不再是UTXO了,因为它们已经被花掉了。 ,新改的3元成为新的UTXO,加上之前未动过的1元UTXO,目前余额为4元。这次新的交易记录在新的区块上,但不会改变历史区块的数据。

比特币使用前后链接的区块链来记录所有交易记录。当前面的UTXO出现在后续交易的输入中时,会检查该交易的来源已经不在UTXO列表中,也就是说钱已经花掉了,这个UTXO已经花掉了,不再是一个 UTXO。如果你使用相同的 UTXO 构造两个交易分别支付 A 和 B。那么比特币核心客户端(比特币系统节点)的规则就是只转发最先听到的那个。但由矿工决定哪些交易将包含在未来的区块中。

矿工的挖矿程序一般都是定制开发的,矿工可以随意选择这两种交易中的一种。例如,有些矿工会选择他们最先看到的交易,而有些矿工会选择交易费用较高的交易。

2.22 什么是时间戳?

时间戳,一个完整的、可验证的数据,可以表示在某个时间之前存在的一段数据。通常是唯一标识某个时刻的字符序列。对于采用数字签名技术生成的数据,签名对象包括原始文件信息、签名参数、签名时间等信息。广泛应用于知识产权保护、合同签订、财务会计、电子报价、股票交易等领域。

时间戳在生活中也很常见,比如我们每天阅读的报纸。报纸记录是现实生活中某一时刻发生的事件,而我们在事件发生后通过报纸知道这个事件。报纸是事件的时间戳。事件一旦写进报纸,多份印刷,以后的人就很难篡改了。

比特币现金系统还引入了时间戳的概念。事实上,比特币现金系统是一个由众多节点参与的分布式数据库,是一个开放的大账本;它由一系列数据块组成,即块,根据密码方法生成。系统会自动给每个区块的数据信息加上时间戳,从而计算出一个数据加密值,即哈希。每个新区块都包含前一个区块的哈希,从创世区块开始,链接到当前区块链,形成区块链。

比特币现金系统本身被构建为一个永无止境且坚不可摧的时间戳系统。系统使用数字时间戳来保证每个区块都按时间顺序连接到区块链上,时间戳也标记了区块链上的每一条数据。

假设用户将其 UTXO 中的 1 个 BTC 同时转移到两个不同的账户,则两次交易中只有一笔交易成功完成。为什么?因为系统中的节点会选择性地记录最先收到的交易。当同一节点同时记录两个交易时,根据时间戳数据,只有最先记录的交易才能被确认为成功。

如果他两次转账的时间间隔非常非常接近,“用户在12:34:56向一号账户转账1比特币”,“用户在12:34:57向二号账户转账”账户 1 比特币”恰好被两个不同的节点记录,会不会出现“双花”?也不会。这两个节点会同时向比特币网络广播自己挖出的包含相关交易的区块。此时,区块链会分叉,剩下的节点会选择在他们认为最长的链上构建新的区块,最后可以确认最先构建新区块并成为当前最长链上的交易(通常是6个区块)成功。所有后续节点都会在这条最长的链上构建新的区块。

4.总结

比特币作为一种去中心化的点对点电子现金系统,主要依靠 UTXO 和时间戳来解决“双花”问题,它教会了世界如何在不信任第三方的情况下转移数字资产。

面对“双花问题”,比特币现金系统是这样解决的:

首先,每笔交易都要先确认对应比特币之前的情况,检查是否存在于用户的UTXO中。否则,交易将被系统拒绝。

如果用户使用相同的UTXO支付两个不同的账户,系统中的节点只确认最先收到的一个。

当两个及时关闭的交易被不同的节点确认时,区块链将分叉。其余节点选择在他们认为最长的链上构建新块。当其中一笔交易被 6 个节点确认后,将成为系统中最长的链,此笔交易可视为最终确认。

有什么例外吗?

是的。如果用户能够掌握比特币网络中超过 50% 的节点,即使他落后于最长的区块链(记录“用户在 12:34:56 将 1 个比特币转入第一个账户”),他也无所谓。你可以继续在另一个区块链上构建块(记录“用户在 12:34:57 将 1 个比特币转移到韩的第二个账户”),直到它赶上并成为新的最长链,这就是比特币的“51% 攻击”。

“51%攻击”确实是比特币需要警惕的问题,目前还没有发生。原因也很简单,首先,没有人能轻易掌握51%的节点;其次,如果一个人或机构掌握了 51% 的节点,他就是比特币现金系统中最大的受益者。如果他发起 51% 攻击,比特币的价值将立即归零(可以“双花”的比特币一文不值),然后他自己将成为最大的受害者。

参考资料: