数字货币的提出,也带来了很多问题,最主要的问题是双花问题(double-spending problem)。双花问题即是使用同一货币进行多次支付,从而达到欺诈的目的。
根据网上的资料,可以了解到有两种手段可以达成该目的:
1、0确认
例如A共有1个比特币,并先后支付给B和C各一个比特币购买商品。若B和C尚未等该笔交易写入新的区块(比特币每10分钟产生一个新的区块,包含前一区块信息和这十分钟所发生的交易),就提供商品,那么B能收到比特币,C不能收到,受到欺诈。
这个问题会对交易的及时性产生一定影响,需要收款方等待一定时间,完成确认后进行交易就能避免这种情况发生。
2、算力攻击
区块链存在一个特性,当同时产生多个正确区块时,产生支链。矿工按自己受到区块广播的先后顺序,把先到达的区块作为上一区块进行计算。经过一段时间后,最长的支链被确认成为主链,其他被抛弃。根据这一特性,当A支付一笔比特币后,若能更改交易记录,并使错误记录成为主链后,就能完成欺诈。
为了解决这一问题,许多数字货币采用了POW,以太坊正在往POS与DPOS过渡。
POW是Proof of Work的缩写,即工作证明,是中本聪受到Adam Back的哈希现金(Hashcash)算法的启发。哈希现金主要用于垃圾邮件的过滤,让发邮件的人完成一个难以计算却容易验证的问题,在内容后添加后缀,使计算的hash值前指定位数为0。因为后缀对hash值的影响难以预料,只能通过不断试错的方式进行。对于普通的邮件发送者,发送少量的邮件只需让计算机进行几秒的计算,对于垃圾邮件发送者,大量的计算会耗费大量的算力。对于区块链来说,每个区块的产生也需要指定该区块头hash值的0的位数,0位越多,计算难度越高,难度会根据全网算力动态调整。
回到算力攻击,使用算力占全网算力的比例来代表挖到新区块的概率。中本聪在论文中指出,若恶意攻击者的算力小于可信矿工的算力,那么随着时间过去,恶意攻击者让错误区块成为主链的可能性迅速下降。POW的作用是让可信矿工用算力来证明自己的可信度。但是若恶意攻击者掌握全网51%的算力,那么算力攻击可能实现。
据传闻中国掌握着全世界60%的算力,且专门为挖矿设计的矿机也在不断出现。为了解决中心化的问题,新的共识算法即将使用。
POS是Proof of Stake的缩写,即权益证明。相当于股份公司的股份,参与者的权力也由所持有的数字货币决定。由此产生一个新的概念——币龄,区块链会根据参与者持有货币的数量和时间计算一个币龄,并根据币龄分配币息。而DPOS则更像一家公司,它是Delegated Proof of Stake的缩写,即授权权益证明。它通过投票,产生一种类似董事会的组织,让大家都信任的节点进行决策。