为人不识拜占庭,就称专家也枉然?

学习流程

学习知识的流程是把书读薄,然后再学以置用,把书补充得厚些,最终分享给其它朋友:能够传播知识,才算真正掌握了知识。

一本书,最难懂的部分是绪论、序言、概述、总结等章节,以及一些看似和当前知识无关的内容。只有读懂了这些,才算理解了作者的思想。

区块链学习历程

先回顾下学习历程,依稀记得是这样:我看了很多有关比特币原理的文章,然后静下心来,看了几天比特币源代码之后,就一头扎到以太坊的学习上来了。虽然没有掌握比特币的代码,但是,有比特币的基础知识和意识后,学习以太坊的知识就比较轻松了。但拜占庭问题总是个痛点----似懂非懂,而且有很多的疑问。

Centos 7下,跨过了无数的坑,终于熟悉了Ethereum的生态圈:SolidityGanachTestRPC),TruffleRemixEthereumScanMetaMaskmistERC 20ERCXXX......另外,还时不时看下Geth源代码,终于又精进了不少。

有了这些实践经验,这才敢回过头来,重新学习拜占庭将军问题----我总认为自己对这个问题不够了解,依然疑点重重。

拜占庭问题的起源

     区块链是去中心化的管理系统,而且,彻底去中心到对等式管理系统。

    对等式系统的设计有多难呢?人与人的交流,一个人和整个人类社会的关系,都可以抽象为一个对等式系统。这就是它的设计难度。

     对等式系统有什么优点呢?人类社会从动物社会进化到现代社会,就是 对等式系统成功案例。符合AI化趋势和必然成功就是它的优点。

    如果对等式系统依靠计算机系统实现,那就绕不开分布式计算机系统。

    在研究分布式计算机系统的科学家中,有一位叫Leslie B. Lamport的计算机科学家,被誉为分布式计算的开创者,他有5篇很有影响力的论文:

《事件的时间、时钟和时序》

《多处理器系统如何正确地执行多进程》

《拜占庭将军问题》

《快照----确定分布式系统的状态 》

《临时议会问题》

    由此可知,拜占庭将军问题只是其中的一个。也就是说,为了让区块链系统能够稳定地工作,上面的问题都必须得道解决。

     那么,为什么只有拜占庭将军问题被提出来呢?以至于有这么一种风气:为人不识拜占庭,就称专家也枉然。为什么不了解拜占庭问题,就不算懂区块链技术了呢?我想,原因有三:

1.它比其它的问题更加贴近业务,比底层的技术更加抽象;

2.有解决方案,但是,很多专家都不满意,都想改进它;

3.影响系统生态建设、运营成本和生存能力;

独立思考

 

独立思考,是每个人应该具备的基本素质,在学习拜占庭问题及其解决方案前,我们应该对整个区块链系统面临的问题有个整体的预判。

Lamport的头衔--分布式系统创始人,一下把我思考问题的方法,带到分布式系统中了,我必须跳出来:很多问题,并不是分布式系统固有的。

系统分类和区块链定位

提到区块链,词汇去中心化是绕不开的。说到去中心化,打开了维基百科的文章,又是一头雾水:下面这张图明明是真理,但是,总觉得有些地方不对头。

 

 

我整理了一下思路,认为如下表理解比较好,既照顾了底层硬件,又照顾了顶层应用,还把面向对象的部分思想结合进来了,最重要的是,概念术语分清后,区块链的技术路线和学习路径也很清晰了。比如:去中心是一种管理思想,曾经弥漫在下表的很多层级中。既然这样,就不如给每个语境一个专有名词。例如,区块链常说的去中心化,可以在网络层和业务逻辑层分别找到术语。

还有一个重要的问题:业务层的分布式管理的思想,一定要分布式系统才能实现么?答案显然是否定的。区块链分布了半天,不还是要把分布式的区块数据统一到一个被所有人共识的版本上,这明明是虚拟的中心化么!!!

 

序号

层面

分类

区块链技术路线

7

业务表现层

各种人机接口、合约、UI

钱包 命令行 网站

6

业务逻辑层 

集中管理,分级管理,对等管理,蜂群管理

对等管理

5

操作方法层

读写分离  读写合一 

读写合一

4

状态记录层

分布式数据库  中心式数据库

分布式数据库

3

虚拟设施层

云设施   容器设施   混合设施

随意,可以没有此层

2

物理设备层

巨石单机  集群式架构 分布式架构 混合架构

分布式架构

1

网络层 

星形结构 树形结构 网状结构

网状结构

 

 

  上面那张图,放在网络层,可以,但是,名词要改成网络拓扑结构术语。可以放在业务逻辑层,但是,少了一类,术语也应该调整。

   (记得在维基百科闲逛时,发现了一张彩图,这应该原创作者,好像是Lamport那伙人。但后来怎么也找不到了。希望看到的朋友,把这个链接发给我。)

       

并发控制

 

我们所作的一切,就是改变物质的状态,程序也不例外。对所有程序而言,程序改变的是状态机的状态----改变寄存器,改变内存,改变磁盘等等。其过程就是写---……,如此往复。这个改变,会影响外界,可以改变外界的物理世界,如一个控制战机的飞行控制系统,他的输出改变了战机飞行的路径,控制导弹摧毁目标。所谓智能,就是改变状态的方法。这种方法本身也在被不停地改变,所以才有了程序员这个职业。

同时写,就可能会造成冲突,造成系统状态和预想的不一样,和现实世界的状态不一样,这就是并发控制需要解决的问题。

区块链遇到了什么问题----雪上加霜

 

    并发控制本来就很复杂了,偏偏还要加上一个网状结构的网络层,分布式的物理设施,分布式的数据库,去中心化的对等业务,还要面对黑客,利欲熏心的客户端,糊里糊涂的消费者,正可谓是雪上加霜。

我想,首先应该把问题归类:

 

序号

层面

区块链技术路线

问题

区块链特有

7

业务表现层

钱包 命令行 网站

便捷性和安全性

6

业务逻辑层 

对等管理

共识算法

5

操作方法层

读写合一

------

4

状态记录层

分布式数据库

区块式数据结构

3

虚拟设施层

随意,可以没有此层

如何与微服务结合

2

物理设备层

分布式架构

不挖矿,就没有问题

1

网络层 

网状结构

可靠性、延迟

否 P2P 共性

 

 

区块链本质的初步认知

我觉得,区块链的技术本质是,牺牲效率,牺牲成本,追求数据公开透明,防止篡改,可追溯,网络安全;业务本质是资产数字化(代币),流程自动化(智能合约);商业价值是代币(通证、通卡)转为法币或实物,降低转换成本。

拜占庭问题的定位

序号

层面

区块链技术路线

问题

区块链特有

6

业务逻辑层 

对等管理

共识算法

(注,自己对表中第5项,很不满意,希望网友给出建议)

 

你可能感兴趣的:(区块链)