购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

(三)区块链:设计精妙的伟大发明

1.解决了拜占庭将军问题

区块链解决了闻名已久的拜占庭将军问题(Byzantine failures)。拜占庭将军问题又称两军问题,是由著名计算机科学家莱斯利·兰伯特(Leslie Lamport)在1982年提出的 。他是计算机界的一位泰斗,是美国国家科学院和国家工程院院士、微软研究院首席研究员、2013年图灵奖获得者,他的分布式计算理论奠定了计算机学科的基础。他用拜占庭将军问题来说明点对点通信(P2P)中的基本问题。

故事是这样的,在东罗马帝国时期,几个围攻城堡的联盟将军,只能靠信使来传递信息。将军们思考的问题是:如何防止被其中的叛徒欺骗、迷惑从而做出错误的决策?数学家替他们设计了一套算法,让将军们在接到上一位将军的信息之后,加上自己的签名再转给除发给自己信息之外的其他将军,在这样的信息连环周转中,让将军们得以在不找出叛徒的情况下达成共识,从而能保证得到的信息和做出的决策是正确的。

区块链正是基于这一算法进行设计的。它构建在点对点通信网络(P2P)上,用非对称加密算法和时间戳实现了将军们的“签名转发”机制,保证了区块链无须信任单个节点、却能创建共识网络。区块链不关心参与者是不是叛徒,每个参与者无须了解其他人的背景资料,也不需要借助第三方机构来担保或保证,但区块链技术保障了最后的共识结果是可信的。因此,区块链是用纯数学方法来建立各方的信任关系,交易各方信任关系的建立完全不需要借助第三方,建立信任关系的成本几乎降到了零。这也正是区块链的精髓所在!

2.点对点通信网络(P2P)是基础

P2P(Peer to Peer)网络是整个区块链的基础计算架构。P2P网络,或者称为对等网络,是一种常用的计算机通信架构。与我们所熟知的客户端-服务器(C/S)网络架构不同,在P2P网络环境中,成千上万台彼此连接的计算机都处于对等的地位,各个计算机节点直接相连,节点可以自由进入和退出,整个网络一般不依赖专用的集中服务器,如图1-4所示。大家熟悉的网络电影下载工具VeryCd(电驴),就是一个基于P2P网络的互联网服务。P2P网络保障了区块链是一个分布式系统,没有中心枢纽,即所谓“去中心化系统”。

图1-5是用可视化方法显示的某一个时间点全球的矿工节点的分布(即区块链副本分布)情况。每个亮点都是比特币系统中的终端,每个终端都保持一个账本(副本)。

图1-4 点对点网络拓扑

图1-5 比特币系统中的区块链副本

3.区块链是一个“资产账本”

从这一节开始,我们要去探索一下区块链的技术原理。我会尽量把它解释得通俗易懂,但总会涉及很多生僻、技术化的概念。只有设法了解它们,才能真正体会到区块链的本质。

区块链是由“区块+链”构成的,理解区块链,首先要明白什么是区块。

区块(Block)。 在区块链中,交易记录数据被以电子化的形式永久储存下来,存放这些交易记录数据的数据存储单元,称为“区块(Block)”。区块是按照时间顺序排列的,每隔一定时间生成一个,每个区块中记录了它在被创建期间发生的所有交易活动。

区块结构(Block Structure)。 每一种区块链的区块结构设计可能不完全相同,但一般区块的结构都包含区块头(Header)和区块体(Body)两部分。一个区块的区块头包含了关于区块的关键信息,最为重要的一个信息是上一个区块的哈希值(Hash,也称散列值),用于和上一个区块链接起来,它是区块形成“链”的关键。区块头还记录了区块高度(就是区块顺序编号)、本区块的生成时间(时间戳)、本区块中的交易数量、本区块的总交易金额、本区块大小等相关信息,区块头能为整个区块链数据库提供完整性的保证。一个区块的区块体则记录了经过验证的、区块创建过程中所发生的所有交易的记录。

区块结构有两个非常重要的特点。第一,每个区块上的交易记录是上一个区块形成之后、该区块被创建前发生的所有交易活动,这个特点保证了数据库的完整性。第二,在绝大多数情况下,一旦新区块完成并被加入区块链的尾部,则这个区块的数据记录就再也不能被改变或删除。这个特点保证了数据库的严谨性,即数据无法被篡改。

为了更直观地了解区块结构,我们不妨再进一步,到计算机里面去看看区块的“原形”。让我们去实际打开区块链的文件,看看它的内容。每个比特币“矿工”都会下载安装一个比特币客户端软件(也称为比特币钱包),然后会在用户的计算机上生成整个比特币区块链的数据库文件。如图1-6 所示,这是一个网友的比特币区块链文件夹的截图,其中blocks子目录就是存放区块链数据的文件夹。我们打开blocks文件夹,便可以看到很多名为blkXXX.dat的文件,这些文件中保存了区块链数据。

图1-6 某用户计算机上的区块文件目录

用一些专用的区块链浏览器可以浏览该区块的内容,还原出区块链的结构。例如,第409394个区块大致记录了如表1-2所示的数据。

表1-2 区块的结构

区块体的交易结构。 以比特币区块链为例,这是一个分布式账本系统,按照复式记账方法记录了所有的交易数据,每一笔借贷交易都记录了下来。区块体的交易结构如表1-3所示。

表1-3 区块体的交易结构

交易结构中记录了交易时间、引用交易的哈希值、交易记录索引编号、比特币支出地址、支出数量、比特币收入地址、收入数量、本次交易的数字签名、交易数据量大小、比特币协议的版本号等细节。

区块链 就是把区块按照时间顺序连接在一起的链条。区块链数据库就是以这种方式形成的数据库,所以它是系统内所有节点共享的分布式数据库,网内每一个节点都拥有区块链的完整备份数据。用户每一次打开区块链的客户端软件,都会同步更新区块链数据库。

区块链的分布式架构如图1-7所示。

4.密码学的新成就来保证真实、一致和安全

区块按照时间顺序链接形成了区块链。为了保障区块数据的一致性、完整性和安全性,下面看看它是如何进行加密和数字签名的。比特币区块链的设计者——中本聪——采用密码学的方式进行加密和数字签名。这里采用了两个著名的密码学算法,一个是 SHA-256哈希算法(或散列算法),另外一个是非对称加密算法。

图1-7 区块链的分布式架构

什么是SHA-256哈希算法?SHA是安全哈希算法(Secure Hash Algorithm)的英文缩写,SHA 是美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)发布的一系列密码哈希函数。哈希算法将任意长度的一串数据转化为一个长度较短、位数固定的输出值,即哈希值(Hash),简单地理解,通过这样的哈希算法“明文”就变成了一个“代码”。SHA-256是SHA算法的一种,它把一串数据转化成为0~2 256 位之间的一个哈希值。它具有如下特点:

首先,每个哈希值是唯一的。

第二,SHA-256生成的哈希值具有不可逆性,也就是不能从哈希值直接解码出之前的原始数据。

第三,SHA-256哈希算法能够保证相同的数据产生相同的哈希值,不同的数据产生不同的哈希值,哪怕只是一个标点符号的不同,哈希值也是不同的。

所以,一串数据的哈希值就可以用于检验数据的完整性。只要数据被改动了,哪怕是一点点蛛丝马迹,经过 SHA-256哈希算法都能够辨识出来。SHA-256哈希算法一般被用于快速查找和加密。这样一种机制保证了区块链的完整性和不可篡改性,任何企图篡改区块链的行为,都会立即暴露,因为新的哈希值与旧的哈希值是不匹配的,如图1-8所示。

图1-8 区块链的降维+哈希

什么是非对称加密算法?简单来说,就是在“加密”和“解密”的过程中,分别使用一个“密钥对”中的两个密钥,如果两个密钥满足以下两个条件:(1)对信息用其中一个密钥加密后,只有用另一个密钥才能解开;(2)其中一个密钥公开后,根据公开的密钥别人也无法算出另一个,那么我们就称这个密钥对为非对称密钥对,公开的密钥称为公钥,不公开的密钥称为私钥。公钥是全网公开可见的,所有人都可以用自己的公钥来加密一段信息,生成一个哈希值,保证信息的真实性、完整性;私钥是只有信息拥有者才知道的,被公钥加密过的信息只有拥有相应私钥的人才能够解密,保证信息的安全性。常见的非对称加密算法包括 RSA、Elgamal、D-H、ECC(椭圆曲线加密算法)、DSA 等,比特币区块链是基于椭圆曲线数字签名算法(ECDSA)来实现的,关于ECDSA算法的细节,不再赘述,技术大拿们去查阅相关资料吧。

简单地说,假设有三个交易单,分别为代表用户0给用户1支付比特币的“交易单一”,用户1给用户2支付比特币的“交易单二”,用户2给用户3支付比特币的“交易单三”,如图1-9所示

以“交易单二”为例,“交易单二”的签名过程是付款人(用户1)来完成的,用已经公开的收款人(用户2)的公钥加密上一交易单数据,算出哈希值x,付款人(用户1)用付款人私钥对x进行加密,得到付款人(用户1)的签名,将付款人签名附加在交易单中,发给收款人(用户2)。

图1-9 交易的非对称加密

“交易单二”的验证过程是收款人(用户2)来完成的,用公开的付款人(用户1)的公钥来解密用户1的私钥,进一步解密付款人(用户1)的签名,得到哈希值。收款人(用户2)利用自己的公钥和上一交易单的数据,也得到另一个散列值y。如果x=y,交易单有效。

分析起来似乎很复杂,但这样的机制保障了交易单的完整性、一致性、安全性和不可篡改性。

5.让区块有序链接起来

1)区块哈希

区块链是按照时间顺序首尾连在一起的,简单地说,交易数据经过加密后形成区块的哈希值,这个哈希值将成为下一个区块的重要标记,表明“我是你的父亲”。这个哈希值会向全网广播出去。每个区块会也被标记一个时间,称为“时间戳”。时间戳表示这些交易数据是这个时间点写入的,证明了这些交易数据的存在,也表明“我出生的时间”。

每一个新生区块的区块头都包含了前一个区块的哈希值,这就使得从创世块(第一个区块)到当前区块连接在一起,形成了一条长链,如图1-10所示。

图1-10 区块链的结构图

时间戳技术让区块链记录了被记录对象的完整历史。从第一个区块开始,到最新产生的区块,区块链上存储了全部历史数据,而且区块链还在不断繁殖着。到2016年4月28日晚8点,比特币区块链上共有409,270个区块了。

2)交易的哈希

每个交易会被一个称为默克尔树(Merkle)的数据结构来进行哈希值计算和存储,但只有根哈希值被记录在区块的哈希值中。

每笔交易都要做一个 Merkle 哈希,每个哈希值被记录在一个Merkle哈希树上。在一笔比特币被支出后,相应Merkle节点值也会发生变化。如图1-11所示 ,Tx0、Tx1、Tx2交易变化后,就从区块的Merkle树中“修剪”。

图1-11 交易哈希的默克尔树

比特币的默克尔树结构支持一个叫“简化支付验证(SPV)”的协议,通过该协议,一个没有下载完整区块链的客户端,也能够通过向其他节点索要包括从交易哈希沿默克尔树上溯至区链头处的根哈希的哈希序列,以此来快速确认交易输出的正确性。

对于默克尔树的任何部分进行改变的尝试都会最终导致链上某处的不一致。记录的交易是不可篡改的。

6.共识才是源源不断的动力

共识机制就是对区块链的记账权进行集体验证的机制。共识机制有几种,主要是工作量证明机制和股权证明机制,通过工作量或者股权的证明,人们能够对记账优先权达成共识。工作量证明机制,就是所谓的挖矿机制,谁算力强,谁就有优先记账权。股权证明机制是通过持币数量和持币时间来形成股权,谁持有的股权多,谁挖矿的难度就小,谁就更优先获得记账权。

1)工作量证明

工作量证明(Proof Of Work,简称POW),是区块链中最难懂的一个部分。简单地说,POW 就是一份工作量的证书,它能够说明你为此工作了一定量的时间。比方说,大学四年学习,你拿到了毕业证书,证明你确实认认真真学习了四年,这就是一个工作量证明。

工作量证明的简单原理是,一方(通常称为证明人)出示计算结果,这个结果众所周知是很难计算的。但验证计算结果很容易,通过验证这个结果,任何人都能够确认:证明人确实执行了一定量的计算工作量来产生这个结果。

POW可以用很多工具来做。但第一个POW工具是Adam Back在1996年开发的“哈希现金(Hashcash)”程序 ,没错,Adam也是发明侧链的大师。中本聪正是受哈希现金程序的启发,设计了区块链的工作量证明机制。

哈希现金程序最早被用于反垃圾邮件。它的原理是这样的,邮件的发件人在邮件头要附加一个随机数,每次对随机数进行SHA算法加密,产生一个哈希值,如果这个哈希值与要破解的难题中的哈希值匹配,前面若干个字节都是0(比如20个),那么就算求解了这道难题,找到了随机数——“一个中奖号码”,就荣幸地领到了工作量证书,于是发送包含随机数的邮件信息给收件人。收件人收到信息以后,也对这个由发件人发现的随机数进行哈希计算,验证后发现前20个字节确实是0,于是相信发件人不是一个垃圾制造者,他发的是一个正常的邮件。在这个案例中,工作量大概是,发件人平均需要经过2 20 个随机数搜索后,大概可以找到一个前20位字节是0的哈希值。因为前20个字节,每一字节是0的概率都是1/2,所以总的概率就是1/2 20 。可想而知,这是多么复杂的一个计算!

比特币区块的生成过程中也使用了哈希现金程序,比特币区块链采矿工作的方式,要求使用者(即矿工)拼全力找到一个“随机数”,称为Nonce,使得其SHA-256(信息+随机数)算法产生的哈希值以一串零开头,并和上一个区块的哈希值前面的0的数量刚好匹配,然后把找到的随机数与信息一起发送出去,作为其工作量证明。

下面看看它是如何工作的。SHA-256算法也被称为单向函数,即其结果很难计算得出,但却很容易被验证。如果想把这个结果反向计算出来,需要尝试遍历每个输入的随机数,直到某个随机数与之匹配为止。所谓遍历就是一个个地试,就好像我们不知道别人的密码,但知道这是一个两位数,就把两位数的各种组合试个遍,最终总能试出来。

下面是一个区块的哈希值:

“0000000000000000052d657768acaedd6ce0f21bb73b4189ec439fde bf1f536e”

前面有一串0,0的个数决定了区块难度系数。0越多,算力攻击的概率难度呈指数上升。因为,找出以“0”打头的 SHA-256的输入值平均需要尝试16次,“00”打头的平均需要尝试256次,依此类推。上面这个区块,17个0,平均需要尝试2 68 次才能找到一个随机数。

工作量证明如此之难,是为了阻止攻击者轻易伪装成数以百万计的节点,凌驾于比特币网络之上,引入另一个区块链,并推翻之前的交易,引入新的交易。要达到这样的目的,任何想要攻击比特币网络的人,都必须完成极其巨量的 SHA-256运算,这样做的成本根本不划算。

要得到匹配的区块哈希值,需要经过大量尝试性的计算,计算时间取决于矿机的哈希运算速度。当某个计算节点提供出一个匹配的区块哈希值,说明该节点确实经过了大量的尝试性计算。这个计算次数就是工作量。当然,并不能得出计算次数的绝对值,因为寻找合理哈希值是一个概率事件。当节点拥有全网 n%的算力时,该节点即有n/100的概率找到区块哈希值。

但是,这也产生了很严重的一个问题:工作量证明是相当浪费资源的。比特币网络每秒进行600千亿次运算,最终这些运算并没有任何实际或科学用途。其唯一目的在于解决工作量证明问题。当然,在没有其他选择的情况下,这种工作量证明的浪费对于获得全球数字货币流通,代价可能并不算大。在2009年,工作量证明确实是唯一也是最合适的选择。

POW 确保只有合法的区块才能加进来。一旦一个基于哈希算力的POW的难题被求解了,矿工获得记账权,区块经过验证后链接到区块链中,就会永久地存储起来,任何人或机器都无法修改。而每个区块的合法性验证包括了对其中的所有交易的合法性检验和区块之间数据关联性规则的检验。只有第一个完成这个难题的矿工节点才能把新的区块加入区块链中。区块链网络为每次成功加入新区块的矿工节点奖励一定数量的代币,作为支付其哈希算力的报酬。新的区块被加入后,拥有完整数据的全节点立即向网络中的其他节点通知更新本地的数据库。区块链就这样按照时间顺序和交易持续增加。

在POW机制下,中本聪也预料到了矿工们可能合伙勾结和欺诈,发起所谓的“51%攻击”。理论上,当攻击者拥有了超过全球51%的比特币算力时,他将能伪造比特币网络的任何数据,这就是51%攻击。然而,中本聪通过POW机制,引入了一种成本透明的机制。欺诈的成本是可以预见的,非常巨大!当做坏事的成本是最昂贵和最直接的时候,POW 机制催生的分布式账本和无须信任的环境就产生了,它具有根本上的创新性和变革性!从这个意义上看,与POW的共识机制相比,还没有其他任何机制比它更安全。不支持POW的人说它“太耗能”,但天下没有免费的午餐,为了历史记录的不变性,人们不得不牺牲某些能量和成本。至少它对所有人是公平的,对它振振有词的人根本找不到更经济的或者“不劳而获”的方式来获得POW。

但毕竟人们还是需要替代性的方案,股权证明就是一个选择。

2)股权证明(Proof of Stock)

股权证明(Proof of Stock,简称POS)要求证明人提供一定数量的加密货币的股权。POS 所蕴含的理念与股份制公司的原理是一样的,谁拥有股份,谁就在达成共识中具有更多“发言权”,获得记账的概率就更大。为了免除工作量竞争记账的高耗能,在POS机制中,记账权随机地在全网产生,获得记账权的概率和每个矿工钱包中的代币持有量成正比。

POS最早在点点币(PPC)中被采用。根据矿工持有的数字货币的数量和时间,可以分配利息。在 POS 机制下,有一个专业术语,叫币龄,每个币每天产生1币龄,如果参与者持有100个币,总共持有了30天,那他的币龄就是3000。每具有365币龄,将会从区块中获得0.01个币的利息,实际上可理解为年利率1%。如果矿工获得记账权,创造了一个POS区块,他的相应的币龄就会被清空为0,这位矿工获得了利息0.08个币(3000 ´ 0.01/365)。当你获得了利息以后,你的所有币龄将被清空,你的持币时间将从0开始重新算起,这样,再过若干天,你才能再次获得利息。同样,一次比特币的交易后,相应比特币的币龄也会清零。

与 POW 机制不同,在 POS 机制中,币龄就代表着算力。POS的 SHA-256哈希运算基于如下打包的数据:交易输入数据、其他固定数值数据、时间戳数据。哈希运算的难度是与交易输入的“币龄”成反比的。虽然这种矿机的算力会随着时间直接增长,但每次发现一个新区块,其算力就会归零。

POS的设计理念,旨在解决比特币POW机制持续发展所存在的一些“缺陷”,原因有三

一是 POS 利息机制提高了矿工参与挖矿的积极性。比特币的区块产量每4年会减半,在不久的未来,随着比特币区块产量越来越低,难度越来越大,大家挖矿的动力将会不断下降,矿工的人数就会越来越少,整个比特币网络就有可能会逐渐陷入瘫痪。如果很多矿工都减少了上线运行比特币客户端的时间,就越来越难找到一个P2P节点去连接和同步网络数据。但在 POS 的设计中,矿工只有打开钱包(客户端程序),才能创建POS区块,也才会获得利息,这就促使很多不想挖矿的人,也会常常打开自己的钱包,这从某种程度上保证了P2P货币网络的健壮性。

二是POS机制旨在增加51%攻击的难度。在比特币发展若干年后,随着矿工人数的下降,比特币很有可能被一些高算力的人(或团队、或矿池)进行51%攻击,导致整个比特币网络崩溃。在POS的设计中,即使攻击者拥有了全球51%的算力,也未必能够进行51%攻击,因为,有一部分货币并不是挖矿产生的,而是由利息产生的(利息存放在POS区块中),这要求攻击者还需要持有全球超过51%的货币量,这进一步提高了51%攻击的难度。

三是 POS 机制有防范通货膨胀和通货紧缩的能力。比特币是一个永远不会通货膨胀的体系,因为它的货币总量是固定的。但是,比特币其实是一个通货紧缩的体系。因为,当矿工重新安装了系统,或者忘记了钱包密钥,矿工可能永远无法再拿回钱包里的钱。这意味着,每年都会有一些比特币随着钱包的丢失而永远被锁定,形成了实质上的通货紧缩。在POS的设计中,POS提供一定的年利率,尽可能保证既不通货膨胀,也不通货紧缩。

因此,POS机制是在POW基础上产生的一个新机制,有着非常长远的见解和先进的理念。

3)POW和POS的经济学比较

比较一下POW和POS。

首先,POW比拼的是矿机算力,对劳苦大众公平;POS比拼的是币龄算力,对财富拥有者公平。在POW挖矿中,决定谁更能挖到矿的是矿机的运算速度,而在POS中则不同。POS挖矿并不需要你去购买额外的挖矿设备,也不会占用大量的计算资源。在 POS 中,决定谁更可能挖到币的是“币的数量”和“币龄”。币数越多的,币龄越长的,就越有可能挖到矿。

其次,挖出的矿的数量不同。在POW中,一个区块产生的币和你现在所持有币的数量无关,4年内就是固定的25个比特币。但在POS中,你用来挖矿的币越多,你这些币的币龄越长,你挖到的币也就越多。

第三,看看POW和POS背后的经济学意义。POW的规则,因为加入了大量成本,劳动最光荣,有利于“无产阶级”。POS 币的规则,因为没有成本的问题,马太效应明显,富者愈富,有利于“资产阶级”。POS币的利息越高,那么该币将会产生的不公平性就会越高,剩余价值都被“资产阶级”剥夺了。

关于POW和POS孰优孰劣的争论,在数字货币社区从未停歇过。POS支持者攻击POW挖矿太浪费资源,是不可持续的;而POW支持者则反唇相讥,认为 POS 机制的代币分配不公平,会导致富者愈富问题的发生。区块链专家说,POW更适合前期发展,而 POS会更适合后期维护。值得一提的是,当前,以太坊所使用的同样是 POW机制,但创始人Vitalik透露,以太坊区块链在到达某个区块的时候,其区块链的共识机制将可能通过硬分叉(Hard Fork),从POW切换至POS,以省去挖矿所需的电力,并减少区块的间隔时间。而在点点币PPC中既支持POW模式的挖矿收入,也提供了POS模式下的利息收入,当时点点币给货币设定了1%的年利率,并取得了很好的市场反响,很多用户大量囤积点点币来获取利息。也许,就是这样一种共生共存的机制才是最适合的。

4)股权代表证明机制(DPOS)

在比特币挖矿中,当前存在着一种现象,即由几大矿池控制着全网多数的算力,以国内的蚁池、鱼池、国池为例,三者相加的总算力约225PH,占据全网算力约50%。对此,包括以太坊、Bitshares在内的多个区块链2.0项目的创始人均认为,比特币挖矿已经出现了中心化的问题,新的垄断出现了

Bitshares提出了股权代表证明机制(Delegate Proof of Stock),相当于股东代表大会,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表,我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像代表大会制度,如果代表不能履行他们的职责——当轮到他们时,没能生成区块,他们会被除名,网络会选出新的超级节点来取代他们。

本质上,POS和DPOS又回到了信任机制,我们做了一个信任假设,相信有利益的人或者他们的代表能够记好账。这可能与区块链的理想——去信任相悖,但又是现实的权衡。

表1-4对不同共识机制进行了比较

7.开放源码的自治系统

虽然区块链的物理设施都属于不同的节点,但在这些物理设施上运行的不是私有的程序,而是按照共同的规范和协议编写的软件。区块链是开放源代码的,区块链的每一次版本升级都需要开源社区的审核,任何恶意的修改都是可以预防的。

当这些程序运行在足够多的网络节点上的时候,没有一个经济实体能够控制和拥有区块链。由于采用基于协商一致的规范和协议,区块链就形成了“自治”的系统:交易验证、哈希算力及网络运行的管理服务等都是自治的,不需要任何人为的干预。当然,为了维持这个“自治”系统的生存,必须对那些提供物理设施、电力开支的经济实体支付相应报酬。支付报酬的来源自然就从区块链提供的服务中提取,这也解释了为什么每个区块链系统都有自己的“代币”,作为系统运转的“燃料”或“血液”。

表1-4 共识机制比较

8.区块链持续衍生

1)运行原理

现在,让我们看看比特币区块链是如何运行的,如图1-12所示

图1-12 比特币区块的运行原理

第一步:新的交易广播给P2P网络上的所有节点。

第二步:每个节点把收到的一个时间段内所有新的交易信息打包,做哈希运算,盖上时间戳,记入区块(Block),一般是每10分钟挖出一个区块。

第三步:为了给它的区块竞争记账权,每个节点努力工作以提交工作量证明,也就是解SHA-256难题。

第四步:如果一个矿工节点解开了这10分钟的SHA-256难题,就找到了工作量证明,赢得这个区块的记账权,他将向全网所有节点广播这个区块,包括所有交易信息,并由全网其他矿工节点验证。

第五步:如果区块中所有交易是有效的,节点接受这个区块。它被链接到区块链的尾部。一般来说,每一笔交易,必须经过6次区块确认,也就是6个10分钟记账,才能最终在区块链上被承认是合法交易。每个比特币区块前4年每个奖励50个比特币。4年后每个区块奖励25个比特币。

第六步,所有节点转向创造下一个区块,也表示大家都接受了当前这个区块。被接受区块的哈希值,将作为父区块的哈希值记录在下一个区块的区块头中。

2)矿工的计算节点

在比特币区块链的计算节点中,主要包括如下一些程序:

(1)区块链的系统守护进程(Block Chain Daemon):Daemon 是一种持续运行的程序,用于处理服务需求。区块链的 Daemon 驻存于网络中区块链节点的计算机中。

(2)网络路由程序(Routing node):每个区块链网络中的节点都嵌入有一个专门负责接入网络、连接管理的系统。

(3)接口应用:区块链是底层架构,它提供给上层应用的接口有多种。最常用的是应用客户端、浏览器或者API,它们建立了用户与区块链之间的应用接口。客户端是矿工采矿的软件工具。

(4)区块链数据库:每个区块链节点的计算机中保存了全部或者部分区块数据。

3)挖矿算力的集中

比特币每10分钟产生一个区块,会有千万人竞争,而这个区块最终只归1个人所有,其他人都颗粒无收。你也许要挖5年才能获得一个区块。

于是矿工自发集结起来,建立矿池,组队一起来挖矿。矿池是一个矿组队挖矿的服务器,一旦队伍里任何人获得了一个区块,就将区块中的货币按大家的性能分给大家,这样大家就能很快地获得比特币。组队的协议有两种:合伙制PPLNS和打工制PPS

PPLNS全称Pay Per Last N Shares,意思是说“根据过去的N个股份来支付收益”,这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来分配区块中的货币。举个例子:假设Alice、Bob、Carol三个人在同一个PPLNS矿池中挖矿,在过去的一段时间里,Alice贡献了10个股份,Bob贡献了3个,Carol贡献了12个,加起来是25个股份,这时矿池发现了一个区块,区块中含有25个比特币,那么,Alice就会分到10/25个区块的奖励,也就是10个比特币,而Bob获得3个,Carol获得12个。在PPLNS模式下,运气成分非常重要,如果矿池一天能够发现很多个区块,那么大家的分红也会非常多,如果矿池一天下来都没有能够发现区块,那么大家也就没有任何收益。

PPS全称为Pay Per Share。为了解决PPLNS那种有时候收益很高、有时候没有收益的情况,PPS采用了新的算法。PPS根据你的算力在矿池中的占比,并估算矿池每天可以获得的矿产,给你每天基本固定的收益。再举个例子:假设你的算力是100MH,而整个矿池的算力是10000MH,那么你就占据了矿池算力的1%,然后,假设矿池根据当前的难度和全球总算力,估算出矿池一天大约能够挖到4个区块,也就是100个比特币,那么,矿池会为你每天支付全矿池1%,也就是1个比特币的报酬,这样,即使矿池今天只挖到了1个区块,你也是获得1个比特币(矿池亏本),如果矿池超额发挥,挖到了10个区块,你还是只有1个比特币的收益(矿池大赚)。 LHdw2ogUP0gtXuln2jKjHQpejP+F3zRrv7G93AN5zrC1O3O7tccFIs3a5IlzpPI8

点击中间区域
呼出菜单
上一章
目录
下一章
×