至此,一个基于大家互相遵守规则的比特币网络已经定义完毕.上文已经讨论,比特币的有效性依赖非对称加密的保障.
在假设非对称加密难以破解的情况下,比特币的最大的风险就是双重支付的预防.但是,只要所有的计算节点都遵守既定规则,比特币网络将会非常稳定,有效的运行.那么对于故意造成双重支付的恶意攻击,比特币网络是否有足够的能力容错呢?
事实上区块链并不能100%杜绝双重支付.假设有一个攻击者希望使用比特币进行网络购物,同时利用双重支付撤回资金,需要做的是:先将自己有效的比特币支付给收款方A,收款方等待该笔交易被纳入到新的区块链中后,向攻击者寄送商品.待攻击者收货后,立即将已经使用的比特币重新支付给自己的另一个账户.这笔支付显然是无效的,因为网络中的大部分节点不会认可这笔交易.此时攻击者只能使用其他手段(网络渗透手段),控制比特币网络中超过51%的计算节点认可这笔新交易(通过创建新区块的方式认可),这就称为51%攻击.
51%攻击的关键是控制比特币网络中的算力,而这并非没有可能.在比特币的挖矿网络中,有一种称为'矿池'的合作形式:大量计算节点分摊挖矿任务,共享挖矿收益.
由于成功的区块创建是小概率的随机事件,对任何一个节点而言,成功地创建区块的可能性微乎其微.为了能够获得稳定的收益,部分计算节点开展合作计算,形成'矿池',来提高成功率,同时分摊区块激励.
当矿池形成相当的规模,聚集了比特币网络中超过51%的节点,这个矿池就会对现有的比特币网络的可靠性造成威胁.因此比特币网络中各大矿池的算力是监控其安全性的重要指标.
但需要注意的是,51%攻击只能影响未来的区块(交易),而几乎不能改变过去已经经过多次确认的区块(交易).
作为比特币的收款方,为避免遭到'双重支付'和'51%攻击'的欺诈,最有效的手段是确保交易经过了多次区块确认.通常推荐等待超过6个区块之后再确认交易.
一般一个区块需要10分钟时间产生,那么一个稳妥的交易确认需要等待近1个小时.因此在实际交易中使用比特币时,商家一般需要等待1小时来确认收款并发货.
比特币的每个区块只能包含不超过1Mb的数据,这限制了每次区块能够确认的交易数量.当未确认的交易数量远超过这一数量时,矿工会优先选择手续费更高的的交易进行确认.
随着比特币交易量逐渐增加,比特币的交易费用也在急剧增加.那些交易费过低的交易,可能很长时间都得不到确认,甚至永远也不能被验证.
如果遇到交易因为交易费过低而无法被验证的状况,可以采用的解决方案是利用'双重支付',重新使用更高的交易费发起交易,但这一行为不被大多数比特币钱包所支持(毕竟这一行为违反规定).另一个解决方案是收款人使用未确认的资金发起一笔给自己的交易,附带上更高的交易费用.矿工为了确认这笔高费率交易,必须连带确认其前置交易.
在比特币网络中,私钥代表了比特币的所有权.泄漏私钥就意味着放弃这个私钥所关联的所有比特币.而且由于区块链去中心化的原因,这笔资金盗用无法向任何机构或个人申诉,因为这个账簿无法撤回,也无法篡改.
而且由于比特币的匿名性,这笔资金的去向无法追踪.因此个人比特币钱包的私钥可能是比特币网络中最为脆弱的部位.通过社会工程学手段盗取他人私钥,是对比特币网络最有效的攻击方法.
此外,如果任何一个人比特币钱包的私钥丢失,就意味着此钱包中的所有比特币消失于世.事实上这件事情一直在发生,也就意味着比特币不仅总量有限,而且还是逐渐递减的.这进一步加剧了比特币的通货紧缩.
比特币的另一个基础是非对称加密.这一技术在目前而言是几乎难以破解的,但随着量子计算的发展,比特币的安全性极有可能瓦解.但在目前看来还为时尚早.
除此以外,针对比特币的破解项目还包括Large Bitcoin Collider[1].该项目试图将破解比特币的巨大工作量分摊给大量的电脑,由它们协作完成对比特币的破解.但该破解的计算量达到了2的160次方,目前看来破解的可能性也微乎其微.
尽管如此,我们仍需要随时关注密码学的最新进展,以确保比特币的技术还足够安全.