比特币零确认交易安全吗?
时间:2015-01-10 来源:巴比特 作者:return10
交易大概每隔10分钟会被区块链确认一次。零确认交易在区块中不存在。相反,零确认交易存在于矿工的存储器组合(memory pool )中。在包含这笔交易的块被挖到之前,可以说其有“零确认”。一旦包含在一个块中并且写入到区块链中,那么这笔交易就有一个确认了。 在区块链中,确认次数是度量交易的深度或年龄的一个标准,确认次数越大,这笔交易的年龄越大。当交易第一次向网络广播,它们就是零确认交易,一些交易所和商家不接受这样的交易。比特币支付款在等待确认的过程中处于不稳定状态。 比特币的六个确认偏见 如今,交易所和商家在接受一笔交易前要求达到最小确认数,在过去更是如此,一般是6个确认。为什么 在零确认交易被广播后可能需要等待短到几秒到长到几个小时甚至几天的时间来确认。尽管这样,没有方法能撤销已经广播出去的交易,这里对接受零确认交易存在偏见。 第一个理由是害怕双花攻击。 在比特币网络里广播多重交易到不同网络节点是可能的。最先传播到最长区块链获得记账权。攻击者通过广播两笔零确认交易进行重复支付是可能的。如果时控正确,商家软件在接收这笔双花交易前会接受假的交易。 商家在技术上接受了无效的交易。缺陷存在的原因是交易传播到网络所花费的时间。两笔交易在整个网络进行传播竞赛。 例如,如果我的客户端直接连接你的全节点,我的交易将首先通过你的软件转播出去。你的客户端将存储这个交易并通过它连接的节点转播出去。如果我创建另外4个客户端并且让其与全节点连接,我就能对你的节点进行欺骗。 如果我的客户端都用同样的钱包软件,通过密钥,它们可以生成支付相同的比特币的两笔不同交易。我定时广播交易以此来对你进行欺骗。我的客户端通过你连接到网络将发送一笔交易到你的一个地址。我其他的4个客户端将广播相同比特币的不同的交易到我的一个地址。 在短时间内,你将不会与网络进行同步。这样就为潜在的攻击打开一个机会窗口。 双花的风险到底有多大 类似Bitpay的服务接受零确认交易是因为他们监控网络上的关键节点。一旦交易通过这些“矿工”,这笔交易无效的可能性很小。在30秒后进行双花的可能性没有了。这笔交易已经被大部分网络节点转播了。任何试图广播相同比特币的新交易将失败。 进行双花的时间窗口很短。任何通过Bitpay付款处理的交易只需几秒后就可看作是安全的,可以接受的。而且,大部分交易进行双花的成本远大于它的收益。对小额交易进行双花并不是一个有利可图的事。1000美元以下的交易很可能是安全的。然而,等待30秒让交易转播出去是合理的。 零确认交易并不孤单 第二个担心是坏蛋控制大部分算力的话,就能够独立于过去的区块而新建一条分叉链。这种情况下,攻击者挖到区块。矿工开始用分叉区块链,并且广播支付比特币的交易而不是广播这个区块。 网络会确认这笔交易,并将其打包到区块中。攻击者将继续在他们的分叉区块链上添加区块。如果他们的分叉链比主链还长,就发布他们的区块。在比特币中,最长的链往往赢得记账权。确认双花交易的区块变成了孤立和无效的块。攻击者的区块包含了他们早期花费的比特币交易。 这样的蛮力攻击的可能性也很低。这种比特币攻击的成本远高于进行双花的成本。然而零确认始终存在发生这种攻击的风险,确认时间越长,攻击成功的概率越小。控制全网10%的算力的攻击者,只有0.1%的可能性改变6个确认交易。 |