初识比特币 | 《区块链与比特币》系列1
本文属于《区块链与比特币》系列文章中的第一篇,该系列文章正在撰写中,敬请期待!欢迎留言与我交流探讨区块链技术和前景,也可以发邮件到我邮箱:mywcyfl@163.com,我会回复的。
另注,如果您认为本文大段大段的文字表述太过生硬,不够形象易读,您也可以在百度文库中搜索关键字:“比特币原理”,前排能看到一个名为“比特币原理_图文”且贡献者为“买洋火的小男孩”的PPT(由于质量上佳且通俗易懂,所以通常都是排第一位),点开后的标题为《疯狂者游戏——全网唯一不可伪造数据比特币原理》,这份PPT用较少的文字和恰当的图片,十分形象具体地讲清楚了比特币的原理,文档所获得的评价也十分之高,您可以去下载后看看,也可以下载下来后结合PPT的讲述来看此文,这样会容易理解许多。哦,对了,这份PPT也是我写的,目前在百度文库的比特币原理相关文档中排名第一,访问量过万、下载量近2000。
引言
09年初的某天,那时笔者还在中部某高校计算机系读大二,那天我在宿舍里打开电脑,随意的点击着一些资讯网页(也可能是翻看杂志,具体已经记不清楚),然后被一篇文章所吸引。文章主要内容是,国外有一个密码学狂人,自称发明了一种点对点的电子货币系统,该电子货币不需要中央发行机构,完全由网络上自愿参与计算的计算机负责发行,通过各种复杂且深奥的加密学算法来保证系统的可靠,这个狂人还给它取了一个很应景的名字:“比特币”。
我大略的看完了文章,“电子货币?还用加密算法?还没有央行?还叫比特币?” 我大脑快速思考了一下,脸上呵呵一笑,“宅男真逗!异想天开!”
13年8月份,那时我已经考上华南某高校计算机研究生,正在家中等待开学。这回确定是在逛凤凰网,突然间,页面下方有一行字强行把我的目光给拖拽过去“比特币行情持续走高,单价突破500元”。我心里突然一震,“比特币?这名字好熟悉,好像在哪听过啊!”
什么是比特币?
比特币是一种数字货币,它并没有实物,由计算机通过特定数学计算而产生,也存储在计算机中。因比特币仅仅是计算机中的一串数据,相对纸质货币而言,它也被称作“虚拟币”。
比特币显然不是数字货币的开创者,在它之前已经诞生过很多种数字货币。其中最为国人所熟知的,莫过于腾讯公司发行的q币。虽然如今,比特币的名气已经到了几乎无人不晓的程度,但从其数字属性来看,比特币和q币没多大差别。
甚至,我们所使用的人民币,其数字属性也是越来越强。随着智能手机的普及,越来越多人出门已经不带现金,无论是买衣服吃饭,还是给朋友转个账打个款,或者是工薪族领工资,人们都并没有拿着一叠叠钞票在交易,而是通过移动支付来进行收付款。在这些应用场景下的人民币,也是以账户里的余额——一串计算机数字的形式来体现的。
比特币中的“比特”二字,是一个专业术语,指的是计算机的最小信息量单位——也即一个二进制位,英文是“Bit"。比特的取值只能为0或者1,因此一个比特要么是0,要么是1。多个比特则是多个0和1的组合,比如0010是4个比特,而01000010则是8个比特。
比特币的发明者中本聪之所以将其取名为“比特币”,原因之一肯定是为了向“比特”这个最小信息量单位致敬,毕竟,如同“夸克”是这个物理世界的最小粒子一样,计算机世界的全部构成,都基于比特。而另外一个原因,笔者推算,与比特币系统中所使用的多个加密算法有关。这些加密算法均是对数据以二进制的形式来进行加解密,而每一个比特币地址的直接形式,也是一串160位的二进制位。所以取名为“比特币”,实在是名副实际。
比特币是谁发明的?
比特币的发明者叫“中本聪”(Satoshi Nakamoto),2008年11月1日下午4点,一个自称中本聪的人向一个密码学爱好者邮件列表中的人发去了一封邮件,邮件名为"BitCoin P2P e-cash paper"。邮件内容大致为:近来,我一直在研究一种新的电子现金系统,它是完全的P2P性质,无需借助任何可信的第三方"。邮件中给出了完整的论文链接,并附上论文的摘要。
此邮件现在还能看到(链接为:http://www.mail-archive.com/cryptography@metzdowd.com/msg09959.html),以下是邮件截图:
邮件根据邮件中给出的链接(http://www.bitcoin.org/bitcoin.pdf),我们可以打开论文,也即鼎鼎大名的《比特币:一种点对点的电子现金系统》(BitCoin: A Peer-to-Peer Electronic Cash System)。该论文被众多追随者们称作比特币的创世论文,亦称“比特币白皮书”。论文使用英文编写,共9页,这对国内许多朋友而言是一个阅读障碍。好在国内知名的比特币资讯媒体“巴比特”很早就已组织人将其全文翻译为中文,需要的读者可以到巴比特官网获取。
创世论文除了高超的数学造诣和严密的构思外,中本聪还有强大的执行力。在发出邮件数天之后的11月16日,中本聪本人发布了比特币系统的首个版本:V0.1.0。遗憾的是笔者当前已经无法找到该版本的下载链接,GitHub上BitCoin库所提供的最原始版本是V0.1.5,该版本于2009年的9月16号发布。有兴趣的读者可以自行去下载,借以窥探早期的比特币系统源码是什么样子。
次年1月3日,中本聪在位于芬兰赫尔辛基的一台小型服务器上挖出了比特币的第一个区块——自然,该区块也被称作“创世区块”(区块的概念,我们会在后文详述),区块中作为奖励的50个比特币因此也归中本聪本人所有。该区块被设定为1号区块,在来的新版比特币系统中,又被改成0号区块。在此创世区块中,中本聪写入了一句话:
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
财政大臣站在第二次出手救助银行的时刻
这句话实质是《泰晤士报》当天头版的标题,中本聪留下这句话的用意,除了镌刻当天时间外,似乎还有对现行老旧银行系统的嘲讽。依据于比特币系统的设计,区块一旦形成,除非遭遇51%算力攻击,否则就再也无法被改变。因此,无论此句话的用意如何,它都已经被永恒的刻在了比特币区块链的首个区块之中。
现在将思维收敛回主题,中本聪既然是比特币的发明者,那中本聪到底是谁?此人在现实生活中的真名就叫“中本聪”吗?他是从事什么职业的?这些问题,起初大家以为很快就能弄明白,然而事情却大大超出了人们的想象。09年到10年间,中本聪在网络上还算活跃,经常会在相关社区参与讨论。10年的12月12日6点22分,他在论坛中发布了最后一个帖子,帖子中谈到软件最新版本的几个无关紧要的细节后,就再也没在论坛中出现过。
日裔美国人Satoshi Nakamoto对于中本聪的真实身份,网络上有多重猜测。其中一个流传比较广的版本认为,此人是毕业于加州州立理工大学、获得物理学学士学位的日裔美国人,他真名恰好就是“中本聪(Satoshi Nakamoto)”。理由也比较可信,其一是他的学术背景使得他具备发明比特币所需要的数学造诣,其二是他为人低调,面貌、发型等各方面都符合人们对他预期。因为人们似乎觉得,这样一个技术狂人就应当是“技术宅”、“衣着朴素,常穿格子衫或者灰夹克”、“满脸胡须,从来不会剃的干干净净”的样子。而且,他本人在采访中的回复到:
"I am no longer involved in that and I cannot discuss it,' he says, dismissing all further queries with a swat of his left hand. 'It's been turned over to other people. They are in charge of it now. I no longer have any connection. " (“我已经不再参与这个项目,所以我不能讨论它。它已经被移交给了别人,他们正在负责这件项目。我和比特币再也没有关系了。”)
这样的回复,和正面承认似乎没多大区别。
京都大学教授望月真一另外一个比较可信的版本称,中本聪其实是时年44岁的日本京都大学数学教授望月真一(Shinichi Mochizuki)。理由也很充分:首先,望月真一教授具有数学博士学位、师从86年菲尔兹奖(数学界的诺贝尔)得主法尔廷斯,他完全具备所需的数学功底;再者,现实中的望月真一跟网络上的中本聪性格相似,都喜欢独自研究,发表论文后也不喜做过多讲解,而是让其他人自行理解;最后,望月真一的工作内容中包含比特币所用的部分算法。
澳大利亚商人Wright最新的观点倾向于认为,中本聪是一个澳大利亚的成功企业家Craig Steven Wright。Wright拥有法学、统计学和计算机三个专业的硕士学位,另外还拥有两个博士学位,其在一次被警方搜查之后,于社交媒体上公开宣布自己就是比特币的发明者中本聪。其提供的证据表明,Wright拥有自诞生以来早期区块上比特币的私钥、早期中本聪用于沟通的邮箱账号、以及比特币白皮书的草稿。另外,Wright也受到比特币开发核心团队的支持。
比特币发展至今,中本聪是谁已经不算太重要了。无论其真人是谁,又或者随着时间的推移,最终我们能否知道他是谁,这都对比特币以及区块链的未来不会造成太大影响。既然中本聪本人似乎不太愿意让世人知道他的真实身份,那我们又何必打搅他呢?
需要提及的是,2015年,中本聪正式获得诺贝尔经济学奖的提名,提名者是加州大学洛杉矶分校的金融学教授Bhagwan Chowdhry。Chowdhry教授表示他的这个提名是经过反复思考、是极其严肃的,提名中本聪是因为他认为,比特币这一数字货币是一个不折不扣的革命。虽然最终中本聪并没有拿到该奖(诺贝尔奖评审委员会就此表示过,称无法将诺贝尔奖颁给一个未知身份的人),但以最近几年比特币及区块链技术对整个世界金融业的颠覆性影响,相信在未来的不远处,这个奖颁发给中本聪真不是一件太难期待的事。
比特币要解决什么问题?
在讨论比特币所要解决的问题之前,我们先对“比特币”这个概念做一番具体的辨析。在媒体的相关报道中所用的“比特币”三字,指代的更多是中本聪所提出的那个电子现金系统的总称。从概念上而言,真正意义上的比特币,应当仅仅只是该电子现金系统中所使用的用于交易的抽象数字货币。中本聪的创世论文所提出的整个电子现金系统,除了包含用于交易的比特币外,还包含区块链、协议等这些基础组件。由于中本聪本人当时的主观目的就是发明一种P2P的数字货币,在他自己看来,区块链只是其为了实现这种数字货币而提出的支撑技术,因此,被推到前台来的概念就是比特币。
但在这里,我们在这里做一个明确的区分: ** 区块链是比特币的支撑技术,比特币本质上只是区块链在货币领域的一个应用**(比特币自然也是区块链的第一个应用)。也即作为数字货币形态的比特币,并不等于区块链。甚至,进一步地,基于现在的认识,比特币这个电子现金系统包含如下数个子部分:
- 所交易的数字货币,即仅以数字货币形态所体现的比特币
- 用于提供交易描述能力的协议
- 用于支撑整个系统运作的区块链
关于区块链和协议,本书会在后续章节对其做展开并深入探讨。现在我们继续回到主题(比特币到底要解决什么问题?),既然已经将比特币和区块链、协议等概念做了区分,那应当说明的是,我们本小节所讨论的比特币所解决的问题,其主体仅仅为比特币——也即并不讨论区块链所能解决的问题。实际上区块链的实际用途更加广泛,对金融业的冲击本质上也来源于区块链,但这些我们会放到专门的一个以区块链为主题的章节中去讨论。
不可否认,现实中有不少技术宅喜欢折腾一些看似精妙无比,实则毫无实用意义的创造。但中本聪发明比特币并非无聊而为,亦不是极客的技术炫耀,实际上,比特币是为了解决现有金融体制的种种弊端而诞生。如同汽车是为了解决马车或人力车的低效而生一样,比特币的优势对现有陈旧金融体制的高成本、低效率以及信用问题而言,简直是一场颠覆性的革命。
参照自中本聪自己的论文中的观点,并附加上近几年间整个爱好者社区对比特币的认识,比特币主要解决了如下两个核心问题:
- 成本与效率
- 信用
比特币对以上俩问题的解决方案,基本都深度基于区块链机制所提供的能力。本章作为入门章节,提到相关区块链原理时将不会做深度展开,仅会基于概念做理解性的介绍,对区块链有兴趣的读者,请关注后续章节。
下面就上述进行分别阐述。
成本与效率
比特币系统是一种去中心化的、点对点的分布式系统,交易的参与双方,无论他们的地域或者国籍,仅需要交易发起方对交易信息进行签名,然后传播全网并得到验证即可。这里提到的一次交易的全过程,除了最核心的签名及验证计算外,再无其他流程。而在现代计算机的计算性能面前,这样的计算时间几乎可以忽略不计。如果不考虑网络通信的速度,那么你和一个站在你眼前的人进行交易,与你和一个远在南美洲的人进行交易,二者所耗费的时间相同。但同样的应用场景,如果你想和一个远在南美的人,使用法定的货币来进行交易,这会涉及到繁琐的外汇兑换流程,金额大的可能还面临审核,通常都要耗费数小时甚至数天。
另外的,使用比特币进行交易的手续费极低,通常最低手续费固定为0.0001比特币。也即无论你转多少个比特币出去,你只需支付0.0001比特币的手续费(你可以选择适当支付更多的手续费,以加快交易被处理的速度)。对应的,如果你使用法定货币来进行交易,手续费则高出数个数量级,就世界范围内的平均数而言,不涉及跨国交易的小额手续费都在1-2%之间,而跨国交易的手续费则还要高出数个百分点(如同过Paypal进行大额交易,手续费可能高达10%)。
必须指出的一点是,传统金融交易的效率较低、成本较高,部分原因需归结于各国庞大且层级分明的金融中介机构(典型的如银行),一次交易的流程链路可能会牵扯到层层的结算和审核,导致时间效率低,而过多中介机构的存在,又自然推动了成本的上升;而跨国交易则更是跟各国的金融管制政策密切相关(如反洗钱、防范资金外流等)。从这一点上来讲,比特币的交易之所以效率高、成本低,是因为比特币的去中心化特点,导致其没有监管方、进而没有各类监管制度,整个交易流程十分纯粹——仅仅只需包含交易的记账和验证环节。
信用
货币及交易的信用问题,主要体现在如下三个方面:如何确定货币的真实性及所有权、如何避免交易双花(Double Spending)、货币抵抗通货膨胀和通缩紧缩的能力。
现实生活中的法定货币,其真实性通常依托于纸质货币上的各类防伪特征来实现——如防伪水印、隐藏图案、印刷细节质量等。但在比特币系统中,不存在真正的比特币数据结构体(即不存在类似"Typedef Struct BitCoin{};"这样的定义。),而是通过一串串数字签名来确定间接体现货币实体:一个人获得了一份比特币,具体体现为有一笔验证过的交易签名中的获得方的公钥指向了这个人。任何一笔交易签名都是长长的签名串中的一部分,试图伪造指向自己的交易签名是做不到的,因为其他任何一个节点在经过计算后,会发现这份交易信息属于“无源之水”,于是都会将其拒绝。
确定某人对比特币的拥有权的方法,与上述过程基本类似。当一方声称他对某份比特币有合法的所有权并发起交易时,他需要用自身的私钥来对此次交易信息进行签名(交易信息中包含有该比特币真实拥有者的公钥)、并把签名附加在交易信息末尾,然后将其广播到全网络。收到后的节点则利用交易中的公钥来对交易进行验证,如果验证通过,自然说明此人确实拥有该比特币(此人的私钥和比特币真实拥有者的公钥为一对,说明此人即比特币的真实拥有者)。
从上数两点可以看出,比特币系统对确定货币的真实性及所有权问题的解决方案,理论上做到了无懈可击,唯一的破解方法是攻击相应的加密算法——但这一点在计算上不可行(所谓“计算上不可行”,指的是只能通过穷举法来进行攻击,在当前计算性能下,穷举法需耗时数百年甚至数万年),这是加密算法的数学基础所保证的。
“双花”即双重支付,指的是把同一份比特币用于两次及以上的交易,在数字货币领域的具体表现为:交易发起方在完成交易后,却试图用攻击手段来取回已支付的货币、或通过一些措施来对自己已完成的交易行为进行抵赖。
纸质形态的法定货币不会有此问题:一张纸币,你给别人了,你手里就没有了;又或者你通过网银转账,转出去了,你账户里就被扣掉了相应的数额。但对于去中心化后的比特币,由于既没有可以拿在手中的实体货币,亦没有类似银行这样的中心节点来“主持公道”,“双花”问题于是成了一个亟需解决的问题。
中本聪精心设计了一整套方案来应对双花问题,并在创世论文中对此作了详细的阐述。简单归纳之,依据于比特币交易系统的设计,每一份交易在得到验证后,都会被打包进一个区块,这个区块也会被放到当前区块链的末尾。随着时间的推移,当前处于末尾的区块,其后面又会被附加若干个区块。每个附加的区块,称为对这次交易的确认。通常,商家会在交易收到3个或者更多确认后,才真正认可交易已完成。
举一个具体的例子,假定一个名为“张三”的人正在和名为“李四”的人进行2比特币的交易,那么不妨假设他第一次支付的交易信息被打包进了序号为1001的区块,商家等到该交易获得3次确认后,认可交易最终完成。那么此时的区块链,最末尾的区块序号应当为1004。张三为了否定1001区块的存在,他需要在第1000区块的基础上,伪造一系列新的区块(伪造区块中的数据会表明张三的比特币用于了其他的交易、又或者从来没进行过交易),并将这些区块传播到全网。这样一来,网络上的节点就会收到自1000号区块后的两份不同的序列,从而造成区块链的分叉。中本聪规定,节点只应忠于更长的那个链条(俗称“主链”),也即如果出现多个分叉,节点只应接受多个中的最长链条。
这样的规定使得,如果有人想进行双花,那么他必须和全网所有其他诚信节点为敌,他的算力需要超越全网所有的诚信节点的总和(因为只有这样,他才有可能制造出更长的分叉来代替真实的主链)才能对比特币系统造成有效攻击,这种攻击通常又称“51%算力攻击”。在比特币刚诞生的那几年,整个网络的算力仅为GH级别,做到这样一点确实还有可能。但到了今天,比特币全网算力已达到4000PH/s,这差不多等于100台天河二号超级计算机同时运作,因此除非是国家或世界前几的互联网公司,否则是不具备足够的攻击实力的。
至于抗通货膨胀,比特币的做法比较简单干脆:依据中本聪的设定,比特币并非不限量发行,区块约每10分钟产生一个,而每区块中作为奖励的比特币数量隔几年就减少一半,其最终总数量固定在2100万个。在数量恒定这一点上,任何国家或组织也无力去试图改变,因此它天然无需担心通货膨胀问题。中本聪设计的区块产量减半的机制相当高明,它使得比特币无惧来自政权的挑战,无需担心类似津巴布韦币的境遇会发生在比特币身上。
而通货紧缩则确实是为数不多的人们对比特币的少数几个担忧之一,比特币数量有最大值,实际上在所有区块被挖光之后,它的整体数量还应当以较小的速度逐步递减,因为总是会有人遗忘他们钱包的私钥、又或者当钱包中的余额只剩小数点后若干位时将钱包遗弃。再考虑到世界人口总是不断增长,财富总是逐渐往少数人手中聚集,但比特币总数却早已被设定了最大值,基于这些点来看,比特币的紧缩问题在当前看来似乎是注定的。比特币有无数先天优势,但通货紧缩问题似乎也是比特币的先天劣势,这侧面印证了一个浅显的哲学道理:世上无完美。
但我们尚无需对此做过多忧虑,截止到本文撰写时,比特币毕竟诞生才不到8年。任何事物都不可能一诞生就达到至臻,比特币也是一个新生事物,暴露出问题在难免不过。比特币本身的开源及开放特性使得,任何问题都可以通过商定的方式得到解决。或许等通货紧缩问题真正开始显现之时,社区中早就有能人提出了解决方案(也许是中本聪自己站了出来,也许是下一个中本聪),然后经由核心开发小组审核及实现,最终全网节点共同接纳,完成升级。
讲到这里,本章要告一段落。本章的主要目的是在避开底层较晦涩的原理的前提下,讲清楚比特币的主要概念,让没有相关技术基础的读者也能轻松看懂比特币(至少做到心中有数)。下一章节会聚焦区块链原理和比特币实现,因此会略有难度,可能需要有一定计算机、信息论、加密学基础的读者才能完全理解。
另注,如果您认为本章大段大段的文字表述太过生硬,不够形象易读,您也可以在百度文库中搜索关键字:“比特币原理”,前排能看到一个名为“比特币原理_图文”且贡献者为“买洋火的小男孩”的PPT(由于质量上佳且通俗易懂,所以通常都是排第一位),点开后的标题为《疯狂者游戏——全网唯一不可伪造数据比特币原理》,这份PPT用较少的文字和恰当的图片,十分形象具体的讲清楚了比特币的原理,文档所获得的评价也十分之高,您可以去下载后看看,也可以下载下来后结合PPT的讲述来看此文,这样会容易理解许多。
PPT哦,对了,差点忘了讲,这份PPT也是我写的(“买洋火的小男孩”就是我的百度昵称,PPT中的张小秋也是我曾经的网名),目前在百度文库的比特币原理相关文档中排名第一,访问量过万、下载量近2000。虽然有人试图把文档下载后重新上传到百度文库,但依然是我自己的上传排在第一位,从这点上看,百度文库的原创性保护还是很值得点一个赞的。