双重支付是什么

在货币逐渐数字化的时代,交易型态也逐渐使用数字的方式进行,而双重支付就是以数字化的货币进行数次的交易问题,简单来说就是同样的钱可以付两次或者是更多次!这样的问题会影响数字金融交易的大麻烦,因为我们无法确定哪一笔交易才是正确的,哪一笔则是无效的。

什么是双重支付我们来看看应用区块链在双重支付的场景。

传统的双重支付场景,金融市场怎么做

在交易的过程中我们透过被信任的第三方机构(银行)帮忙验证与确认帐户中的余额并确保每一笔的交易都有确实的更新,最明显的例子就像是VISA,我们可以把整个流程区分为:

使用VISA卡进行支付 连线到银行确认所属的帐户余额 银行从帐户中扣押预计支付的金额 银行验证交易后再行扣除帐户扣押的金额

传统的双重支付流程

未来的双重支付场景,看看区块链怎么做

假设今天Carl 使用Bitcoin 向Bob 购买了一杯超商的咖啡,我们在进行双重支付的过程中一定有一个交易事先被进行并且完成。

区块链的双重支付场景与共识机制

此时交易再还没有被出块被验证前,帐户中的钱仍然拥有付款钱的那颗比特币,此时我们再利用同样的钱去向Alice 买了一包饼干。

区块链中的双重支付透过网路机制拒绝未经认可的交易

而这个故事中可以看到Carl针对同一个比特币进行了两次的交易,我们可以称这个结点发起了双重交易。由于区块链中的共识机制(Consensus),有关共识机制的相关基础知识将会有令一篇文章来介绍,而这时的网路机制只能接受第一笔交易的交易,第二笔交易将会被拒绝。但分散式的系统中的网路是多结点的连接因此可能会有一部份的人也接受了第二笔资料,区块链将会进行临时分叉,而最后只会有一个最长的链将会被留下来。

(小知识:比特币区块链中一笔交易的确认(Finality)需要等待六个区块才能被确定)