事实上对零确认的交易进行双重花费的成功概率比人们预想得要高得多,所以在交易金额较大时,请至少等待交易被确认后再付款。而按中本聪的创世论文所说,至少要获得 6 次确认才能认为交易不可逆。货币交易平台开发+v:ruiec1688
双重支付的两种方式
首先简单解释一下什么是双重支付。所谓双重支付的情况,就比如说A向B支付了一笔币,然后她又把相同的币再一次支付给了C,A基本上试图进行两次支付,其中的一笔她知道会被拒回。当然,当我们考虑支付时,A的某些账户通过写这两次支付被透支了。这很接近比特币的工作原理,但并不是十分准确。
比特币并不是基于帐户模型的,而是基于未花费交易输出(UTXO)。一笔交易的输出基本包含了一个地址以及数量。一旦输出被使用了,它就无法再次被花费。试想一下一个UTXO(作为一笔发送给你的币),它可以是任意数量的,比如说0.413 BTC。
比特币的双重支付意味着一笔币(UTXO)被花费了两次。通常,这意味着A将她的0.413 BTC发送给了B,然后她又把同一笔比特币又发送给了C。
比特币的解决方法是,其中一笔交易会纳入一个区块,由此来决定实际谁得到了报酬。如果两笔交易不知何故都传递到了多个区块,那么后面发生的区块,就会被软件给拒绝掉。如果两笔交易都在同一个区块当中,那么这个区块也会遭到软件的拒绝。
基本上,比特币软件会检测到双重支付行为,如果有双重支付行为的发生,则应该拒绝掉相应的区块。然而,在两笔不同的交易中发送同一个UTXO,并不是唯一的双花方法。
实际还存在着同一UTXO在同一交易进行双重支付的病态情况。在这种情况下,A向B发送同一笔币两次。所以,A实际支付的是0.413 BTC,但B收到的却是0.826 BTC。这显然不是一个有效的交易,因为只有一笔价值0.413 BTC的UTXO 是被发送的。这就相当于,A用同一10美元向B发送了两次,而B收到的则是20美元。
那么双花问题是否不利于货币交易平台的交易呢?
因此,总结一下我们所定义的两种类型的双重支付尝试:
1.使用两笔或更多的交易,来花费相同的UTXO;
2.使用一笔交易花费同一UTXO多次;
结果表明,Bitcoin Core 软件正确地处理了第一个问题,而第二个问题,正是我们要关心的。任何人都可以像这样构造出一笔双花交易,但要让节点接受这种交易,又是另一回事了。
目前有两种方法可以让交易被纳入一个区块当中:
A. 支付足够的费用,将交易广播到网络上,那么矿工会负责把交易纳入区块当中;
B. 作为一名矿工,把交易纳入一个区块;
(A) 除了创建交易,并将其广播到网络上的节点之外,你不需要做太多的工作。
(B) 需要你找到足够的工作量证明。这也是这次漏洞的关键。
(A) 不是一个可能的攻击向量,因为这些交易会立即被标记为无效的,网络上的节点会拒绝它们。没有矿工们的合作,这种交易就无法进入矿工们的记忆库,因为它们不会得到传播。
(B)是漏洞显现的唯一情况。换句话说,想要利用这个漏洞,你就需要工作量证明,或者说足够的矿机设备和电力。
所以比特币双花问题对于货币交易平台交易和开发货币交易平台来说问题不是很大,但是如果要是真的开发货币交易平台的话,一定要找一个专业的开发公司,借助成熟经验去制作你想要的系统。保密性,安全性都有所保障,这是较理想的选择。+ruiec1688 开发一款货币交易平台,在各方面成本都不低,还是要自己有一定的实力才可以去做,而不是简单的做一个模版去运作。
网友评论