1.1.1 数字是如何成为货币的

货币是伴随着商品价值形式的不断发展变化而最终产生的。商品价值形式经历了以下4个不同的发展变化阶段,当价值形式发展到第四个阶段时,货币就产生了。

● 简单的或偶然的价值形式阶段。在这一阶段,一种商品的价值仅仅是简单的或偶然的表现在与它相交换的另外一种商品上。

● 总和的或扩大的价值形式阶段。在这一阶段,一种商品的价值表现在与它相交换的一系列商品上。

● 一般价值形式阶段。在这一阶段,所有商品的价值都表现在作为一般等价物的商品上。

● 货币形式阶段。在这一阶段,所有商品的价值都表现在作为固定的一般等价物的金或银上。

1. 物质成为货币要具备的三个货币属性

货币的形态如图1-2所示。自然界中的任何物质(包括实体的和虚拟的),只要它具备了一定的属性,就都有成为货币的资质(注意,货币不一定是法币,法币的铸币权归主权国家所有,神圣不可侵犯)。例如黄金,早在19世纪之前的数千年历史中,人类总共生产的黄金不到1万吨(稀缺性);黄金的化学性质稳定,具有很强的抗腐蚀性(持久性);尽管储量不尽相同,但黄金普遍分布在世界各地,具备很好的群体认可性(共识性)。正是因为黄金很好地具备了稀缺性、持久性、共识性,因此古往今来人们自然而然地将黄金作为了一般等价物。

图1-2 货币的形态

(1)不可轻易获得:稀缺性。货币作为价值的载体,其本身应该具备稀缺性(不可轻易获得和替代)。例如木材、石头等唾手可及的物质,因为不具备稀缺性,就绝不可能成为货币。

(2)便于保存与流转:持久性。货币作为价值的载体,会流转在价值的所有者之间,因此其本身应该容易保存、不轻易流失,即应该具备持久性。例如水银,全世界的储量只有70万吨,但其容易挥发而不具备持久性(毒性暂不讨论),因此不可能成为货币。

(3)普遍的群体认可:共识性。翡翠、宝石等物质具备一定的稀缺性和持久性,但由于其分布范围较小,并不为世界各国都承认为价值的载体,因此它们也没有像黄金一样成为全球通用的硬通货。

2. 算法赋予数字货币以货币属性(以比特币为例)

比特币的工作原理如图1-3所示。

图1-3 比特币的工作原理

比特币核心程序的工作原理可以简单表述为如下几个步骤。

(1)交易消息广播:所有比特币的交易结果会作为消息广播给所有矿工用户,矿工用户将这些消息记录到自己的账本(这个记录的过程其实就是挖矿,而作为奖赏,矿工将获得一定数量的原始数字货币)。注意,普通用户维护自己的账本,矿工维护世界总账本。

(2)挖矿(记录和确认交易):注意,挖矿是比特币程序最核心、最重要的技术原理。

● 首先,参与维护总账本其实是通过货币发行而获得原始数字货币的方式(另一种获得的方式,就是通过实际交易转账),这就会吸引庞大的群体参与到挖矿工作中来。在这个阶段,挖矿的奖赏机制赋予了共识性。

● 其次,广大的矿工群体会竞争记账权(获得记账权者挖矿成功,获得算法奖赏。如前所述,这其实就是数字货币的发行过程),这个过程采用基于工作量证明的共识算法。在这个阶段,获得记账权需要投入大量的算力,这就赋予了稀缺性。

● 最后,获得记账权的矿工将自己收到的交易打包成数据区块,并广播给其他所有矿工,所有矿工对收到的交易数据进行验证确认后(矿工群体人人参与记账,赋予了持久性),将新的区块存入区块链数据库系统。在区块链数据库中,由于任何一个区块都由上一个区块计算出来,任何区块的篡改都会牵一发动全身。篡改数据的算力投入的成本远高于篡改数据的收益,使得矿工没有作弊的动机,再次加强了持久性。

通过上面的原理剖析可以看到,比特币通过算法保障被赋予了三个货币属性:①基于工作量证明的共识算法,其哈希难度赋予了稀缺性;②分布式存储与基于时序的密码记账赋予了持久性;③挖矿的奖赏机制赋予了共识性。

3. 关于挖矿的补充说明

(1)新比特币的生成过程被称为挖矿,是因为它的产生过程类似于贵金属的挖矿过程。原始的比特币是通过挖矿发行的,这种奖励机制被设计为速度递减模式:矿工通过创造一个新区块得到的比特币数量大约每四年(准确说是每210 000个区块)减少一半。2009年1月每个区块奖励50个比特币,2012年11月减半为每个区块奖励25个比特币,2016年7月再次减半为每个新区块奖励12.5个比特币。基于这个奖励机制,比特币挖矿奖励以指数方式递减,直到2140年,届时所有的比特币(共20 999 999 980个)全部发行完毕。换句话说,2140年之后,不会再有新的比特币被发行。

(2)矿工们同时也会获取交易费。每笔交易都可能包含一笔交易费,交易费是每笔交易记录的输入和输出的差额。在挖矿过程中成功“挖出”新区块的矿工,可以从该区块包含的所有交易中得到“小费抽成”。目前,这笔费用占矿工收入的0.5%或更少,大部分收益仍来自挖矿所得的原始比特币奖励。然而随着挖矿奖励的递减,以及每个区块中包含的交易数量增加,交易费在矿工收益中所占的比重将会逐渐增加。显然,2140年之后,矿工的所有收益都只来自交易费。

4. 共识算法解析

所谓共识,是指大家的意见达成一致。其实在现实生活中,有很多需要达成共识的场景,比如开会讨论、投票选举、双方或多方签订合作协议等。在传统的软件结构中这几乎就不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他的从库向主库看齐就行了。在实际生活中,很多事情人们也都是按照这种思路来做的,比如企业老板发布一个通知,员工照着做。但是区块链是一个分布式的对等网络结构,在这个结构中没有哪个节点是“老大”,一切都要商量着来。在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个核心问题,这个问题的解决方案就是制定一套共识算法。

如上所述,区块链中的共识算法其实就是一个规则,让每个对等的分布式节点都按照这个规则去确认各自的数据,并最终保证所有节点上数据的一致性。暂且抛开共识算法的实现原理,先想一想生活中我们会如何解决这样一个问题:一群人开会,而这群人中没有领导或者老大,大家都各抒己见,那么最后如何产生决议呢?一般会在某一个时间段中选出记录员(例如每个人轮流做记录员),记录员负责记录和汇总大家讲话的内容,并让大家就每个意见进行投票表决,最终支持者最多的意见形成决议,这种思路其实就是一种共识思想。对这种思想而言,如果参与人数确定且数值较小,还好处理;如果人数众多或根本难以确定(动态变化),那就很难达成共识,因为工作效率太低了!这就需要通过一种机制筛选出最有代表性的人,具体到共识算法就是筛选出具有代表性的节点。

如何筛选呢?其实就是设置一组条件,就像筛选运动员一样,给一组指标让大家来完成,谁能更好地完成指标,谁就有机会被选上。在区块链系统中,存在多种这样的筛选方案,比如PoW(proof of work,工作量证明)、PoS(proof of stake,权益证明)、DPoS(delegate proof of stake,委托权益证明)、PBFT(practical byzantine fault tolerance,实用拜占庭容错)等,各种不同的算法,其本质上就是不同的记录员筛选规则。

(1)PoW挖矿算法及分析。PoW是指获得多少货币,取决于挖矿贡献的有效工作。也就是说,计算机性能越好,所分的矿就会越多,这就是根据工作证明来执行货币的分配。大部分的数值货币,比如比特币、莱特币等,都是采用基于PoW算法(算力越高、挖矿时间越长,获得的货币就越多)的共识。

比特币的挖矿算法其实就是通过一个哈希函数找到一个满足当前难度的nonce(包含在区块头里面)的值,哈希函数的输入数据的长度是任意的,将产生一个固定且绝不雷同的值,可将其视为输出的数字指纹。对于特定输入,哈希函数的结果每次都不一样,任何实现相同哈希函数的人都可以计算和验证。每个加密哈希函数的主要特征就是不同的输入几乎不可能出现相同的数字指纹。因此,相对于随机选择输入,有意地选择输入去生成一个想要的哈希值几乎是不可能的。

矿工用一些交易构建一个候选区块,接下来这个矿工会计算这个区块头的哈希值,判断其是否小于当前目标值,如果这个值小于目标值,矿工会修改这个nonce的值,然后再试一次。通常来说,一个矿工会做成千上万次哈希运算来得到一个合适的nonce的值,使得区块头的哈希值满足当前难度。这也是PoW算法的由来。

可见,PoW要求出示一定的证明来表明矿工付出的工作量,这个证明可以是直接记录,也可以用概率表示,其中对于由小概率事件累计的工作,出示结果等同于证明了工作量(因为不太可能直接得到小概率结果)。在比特币和其他类比特币的系统中,PoW是以合乎要求的哈希值作为工作结果。由于矿工要取得合法的计算结果需要一定量的计算,因此得到合法的计算结果就已经可以证明其完成了一定量的计算。

(2)PoS挖矿算法及分析。简单来说,PoS就是一个根据持有货币的量和时间,发放利息的制度。在PoS算法中,有一个名词叫币龄,每个币每天产生1币龄,比如持有100个币,总共持有了30天,那么此时币龄就为3000;这个时候,如果验证了一个PoS区块,币龄就会被清空为0;每被清空365币龄,将会从区块中获得0.05个币的利息(可理解为年利率5%)。那么在这个案例中,利息 = 3000 * 5% / 365个币 = 0.41个币。

以现有的比特币运行发展情况来看,比特币每年的挖矿产量都在不断减半,可以预计随着比特币产量不断降低,矿工人数也会越来越少,这样就会导致整个比特币网络的稳定性出现问题。PoS算法鼓励大家都去打开钱包客户端程序,因为只有这样才可以验证PoS区块并获得利息,同时也增加了网络的健壮性。还有一个担忧就是当矿工人数降低,比特币很可能会被一些高算力的人或团队进行51%攻击,如果采用PoS算法,即便有人拥有了全网51%的算力,也未必能够进行51%攻击,因为这还要求攻击者持有全球51%的货币量,而这是更加难以达到的门槛。比特币好像是一个永远不会膨胀的体系,因为它的货币总量看起来貌似是固定的,但实际上比特币是一个货币紧缩的体系,因为其总存在丢失(钱包密码丢失、货币私钥丢失等)的可能,而PoS采用类似年利率这样的方式,则可以在一定程度上缓解这个问题。

(3)DPoS挖矿算法及分析。DPoS是一种保障加密货币网络安全的算法。它在尝试解决比特币采用的传统工作量证明机制以及以太币2.0所采用的股份证明机制问题的同时,还能通过实施科技式的民主以抵消中心化所带来的负面效应。

通俗地讲,DPoS机制是让每个货币持有者对整个系统资源中想当代表的人进行投票,而获得最多票数的若干个代表进行交易打包计算。这可以理解为有若干个矿池,而矿池彼此的权利是完全相等的。那些握着选票的人可以随时通过投票更换这些代表(矿池),例如只要他们提供的算力不稳定(计算机宕机或者试图利用手中的权力作恶),他们将会立刻被愤怒的选民们踢出整个系统,而后备代表可以随时顶上去。从某种角度来看,DPoS有点像一些国家的议会制度,只不过不是每四年选举一次,而是时时刻刻都在选举过程中。