LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 区块链科普:解读区块链“创世圣经”《比特币:一种点对点的电子现金系统》

区块链科普:解读区块链“创世圣经”《比特币:一种点对点的电子现金系统》

2020-03-31 流愚 来源:区块链网络

哈喽大家好

这里是XPiedPiperX

由于近期美股多次熔断,其引起的恐慌情绪导致前段时间特币大跌,引发热点。当然,现在比特币的价格也有了回暖的趋势。Piper在全球最大的加密货币交易网站CoinMarcketCap(https://coinmarketcap.com/)发现一个很有趣的现象,几乎所有加密货币的价格走向都是唯比特币马首是瞻。比特币作为加密货币的鼻祖,有着绝对的统治地位。

Piper始终坚信,要学习一个新知识,应该尽量查阅最权威最一手的资料。所以,今天这期区块链科普的推送,Piper就带大家来深入解读比特币的创始人,同时也是区块链这个概念的发明者(或组织)——

中本聪(Satoshi? Nakamoto),在2008年发表的那篇论文,区块链“创世圣经”——

《比特币:一种点对点式的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)

2008年,一个化名为“中本聪”的人(或组织)发表了一篇论文《比特币:一种点对点式的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)。在这篇论文中,中本聪首次提出了“区块链”这个概念,论文中提出的“比特币”便是基于区块链技术的一种加密货币。

由于很多朋友非互联网从业者,因此Piper将以最通俗易懂的语言和例举一些生活中常见的例子来帮助大家深入了解“区块链”和“比特币”。

中本聪(Satoshi? Nakamoto)在论文《比特币:一种点对点式的电子现金系统》中主要以介绍、交易、时间戳服务、工作量证明、网络、激励措施、回收磁盘空间、简化支付验证、合并和分割价值、隐私、计算、结论等12个方面论述了区块链和基于区块链技术的一种数字加密货币——比特币。

由于化名为“中本聪”的神秘人(或组织)是个天才,其论文中提到的区块链系统近乎完美,且十分复杂。因此,Piper不得不用较长的篇幅来为大家通俗易懂地解释这篇区块链的创世论文,还请对区块链技术感兴趣的诸位耐心观看。

1.介绍

中本聪在论文的开头介绍中说明了如今基于信任模型的电子交易系统存在的一些问题。我们在互联网上的交易,都需要一个受信任第三方中心化机构来帮助我们处理电子支付和保证交易的安全性,防止双重支付。因此,中本聪在论文中提出了一种不需要受信任的第三方中心化机构参与,去中心化点对点交易系统。为了方便大家理解这些概念,Piper在这里用一些生活中常见的例子来说明。

中心化的系统,举个例子。我们把钱存到支付宝或者银行,那么它们就是我们存钱的中心化系统,理论上,我们存在支付宝上面的钱,阿里巴巴也是可以动用的。那么,为什么我们放心把自己辛苦挣来的钱存在这些机构里面呢,就是因为基于我们对支付宝、银行等这些中心化系统的信任,因为我们始终坚信,像支付宝或中国银行这么大,这么权威的机构,不会随便挪用我们的个人资产。

那么,基于中心化的系统存在哪些弊端呢?其实,中心化系统也曾经发生过几次著名的翻车事件,如OFO小黄车押金事件,在2018年OFO由于经营不善倒闭,就有许多用户在OFO共享单车上面交的押金很难或者根本无法提取出来。而银行方面,2008年世界金融危机,一家很著名的银行机构“雷曼兄弟”(Lehman Brothers)也因为在金融危机中破产,导致许多储户存在雷曼兄弟银行的钱取不出来。

况且银行通过印发大量的纸币,你存在银行里面的财富也会逐渐贬值,就比如,由于在津巴布韦,通货膨胀太过严重,导致津巴布韦政府钞票发行的面额越来越大,政府发行过100万亿面额的纸币,只要我们花点小钱在网上购买一张津巴布韦的纸币,马上就能够变成“百万亿富翁”

中本聪提出用密码学原理来取代基于信任的电子支付系统(基于信任:比如我们信任支付宝,因此我们把钱存到支付宝,用支付宝来处理我们的网上购物或者网上转账),为了使交易的过程通俗易懂,Piper分别以中心化系统中心化系统例举详细的例子:

中心化系统:

假如有一个人叫A,A想转账100块给B,那么他需要通过银行或者支付宝等权威的中心化机构,其内部执行流程如下:

1.A想把100元转给B,那么A就相当于把交易的指令先发给银行“A转账100给B”。

2.银行收到该条指令后转发给B,“A要把100块转账给你”。

3.B接受到了银行的指令后,确认收款(如有人发给了你一个微信红包,你需要点开红包确认收款)。

4.B确认收款后,银行执行两条指令:把A的余额-100,把B的余额+100,并且把“A余额-100”“B余额+100”的交易记录存在自己的系统里面。

从以上的流程中我们不难发现,“A转账给B 100”,“B收到A的转账100”的交易记录都存在银行的内部服务器里,银行做为第三方机构(非交易的两方)起着一个大账本的作用。

去中心化系统:

假如有7个人叫A、B、C、D、E、F、G

这7个人每个人手上都有一本账本(分布式账本)

如果A想把100个比特币转给B

那么A需要把“A转账给B 100个比特币”这条记录广播出去,即“A转账给B 100个比特币”的这条信息通过网络让参与这个系统的C、D、E、F、G也一并知道,并且 A、B、C、D、E、F、G 都在自己的账本上记录“A转账给B 100个比特币”

若假如某一天B想赖账,说A并没有支付给他100个比特币,那么由于A、C、D、E、F、G的账本上都有记录“A转账给B 100个比特币”的这条交易信息,按照“少数服从多数”的原则,B的赖账并不会被系统认可,其他所有参与这个系统的人都是这笔交易的公证人,因此B的赖账无效

当然,Piper在这里只是用最最简单例子先说明一下去中心化系统和传统中心化系统的本质区别,至于具体细节,会在下面更加具体地描述。

2.交易

现实生活中,除非我们与一个人面对面交易,否则我们无法判断这笔交易记录是否真的来源于和你进行交易的那个人。

在网络上,我们需要利用数字签名技术来保证该条交易记录不被伪造和篡改,并且的确来自于发送方。举个现实生活中的例子,比如A想给B 100万,因此A开了一张100万的支票,并在这张支票上面写了100万的面额和A的签名。那么当B收到这张支票后,根据支票上的签名,便可以知道支票的确来源于A。但是实际生活中的纸笔签名方式容易存在一些隐患,假如有一个邪恶的人找了一个字迹模仿高手,便可以很容易伪造A的签名,让B误以为这张支票的确是A签发的。

而比特币采用数字签名来防止篡改和确保交易信息来自发送方。

我们可以引用中本聪在论文中的流程图来详细说明这个交易过程:

Piper在介绍中提到过,比特币属于一种全民记账系统,如上图所示,当A转账给B 10个比特币时,交易需要执行以下的流程来保证该笔交易的确来自于A。

1.我们需要把“A转账给B10个比特币”这条信息进行一次哈希函数运算哈希函数(Hash function)是密码学中一种很著名的加密函数,这个函数的特点是:

① 任何大小的文件被哈希函数加密后都可以变成一串固定长度二进制数字(如0101001011010...)

② 用哈希函数加密后的数据安全性高加密容易解密难,即要根据明文加密成密文很容易,要根据密文反算出明文基本不可能。Piper这里用一个很形象的例子来说明哈希函数加密明文变成密文的过程:

我们可以把明文比作一块,把明文字符串用哈希函数加密成固定长度的二进制字符串的这个过程理解成绞肉机绞肉的过程。只要有一台质量尚可的绞肉机,我们很容易就可以用绞肉机把一块肉变成一滩很细腻的肉沫(明文加密成密文)。但是如果反过来要把这摊肉沫恢复成和原先一模一样的完整肉块(密文反推出明文),那么基本就是不可能做到的事情了。

哈希算法就是如此,正向加密非常容易,但是要反向解密出加密前的信息,基本是不可能的。经过哈希函数加密后的密文在比特币系统中也称为“摘要”(message summary)。

2.比特币用户注册的时候,系统会产生一个随机数,并且通过这个随机数产生一对密钥。A有一对密钥,这对密钥分为私钥公钥。顾名思义,私钥就是A自己私人保管的一把钥匙,这把钥匙是保密的,只能A自己知道妥善保管(曾经有人因为忘记私钥而白白损失掉数千枚比特币)。?而公钥就是可以公开的一把钥匙,A发出交易信息后,比特币系统上的所有人都有办法得到A的公钥。我们在步骤1知道,要先把交易信息进行一次哈希函数运算得到一个摘要,然后再把摘要和自己的私钥一起作为参数,进行一次ECDSA加密算法(和哈希运算类似)得到一个密文,这个密文就是所谓的“数字签名”。同时,A也要把自己的公钥广播出去,即让比特币系统的所有人都有办法获得来自A的公钥。

3.A把交易信息和数字签名一起发送给B,由于B有办法得到A的公钥,因此B用A的公钥对来自A的“数字签名”进行解密,解密后得到一个数字摘要,我们这里先把这个摘要称为“摘要B”

4.B再把来自A的信息(这条信息可能来自A,也可能是其他人伪造的)同样用哈希算法得到一个摘要,这里称这个摘要为“摘要A”

5.B通过对比判断“摘要B”"摘要A"是否一致,来检验该信息是否来源于A,因为如果二者一致就说明:用经过A的私钥加密的数字签名和公钥解密数字签名得到的摘要,和B用该条交易信息经过哈希运算得到的摘要是相同的,所以确认该条交易信息来自于A。

假如有一个人叫C,伪造了一条宣称是来自A的交易信息,由于C并没有A的私钥,因此经过这个过程得到的两串摘要不一致的,其他在比特币系统上的用户都会拒绝这条交易记录

当然,假如A想赖掉这笔交易信息,那么这个比特币系统上的所有人都可以用A公开的公钥去生成摘要,来检查这条交易信息是否来自于A,如果两个摘要对比一致,就说明该条交易信息是由A发出的(所有A发给B的消息都是由A的私钥签发的),A无论如何都赖不掉这笔账。

中本聪在第2部分还提出了在网络交易上可能存在的“双重支付”(double-spending)问题。Piper继续举形象的例子来说明这个问题。假如A在网上向B买了一辆车,但在付款后提车前的这个期间,B又把车卖给了C,那么这种行为就称为“双重支付”,即B把同一辆车卖给了两个人,这种行为显然是不合理的。所以,中本聪在该论文中提出了一种防止双重支付的方法——

区块链顾名思义,就是把很多的交易信息分别打包成一个个区块,再串成一条区块链。每个使用区块链的人都必须下载所有在这个系统上的人的所有交易信息,到目前为止,所有的交易信息大小约180GB。

假如A有50个比特币,支付给B 10个比特币,并且把这条交易信息广播出去。那么所有在比特币系统上的人都可以按照串链起来的交易信息区块去回溯,根据A的每一次交易记录检查A的现在的余额是否充足,若余额充足,则所有比特币系统上的人接受这条信息,并记录在自己的账本里。若A在自己仅有50个比特币的前提下,想支付给B 60个比特币(这个情景类似于前面提到的B把车卖给A后,A是这辆车的所有者。实际上B已经没有这辆车了,但还是把车卖给了C),A把这条交易信息广播出去后,比特币系统上的每一个用户接收到这条消息,同样去追溯A的余额,检查到A余额不足后,拒绝这条交易记录,A此次的交易便失效。

3.时间戳服务

如中本聪在该论文中的图所示,时间戳服务(Timestamp Server)就是用来保证区块链上区块先后顺序。我们在超市的商品上也可以看到类似的信息,每个商品在生产出来后,都要由流水线系统印上一个生产日期,而这个产品的生产日期便可以看做是由流水线系统打上的时间戳。当然,比特币时间戳又不同于传统的时间戳,实现细节更加复杂,Piper这里具体解释:

就像中本聪论文在时间戳服务这个部分的插图所示,除了比特币刚开始的那个创世区块以外,每一个区块链上的区块都包含上一个区块哈希值,依此构成一条不断延伸的区块链

我们假设有这么几个区块,区块A、区块B、区块C、区块D、区块E...

按照如下顺序排列构成一条区块链:

区块A->区块B->区块C->区块D->区块E->...假设A是创世区块,就是区块链上的第一个区块

那么B区块的时间戳哈希值便包含了A区块时间戳的哈希值。我们可以知道,由于B区块包含了A区块的时间戳,我们就可以判断B区块在后,A区块在前。同理,C区块的时间戳又包含了A、B区块的时间戳,D区块又包含了A、B、C区块的时间戳...

时间戳服务就如同区块链上的这条链。保证了区块按照顺序连接成区块链。如果我们要根据区块D来找到区块A就可以运用计算机科学上面的递归思想:根据区块D的哈希值找到D的上一个区块,区块C,又根据区块C找到区块B,根据B找到A,最后由于A是第一个创世区块,没有上一个区块,因此这个递归过程结束,找到了区块A。

传统的时间戳服务,如商品包装盒上的生产日期,想改动的话只需要把包装盒上原来的生产日期抹除,再印上一个新的生产日期即可。而比特币的时间戳服务意味着要想篡改某一个区块的内容,就必须把这个区块前面以及后面的区块统统改掉。

而比特币从发布至今,已经过了十几年,并且系统规定每10分钟链接一个新的区块。那条公认的区块链上面的某一个区块可能前后皆连接了数千万甚至上亿个的区块,因此想要改动所要付出的计算量已经庞大到了一个不可能的程度。

所以,比特币的时间戳服务保证了每个区块里面的交易记录无法被篡改。一个区块只要链接到那条公认的区块链上,就可以保证这个区块里面的所有交易记录皆是真实有效无法篡改的。

4.工作量证明

我们在介绍中提到过,区块链可以看成是一种全民记账系统。A转给B 10个比特币,那么参与比特币系统的CDEFG...所有人都需要记录A转发给B的这笔交易记录(后来为了节省储存空间,已经发明出了不需要记录所有交易记录的轻钱包)。

那么,可能有朋友就会疑惑了,为什么我要浪费自己的电脑资源来记录与我无关的记录呢?这是因为,区块链中的每个区块都有三千条左右的交易记录,区块链就是按照时间戳服务把这些区块串成一条长链

我们可以把交易记录写进区块的这种行为称为打包。打包区块成功的用户,系统会奖励12.5个比特币和他打包的交易里的手续费,所有用户参与打包区块,并竞争先把自己打包好的区块链接到公认的区块链上获得比特币的这个过程,就是大家都很熟悉的一个概念——挖矿

因为把自己打包的区块成功链接到公认的区块链上的用户都能获得非常丰富的比特币奖励(今天12.5个比特币60万人民币),谁都想打包,那么,究竟谁可以获得这个打包的资格呢?

比特币系统用了工作量证明(Proof-of-Work)来决定谁可以获得打包区块的资格。

那么什么是工作量证明呢?

Piper再举一个形象的例子:比特币系统要求所有想把自己打包的区块,链接公认的区块链上的用户,都要先做一道数学题,谁先求出这道数学题的解,谁就可以获得这个资格。并且,这道数学题还有个特点:它没有任何解题技巧可以快速地解开它,而是只能让你用最笨的办法,一个数一个数的去尝试求出这道数学题的解。谁算得快,即在相同时间内,尝试的次数越多,谁就越有可能算出这道数学题的答案。

比特币系统是这么规定这道数学题的:

1.所有用户打包好的,未接到区块链上的区块,里面包含一串字符串,该字符串包含以下内容:前块的头部+账单的信息+时间戳+随机数。

2.对字符串做两次SHA256的哈希运算,得到哈希值(我们前面提到过哈希函数,SHA256哈希函数即是计算出的结果是一个长度为256位的二进制数(如:01001011010111...(256位)))

3.比特币系统要求你步骤2的计算前n位必须是0,由于二进制数每个位上只有两种情况:01,因此算对这道数学题的概率是1/2n次方,假如系统规定n=4,那么算对的概率就是1/16

4.由于比特币系统规定每过10分钟,区块链上增加一个新的区块。因此n的大小取决于矿工们的算力,即算力越强,系统设定的n值越大,这道数学题的计算难度越高。直到有人计算出符合系统设定的,前n位为0的256位哈希值,便可以把自己打包好的区块,串链到公认的区块链上。

如上图中本聪在该论文中的插图所示:把自己区块计算出的哈希值,作为下一个区块头部的哈希值,参与比特币挖矿的用户,通过不断随机尝试上图所示的Nonce值(一个系统生成的随机数),来达到符合系统要求的,想接入公认的区块链中的每个区块,其哈希值前n位为0。

在这种机制下,打包区块的用户为了使自己打包好的交易记录区块能够链接公认的区块链上,付出了巨大的工作量,所以这种机制就叫工作量证明(Proof-of-Work)。

随着参与比特币挖矿的矿工越来越多比特币网络总体的计算能力变得越来越强,比特币系统所要求的n值越来越大。到今天,普通计算机要想成功挖出比特币需要耗费上千万甚至上亿年的时间。因此,有人设计出了专门用来挖矿的计算机——矿机,这种矿机不仅体积庞大,运行时噪音高,而且还十分耗电。

上图为比特币矿机

而且挖矿本身就是一种随机碰运气的过程,因此投资矿机可能会出现这种情况,就是你挖比特币的过程中浪费掉的电费、设备费、人工费大于你挖到的比特币的价格。当然,也由于挖矿成本高,物以稀为贵,所以比特币才这么值钱(根据数字货币交易平台“火币网”提供的数据,一枚比特币=43826.82元人民币)。

5.网络

区块链是一种去中心化的网络。Piper在前面多次强调过,如果 A 和 B 发生一笔交易,那么他们需要把这笔交易信息广播所有参与这个系统的用户,并且让他们把这条交易记录也记录到自己的账本里。结合上面所提到的,Piper直接用中本聪论文中的原话来说明这个网络的运行步骤:

1.New transactions are broadcast to all nodes.(新交易向所有节点广播(就像上面提到的,A 和 B 发生一笔交易,那么他们需要把这笔交易信息广播给所有参与这个系统的用户,节点:我们可以把每一台参与比特币系统的计算机称为节点))

2.Each node collects new transactions into a block.(每个节点将新交易收集到一个块中。(就是上文提到的打包过程))

3.Each node works on finding a difficult proof-of-work for its block.(每个节点都在为它的区块寻找困难的工作量证明。(上文提到的“挖矿”过程,计算出符合比特币系统设定的前n位为0的哈希值))

4.When a node finds a proof-of-work, it broadcasts the block to all nodes.(当所有节点找到了工作量证明,就向所有节点广播这个区块(挖矿成功后,做一次广播,让所有人知道你打包成功的这个区块,是接入到公认的区块链上的新区块))

5.Nodes accept the block only if all transactions in it are valid and not already spent.(节点只有在区块内所有的交易都是有效的且之前没有被支付的情况下接收这个区块。(就是说你打包好的区块,区块里面的所有交易记录必须是真实有效的))

6.Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.(节点通过使用这个区块的哈希值作为上一个哈希值在链中创建下一个区块的方式表示对这个区块的接受。(就是说,如果用户通过不断随机尝试Nonce值,成功计算出带有符合系统规定的前n位为0的区块,那么怎么把这个区块链接到区块链上呢?区块链系统给出的做法是:把前一个区块的哈希值,指向你这个区块的头部,同时,把你计算出的哈希值,指向下一个区块的头部,用这种方式来把每一个区块串链成区块链))

那么,如果有多个用户在几乎同一个时间打包,计算出了符合满足系统规定的区块,那么应该由哪一个用户把自己的区块链接到公认的区块链上呢?比特币系统采用的方式是最长链原则(the longest chain)

也就是说,当同时出现多个用户打包出符合系统要求的区块时,那么先暂时不把打包好的区块串链到公认的区块链上,而是让那些用户继续打包新的区块,并把打包好的区块暂时链接到自己的区块上,形成一个自己的支链。当某一个时刻出现一条最长支链时,那个拥有最长支链的用户,就可以把自己的这条最长支链,链接到公认的区块链上。其他用户打包出的,符合系统要求,但是比较短的支链,则会被系统舍弃

为了方便朋友们理解,Piper这里就用自己车祸现场级的绘图技术简单画一下“最长链原则”示意图:

6.激励措施

从上面的挖矿过程我们可以了解到,挖矿需要消耗矿工大量的计算资源。因此比特币系统给了矿工一种激励措施:比特币系统把比特币作为给打包交易记录的矿工的奖励,这个奖励包括两部分:

1.你打包的该区块中的交易记录,某些交易记录需要交易方付出一定比例的比特币作为手续费给打包区块的人。

2.打包区块并且成功接入到公认的区块链后。系统规定,每10钟区块链上加入一个新的区块,并且会给打包交易记录区块,并成功接入区块链的用户比特币作为打包成功的奖励。一开始系统每10分钟奖励50个比特币,为了保证比特币的稀缺性,防止通货膨胀(由于货币数量太多导致货币贬值),每过4年,系统奖励的比特币减半,到今天,系统每10分钟奖励的比特币数量为12.5。依此类推,开采出的比特币总量是有限的,为2100万枚

Piper推送里多次提到过,这条区块链是公认的区块链,根据最长链原则,公认的区块链就是那条最长的区块链(the longest chain),这条区块链上面的每一个区块,里面的交易记录都是真实有效的。假如有一个人想攻击这个系统,那他必须重做之后的全部工作量证明伪造出一条比公认的区块链更长的区块链,但前提是他掌控超过全网51%的算力。换句话说,破坏者要和全世界的人作对。根据比特币系统的激励措施,破坏这个系统所付的代价远远大于破坏这个系统得到的收益

所以,只要是一个智力正常的人,都会按照比特币系统给定的规则老老实实的挖矿,而不会选择去破坏这个系统。

就像中本聪在论文《比特币:一种点对点式的电子现金系统》里面提到的那样:该激励可以帮助鼓励节点保持诚实。如果一个贪婪的攻击者能够集合比所有诚实节点更多的CPU能力,他将不得不选择使用它来窃取他的付款来欺骗人们,或者使用它来生成新的代币。他应该发现,遵守这些规则比从其他任何人那里获得的钱要多得多,这些规则比其他任何人加起来都更有利于他,而不是破坏制度和自己财富的有效性。”(The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

由此可见,比特币系统是一个十分安全的系统。比特币从诞生到现在,已经安全有序地运行了十几年

7.回收磁盘空间

我们已经知道了,区块链的每一个用户都需要记录自己和其它用户的所有交易信息。随着时间的推移,每个用户保存的账本势必会变得越来越大,因此中本聪在论文中提出利用默克尔树(一种存储数据的数据结构,可以节省计算机的存储空间)来实现对一些不必要的交易数据的删减。

如图所示,假设一个区块中有4笔交易(TX0-TX4)。把两笔交易记录Tx0,Tx1通过哈希函数合并并再取哈希值Hash01,保留Tx2的哈希值Hash2,保留交易记录Tx3,保留根哈希值Root Hash。由于很多朋友们非计算机从业者,很难理解这个概念,因此 Piper 直接说明一下中本聪用默克尔树存储交易记录的好处:

1.节省计算机存储交易账本的空间

2.同时也能保证交易信息不被篡改,因为只要改动任何一处交易记录,如Tx0,其存储的根节点的哈希值(Root Hash)都会发生变化。

根据中本聪的理论,每年的比特币账本只会增长1.2GB

默克尔树存储交易数据,可以让老的区块通过剪除树枝的方式被压缩。只有根节点被纳入到区块的哈希值,树枝内部的哈希值不需要被保存

8.简化支付验证

由于在步骤7回收磁盘空间中提出了利用默克尔树这种数据结构来剔除一些不必要的交易信息以节省磁盘空间,那么,如何保证交易中数据的完整性呢?即A的交易数据不能被A和其它用户篡改。

如上图所示,用户只需要复制下最长链的所有区块头信息,然后获取和某一笔支付相关的默克尔树的分叉哈希值。用户无法独自核实一笔交易是否有效,但是可以通过将交易关联到链上来检验,他就可以看其他的网络节点曾经接受过这笔交易,还可以看后续生成的区块也进一步确认全网已经接受了这笔交易。由于Piper上面提到过,区块链中存储的数据将随着时间的推移而越来越大,部分区块链的用户由于设备空间所限不能存储所有的区块链上的交易信息,因此区块链又把节点(node,连接到网络的电子设备)分为全节点、轻节点、SPV节点。

全节点:维持包含全部交易信息的完整区块链的节点。比特币早期,所有的节点都是全节点,包括现在比特币的核心客户端,也是完整的区块链节点。全节点需要占据电子设备很大的存储空间,到今天约180GB。比如许多长期持有比特币的人,都会在电脑里面下载一个比特币钱包Bitcoin Core,这个占据了电脑很大块硬盘空间的比特币钱包,就属于全节点,因为里面用加密的方式存储了所有比特币历史交易记录

轻节点:节点本地只保存与其自身相关的交易数据,轻节点仍需下载每个新区块的全部数据并进行解析,获取并在本地存储与自身相关的交易数据,只是无须在本地保存全部数据。比如一些第三方基于比特币系统开发的轻钱包(轻量级钱包,不下载完整的交易数据

SPV节点:SPV 就是?Simplified?Payment?Verification 的缩写,简化支付验证,下面Piper主要说明一下简化支付验证 :

简化付款验证(Simplified Payment Verification)的目标是验证某个支付是否真实存在,并得到了多少个确认。举个例子:

B收到来自A的一个通知,通知的内容是A支付给了B 10 个比特币,SPV的任务就是验证这个支付是否真实存在。SPV节点只需要保存区块的头部信息

中本聪在论文里建议:为了更加独立的安全性以及更快的支付确认,收款频繁的公司可能仍需运行他们自己的节点(?Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.)

论文中提到的收款频繁的公司,运营的节点也就是Piper上面提到的全节点

9.合并和分割价值

为了让每一个比特币的价值可以得到分割与合并,一笔交易可能需要包含若干输入(in)和最多两个输出(out)

比特币网络所支持的最小值单位聪(Satoshi),是以比特币的创建者中本聪(Satoshi Nakamoto)来命名的。

1个比特币 = 100,000,000 个聪。

为了允许比特币价值被分割和合并,交易可能包含多个输入最多两个输出

比特币的输入构成:一笔较大笔交易的单笔输入或一笔金额较小的多笔输入

比特币的输出构成:一个用于付款(如A付款给B 5个比特币),一个用于找零,退还给支付人(如A付给B 10个比特币,那么就需要找零5个比特币)

这里可能会比较难以理解,因为比特币的记账方式和我们传统的中心化记账方式不同Piper这里分别举支付宝比特币记账方式来说明:

中心化记账方式:传统的中心化记账方式,如支付宝,采用的是“余额记账”。假如A把100块钱存入支付宝,然后用支付宝上面的钱买了一杯豆浆2元,一条油条1元,那么支付宝公司的服务器就会把A在支付宝的余额变为(100-2-1=97(元))。

去中心化记账方式:比特币没有一个中心化的服务器来集中记账,比特币采用的是全民记账,并且在比特币交易上的人,都是通过哈希加密匿名的,只能通过地址交易。矿工的记账只是记录每一个地址的交易信息,而并不计算地址的余额。因为比特币每一个账本上的内容都是相同的,所以比特币的记账过程可以举例为:

A通过挖矿获得了12.5个比特币,并且用了0.1个比特币向B买了部 iphone11pro ,那么A交易信息包含的输入(in)输出(out)分别为:

in:空用户给了A 12.5个比特币(因为12.5个比特币是系统的奖励,不是某个用户给A的,因此可以把付款方看成是一个空用户)。

out:A给了B 0.1 个比特币,A给了A 12.4个比特币(这里相当于A给A自己找零)

比特币钱包只需要根据比特币系统中A的所有交易记录,便可以推算出A的余额

10.隐私

保护隐私是我们网民在互联网上很重要的一部分。我们存储在互联网上的隐私信息被随意泄露也是网络诈骗猖獗经常接到骚扰电话的一个重要原因。

由于没有一个中心化机构来管理用户的个人信息,比特币的隐私保护模式传统互联网企业的隐私保护模式更加强大。

根据中本聪在论文《比特币:一种点对点式的电子现金系统》中给出的插图所示:

传统隐私模型和比特币开创的新型隐私模型是截然不同的。传统隐私模型和比特币隐私模型最本质的区别是——是否有一个第三方的中心化机构来管理用户的个人信息和交易信息

传统的隐私模型非常容易理解。就好比我们去银行办一张卡,那么需要携带我们的身份证到银行登记,银行的服务器便记录了我们身份证上的信息,如姓名、身份证号码、性别、家庭地址。我们在办理银卡时预留的手机号码也被银行的服务器记录在案,银行通过不向外部公开我们的隐私信息来保护我们的隐私,并通过增强自己内部服务器的安全机制来避免我们的隐私信息不被黑客盗取。

但我们可以发现,传统的隐私模型本质上还是基于信任模型,我们在办卡时之所以放心把自己的身份证信息透露给银行,是因为我们对银行有着绝对的信任。而我们之所以经常收到骚扰电话,也便是由于我们在某些中心化机构存储的手机号码信息,由于各种有意或无意的原因,从这些中心化机构泄露到外界

由于比特币是一种分布式的全民记账系统,每个用户都必须把自己的交易信息广播出去。显然,这意味着传统的隐私模型已经无法生效了。因此,比特币采用新型的隐私模型:

比特币系统有一套十分强大的保密机制——公钥私钥。这样一来就可以保证比特币系统上的其它用户仅仅只是知道,有某个人将一定数量的比特币发送给了另外一个人,但是无法知道某个人具体指的是哪一个人

假如现实生活中有一个人叫王小明,他在转账10个比特币给同样是现实中的一个人李小红时。李小红只需要把自己的地址(这里的地址并不代表真实的物理地址,只是一个由字母、数字随机组成的字符串,如:

3Bc6ZXXsiipFJDyuPnSGiypfk24JGYKJv)发送给王小明,并且也可以公开出去。王小明把自己的公钥和地址一起发送给李小红,王小明的公钥和地址同样也是可以公开的。所以大家知道的交易信息也仅仅是类似“A转账给了B 10个比特币”,并不知道A和B具体是谁

但同时,大家又可以通过用A的公钥进行校验,知道这笔交易的确是由A的公钥的持有者——A发出的,而不是其他人伪造的。

比特币系统保证了所有的交易记录都是公开匿名的。

11.计算

中本聪在这一部分主要详细阐述了比特币的安全性。说明比特币系统几乎无法被黑客或者恶意节点破坏

Piper在上文已经详细解释了最长链(the longest chain)原则。根据最长链原则,一个黑客如果想伪造区块链系统里面的交易记录,则必需伪造出一条比公认的区块链更长的链出来。由于超级庞大的算力要求,这基本是不可能做到的,即便是世界上运算速度最快的超级计算机(目前世界上速度最快的超级计算机是美国的“顶峰”超级计算机(Summit Supercomputer))也没有办法做到。(当然,现在比特币系统也面临着量子计算机的威胁)。

中本聪在计算(Calculations)这一部分,利用数学模型,模拟了攻击者想要造出另外一条更长的区块链,替代诚实链概率Piper在上文多次强调过,比特币系统里面的交易区块是要链接到公认的区块链上的,这里的诚实链就是指公认的区块链

中本聪在论文中用如下的数学公式来计算这个概率:

中本聪在论文中贴了计算这个公式的C语言代码,由于中本聪的代码并没有写任何注释,较难理解。Piper这里用自己较为熟悉的Java代码模拟出这个数学公式的计算过程:

我们来看一下,这段代码的部分执行结果:

由此可见,当攻击者落后公认的区块链(诚实链),也就是那条最长的区块链越多区块时,攻击者攻击成功的概率将会呈指数级下降。就算攻击者仅仅落后最长的区块链50个区块,那么他攻击成功的概率也仅约为200万分之一。况且比特币系统至今已经安全有序地运行了十几年,如今要成功攻击这个系统也仅仅是理论上能做到的极小概率的事情,现实世界中基本不可能发生。

12.结论

结论比较容易理解,只是中本聪对论文中提到的比特币系统进行总结。Piper这里直接翻译中本聪结论(Conclusion)部分的原文:

我们已经提出了一种不依赖信任电子交易系统。我们从通用的数字签名货币体系开始, 这体系提供了强有力的所有权控制,但由于缺乏防止双重支付的方法而不完善。为解决这个问题,我们提出一种使用工作量证明来记录公共交易历史的点对点网络,只要诚实节点控制了多数的 CPU 算力,对于对攻击者,交易历史将很快变得在计算上不可更改网络因其结构简洁性而健壮。节点只需很少的协调就能同时工作。它们不需要被认证,因为信息不会被发送到某个特殊的位置,只需被尽力传播。节点可以随时离开重新加入网络, 只需接受最长的工作量证明链作为它们离开时发生事件的证据。节点使用CPU 算力来投票,通过致力于延长有效区块来表达对其接受,通过拒绝在无效区块上工作来表达对其抵 制。任何需要的规则激励都可通过这个共识机制来加强。

Piper 个人看法

如果能看到这里的朋友,Piper在这里感谢你们的耐心观看!Piper想在这期推送表达一下对区块链技术的个人看法,和对未来的展望

Piper这里重点强调一下:区块链和基于区块链技术的加密货币的一个特点:

所有基于区块链的加密货币,本质上都是让人免费挖矿的。区块链的发明者中本聪约有30万个比特币(约合人民币144亿),也并非中本聪在他发明的系统上有什么特权,而是中本聪和其它所有的用户一样,也是在这个规则合理挖矿。

中本聪作为区块链创始人的同时,也仅仅只是区块链系统上的一个普通用户,只不过他最早参与这个项目,根据比特币算法的规则,在早期很容易就能挖掘到数量庞大的比特币。

Piper在上期推送中提到过,曾经在比特币价格很低的时候,有一位美国的程序员用10000枚比特币买了两张披萨优惠券。那些用矿机挖掘比特币的人,他们付出的成本也只是在开采比特币的机器购置费、维护费、电费上。比特币被称为数字黄金,因为比特币就像黄金一样,既稀有,又有很多人认可它的价值。

就好比世界上有一个不属于任何一个机构,又人人皆可去开采的金矿,有的人可以用手或者锄头去挖,而有的人为了更多更快地挖到黄金,特意买了一台挖掘机去进行挖矿,但是挖黄金本身是免费的,那些费用不过是花在开采黄金的机器上,和维持这些机器正常运行的维护费电费上。

因此,任何发行的需要收费的数字加密货币,都摆脱不了割韭菜和诈骗的嫌疑,毕竟技术的发展是一把双刃剑,很多完全没有价值基础的“空气币”,却借助于区块链给它搭建的通证信任平台,在全球流通,并骗取了很多人。我们可以把比特币当成是一种投资理财工具,通过它实现财富的健康增长,但是不能把比特币当成是一种投机手段。

Piper相信,区块链不仅仅只是一项技术,还是一种新的思维方式。曾经有人用一句很形象的话描绘了区块链系统——在这个系统上,每个人都是完全平等的,都很自私,都想在上面谋取自己最大的利益,但是这个系统却有效有序地运行了十几年

我们可以幻想出这么一个社会。这个社会上有善良正直的人,同时也有许多邪恶自私的人,这个社会没有一个中心化的监管机构去阻止里面的人作恶。

但是由于这个社会的规则制度足够完美,无论是善良的人,还是邪恶的人,都无法逾越这个社会的规则,都只能按照这个规则来谋取自己的利益。

而且在这个规则下,邪恶的人无法损害到善良的人的利益。同样,就算当善良的人变得邪恶,他也没办法损害到其它善良或者邪恶的人的利益,要获取利益的唯一手段只能是按照这个社会制定的规则去获得利益。

而且最重要的一点是,就算当邪恶的人邪恶到想建立一个新的规则来推翻这个社会原有的规则,那么他所付出的代价和成本将十分巨大,并且得到的利益也远远不如遵守这个规则得到的利益多,两相权衡之下,邪恶的人往往会选择和这个社会中的所有人一样,遵守这个社会的规则来谋取利益。那么,这个社会将会是十分公平的。

区块链与未来

全球著名的经济学家、商业策略大师,被称为"数字经济学之父"唐·塔普斯科特在他的专著《区块链革命》中提出一个重要观点:

不是机器人,不是大数据,甚至不是人工智能,而是区块链将引发人类第四次工业革命,并重新定义互联网甚至人类社会。

在上世纪90年代,互联网刚出现的时候,互联网仅仅是属于少数人的高级玩具,普通人完全不了解互联网是什么,有什么作用。然而,现在互联网已经是"旧时王谢堂前燕,飞入寻常百姓家"。

在如今的移动互联网时代,人们的生活几乎完全离不开互联网。世界著名的投资银行摩根士丹利(Morgan Stanley)首席经济学家也说过——我们要像九十年代重视互联网一样重视区块链。

区块链技术,这项目前来说还属于相对较少数人了解的技术,势必在未来占据十分重要的地位,推动人类社会的进步。

感谢各位的耐心观看,那么Piper今天这期最硬核区块链科普推送就到这里啦,欢迎扫码关注Piper的微信公众号XPiedPiperX,获取更多有趣的内容。

长按上图的二维码

关注 XPiedPiperX

获取更多硬核内容

—-

编译者/作者:流愚

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...