11月24日–25日,由中国计算机学会主办的首届中国区块链技术大会(China Computer Federation ChinaBC 2018)在杭州未来科技城举行。复旦大学教授、中国计算机学会区块链专委会主任斯雪明在25日上午发表了题为“区块链—形式化表示与体系结构演进”的演讲。
以下为现场演讲速记,由整理发布:
尊敬的各位嘉宾,大家上午好。我今天的演讲主题是“区块链—形式化表示与体系结构演进”。分为四个部分:
第一部分是传播信息系统的数学模型与特点
第二部分是区块链系统的形式化表示
第三部分是典型区块链体系结构
第四部分是区块链体系结构可能的演进方向
一、传播信息系统的数学模型与特点
我们首先要讲一下什么是信息系统,信息系统是一个人造系统,它由人、硬件、软件和数据 资源组成,目的是及时、正确的收集、加工存储、传递 和提供信息,实现组织中各项活动的管理、调节和控制。
下图是一个信息系统形式化的表示。信息系统由信息系统的不同模块组成,我们称之为“论域”。
通过这样的形式化表示,最终得到论域到U的状态转换函数,这个函数随着时间的变化而变化。我们考虑到传统的信息系统的某一论域时,属性取值在时间轴上是稳定不变的。所以传统的信息系统具有静态性的特点。
另外,当两个信息系统S和S’进行比较的时候,S’越小表示两个系统越相似,对于传统的计算机系统,这两个系统往往会更小。
最后,传统信息系统具有中心化的特点,中心(特权用户) 独自可以进行数据的增、删、改、存等操作,也可以执 行服务的发布与撤回等。而普通用户与特权用户的权限有 很大的差别。中心化导致系统的机密性、完整性、可用 性容易受到内部人或外部黑客的破坏。
总而言之,传统的信息系统具有静态性、相似性、中心化等特点。传统信息系统各维度通常是静态的,数据通常无冗余或少冗余(可能有2-3个备份),各信息系统之间通常是相似的,具有中心化的特点,操作权限和数据的增删改权限总是集中的。
二、区块链系统的形式化表示
目前典型的区块链系统包括了四个环节:发起交易、传播交易、验证交易、添加区块。(这里的“交易”是广义的交易)
发起交易:可能涉及Token,智能合约,记录或其他信息;
传播交易:在节点的帮助下,该交易被广播到P2P网络中;
验证交易:借助已知的算法,网络中节点验证交易的合法性和用户状态;
添加区块:交易一旦完成,新的区块被添加到区块链上,从此永久不可篡改。
下图是我们对区块链系统的一般的形式化表示,其中包括消息单元、共识(包括打包和同步)和存储(包括数据存储和状态存储)的过程。
消息单元主要包括消息的数据格式、处理方式,打包过程主要包括消息的验证,验证通过加入区块,同时提出证明(证明自己打包的权限),同时将形成的区块的证明打包CON。同步操作主要是对区块证明的打包CON进行验证,验证通过就开始下一步的共识或继续进行打包操作。
目前来看,比特币是最具有代表性的单链未许可链。
消息单元以普通转账交易为主(交易双方地址、输入输出金额),消息打包前,需要工作量证明(PoW)取得记账权,算力决定了进行PoW的能力,PoW的验证与区块的传播异步,可能存在分叉,状态以UTXO为主,传递模式。
除了比特币之外,以太坊也是单链未许可链的一个典型代表,主要涉及智能合约和世界状态概念。
下图为比特币系统的形式化表示。以(上述)区块链一般的形式化表示为前提,给出了比特币的具体情况。主要包括PoW打包和UTXO状态存储过程。
以fabric为代表的单链许可链,CA(Certification Authority)作为所有节点加入系统的认证,普通客户端通过部署链码(chaincode)、调用链码发起交易,通过背书策略申请peer节点(Endorse node)的背书签名,Order节点验证客户端节点的交易和背书消息,转发给peer节点(Commit node),通过Kafka(Zookeeper)对交易进行排序Commit node通过CouchDB(或者LevelDB)存储区块信息和实时状态以及世界状态。
下图为 fabric的形式化表示,这里就不再专门介绍了。
除了前面提到的典型的区块链系统之外,现在还出现了新型的以IOTA为代表的DAG结构的区块链。DAG(Directed Acyclic Graph,有向无环图)中没有传统的区块的概念,交易并发进入系统,交易产生的同时对已有交易进行验证(这使得DAG结构的吞吐率远远大于单链结构),消息产生后直接进入Tangle系统。存在安全性差和中心化倾向等问题。
下图为IOTA的形式化表示。图中,消息单元除了基本的区块链元素之外,还包括了对两个父交节点的引用。由于IOTA没有区块的概念,所以打包过程是直接对消息单元进行验证,没有同步的操作。
三、典型区块链体系结构
我们对比特币、以太坊、、fabric、IOTA体系结构及其特点进行了深入研究,今天讲的绝大部分内容都是第一次讲,所以有不当之处还请大家批评指正。
下图是我们提炼的比特币的体系结构。在这个体系结构中,比特币的节点发起的交易进入了交易池,节点通过散落的最低区块从交易池中来选取部分交易,不停地变更区块头的随机数进行PoW竞争。竞争成功后产生新的区块,加入到区块链中,并广播到整个网络。
下图为比特币流程示意图。因为在做的各位对比特币系统比较熟悉,所以在这里也不再多讲。
下图为以太坊的体系结构图。在以太坊中,节点分为内部节点和智能合约节点。与比特币不同的是,以太坊有叔块的概念。由于以太坊的出块间隔只有十几秒的时间,因此以太坊中临时分叉与孤块会大量产生,整个网络的安全性都会下降,以太坊鼓励人们引用叔块就可以提高网络安全性。
下图为以太坊的流程示意图,由于时间关系,这个示意图在这里就不细讲了。
下图为EOS的体系结构图,EOS是更加去中心化的,但是这样的操作系统也会存在一些安全隐患。
下图为EOS的流程示意图。
下图为fabric1.2的体系结构图。在fabric1.2中,客户端节点发生交易,通过链码(ChainCode)的背书策略,背书(Endorser)节点收到交易提案(Proposal)后,验证签名并确定提交者是否有权执行操作,同时根据背书策略模拟执行智能合约,并将结果还给客户端。
客户端收到背书(Endorser)节点返回的信息后,判断提案结果是否一致,以及是否参照指定的背书策略执行,如果没有足够的背书,则中止处理;否则,应用程序客户端把数据打包到一起组成一个交易并签名,发送给Orderers。Orderers对接收到的交易进行共识排序,然后按照区块生成策略,将一批交易打包到一起,生成新的区块,发送给提交(Committer)节点;提交(Committer)节点收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,完成后将区块追加到本地的区块链,并修改世界状态。
下图为fabric1.2的流程示意图。
下图为IOTA的体系结构图。IOTA设计POW这一步是为了防止有人恶意发很多transaction从而阻塞整个网络,或者更进一步通过更改整个DAG的形状而达成一些攻击。
下图为IOTA的流程示意图。
最后,我们来谈一下区块链系统的特点。我们认为,区块链系统具有静态性、多中心、分布式、冗余、高度同构等特点。
目前的区块链信息系统通常也是静态的,具有多中心的特点,数据分布式存储和共享,在许可链中,各节点数据存在一定的冗余,在非许可链中,高度冗余,各节点运行的系统高度同构。
四、区块链体系结构可能的演进方向
我不敢说区块链体系结构一定会往这个方向演进,但是它是一种可能。
传统的信息系统具有静态性、相似性和中心化等特点;
典型的区块链系统具有静态性、多中心、分布式、冗余和高度同构等特点;
理想的区块链系统应该具有动态性、多中心,分布式、适度冗余、异构性和群体性等特点。
那么,如何构建理想的区块链体系结构呢?我们可以从自然界中得到启示。
自然界的启示一:拟态现象
拟态现象是一个生物学概念,指一种生物在形态、行为等特征上模拟另一种生物,从而使一方或双方受益的生态适应现象。比如:拟态章鱼。
拟态章鱼通常生活在15米以内的浅水沙地,通常在河口水域,在这种水域里,有很多贝壳、虾蟹等拟态章鱼喜欢的食物。拟态章鱼是自然界中顶级伪装高手,会模仿各种还有生物,包括海蛇、狮子鱼、扁鱼、蛙鱼、海星、大蟹、贝类、鳐鱼等15种动物的外观和运动。
它的身体有数万个色袋,叫作“色包”,它靠一个复杂的肌肉网络控制。色包含色素,并靠色素 (颜色) 来表现多种色度。通过放松或收缩色袋,拟态章鱼仅用不到1秒就能让自身与任何背景颜色及图案相一致。
自然界的启示二:群飞和群游现象
群飞又叫聚集式飞行,鸟群能够在快速飞行的过程中整齐划一地转向, 其目的是能够免遭老鹰等捕食者的袭击。典型代表是椋(liáng)鸟。
椋鸟在飞行中形成球状紧凑队形,并在接下来扩大和收缩,不断变换形状。一大群椋鸟在称为“辊式觅食”(roller-feeding)的做法中一起觅食:鸟群后面的椋鸟不断飞到前面去寻找食物。这种有组织的觅食方法意味着每只鸟都可以变成头鸟,同时能密切注意捕食者来袭。
群游是一种鱼群的集体行为,鱼群能够通过对周围环境变化做出迅速 感知和统一变向,不仅可以有效抵御捕食者,还能够提高捕食效率和
游动速度。
根据上述生物学中的拟态现象和群飞、群游现象,我们提出了拟态群体异构体系结构,简称MCH体系结构。
• 区块链系统中的部件可以根据应用场景动态调整变化
• 不同部件的不同实现方式,完成统一的目的
• 系统的部件异构,构建最适合应用的区块链系统
针对特定的应用场景,选择合适的异构部件,构建最优的体系结构, 达到理想的应用目标。
下图为拟态群体异构体系结构。
下图为拟态群体异构体系结构主要组成。
我们下面来看它怎么来变化出来的,在拟态群体异构体系结构中,DAPP1、DAPP2、DAPP3是不同的应用,比如DAPP2,从C1到CK,然后到拟态决策,变成异构候选集。然后就构成了不同的节点,这些节点之间我们希望能从软硬件来说它是异构或部分异构。这样的异构节点最后就产生了不同的区块链。
值得注意的是,现在很多区块链的体系结构,并不适合真实的应用场景。所以我们认为,体系结构应该是动态可变的,根据不同的应用场景有不同的体系结构。
最后,我要讲的是,长期以来,信息系统在不断地演进,体系结构创新是信息系统发展的永恒之路。我们从信息系统的角度来考察区块链的体系结构演进,首先对传统信息系统进行了数学建模,指出了传统信息系统的特点;然后对经典区块链系统进行了研究,给出了区块链系统的形式化表示和体系结构模型,提炼了经典区块链系统的特点;最后,我们根据理想区块链系统的特点,从自然界的拟态、群飞、群游现象中得到启发,提出了拟态群体异构体系结构。
我的报告就到这里,谢谢大家。