您当前的位置: > 比特币行情 >

比特币和BCH的零确认到底安不安全?-比特币k线基础知识

发布时间:2020-11-11 05:55

比特币和BCH的零确认到底安不安全?比特币的零确认可以让支付秒到,如果能实现安全的零确认,那对BTC和BCH的用户体验都是质的飞跃。相对来说BTC的粉丝绝大多数是拒绝零确认,而BCH的支持者则热衷于发展零确认的安全性。

  本文分析下零确认的安全性。

第1章 什么是双花?

  说零确认不安全就是指零确认的交易有被双花的可能性,要讲明白其安全性,首先就是要定义清晰双花这个概念。

因为是数字货币,数据是可复制的,这就使得一笔数字资产可以被重复使用,这就是双花。简单来说双花就是一笔钱花两次,甚至是花多次。要注意双花这个概念,重要是在于花这个动作,而这个动作是不是能够成功并不是定义双花的关键,只要同一笔数字资产被花出去了两次或多次,那就是双花。之于两次花的动作是否都收到了所购买的商品,即是否成功骗到交易对手,那就是另外一回事了,这分为双花成功和双花失败。

  

下面为了描述方便将发起双花攻击的人称了诈骗者。

  以下是典型的双花场景。

诈骗者使用比特币购买数字产品,比如购买一本电子书,价格为0.01BCH,数字产品不需要物流。他先将0.01BCH发给店家,我们称这笔交易为tx1;然后同时又将相同的这0.01BCH发给自己的一个地址,我们称这笔交易为tx2(我们先不要关心他是如何做到的,下面会解释)。店家使用机器侦察到了交易tx1发出后,觉得没问题,就店铺的机器人就直接发货了,给这诈骗者发了电子书。但因为交易tx1和交易tx2是相冲突的,必然只有一笔能被打包,如果交易tx2最终被打包了,交易tx1就会被作废。这种情况下,诈骗者就成功双花了这0.01BCH,因为他即买到了书,却又收回了自己的0.01BCH。

  针对零确认双花攻击的策略如下:

第1步,诈骗者使用相同的UTXO构造两笔交易tx1和tx2,tx1支付给商家,而tx2的收款地址是自己的。

  第2步,商家侦察到tx1后,在零确认下就发货了,比如无需物流的电子商品。

第3步,诈骗者引诱矿工打包tx2。Tx1就会被作废。这时双花成功,诈骗者即收到了商品,又拿回了他的币。

  零确认是时有发生的,无论是在BTC上还是在BCH上都发生过。著名赌博网站SatoshiDICE(中本聪骰子)就因接受零确认交易而被人双花过。

第2章 非算力用户双花零确认交易

  对零确认的交易发起双花,理论上分为两类,一类是普通用户发起的双花;第二是矿池发起的双花。

先说第一类,一个诈骗可以在网络上物理位置相差很远的两个位置构造两笔相冲突的交易,比如诈骗者刻意把第一笔交易tx1在美国广播,同时将相冲突的交易tx2在中国广播。中美两国网络之间有时间差。诈骗犯使用在美国广播的交易tx1向一个美国店家购买电子书一本,而在中国广播的交易则是发到自己的地址上。商家看到在美国的交易后立刻发货,但没想到,最终在中国广播的那笔交易被打包了,商家就被骗了。

这一类双花零确认交易的攻击其实是非常容易防御的。第1个方法就是商店可以设定一个手续低限,比如,低于1聪/字节的交易就拒绝零确认,提高到1确认才认定为安全的。第2个方法就是商家延迟几秒后,至少使用两个区块链浏览器来检测是否存在相冲突的交易,如果发现有冲突的交易就中止交易,等确认。

  目前BTC和BCH的生态也都针对这一类双花攻击作了一定的防御,比如区块链浏览器就会收集双花交易,并提示用户注意。大部分节点钱包也会拒绝广播手续费太低的交易,但并不是所有的钱包都会拒绝