1、比特币的诞生
在2008年11月1日,一个自称中本聪的人在一个隐秘的密码学邮件里贴出一篇研究论文,论文阐述了他对一种名为比特币的电子货币的新构想,于是比特币就此问世了。下面这个图就是论文的原文。
中本聪的论文原文,截图自网站https://satoshi.nakamotoinstitute.org/emails/cryptography/1/这篇报告中对比特币的定义是,一种P2P电子货币系统。自从互联网诞生以来,电子货币因具有方便和难以追踪的特性,并能脱离政府和银行的监管,而成为了一个热门的话题。20世纪90年代,有一个叫密码朋克的密码破译组织,他们致力于创建电子货币,但付出的努力却没有受到任何的成效,中本聪的发明,让这个困扰密码学领域数10年的难题迎刃而解。
2009年1月3日,第一个数据块—创世区块(Genesis Block)的生成宣告比特币系统诞生。
中本聪的创世区块,截图自网站https://www.blockchain.com/当时正值英国财政大臣达林被迫考虑第二次出手纾解银行危机的时刻,“Chancellor>其实早在20世纪90年代早期,密码破译者大卫·乔姆(DavidChaum)就提出把加密技术运用于现金上的想法,并创建过一个匿名系统—“电子现金”(ecash),但很遗憾,失败了。之后各种电子货币尝试者不断涌现—比特金(bit gold)、RPOW、b–money……也无一例外,都失败了。
2、比特币到底是什么?
前面我们提到,比特币是由中本聪发明的一种基于P2P网络的电子货币,那它到底是什么呢?和我们的主流货币的区别在哪里呢?带着这样的问题,我们来看一段对比特币比较准确地描述:
“比特币是一种由开源的P2P软件产生的数字货币,是通过计算产生的,由一串串复杂的计算机代码组成。与传统的法定货币不同的是,比特币不依赖于特定的中央发行机构,而是使用遍布整个P2P网络节点的分布式数据库来记录货币的交易,并使用密码学的加密设计来确保货币流通各个环节的安全性。”
简而言之,比特币是没有发行机构(政府、个人、企业)的,它是通过一种计算方法(哈希)在互联网中自然生成的。比特币产生的过程,我们叫做“挖矿”,当然,这不是真的去挖。
比特币的发行上限为2100万枚,下图是理想的比特币发行速度和发行总量,显示了一部分。
实际上,比特币的发型总量是小于2100万的。
如何我们用四年一减半,10分钟出一次块为依据来计算的话,会发现结果总是会超过2100万。因为这只是表面现象,比特币代码中其实给定的减半周期参数是210000。
问题出在哪里呢?
首先,10分钟出块一次是不准确的,比特币的挖矿难度是随时调整的,所以每次出块的时间,一般不会是精确的10分钟,只是系统会不断调整挖矿难度,保证长期来看,每次产生区块的时间的平均值趋近10分钟。
其次,每四年减半的四年也是不精确的,因为真实的减半周期是210000区块,这样,210000乘以10分钟得到的是总时间,是约等于四年的。
把这些不确定的数值带入算式中,乘以非常大的数字后,最后得到的结果和理论上的必然是有所出入的。不过在和别人分享,想要简单易懂的讲述时,我更愿意用这种方法。
那下面我们就用这种不太准确的方法算一下。
“最初是每块50个比特币,然后每4年减半,10分钟出块一次,如此一来,我们有了下面这个算式:
可能有人注意到算式中只加到2的32 次方就结束了,这是为什么呢?这里还是要给大家看看比特币的发行总量精确计算公式:
其实这里的意思是比特币会经历32次减半,到第33次减半的时候,比特币区块中包含的比特币数量就等于零,不会再有新的比特币产生了。
【为什么?】很明显从数学上来讲,从50开始无论减半多少次得到的数量也不可能是零,但是到第33次减半的时候,已经是一个非常小的数字了,而比特币系统由于存储精度的限制,这个数字就会变成零。所以,完成32次递减过程之后,所有生产出来的比特币可以根据上面的公式计算出一个略小于2100万的值。如果想要了解更为准确数值,可以访问此网站:https://en.bitcoin.it/wiki/Controlled_supply该网站中提到,在考虑到算力提升的情况下,最后一枚比特币将会在2140年5月7日被开采。
3、比特币的货币意义
刚刚我们说完了什么是比特币,还象征性的算了一下比特币为什么总量上限是2100万枚。现在我们来谈谈比特币的货币意义。
说到这个话题,可谓是众说纷纭。
比特币到现在都还只是为少数人所知,它到底有怎样的魅力让大玩家们如此着迷?除了经济上的可观回报,投资的根本原因在于他们的价值认同。
首先,比特币是人类历史上第一个通缩货币,这是对现有货币的根本性颠覆;
其次,比特币传播方式是P2P网络,不依赖于政府和中央银行的信用担保,是天然的去中心化结构,这样保证了没有任何机构可以对其进行操控。
基于这一点,比特币的信用机制呈两极分化:对于纯粹市场调节经济的天然信用或者完全没有信用。而大玩家们正是前一种经济思想的疯狂追随者。
不仅如此,比特币交易匿名。这是人类历史上第一次严格意义上的确保“私有财产神圣不可侵犯”。
再者,比特币很好的解决了电子的双重支付问题。
那么,比特币的货币意义到底是什么呢?
对于比特币的追随者们来说,可以用来买东西的交换媒介就是货币。从根本上来说,他们真正迷恋的是中本聪简单而严密的设计以及背后所蕴涵的经济思想。不过,这个经济思想的前提是建立在弗里德曼新自由主义经济学的理论基础上——纯粹的市场主导经济。如果你更信仰主张政府进行宏观调控的凯恩斯主义,将比特币作为投机的工具可能更为合适。
我们抛开设计上的诸多优点,比特币带来的问题也愈来愈多,比如缺乏监管、黑客攻击以及丢失后无法找回。
近来,美国税务局向加密货币交易者发送教育信件、美国众议院举行Libra的听证会,比特币价格一度跌破10000美元;而又受美联储降息、人民币汇率破7等信息刺激,比特币又开始大涨,8月6日一举突破12000美元。有人对比特币寄予“数字黄金”的厚望或者作为避险工具,也有传统投资者视之为“赌博机器”,不过我们有理由赋予比特币更多的信任,比特币很有机会在未来被广泛使用,但现在还是在成长中。
4、比特币是怎样生成的
前面我们提到,比特币是通过全球的P2P网络中由很多计算机运用特定的算法计算特定公式来“挖矿”生成的。经过十年发展,已有大量计算机加入,形成了庞大的P2P网络,并构成巨大的算力屏障。截至2019年8月15日,全网节点数9280个。
全球比特币节点分布,截图自网站:https://bitnodes.earn.com比特币是通过挖矿生成的,那什么是挖矿呢?
挖矿就是通过全球拥有比特币生产程序的网络节点上的计算机,通过比特币特定算法不断产生新的正确的Block并延续Block Chain的过程。比特币从开始到现在的每一笔产出记录都保存在网络上,整个比特币网络维护的一个巨大的产出或交易记录文件(现在大约200GB)。新加入的产出或交易记录叫做一个Block,而这个硕大的文件由一串Block组成,叫做Block Chain。挖矿为整个系统的运转提供原动力,是比特币的发动机,没有挖矿就没有比特币。
下面简单说一下比特币挖矿算法。首先,我们先来了解几个跟挖矿有关的知识点。
version:Block的版本;prev_hash:上一个Block的hash值;merkle_root:需要写入的交易记录的hash树的值;ntime:更新时间;X:正确运算结果的唯一参数,范围是0~232;nbits:当前运算难度,最终反映结果为TARGET,即所获得的奖励。挖矿的过程就是找到 X,使得SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET。
从上面公式我们可以看出,每个Block中所包含的信息有该Block的版本号、上一个Block的hash值、需要写入的交易记录的hash树的值、这个Block的更新时间、当前运算难度值和运算这个Block的范围参数值,从而形成了一个长达256位的hash数串。
一旦找到x,你就可以向全网节点广播一个新的Block,其他客户端会验证你的Block是否合法。如果你的Block被接受,由于每个Block中的第一笔交易必须是将新产生12.5个比特币发送到我们事先设定好的接收地址,我们就得到这12.5个比特币。
说完了这个,我们来解答下面几个问题,这样你们会对挖矿更加清晰。
1)为什么是12.5个比特币?
这是规定。最初是50个比特币,每产生剩下比特币的一半,这个所得就会减半,这样最终能产生的比特币总量趋近于2100万。如果你现在仍然声称挖到了50个比特币,这是不会被其他客户端接受的,这个Block就算白挖了。2009-2012年是50个,2013-2016年是25个,2017-2020年是12.5个,以此类推。
2)怎么保证更新周期平均是10分钟呢?
TARGET越小,解出X的难度就越大,每产生2016个Block(约14天),网络会根据这段时间产生新Block的平均间隔调整之后的TARGET。
3)同时解出来怎么办?
Block Chain在形成过程中会出现分叉,我们假设在一条Block Chain上有A和B两条分叉,部分客户端接受了A,部分接受了B,直到某个分支变得更长(包含的数据内容更多),所有人就会选择这个更长的分支。如果你挖出来的不幸没有被选中,你的挖矿所得就无效了。
4)既然选更长的分支,那我用很低的难度去求解怎么办?
挖矿程序客户端在众多分支中找到符合当前难度且最长的。
5)挖矿是否存在作弊漏洞呢?
双花攻击是个很典型的例子。进行交易1后并发送广播,网上其他节点都记录了这笔交易,但要生成6个区块后才能真正确定这笔交易已经成功。在交易1广播后,A却在自己的区块链记录了交易2,重复利用交易1的币。
这里要提到51%攻击。这种攻击是通过控制网络算力实现双花。如果攻击者控制了网络中50%以上的算力,那么在他控制算力的这段时间,他可以将区块逆转,进行反向交易,实现双花。如果算力不够51%,也可以发动双花攻击,也有成功的可能。只是算力越低,发动双花攻击成功的几率会越越小。