前几天,中共中央政治局就区块链技术发展现状和趋势进行第十八次集体学习,并有可靠消息表明央行即将推出数字货币,加上比特币也顺势炒作一波,这几个概念又火了一把。
区块链、各类数字货币的起源都是比特币,比特币搞清楚了,区块链和数字货币也就基本明白了。
一.比特币的诞生
2008年11月1日,Satoshi Nakamoto(中本聪)发表了《Bitcoin:A Peer-to-Peer Electronic Cash System》,提出了比特币(BTC)的概念。
2009年1月4日中本聪使用“比特币客户端0.1版”,创造了比特币历史上第一个区块,并获得50个比特币的奖励。这个区块被人们称为“创世区块”,标志着比特币的正式诞生。
中本聪隐秘的身份使他更加神化,甚至有些人将创造比特币主要归功于他。其实比特币并非中本聪一人之功,是许多理念和技术积累的成果。
20世纪70年代,非对称加密技术出现;80年代,分布式计算和共识思想产生;90年代,工作量证明机制被提出;1998年,戴伟、尼克·萨博同时提出密码学货币的概念,其中很多思想和比特币非常类似。正是由于这些技术和思想,启发并帮助中本聪创造了比特币。
二.比特币概况
比特币是一种基于区块链的数字货币,用户的每一笔交易都会全网广播,所有人都能知道任何交易记录。全部交易记录都被保存多份,相当于交易被多份记账。
按照时间顺序交易记录被打包成多个单元,所有单元被串起来组成一个链式结构。每个单元就是一个区块,串起来的结构就是区块链。因为区块链是分布式存储,所以可以理解成一个分布式账本。
三.“中心化”的问题
传统货币控制权在中央机构手中,这会导致问题,比如中央机构发行可以任意投放新货币,中央机构可以操作用户的账户数据,中央机构受到攻击能影响到大范围的用户。
发明比特币目的,就是打着“去中心化”的旗号,要解决中央机构权力过大,对中央机构过于依赖导致的这些问题。
今年6月,Facebook也推出了数字货币Libra,野心勃勃,下表对比了比特币Libra、传统货币和比特币,数据来自恒大研究院。
四.“去中心化”的难点
控制权集中是导致问题的原因,当然需由分散权力解决。这引发了更大的问题,主要是:(1)货币投放问题;(2)数据一致问题;(3)数据安全问题。其中后两个都是数据问题,只不过一个问题客观存在,一个问题是人为造成。
传统货币,中央机构发行货币,数据都以中央机构为准,因为中央机构都是实力雄厚的组织,所以从外部很难篡改数据,数据安全有保证。
控制权分散后,这些都变了。控制权分散到了许多实体,这些实体都投放货币吗?那岂不相当混乱?每个实体都有交易等数据,以谁的为准?单个实体数据保护能力比中央机构弱很多,如何防止数据被篡改?
五.比特币的去中心化
比特币结合了“去中心化”和“中庸”思想,去中心化不是很极端,并非是让每个用户都有控制权,而是让具备一定条件(主要是计算机性能达到一定标准)的用户获得一定控制权,这类用户称为全节点。全节点分布图如下,数据来自:https://bitnodes.earn.com/。
可以看出:(1)目前比特币的节点数为9564个,也就是控制权分散到了9000多处;(2)节点遍布全球各大洲;(3)欧美节点最多,前10个节点最多的国家有7个在欧美,3个在亚洲。(4)中国节点数为319,节点占比为3.34%,排世界第8,亚洲第2。
六.比特币的原理
比特币是“去中心化的”,比特币也用一套完善的方案解决了“去中心化”引发的问题,搞懂解决方案也就明白了比特币的原理。
(一)投放问题
每个用户都有比特币投放权吗?是的,但也是有条件的,且条件很苛刻。较高的标准保证了秩序,避免了投放方过多,投放间隔未知导致的混乱。
要满足的条件,可以理解为猜出一个密码。这个密码,只能暴力破解,没有其他方法。因此,这是对算力的考验,并有一定的运气成分,猜对概率相当于中彩票。猜密码的过程,是一种工作量证明机制(POW),币圈称为“挖矿”。作为回报,新投放的货币也会奖励给猜对用户。
具体来讲,就是要猜到一个随机数,整个区块的信息加上这个随机数以后的数据,经过SHA256算法后的值(哈希值)前n位都是0。这个n,代表了猜对密码难度。n是根据整个网络的算力情况动态调整。算力提升,n增加,难度增加。这种难度和算力同步增加的机制,保证了比特币投放间隔大概是10分钟。想进一步了解详细过程,可看下图。
每次投放的比特币数量,也是有规律的,期初是50个,每投放21000次,投放量减半,大概是每4年减半。2009年1月3日,中本聪第一次猜对密码,获得50个BTC奖励;2012年11月28日,单次投放量减为25BTC;2016年7月10日,单次投放量减为12.5BTC,保持至今;大概到2020年,单次投放量将减为6.25BTC。通过等比数列求和,可以计算,比特币极限数量为2100万个,这能够避免货币超发问题。如下图,每一行是一个区块,也代表一次比特币投放。
(二)数据一致问题
数据一致问题的解决思路同货币投放问题基本一致,猜对密码的用户,不仅获得投放权,还获得了记账权。自上一次密码被猜对后的所有数据,都以该用户的为准。
比特币每一笔交易都全网广播,但是广播数据只是被各节点暂存,并没有打包到区块中,只有打包到区块的数据才相当于完成记账。一个节点获得了记账权,也就是打包区块的权利,就会将本节点上暂存的信息打包成一个新的区块,然后将区块链接到主链中,并全网广播。网络中其他节点收到广播后,停止对本轮记账权的竞争,并将同步更新数据,这就解决了本轮的数据一致问题。
由于网络阻塞、延迟等原因,可能一条交易数据只到了部分节点,没有被猜出人收到。猜出人打包的新区块里,就不会包含这条数据。随着新区块的形成,这条数据将被丢弃,相当于交易被撤销。
还存在一种情况,就是有A、B二者几乎同时猜出了这一轮的密码,都打包了新的区块,一些节点先收到了A区块后收到了B区块,而另一些节点先收到了B区块后收到了A区块,造成了数据不一致。
比特币解决这个冲突的方法是“搁置争议,交给后人”,其实这也是一种大智慧。整个区块链不会因为冲突而影响运行,每个节点会把先接收到的区块作为下一个区块,并保存另一个分支,然后不断比较哪个分支变得更长,更长的分支链入主链。
几分钟后,节点C猜出了下一轮密码,比如C存的区块链中上一个B区块,那C就会将新的区块链到B区块后。这时,从B区块后边长度是2,而从A区块后边长度是1,僵局被打破,B分支因为长而加入主链。整个过程如下图。
可能还有一些其他冲突,但是节点总是认为最长的链为正确的并持续致力于延长它,这个原则能够解决所有冲突。新交易的广播不必到达所有的节点。只要到达一些节点,不久就会进入到一个区块。区块广播也是能容忍消息丢失的。如果一个节点没有收到某个区块,它将在收到下一个区 块时发现它丢失了一个区块然后去请求这个区块。当然这套机制也导致了比特币交易耗时较长。
(三)数据安全问题
每个区块的主要数据有:前一区块的哈希值、时间戳、交易信息、随机数。前一区块的哈希值是前一区块的随机数加上区块信息经过SHA256算法后的值,前n位都是0;时间戳就是区块产生时的时间;交易信息是一条条的交易记录,需要注意的是,这里的交易记录格式比较单一,都是甲支付乙n个比特币的格式;随机数就是本轮密码,也就是说这个随机数加上区块信息经过SHA256运算后前n位都是0。
篡改数据的人肯定是篡改交易记录,这样才能获利。篡改种类无非有三个,增加、修改、删除。其中增加和修改记录,都是不可行的,因为每一条记录都有支付者的数字签名。数字签名是用户根据要签名的数据而生成的一个密码,无法伪造,可以保证消息的真实性。
所有节点都会验证消息的数字签名,如果数字签名错误,消息将被丢弃。数字签名和数据有关,哪怕两条数据有一点小小的不同,数字签名也将完全不同,因此同一人的每一支付记录数字签名都不同。
想增加别人给自己转账的记录不可行,因为必须要有别人的数字签名;修改别人给自己的转账记录也不可行,因为改了数据数字签名变了,需要别人重新签名;要把别人给自己的转账数据复制成多份,也不可行,因为每条数据里边还有一个类似id的数,这个数只能用一次。
创建账号时,比特币会给申请者生成一个公钥、一个私钥、一个地址,其中私钥就是进行数字签名用的,公钥用于别人验证数字签名。因此,这个私钥非常重要,私钥丢了,那别人就可以伪造签名随意使用账户余额了。数字签名这块,比特币用的加密算法是ECDSA,若想仔细了解签名和验证过程的可看下图。
增加、修改数据都不可行,再看一下删除数据的情况,这个是区块链思想的精髓。假设篡改者要删除历史区块A中的一条支付记录。
仅删除一条记录是不行的,这会改变A区块的哈希值。哈希值是有要求的,也就是前n位必须全是0,这就要求篡改者还要重新猜随机数,让随机数加上A区块信息以后的哈希值满足要求。
篡改者废了九牛二虎之力终于猜对了这个随机数,才发现还是远远不够。因为A区块的哈希值还保存在了B区块中,因此要更新B区块。更改完后发现B区块的哈希值也变了,前n位不再是0,因此又要去猜B区块的随机数。
以此类推,更改一个区块,要将这个区块后边所有区块的密码都猜一遍,才能生成一个合理的伪造分支。从这能看出区块连起来形成区块链的好处了。
有了伪造分支也还是不够的,要让主链接受伪造分支才行。这就需要和全网所有其他节点赛跑,使伪造分支长过后续真实分支。如上图所示,只有下方的伪造分支长过上方的真实分支后,伪造分支才会被加入主链。
和全网其他节点赛跑比算力,肯定是惨败,除非某个人控制了全网超过51%以上的算力,才有望在比赛中获胜。而现实中,这种情况是不可能的。即使有人做到了,那凭他的能力,应该也不屑于去做篡改数据这种行为。因此,可以认为删除数据也是不可行的。
从以上分析过程还能看出,每一个区块相当于一个密码箱,在交易被打包到区块以后,相当于被封存,这条交易就无法篡改了。
另外,比特币使用追溯的方法进行支付验证。比如甲要支付给乙n个比特币,因为每个节点都保存了全量交易记录,收到这条消息的节点会追溯甲的所有交易历史,判断甲是否拥有n个以上的比特币。如果甲余额不足,则会丢弃该信息。结合以上讲到的其他思想,这可以避免双重支付(双花)问题。
七.比特币与区块链
区块链是随比特币而诞生的,2009年1月4日中本聪创造了历史上第一个区块。虽然区块链伴随比特币诞生,但是区块链和比特币完全是两个概念,不能因为比特币的缺点较多而否定区块链。区块链和比特币是青出于蓝而胜于蓝的关系,还是一种普遍和个例的关系。
区块链最大的意义是改变了以往的信任模式,将对实体的信任转换为对技术的信任。甚至有报告称,区块链将是继蒸汽机、电力、信息和互联网技术之后,下一个引发颠覆式革命的核心技术。
区块链诞生以后很快就从比特币的脱离出来成为单独一个领域,有人将区块链发展分成了四个阶段:区块链1.0阶段是区块链货币;区块链2.0阶段是区块链金融;区块链3.0阶段是区块链社会;区块链4.0阶段是区块链技术同超级计算、人工智能、大数据等技术深度融合的阶段,本阶段区块链将带来许多颠覆式变革。
区块链有很多类型。比特币中的区块链的只是其中一个类型,称作公有链,公有链完全开放,谁都可以加入。各种报道里公司或银行搭建的区块链,是联盟链或者私有链,加入这些区块链需要授权,只有合作的相关方会加入。
从比特币原理可以看出,每轮该信谁(共识机制)是区块链运行的核心和关键。公有链是完全开放,每个节点情况未知,所以共识机制是基于工作量证明。联盟链或私有链的节点是已知的,无需再通过消耗资源的工作量证明,可以采用简单的投票或直接指定等方式。想进一步学习共识机制的可看下表。
区块链技术目前尚未成熟,缺乏相关标准以及成功的商业化使用案例,目前对区块链技术的使用还主要处在尝试和探索阶段。从央行发布的金融科技三年规划就也可以看出来这点,规划没有提及区块链这三个字。
八.比特币与央行数字货币
最近令人振奋的一个消息就是央行数字货币即将面世,其英文名是Digital Currency Electronic Payment,简称DCEP。DCEP将是世界上第一个法定数字货币,兼具传统货币和数字货币的优点,我国又要在一个领域里取得世界领先地位了。
DECP的意义不只是一个领先的地位和先发优势,有很多实在的好处,尤其是对于打破美元霸权,推动人民币国际化,降低对SWFIT的依赖,抵御可能出现的其他数字货币冲击,增强我们的国际竞争力。
DECP是由比特币催生出来的,但和比特币却是完全不同的两个东西,理念和技术都相差甚远。甚至DECP未必是基于区块链的,就是使用了区块链,方式和比特币也会有很大的不同。
由于币值很不稳定且总量一定,比特币的资产属性强于货币属性。DCEP与人民币可以1:1自由兑换,是一种真正的货币。比特币无任何机构的信用背书,不受法律保护,很“虚拟”。DECP有我国政府的信用背书,具备无限法偿性。
DECP是央行经过五年摸索和积累的产物,使用了先进的理念和技术:DECP使用双层运营体系,上面一层是人民银行对商业银行,下面一层是商业银行或商业机构对老百姓;央行不会干预商业机构的技术路线选择,这能促进技术创新,提升产品体验;DECP支持真正意义的双离线支付,也就是在交易双方都不联网的情况下完成支付,这点微信、支付宝、比特币、Libra等都做不到。
虽然微信、支付宝等工具已经实现了支付数字化,但是这些工具中的余额并非流通中的现金M0,而是一种活期存款,更严格的说,是腾讯、阿里公司发行的数字货币。M1、M2在我国已实现了较好数字化,因此DECP着眼M0数字化。
DECP是真正的M0,相当于钱包中的纸币,使用DECP电子钱包进行双离线支付就类似将一个真实钱包中的纸币放入另一个真实钱包,只要两个手机能建立通信就行。当然,如果你手机立马就丢了,那这个数字钱包也就丢了。
微信、支付宝已给生活带来了很大便利,DECP还会带来更大便利。比如有些机构不支持微信或支付宝,只能刷卡或现金,但是如果不支持DECP,就像不收现金,就违法了。
“两岸猿声啼不住,轻舟已过万重山”,关于比特币等数字货币的争议尚未平息前,我国就率先打造了法定数字货币,这是一种实力的象征,也是一种优势的体现,期待早日用上DECP。
往期回顾
【AI基础】什么是信息?什么是熵?
【PCA】上证50主成分分析
【PCA】主成分分析介绍
【定价】二叉树(CRR)欧式/美式期权定价的原理及Python实现
【定价】用蒙特卡洛模拟为零息债券定价
【智能投顾】两篇研报笔记
知乎专栏:AI和金融模型