这是我读的第三本有关区块链的书籍了,但这一本《图说区块链》却是轻松浅显、图文并茂,使得区块链技术不再显得那么高深冷漠、生涩难懂。正如书中的序言中所言,技术普及的道路从来就不是轻而易举,水到渠成的,即使经过种种努力后,一些基本的技术理念还是需要我们细细地去体会。
我很欣赏点融网创世人、联合CEO郭宇航所写的序言中的一段话。
你一辈子也不需要真正掌握这些高深莫测的技术,但当身边一切的的信息和金融服务都发生在区块链上之时,你今天的一点点阅读时间,将帮助你更好地拥抱一个新的世界,理解一个新的记录历史、登记权利、转移价值的方式。
是啊,就像我们现今所处的世界,你或许不用懂得互联网的深层技术,你也不用懂得淘宝、滴滴、百度搜索、微信等等各种互联网应用的实现技术,可是你的生活一时一刻也不可能离开它们,或者说离开它们为你提供的便捷的生活。
区块链会是一个未来的产业,也许5、6年后我们才能真正接触到基于区块链技术生成的各种应用场景,如果我们能够尽早地学习理解这项新技术,以及带给我们的生活变革,或许我们就可能早大多数人一步站在了时代的潮流中,应该更容易抓住技术变革带来的各种机会,也更能适应生活方式的转变。
读每一本书多多少少都会有一些收获,这本书也是一样。我不仅有所收获,而且收获颇丰。闲话少说,直接切入正题。我将忽略这本书中那些我已经理解了的知识,也将忽略这本书中那些我还未读懂的知识,将我能理解的并且让我的认知有了新的提升的知识,总结归纳出来形成这篇读书笔记,希望能对阅读这篇文章的你也有所帮助。
一、区块链神奇逻辑的四个角度
作者先是从区块链神奇逻辑的四个角度帐本的演变、价值的转移、信用的成本和技术的创新,来分析区块链为什么会这么火,为什么有人会认为区块链将改变世界,区块链究竟为何而诞生又为何而来。或者作者这四个角度的阐述足以说明区块链技术是互联网发展的必然趋势了。
1.帐本的演变
将时间回溯到遥远的旧石器时代,人们的记帐方式全靠死记硬背。随着原始部落的人数不断增多,生产力的提升,记帐方式演变为简单刻画和直观绘图,以及结蝇记事。到了原始社会末期,生产力水平达到前所未有的水平,文字开始出现了,以文字叙述式的会计记录法,收支事项按时间发生顺序的流水帐诞生了。
到公元前5世纪,古希腊和古罗马的奴隶社会的经济繁荣发展,流水帐中出现了日记帐和现金出纳帐。这个时候记帐的历史已经发展到了单式记帐法的时期。
中国的复式记帐法起源于明末清初的龙门帐,之后又发展成四脚帐。而西方的复式记帐最早出现在十二至十三世纪。到了十九世纪信息技术爆炸式的发展,企业经营权和所有权的分离,使得第三方协会认证的会计记帐得以盛行。计算机技术的快速普及,会计电算化成为常态。
到了二十一世纪,信息化、数据化,智能化的世界到来了,信息不对称以及信用问题又给第三方提供的会计帐本提出了新问题,如何才能信任会计事务所或者审计事务所提供的帐目准确无误,是否存在事务所与企业勾结做假帐的问题。为解决类似的问题,区块链给帐本提供了一个新选择,采用分布式共享帐本,信息不对称以及信用问题都将迎刃而解。
2.价值转移
在互联网上,我们可以方便快捷地生成信息并传递信息。许多信息只需要简单的复制粘贴就可以进行传输,但是有些信息还是无法通过复制进行传输。比如银行转帐,必须通过第三方的信用背书,才能实现转移。互联网善于处理信息分享,却不能解决价值转移这件事。
现如今通过中心化的机构进行背书转移价值的方式,安全性和可信任性是一件值得商榷的事情。在这种情况下,区块链技术可以在没有第三方信用背书的情况下,在一个开放的平台上进行远距离的安全支付。是不是可以认为这种技术是应运而生的呢。
区块链技术可以构建一种纯粹的点对点的价值转移体系,而且各节点并不需要互相信任,区块链可以保证系统内数据记录的完整性和安全性,脱离第三方的信用背书,有效降低交易的复杂性和风险。
3.信用成本
“e租宝跑路”、“泛亚悲剧”等事件无不在拷问现今社会如何才能达成“信用共识”,人之间的信用成本几何,一旦公信力机构出现问题,信任又将如何安放?
与其相信人,不如相信技术。区块链技术带来的是一种智能化信任。在区块链的世界,任何数字化的信息者可以加入区块,只要能够入链,信息的产权就可以明确,就可以设定保护条件,就能自动发起和强制实施合约,无须担心信任验证和信任执行。
区块链的公信力建立在网络中的各个分布节点上,每一个节点都有一份备份信息,而且是不可篡改的。区块链的公信力模型,是建立在一定的共识机制下的平等参与,它不是政策制定者,只充当一个公证人的角色。而相对于现实社会的公信力,一般是由政府、国家机关或者政府授权的第三方组织提供,他们既是裁判员也是运动员,信用共识只是一个传说。
区块链是一台创造信任的机器,区块链最核心的要素是它解决了信用共识的问题。
4.技术创新
从比特币到区块链是一种技术的创新。区块链是比特币的底层技术,是一种分布数据的储存模式,也是一种加密货币的交易记录的公共帐本。
要说到区块链,就不得不提及比特币,毕竟区块链是为了满足比特币独特的需求而被创造出来的。而从比特币到区块链的应用开发,很有可能开启一个新的技术创新时代。
二、区块链的核心概念
1.区块
区块作为区块链的基本结构单元,由包含元数据的区块头和包含交易数据的区块主体构成。
区块头包含三组元数据:索引自父区块哈希值的数据;挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳;能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。
2.哈希算法
哈希算法是区块链中保证交易信息不被篡改的单向密码机制。哈希算法可以在接收一段明文后,经一种不可逆的方式将其转化为一段长度较短,位数固定的散列数据。它有两个特点:
(1)加密过程不可逆,也就是说我们无法通过经过哈希算法输出的散列数据倒推出原本的明文。
(2)输入的明文与输出的散列数据一一对应,任何一个输入信息的变化,都必将导致最终输出的散列数据的变化。
区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把交易信息压缩成由一串数字和字母组成的散列字符串。
区块链的哈希值能够唯一准确地标识一个区块,区块链中任意节点通过简单的哈希计算可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。
3.公钥和私钥
公钥是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载。私钥是给自己用的,必须非常小心地保密和保存,最好加上密码。
公钥和地址的生成都依赖于私钥,有了私钥就能够花费对应地址上的比特币。私钥花费比特币的方式就是对这个私钥所对应的未花费的交易进行签名。
4.时间戳
区块链的时间戳从区块生成的那一刻起就存在于区块中了,时间戳是直接写在区块链中的,而区块链中已经生成的区块是不可篡改的,一旦篡改,生成的哈希值就会发生变化,从而变成一个无效的数据。
每一个时间戳都会将前一个时间戳也纳入其随机哈希值中,这一过程不断重复,依次相连,最后会生成一个完整的链条。
5.Merkle树结构
区块链是利用Merkle树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。‘
Merkle树的叶子节点存储的是数据信息的哈希值,非叶子节点存储的是对其下面的所有叶子节点的组合进行哈希计算后得出的哈希值。
区块中任意一个数据的变更都会导致Merkle树结构变化,在交易信息验证比对中,Merkle树结构能够大大减少数据的计算量。我们只需要验证Merkle树结构生成的统一哈希值就可以了。
三、区块链的共识机制
1.工作量证明
工作量证明(Proof of Work,简称PoW)依赖机器进行数学运算来获取记帐权。要得到合理的区块哈希值需要经过大量的尝试计算,计算时间取决于机器的哈希运算速度,寻找合理的哈希值是一个概率事件。
工作量证明的缺点:目前比特币已经吸引全球大部分的算力,其他再使用PoW共识机制的区块链应用很难获得相同的算力来保障自身的安全。
2.权益证明
权益证明(Proof of Stake,简称PoS)的主要理念是节点的记帐权的获得难度与节点持有的权益成反比。但是依然是基于哈希运算,竞争获取记帐权。它是PoW的一种升级,根据每个节点所占代币的比例和时间,等比例地降低挖矿的难度,从而加快找到随机数的速度。
3.股份授权证明
股份授权证明(简称DPoS)机制,与PoS的主要区别在于节点选举若干代理人,由代理人验证和记帐。
DPoS的工作原理如下:每个股东按其持股比例拥有相应的影响力,51%股东投票的结果将是不可逆且有约束力的。
每个股东可以将其投票权授予一名代表,获票最多的前100位代表按既定的时间表轮流产生区块,每位代表分配到一个时间段来产生区块。所有代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。
DPoS的投票模式可以在每30秒产生一个新的区块,并且在正常的网络条件下,区块链分叉的可能性极其小。每位代表的标识是其公钥而非IP地址,因此受到攻击威胁的程度被大大地减轻了。
四、几个问题
1.比特币分叉的缘起
比特币分叉是由扩容方案意见不一致引起的。我们先来了解一下比特币为什么要扩容。
中本聪设计比特币时是2009年,比特币中的一个区块的容量是1M,一笔交易大概是250字节,甚至更多。现在一些交易基本达到了500个字节。
1M=1024KB=1048576字节
那么一个区块包含的交易总数为:1048576÷250≈4194.3(笔)
比特币中一个区块确认的时间是10分钟,那么一个区块每秒能处理的交易数为:4194.3÷600≈7(个)
这种交易确认的速度已经跟不上时代发展的需求,交易拥堵及系统崩溃是在所难免的事情。因此扩容也是势在必行。
但是采用哪种扩容方案呢?一个区块的容量扩展到2M、扩展到20M、还是扩展到无限大,到底应该听谁的?每一方都认为自己的方案是可行的,但是却难以达成共识,升级又是必须的。各个方案间无法统一,分叉就不可避免地发生了。
2.硬分叉和软分叉
比特币分叉后升级的版本由于兼容性不同,就产生了硬分叉和软分叉的问题。简单的来说,软分叉是暂时的,硬分叉是永久的。
硬分叉是这样定义的:指比特币的区块格式和交易格式发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,但是已经升级的节点可以验证未升级节点生产的区块,然后大家各自延续自己认为正确的链,所以分成了两条链。
软分叉是指比特币交易的数据结构发生改变时,未升级的节点可以验证已经升级的节点生产出的区块,而且已经升级的节点也可以验证未升级的节点生产出的区块。之前版本的部分功能可用,在相当长的时间里,可允许不进行升级,继续使用原版本生成旧区块,与新区块并存。区块链层面没有分叉的链,只是组成链的区块有新区块和旧区块之分。
3.双花问题
双花问题是指一笔数字现金在交易中被重复使用的现象。比特币是采取什么方法避免双花问题的发生呢?
在交易发生的那一刻起,比特币的交易数据就被盖上了时间戳,而当这笔交易数据被打包到一个区块中后,就算完成了一次确认。在连续进行6次确认之后,这笔交易就不可逆转了。每一次的确认都需要“解决一个复杂的难题”,也就是说一次确认都需要一定的时间。
在这种情况下,如果一笔资金想要进行两次支付交易的话,因为确认的时间较长,后一笔交易想要与前一笔交易同时得到确认几乎是不可能的。而且这笔资金在第一次确认有效后,第二次交易时就无法得到确认了。
双花问题也就不可能产生了。