相信很多人都幻想过把一份钱当成两份、三份、甚至是多份用。数字货币的本质是一串字符,那能不能将代表着数字货币的字符复制拷贝,当成两份、三份、甚至多份用呢?
古代传说中有聚宝盆,只要放一份钱进去,就可以复制出无数份来。对于数字货币来说,得私钥者得货币,既归属于个人又没有第三方监管,如果有人复制这些私钥的代码,那么会不会产生出无数份钱来呢?
想象一下:你花光了支付宝里的钱买了一颗钻石,由于系统问题,这笔钱未被扣除,你发现余额还在,马上又买了一颗,此时第一笔的扣费才刚刚生效,当店员发现问题时,你已经拿着两颗钻石不见了。
将一份钱花了两次或者多次,就是所谓“双花”(Double-spending)。双花的危害性之大,在比特币仅9 页的白皮书中被提到了多次,它称“……is incomplete without a way to prevent double-spendin”,意思是,如果虚拟货币没有解决双花问题,那么将是不完整的。
在现实生活中,每天都进行着海量交易,为了不出错,银行、支付宝、微信支付这样的金融平台需要对数据进行处理和校验,让我们在数字支付中免遭“双花”风险。
可是虚拟货币是点到点的交易,并没有这样的金融平台,如此风险巨大的双花问题又该如何处理呢?
在正常情况下,区块链的交易流程是这样的:李雷用1个比特币给韩梅梅买一款钻戒,这时候李雷从自己的账户里转出1个比特币到老板的比特币账户里,这笔交易将会被矿工验证并打包记录在区块编号为 N 的区块里,李雷的账户中将减少1个比特币,金店老板的账户中将增加1个比特币。可见,交易验证和打包记录是交易能否生效最重要的一环,这项工作由负责打包数据和出块的矿工负责,数据也会得到全网矿工的确认。
但如果李雷控制了比特币全网51%的算力,他就可以利用这个规则,拥有修改区块交易记录的能力。当他想“双花”这个比特币时,他就可以在买完钻戒付完比特币后,修改第 N -1 区块之后的所有区块数据,从而分叉出一条新链。由于李雷掌握了51%的算力,能够更快地生产出新的“区块”来,因此新链很快就会成为最长的链,被所有节点接受,从而成为主链。在这条新链上,没有李雷和老板的交易记录,李雷买钻戒的比特币仍在自己的账户里。与此同时,李雷拿到了钻戒,通过“51%算力攻击”成功实现了“双花”。
如果一个币种遭受“51%算力攻击”,链上的数据将被篡改,这个币种的价格大概率会归零,变得一文不值。
“51%算力攻击”主要针对采用PoW共识机制的区块链,发起“51%算力攻击”还需要考虑两个因素:一个是能否租到足够多的算力,另一个是攻击过程中的算力成本和电费。
对有些区块链来说,发起“51%算力攻击”的成本,并没有大家想象得那么高,甚至可能低到令人吃惊。
根据Crypto51 网站2020年12月2日的数据,对QuarkChain发动“51%算力攻击”的成本为每小时25美元,且能租到足够充裕的算力,这意味着,对于这条链的攻击,理论上是有可能的。
为什么对有些币种发动“51%算力攻击”的成本这么低呢?主要有以下几个原因。
1.不少基于PoW共识机制的币种,由于参与的挖矿工少,总算力很小,很容易发起算力攻击。
2.随着ASIC 矿机的出现,拥有大量矿机者很容易获得小币种51%的算力。
3.算力租赁市场的出现,使得想发起51%算力攻击的人,可以低成本、短时间从算力市场租到足够的算力。由于算力是租的,攻击者就更能进退自如了。
以上三条是对那些参与挖矿的人不多,整个网络的算力也比较低的币种而言的。
对于比特币这种已经拥有巨大算力的链,发起51%算力攻击的成本非常大,而且难以租到足够多的算力,所以想通过算力成功攻击比特币几乎不可能,这就是很多人信赖比特币的原因。