1.2 数字货币简史

数字货币是一种基于数字技术,依托网络传输,以非物理形式存在的价值承载和转移的载体。广义数字货币包括电子货币(电子现金)、虚拟货币、加密货币、数字现金等。狭义的数字货币特指基于区块链和加密运算等技术,依托互联网来创建、发行和实现流通的电子货币,即加密货币,典型代表是比特币和以太币。近几年,在比特币和以太币的基础上,衍生出了越来越多的数字货币,它们或采用新的货币政策,或改进共识机制,或引进全新的去中心化组织形式,或设计新的应用场景,并由此推进了数以百计的不可思议的创新。下面分别介绍比特币、以太币、数字钱包和数字货币的市场现状。

1.2.1 比特币——数字货币的诞生

无论现金支付,还是电子支付,都有一个共同的问题——中心化,也就是说它们都是由政府、大企业和公司控制。中心化的系统存在着很多问题,例如容易受到黑客攻击、信息不够透明、信息容易出现堵塞等。比特币的初衷就是去中心化,它由大量分布式的节点构成,没有中心服务器。关于比特币的具体技术细节会在后面的章节详细介绍,读者可以结合第3章的内容来学习,本节先给出比特币系统的整体结构和运行机制。

人们平时用到的支付系统,如支付宝是由中心服务器存储用户的每一笔花销,即可以将它看作一个账本,这个账本记录了所有用户的每笔消费。这需要中心系统有很大的存储空间和较快的处理速度,而分布式系统,如比特币就是要打破这种格局。比特币是由各个节点来处理每一笔交易,而这些节点都是分布在全世界各个地方,它们既可以是个人计算机,也可以是大型的服务器或者专用的设备,称为矿机,这种分布式的架构完全没有传统中心化网络的问题。

但是这么多节点,每个节点都各自运行自己的处理程序,如何保证系统准确无误地记录每笔交易呢?这就是区块链技术所要解决的问题。节点将交易信息打包进区块中,并连接前一个区块,就组成了区块链。整个区块链系统可以看作一个完整的账本,那么每个区块就是账本中的一页。这里存在几个问题:交易信息由哪个节点记录?如何保证记录交易的准确性?每个区块怎么存储交易信息并与上一个区块连接?每个账户怎么记录余额?

在比特币系统中,每个用户都有一个地址存储自己的比特币,这个地址叫作钱包。实际上钱包就是由一串密码控制的地址,一个用户可以拥有多个钱包,也可以只有一个钱包。用户每次交易时都需要提供对应钱包的密码,交易就是比特币由一个地址转移到另一个地址上。在用户发起交易后,整个网络的节点都会收到这笔交易的请求,但是并不是任何节点都有能力来记录交易,比特币系统通过工作量证明(proof of work,PoW)机制来解决记录问题。简单地讲,工作量证明就是通过计算机密码学中的哈希值进行的,每次交易都有一个固定的哈希值,这个哈希值的生成需要一个随机数和一个难度值,所以这个哈希值只能通过不断地尝试得到。最先得到符合要求哈希值的节点才有资格记录这笔交易,一旦产生了这个节点,其他节点就停止尝试,转而验证这个节点的结果。工作量证明的目的之一是提高难度,防止恶意节点攻击,通过这种方法最终产生一个所有节点公认的节点,所以称为共识机制(consensus mechanism)。共识机制除了PoW外还有其他的方法,如PoS、DPoS等,之后的章节会做详细的介绍。无论通过什么方式,共识机制的目的就是产生一个所有节点都承认的记录节点,同时保证公平性和可靠性。

比特币的运行机制如图1-1所示,也就是区块链中每笔交易的验证和打包上链的过程如下。

(1)产生新交易,例如A与B发生了转账交易。

(2)每一笔交易产生后,会通过P2P网络被广播到所有的参与节点。

(3)网络中收到该广播的各节点都会将数笔新交易进行验证,并各自形成一个等待上链的区块(每个区块可以包含数百笔或上千笔交易,这由区块大小和交易大小决定)。

图1-1 比特币的运行机制

(4)通过共识算法(PoW、PoS、DPoS等)选出拥有记账权的节点(矿工),只有它产生的区块才能够上到主链。

(5)获得记账权的矿工通过P2P网络广播它的新区块,全网其他节点核对该区块记账的正确性(确认该区块记录的所有交易没被重复花费且具有有效签名),没有错误后就会把该区块加入链中。没有获得记账权的节点会开始竞争下一个区块的记账权。

(6)超过一定数量的节点验证新区块无误后,就可以将这个区块连接到上一个区块上组成区块链,这样就形成了一个合法记账的区块链。

区块链中每个区块的结构如图1-2所示。在区块头部包含上一个区块的头哈希值和当前区块的头哈希值,从而保证每个区块的唯一性和顺序。

比特币系统为了奖励矿工,起初每产生一个区块系统会自动给矿工50个比特币,每个区块的产生时间大约为10分钟。每产生21万个区块,也就是每个阶段(大约是4年),对矿工奖励的比特币会减半,所以第二个阶段中奖励的比特币是25个,目前每产生一个区块,矿工会得到12.5个比特币。中本聪设定了比特币系统在第33次减半时,每个块产生的新比特币从0.0021个直接减为0个,由此可以推出比特币的总发行量为2100万个。

比特币最大的优点就是在分布式的系统中通过共识机制使每个节点参与到交易中,使得交易不再由单一的中心化组织控制。而且通过区块链形式记录的交易很难被篡改,因为想要改变一个区块内的交易信息就要改变之前所有区块的信息,所以区块链内的攻击常常是双花问题(double spend)。双花问题就是人为的恶意攻击,在进行交易时同一个支付者再发起一笔交易,并将新的交易打包进区块中,而原有的交易就作废了,没有进行支付,但所购买的商品在第一笔交易中已经发出,这时第二笔进行的交易常常是自己对自己或者自己的其他钱包。这种攻击相比于改变区块交易信息所付出的代价更低,所以在区块链中一个高风险就是双花问题。那么一旦出现双花问题怎么解决呢?这时一般的解决办法是分叉,就是在原有的区块链上进行一个分叉产生一条新的链,使从出现问题的区块位置之后的所有交易都作废。截止到2017年11月比特币已经分叉了7次,本书第7章会对分叉问题做详细的介绍。

图1-2 区块链结构

比特币产生一个新区块是10分钟,每个区块的大小限制在1兆字节(MB),这就造成比特币系统的交易速度不会很快。平均每笔交易信息大概会占用250字节(B),也就是每个区块能记账4000笔交易,因此比特币每秒最多进行7笔交易。区块链交易速度一般用tps(transaction per second,笔每秒)表示,比特币的实际交易速度是3~4tps,也就是说每秒只能进行3、4笔交易,这个速度远远达不到实际应用的需求。此外,如果需要确认某笔交易,需要等待6个区块即60分钟,而且由于比特币价格高昂导致每笔交易的交易费用奇高,这些都是比特币致命的问题。总之,比特币系统只有支付的功能,没有其他的应用场景,而且一枚比特币上万元的价格也令普通投资者望而却步。

1.2.2 以太币

2013年末,Vitalik Buterin受比特币启发后开发了以太坊,以太坊和比特币有着相似的运行交易机制,但是以太坊最大的优势是加入了部署智能合约功能,每个人可以根据需求发布自己的智能合约。以太坊(Ethereum)的上层货币就叫作以太币,2014年7月24日起,以太坊进行了为期42天的以太币预售,2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊交易。以太币目前的市值仅次于比特币,是市值第二高的数字货币。

以太坊是下一代的加密货币与去中心化应用平台,是针对比特币应用的局限性而设计的更高级的区块链应用。以太坊的核心是以太坊虚拟机(EVM),通过以太坊虚拟机可以执行用户创建的复杂操作。在计算机科学术语中,以太坊是“图灵完备的”,用户可以通过现有的编程语言模型进行开发。在以太坊上部署的去中心化应用(DApp)是由一个或者多个智能合约创建的,一般使用Solidity、LLL和Serpent编程语言编写智能合约,其中Solidity最受欢迎。和比特币最大的不同是在以太坊中除了一般的用户外还存在合约用户,无论一般用户还是合约用户实际上都是一串40个字符的字节串,交易的过程与比特币类似,是由一个账户向另一个账户或者一个合约转以太币、调用合约方法或部署一个新合约。

要创建以太坊账户,只需要一个非对称加密密钥对——由不同的算法生成。以太坊使用椭圆曲线加密算法(ECC),ECC有多个参数用来调节速度和安全性,以太坊使用secp256k1参数。深入学习ECC需要一定的数学知识,而使用以太坊创建DApp不需要深入理解ECC及其参数。以太坊私钥/公钥是一个256位数。因为处理器不能表达这么大的数,所以它被编译成长度为64的十六进制字符串。每个账户用一个地址表示。有了密钥之后,就需要生成地址。从公钥生成地址的过程如下:

(1)生成公钥的keccak-256哈希,它将给出一个256位(bits)的数字。

(2)丢弃前面的96位(12字节),得到160位(20字节)二进制数据。

(3)把160位二进制数据编译成十六进制的字符串,得到一个40字符的字符串,这就是账户地址。

有了账户地址,任何人都可以发送以太币到这个地址。以太坊网络中的每笔交易都需要支付一定的手续费(gas)给矿工节点才能被打包进区块中。无论转账交易还是部署智能合约,所支付的手续费越高,该交易或合约就越快地被矿工打包进区块中,这也是以太币最主要的价值。以太坊网络的矿工节点当前也是通过PoW竞争在区块链添加新区块的权利,矿工节点及时地在以太坊网络中收集、传播、确认和执行交易,使区块链的长度不断增加。

以太坊从创建之初就是开源的,也在不断地优化交易速度和添补安全漏洞。以太坊已经拥有了一批忠实的用户群,无论社区、基金会还是技术都可以说是目前数字货币中最完善的。想要运行以太坊,可以安装geth(go-ethereum),针对iOS、Linux和Windows操作系统,geth都有相应的版本。不同的版本都支持二进制安装和脚本安装,二进制安装相对简单。具体安装方法在第4章会有详细说明。

以太坊对区块的大小没有限制,但是每个区块可以设置gas值。目前,以太坊每个区块gas值的限制约为470万,每笔交易的标准gas价格约为21 000,因此每个区块大约容纳220笔交易。以太坊的平均出块时间在10~20s,如果以15s计算,以太坊每秒最多记录15笔交易。这个速度虽然比比特币快,但是依然不能达到实际应用需求。目前,以太坊创始人Vitalik Buterin正在积极研究以太坊分片技术,通过分片技术能极大地提高以太坊交易速度。

1.2.3 数字钱包

前面说过,每个用户都有一个或者几个钱包存储数字货币。数字钱包是一个形象的概念,因为拥有私钥就拥有对应地址的数字货币,因此人们把管理密钥的软件称为“钱包”。通常所说的数字钱包一般有两种意思:一种就是在用户注册时每个用户会有一个相应的钱包地址;另一种指的是为了方便用户进行数字货币交易、存储而开发的软件。第一种只能存储一种货币,由相应的币种提供,如以太币钱包;第二种能存储多种数字货币,一般由第三方开发,如imToken。可以将第二种钱包看作存储第一种钱包的软件。

比特币系统中,每个用户的交易都需要一个公钥和一个私钥,公钥是指明比特币属于哪个用户,私钥是验证身份,拥有私钥才能进行交易,每个用户都有一对公钥和私钥。可以把私钥看作打开钱包的钥匙,而公钥是证明钱包的存在。第三方数字钱包的工作原理就是基于这种模式。数字钱包可以同时存储多种货币,但是使用的是一个钱包地址,这个地址可以叫作一级地址,同时钱包里面不同种类数字货币有其各自的地址,叫作二级地址。用户在使用一级地址时,软件通过数字货币类型再发送到相应的二级地址,在用户层面,用户只感觉是一级地址之间的交易,只要提供密码即可,相应的私钥验证由软件完成。

由于私钥64位,缺乏可读性,手抄下来就比较麻烦,而私钥的备份在计算机上复制起来容易,但私钥保存在联网的计算机上毕竟不安全,有被其他人看到的风险。于是,有些钱包提供助记词工具,利用某种算法(如BIP-39)可以将64位私钥转换成十多个常见的英文单词,这些单词都来源于一个固定词库,根据一定算法得到。如图1-3所示是imToken钱包的助记词和密钥。私钥与助记词之间的转换是互通的,助记词只是私钥的另一种外貌体现。助记词一般会在创建新钱包的时候出现一次,后面就再也不会出现了,所以创建新钱包时最好把助记词抄下来,甚至放到保险柜里,自己想办法备份。如果是屏幕截图或保存在计算机中,只要设备联网都有被第三只眼看见的风险。别人如获取了用户的助记词,就等于获取了私钥所对应的一切财富,因此要非常重视。

图1-3 密钥和助记词

数字钱包还可以分为全节点钱包和轻钱包。全节点钱包在使用时需要下载所有节点的信息,需要非常大的存储空间,所以轻钱包是目前很多用户的首选。轻钱包在使用时不需要下载节点信息,节点信息在软件运营商的服务器上下载。但这种方式相比于全节点钱包,交易速度会降低。

目前无论手机、计算机还是网页都有很多种类的数字钱包,但所有的钱包都有类似的功能,能够存储用户的数字货币。

下面看一下目前市场上流行的几种钱包。

1. Blockchain钱包

Blockchain钱包是比特币专用的钱包,它是一个轻钱包,通过网页打开就可以随时使用,也可以下载手机客户端,不用在本地同步节点信息。但是目前只支持比特币、以太币和比特币现金的业务。Blockchain钱包使用简单,新用户注册后分配一个钱包ID,以后登录时需要使用钱包ID,如图1-4所示。

有很多人可能会有疑问,比特币钱包不是公钥对应一个私钥吗?为什么Blockchain使用密码?实际上它是通过几个单词和密码来生成的私钥。Blockchain钱包登录后的界面如图1-5所示,除了可以看到账户余额外还可以看到近期价格走势,供用户参考。

2. Mist钱包

Mist钱包是专为以太坊用户和开发人员设计的钱包,它可以存储用户的以太币。更重要的是,通过Mist可以部署智能合约,如图1-6所示是Mist首页,在Mist上可以查看多个用户的账户信息。但是Mist钱包是全节点钱包,用户如果购买了以太币,或者在主网上申请账户,需要下载以太坊网络上全部的节点信息。Mist是以太坊官方提供的浏览器,通过Mist可以很方便地连接上私有网络,从而更好地开发、调试智能合约。Mist支持Windows、Mac OS、Linux系统。

图1-4 Blockchain钱包登录

图1-5 Blockchain钱包界面

图1-6 Mist钱包界面

如图1-7所示是通过Mist部署智能合约。当然,在开发阶段,为了便于调试,Mist提供私有网络,因为在以太坊主网上部署智能合约也要花费手续费,在私有网络上会给用户分配大量的以太币,便于开发者使用。

图1-7 Mist部署智能合约

3. imToken钱包

imToken是手机钱包,同时也是轻钱包,imToken支持多种数字货币,包括BTC、ETH、EOS等,是目前最流行的手机钱包之一,如图1-8所示。

除了支持多种数字货币以外,imToken也是很多交易所在用户转出资产时推荐的钱包。正是因为它方便快捷并且支持多平台的优点,目前总下载量突破了100万。

4. 火币Pro钱包

火币Pro准确地说应该是一个交易所,用户在交易所上购买后直接可以存在交易所的钱包里,如图1-9所示。以火币为代表的一批交易所也是一类钱包,它们更适合刚刚接触数字货币的用户,把数字火币存在交易所也免去了中间的手续费和密钥丢失的风险。有些Token在主网上线之前要进行映射,以便ICO结束后换取相应的数字火币,将Token放在交易所就免去了这些操作,交易所直接帮助映射更方便,也更安全。

图1-8 imToken界面

图1-9 火币Pro钱包

需要指出的是,目前各种交易平台都属于中心化的服务机构,在交易平台上购买的数字货币实际上还在这些服务机构手里,它们存储了用户的私钥和地址。如果担心资金安全,用户可以另外生成一个地址,然后将交易平台里的数字货币提取到自己的地址中。

1.2.4 数字货币市场现状

比特币的稀缺性、去中心化和全球性流通的特性,吸引了越来越多的人关注数字货币市场。数字货币不同于虚拟世界中的虚拟货币,因为它能被用于真实的商品和服务交易,而不局限在网络游戏中。数字货币运用P2P对等网络技术来发行、管理和流通货币,理论上避免了官僚机构的审批,让每个人都有权发行货币。

目前数字货币有1000多种,总市值3000亿美元,比特币市值第一,以太币仅次于比特币。整个数字货币市场价格会有波动,整体上看,比特币影响着整个数字货币市场的价格。

随着互联网等新技术的迅速发展,货币领域也迎来变革,数字货币被人们看作是未来取代纸币的必然发展结果。数字货币的信用基础是数学算法,其价格取决于算法的可靠性及市场信心等因素,没有实际价值支撑,价值波动大。其去中心化的特点,也易被洗钱、恐怖组织融资等非法活动利用,从而增加金融体系的风险。早在2013年12月5日,中国人民银行等五部委即发布了《关于防范比特币风险的通知》,明确强调比特币不是货币,仅为一种特定的虚拟商品,不能在货币市场流通,金融机构不得开展相关业务。2017年9月,一行三会、中央网信办、工信部等七部委联合发布《关于防范代币发行融资风险的公告》,指出代币发行融资中使用的代币或虚拟货币不由货币当局发行,不具有法偿性与强制性等货币属性,不具有与货币等同的法律地位,不能也不应作为货币在市场上流通使用。

当前,世界主要央行都在关注数字货币,各国对于数字货币的态度也有诸多差异。有的国家明确提出了发行法定数字货币的计划,更多国家谨慎观察,着眼于研究和引导。2016年,欧洲议会草案呼吁成立数字货币专案小组,并制定适当的监管条例,防止把技术创新扼杀在摇篮里,同时严肃对待数字货币和分布式账本技术潜在的政策风险。德国财政部承认比特币为记账单位,具有结算功能,但不能充当法定支付手段。英国政府增加1000万英镑经费用于研究数字货币,旨在将数字创意转化为就业机会和服务。日本对数字货币的态度较为开放,日本参议院批准法案,要求日本的数字货币交易所运营商在日本金融服务局注册。

2018年2月20日,在比特币诞生的第十个年头,南美洲国家委内瑞拉发行了“石油币”,这是全球第一个由政府发行的法定数字货币。对于数字加密货币,各方争议颇多,有人认为这是数字货币的新时代,也有人认为这是一场“国家级”的庞氏骗局,无论结局如何,首个法定数字货币的发行都搅动了区块链这池春水。

相比于纸币,数字货币优势明显,不仅能节省发行、流通带来的成本,还能提高交易或投资的效率,提升经济交易活动的便利性和透明度。如果由央行发行数字货币,不仅能保证金融政策的连贯性和货币政策的完整性,而且对货币交易安全也有保障。虽然数字货币的发行方式目前仍在研究之中,但是纸币已被一些专业人士看成“上一代的货币”,被新技术、新产品取代是大势所趋。

随着各种数字货币的发行、完善和推广,数字货币将成为更多人所接受的数字资产,其势必约束政府法币的超发、滥发。未来,私人数字货币或将与法定数字货币共存,成为人类货币形态发展的新阶段,也将重构货币制度体系和金融机构体系。新的货币战争将在央行主导的法定数字货币与民间非法定数字货币之间产生,并将重塑国际金融格局。