首页 能链洞察 区块链百科

区块链如何避免双重支付?

区块链如何避免双重支付?

发布时间:2020.06.03

古希腊哲学家赫拉克利特曾说,

人的一只脚不能同时踏入两条河流。

 

而双重支付所描述的问题,

则是指同一笔钱有可能被重复支付两次甚至多次。

 

虽然我们对数字货币的未来预期可能很美好,但要设计和实现一套能经得住实用考验的数字货币并非易事,这其中就涵盖了如何避免双重支付,以保障金融体系的有效运转。
 

一、什么是双重支付?

 

双重支付(Double Spending),又名双花/双重花费, 即同一笔钱(数字货币)被重复支付两次,或者是多次

 

它的发生过程可简单描述为:当一笔从A到B的转账交易刚被写入一个区块X时,它得到了一个确认;而此刻可能另一笔从A到C的交易正被写入区块Y;但它们所依托的是同一笔资产。之后如果以Y为首的链延伸到更长,那么区块X就成为了孤块,被矿工们集体遗弃,其中所包含A到B的交易记录也随之不被大家所承认,于是A就实现了一次双重支付。

 

在传统的金融体系中,由于货币都是物理实体,且具备客观唯一存在的属性,可以相对容易地完成价值的交割。这也就意味着,一笔钱如果支付出去,就实实在在地完成了资产的转移,并不存在双重支付的可能。

 

如今,货币已基本实现通过数字化的形式在账户间流转,但这种“数字货币1.0”的模式,实际上依赖着一个前提:假定存在一个安全可靠的第三方机构负责记账,并为所有环节进行担保,使之完成最终交易。实际上,找到一个安全可靠的第三方并不容易,并且集中式记账方式存在着存储效率低、可信度差、易受攻击等弊端。

 

为了解决以上难题,采用分布式记账方式的比特币系统在2008 年被首次提出,并受到广泛关注。基于区块链分布式记账系统,实现了不借助任何第三方机构,通过分布式节点之间的相互验证和共识机制,有效地解决双重支付问题,并在信息传输的同时完成价值转移。

 

二、区块链如何避免双重支付?

 

我们知道区块链实际上提供的是一个共享账本,并且这个记账本并非记录每个账户的余额,而是用来记录发生过的交易的历史信息

 

正常情况下,每个交易需要包括若干输入和输出,未经引用的交易的输出(Unspent Transaction Outputs,UTXO),可以被新的交易引用作为其合法的输入。而被使用过的交易的输出(Spent Transaction Outputs,STXO),则无法被引用作为合法输入。

 

因此一笔合法的交易,必须是引用某些已存在交易的UTXO(付款方才能合法引用)作为新交易的输入,并生成新的UTXO(属于收款方)。那么,在交易过程中,付款方如何证明自己所引用的 UTXO 合法?

 

在区块链的网络中,一般是通过“签名脚本”来实现。在每次交易时,记账人都会对前一次的交易和下一位拥有者的公钥签署一个数字签名(可信赖的时间戳)。只有当前一笔交易成功,整个交易链被公认后,下一笔交易才基于上一笔交易生成,整个交易过程就是一条交易链。

 

正是基于区块链技术,所有参与方均保存达成共识后的共享账本,因此任何一个参与方进行双重支付或篡改账本数据的难度变得极大,从而保证了账本数据在分布式环境中的高可信度;更重要意义在于,通过建立高效点对点支付高网络,从而实现支付清结算效率指数级提升,推动全球经济的低成本融合。



*本文图片来源于网络,仅供学习交流使用,不具任何商业用途,图片版权归原作者所有,如有侵权还请联系我们,谢谢!