主页 > www.token.im > 什么是比特币双花问题

什么是比特币双花问题

www.token.im 2023-05-17 06:06:11

图片来自简书App

先问一个问题:

小明在星巴克点了一杯拿铁,付了钱给漂亮的收银员30元现金。喝完咖啡,小明走进隔壁的花店,给女朋友买了一束玫瑰花。他摸了摸口袋,发现最后30元现金已经被用来买咖啡了。这个时候,小明要是想用星巴克小姐的30块钱去买花。有可能吗?

不可能。除非他偷了那位小姐的钱。

如果小明用数字货币代替现金呢?

要回答这个问题,你需要了解“双花”问题。

01 什么是“双花”问题?

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

“双花”是任何数字货币都必须解决的问题。为什么?

如果数字货币可以重复使用并且相同数量的钱被花费两次或更多,那么它就没有价值。

在上述星巴克买咖啡的情况下,小明使用的30元现金很容易被小姐姐确认。但如果小明用的是某种数字货币,那小姐姐就不是那么容易确认的了。其实30元数字货币背后的数据是一样的,伪造数据的成本比伪造现金要低很多。

02“支付宝”人如何解决“双花”问题?

那你可能要问了,我天天在淘宝上买买买,不用现金。支付宝如何解决“双花问题”?

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

您支付支付宝;

支付宝将您的钱存入他们的银行账户

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

简单来说,支付宝只是一个第三方中介。当你走进任何一家商店,无论是星巴克还是花店,如果你想用数字货币支付,你必须把钱交给第三方中介,比如支付宝或微信。此类机构通过实时修改账户余额来集中管理数据并防止“双重支出”。只有经过第三方确认后比特币不能交易,女士们才会将咖啡和玫瑰送给小明。

这是怎么回事?

人类为交易的第三方验证支付巨额费用。

虽然每笔交易的“中介费”不高,但如果交易数量很大怎么办?要知道,全球有超过 75 亿人,日交易量高达万亿。更值得注意的是,此类第三方机构对数据进行集中管理。他们会有意或无意(黑客)篡改数据吗?我不知道。以支付宝和微信为例,只是因为我在日常生活中经常使用它们,而不是抹黑它们,它们都是很棒的公司。

那么我们是否可以在不信任中心化第三方组织的情况下将数字资产转移给某人?

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

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

什么是 UTXO?

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

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

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

小明将 1 BTC 转给李雷。整个过程如下:

小明要发送的 1 个比特币存在于小明的 UTXO 中;

小明发送的金额等于李磊接受的金额,即1BTC;

p>

李雷收到后,从李雷的UTXO中解锁1个比特币,进入李雷的UTXO。

比特币现金系统记录每一个当前的“未使用的交易输出”。当节点收到一笔交易时,需要在UTXO数据库中查询该交易引用的UTXO是否存在,以及其收款人(owner)是否为当前新交易的付款人。交易结束后,系统会相应更新。

什么是时间戳?

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

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

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

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

假设小明将他的 UTXO 中的 1 个 BTC 同时转给李雷和韩美美,那么两笔交易中只有一笔会成功完成。为什么?因为系统中的节点会选择性地记录最先收到的交易。当同一节点同时记录两个交易时,根据时间戳数据,只有最先记录的交易才能被确认为成功。

如果小明两次转账的时间间隔很近,“小明在12:34:56给李雷转账1比特币”,“小明在12:34:57转账1比特币”“给韩美美1比特币”恰好被两个不同的节点记录,会不会出现“双花”?也不会。这两个节点将同时向比特币网络广播他们挖掘的包含相关交易的区块。这时,区块链会分叉,剩下的节点会选择在他们认为最长的链上构建新的区块。最后,第一个构建一个新区块并成为当前最长链(通常为 6 个区块)上的交易即可成功确认。所有后续节点都会在这条最长的链上构建新的区块。

综上所述比特币不能交易,面对“双花问题”,比特币现金系统是这样解决的:

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

如果小明用相同的UTXO支付给李雷和韩美美,系统中的节点只会确认最先收到的那个。

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

有什么例外吗?

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

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

05 总结

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