第10章 区块链 80
- 区块链历史 2008年11月1日,一个化名为中本聪(Satoshi Nakamoto)的密码极客发布了比特币白皮书(《比特币白皮书:一种点对点的电子现金系统》),至此比特币开始了一场人类历史上伟大的数字货币实验。
很多分不清比特币与区块链,以为比特币就是区块链,区块链就是比特币,比特币是第一个成功的区块链应用,随着比特币价格的不断飙升,比特币背后的区块链技术逐渐进入到了大众视野。
区块链的发展最早可以追溯到1982年Leslie Lamport提出的拜占庭将军问题(Byzantine Generals Problem)。拜占庭将军问题是解释一致性问题的一个虚拟模型。拜占庭是古东罗马的首都,由于地域宽广,守卫的将军需要通过信使传递消息,达成一致的决定。但由于将军中可能存在叛徒,这些叛变的将军可能会发送错误的消息,干扰大家的决议。
拜占庭问题的提出是为了解决在这种情况下,怎样让忠诚的将军们达成一致的决议。
这个问题演变到计算机领域,就是在互联网中不同计算机通过通讯怎样达成一致。在实际过程中有些计算机可能出现错误,有些计算机有可能被黑客攻击,怎样保证网络上的计算机对某个事物达成一致就是这个理论模型要解决的问题。
拜占庭问题是区块链技术里共识机制的基础。正因为有了这样的理论基础,才使得区块链技术有了发展的科学基础。
在比特币之前,区块链经过了几代的演进,这期间包括 e-Cash、HashCash、B-money等相关的数字货币。这个期间属于数字货币的发展阶段。
1983年提出的e-Cash是一个数字化的支付系统,但由于采用了中心化的方式导致后来项目失败。
1997年的HashCash是一个采用工作量机制(Poof of Work,PoW)的数字货币,之后被数字货币大量广泛使用。
1998年提出的B-money是首个提出的去中心化的数字货币系统,遗憾的是没有提出具体的实现。
直到2009年1月比特币横空出世,才真正实现了去中心化的、账务公开的数字货币系统,正式开启了区块链技术发展。
- 什么是区块链 区块链是一门综合学科,要彻底搞清楚区块链,需要从三个不同的视角来看待区块链。
一个形象的说法区块链就是一群人共同维护的一个大账本。
我们传统的信息系统,不管是银行系统,还是我们熟悉的支付宝、微信的数据库都是采用集中式管理方式运行,所有的数据安全都依赖于这个组织(比如阿里)是否可信,技术是否过硬,管理是否足够严格。
而区块链则不同,它是通过共识机制发动大量的节点来共同来记账,而这些节点之间地位平等。由于区块链采用了一群人共同记账的方式,使得数据不可篡改。
举个例子,在一个村子,张三借了李四一万元人民币,原来的方式就是张三给李四打一个借条,或者是找一个双方都信得过的人作为见证人。现在有了区块链之后,同样是张三借了李四一万元人民币,我们会发动全村的人都来记账,每个人都会在自己的本子上记一笔账,张三借了李四一万元人民币。原来一旦李四的借条丢了,或者张三贿赂了这个见证人,这笔借款有可能就收不回来了。但有了区块链之后,由于全村人都记账因此这比借款就变得无法抵赖。
因此,区块链的本质就是“记录不可篡改的数据库技术”。
传统数据库可以进行增加、删除、修改、查询,而区块链只有增加和查询,不能修改、不能删除。
那问题来了,凭什么全村人会帮李四来记这一笔账,只是人缘好不能让全村人都来记账,我们必须有一套机制来奖励这些人。这点就有点像像农村的红白喜事,全村人都来帮忙。以前是大家生活条件都不好,只要村里面有这种红白喜事,当事人都要大摆宴席答谢村里人的帮助。这其实就是一种奖励机制。
同样,区块链要让一群不相干的人来共同记账,因此需要一套奖励机制,也就是经济刺激,让参与记账的人可以获得经济上的回报。由于人性的贪婪,只要有经济刺激,就一定有人作弊,为了防止有人作弊,区块链引入了共识机制的方式以确保参与者无法作弊。
共识机制作用有两个,一个是奖励、另外一个是惩罚。比特币使用共识机制是POW工作量证明机制,Bitshares、Steemit、EOS采用的是DPOS股份授权证明机制。简单来讲比特币是以算力为基础来进行奖励和惩罚,如果发现有节点作弊不但不会得到比特币奖励,而且还会损失算力,白白浪费掉高额的电费;EOS以股权为基础进行奖励和惩罚,有点类似我们说人民代表大会制度,所有拥有EOS代币的人都可以参与节点的投票,被大家投票出来的节点参与记账,一旦作弊就会被系统投出。
在具体实现上,区块链是基于我们熟悉的P2P点对点网络作为基础的网络协议,也就是迅雷、暴风影音这些工具使用的技术,数据是存储在以时间为顺序的链状结构上,并采用加密算法对数据进行加密、签名,确保身份的唯一性和数据的机密性。
区块链天生具有去中心化的特点,因此只能通过维持一种扁平化、去中心化的P2P共识网络来实现。P2P网络架构既是区块链去中心化核心特性的反映,也是该特性的基石。
P2P网络中每一个节点彼此对等,各个节点共同提供服务,不存在任何特殊节点。P2P网络中不存在任何服务器、中心化服务及层级结构。P2P网络具有天生的伸缩性、去中心化和开放的特点。
区块链的数据不可篡改性,不是由密码学里的数字签名保证的(数字签名又被称为数字指纹,用来保证数据篡改后可被发现),而是由包含交易信息的区块从后向前有序链接起来的数据结构保证的。
区块是一种被包含在公开账簿包含 了交易信息的数据结构。由于区块里面包含了上一个“父区块哈希值”字段(哈希是一个通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹。产生的32字节哈希值被称为区块哈希值),当其中一个区块链数据发生变化后,需要更改之后所有儿子的区块哈希值,一旦一个区块有很多代以后,这种瀑布效应将保证该区块不会被改变,除非强制重新计算该区块所有后续的区块。正是因为这样的重新计算需要耗费巨大的计算量,所以一个长区块链的存在可以让区块链的历史不可改变,这就是区块链数据不可篡改特性的根本。
如果以上的解释无法理解,你可以把区块链想象成地质构造中的地质层。表层可能会随着季节而变化,甚至在沉积之前就被风吹走了。但是越往深处,地质层就变得越稳定。到了几百英尺深的地方,你看到的将是保存了数百万年但依然保持历史原状的岩层。几千个区块后的区块链将变成确定的历史,永远不会改变。
以上对于共识机制、区块链、P2P网络的解释也可以简单概括如下: 区块是数据存储的容器,而P2P网络是保证区块链运行的基础协议,共识机制确保参与记账的节点在没有人干预的情况下可正常工作。
对区块链技术有了基本的理解后,可以看出区块链的伟大之处是基于算力、股权这些人类已经存在的共识基础,将人类几千年协作文明第一次用技术手段实现。
智能合约是 1990s 年代由尼克萨博提出的理念,几乎与互联网同龄。由于缺少可信的执行环境,智能合约并没有被应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,以太坊首先看到了区块链和智能合约的契合,发布了白皮书《以太坊:下一代智能合约和去中心话应用平台》,并一直致力于将以太坊打造成最佳智能合约平台。
智能合约实际上是一段无需干预可以自动执行的代码,人类可以用智能合约实现资产的转移无需任何中介干预。
举个例子,你如果有一笔数字资产要让下一代人继承,就可以开发一个智能合约运行在以太坊平台上,一旦你设定的条件匹配,这笔资产会自动转移到你指定人的账户里,无须中介、法院来干涉,一切都按照既定的规则自动执行,这就是智能合约的魅力。
因此,从广义上来讲,区块链是分布式系统、密码学、博弈论、网络协议(P2P)等诸多学科的合体,是人类发展史上一项伟大的创举。
- 区块链应用 说了这么多区块链与我们生活有什么关系?
区块链就是一个宝藏,太多的价值还未被人发掘。随着区块链基础设施(EOS、以太坊、NEO、量子 )的上线和不断迭代,属于区块链的伟大时代已经到来。对于传统行业来说,怎样将区块链应用在自己熟悉的产业中,是大家共同需要面对的问题。
刚才我们讲到了区块链的本质就是“记录不可篡改的数据库技术”,在现代社会数据被称为21世纪的石油,我们熟悉的阿里、腾讯都是因为拥有庞大的数据,才赢得了商业上的成功,而使用区块链可以采用代币的方式激励用户贡献数据,同时可以构建一个安全可信的大数据生态。因此,基于区块链的去中心化、免信任、数据不可篡改等特性,可以实现人类资产证券化(Token代币),建立安全可靠、自治高效现代社会。
从这个角度望去,由于区块链天生具备价值属性和建立信任的特点,因此区块链可以将任何资产数字化,可以对现有互联网进行重构。
区块链的应用已延伸到金融、版权分发、社交媒体、物联网、智能制造、供应链管理等多个领域,将为云计算、大数据、AI 等新一代信息技术的发展带来新的机遇,有能力引发新一轮的技术创新和产业变革。
正如《经济学人》杂志中所定义的那样,区块链是信任的机器。它将会重新定义生产关系,使得整个生态更加可信。
对区块链技术有了初步了解之后,下一节我们将会通过对steemit的学习一起探索区块链是怎样重构社交平台的。 ## 见证人
10.0.1 steem见证人
steem见证人是steem区块链委托权益证明股权(DPOS)共识机制的产物。区块链就是一个公开的数据库账本,共识机制就是用来解决到底谁来给各种信息(交易、转账,steemit里的点赞,点踩,留言等等)安全记账的问题。
Steem里记账的这个职业人,就叫做见证人,见证人被选出来负责创建与签核交易区块,一个见证人就是一个网络数据节点。
Steem的白皮书是这样描述的:
Steem的区块链生存采用轮流制,每一轮,21位见证人被选出来负责创建与签核交易区块。见证人当中的二十位以用户投下的赞成票数选出,另一位则由所有票数未达到前二十名的见证人分时担当。21位见证人每轮完一圈之后,都会重新排序,以避免任何一位见证人持续忽略某个顺位的见证人所生产的区块。见证人一旦错过某个区块且在过去24小时内未生成区块,就会丧失资格。
简单理解上面的一段话:
1、负责创建与签核交易区块见证人由社区投票产生,共21位。
2、21位见证人由投票产生的前20名+1位未达到前20名的见证人分时担当。
3、21位见证人创建和签核区块的排序是变化的。
4、没有履行好见证人职责的会丧失资格。
因为负责创建与签核交易区块的见证人的数量有限,见证人实际上会互相竞争来获得记账的工作。获得记账工作的见证人每完成一次记账都可以获得系统的代币奖励。
10.0.2 如何给steem见证人投票
steem采用的共识算法跟全世界大多数的股份制公司很类似,任何持有steem power的用户都可以理解为是steem这一家去中化公司的股东,而21位见证人可以理解为由所有股东推选出来的董事会。所以,持有steem power的用户都可以参与到见证人的投票中。
在steem里,你可以自己投票,你也可以把自己的票数代理给别人帮你行使投票权利。
https://steemit.com/~witnesses 可以看到所有的见证人名单,网页只显示了前50位见证人。每个人可以投票给30位见证人(witnesses)。50名以内见证人的投票可以直接点图上点赞标识。
如果你想投的见证人在50名外,可以通过输入账户名来进行投票,最下面一栏你可以把票数代理给别人帮你行使投票权利,比如代理给 @oflyhigh。也鼓励大家给中文区的 @abit @bobdos @ety001 @justyy @skenan 见证人投票。
10.0.3 steem见证人节点
## DPOS 共识算法 {dposgssf}
作者:@yingpingzhang;编辑:@maiyude;↩