唐煜,北京邮电大学博士;研究方向为区块链技术、网络安全及密码学,2016年研究区块链技术以来参与过多项区块链相关研究课题,发表过多项专利及学术论文,对区块链底层技术有深刻的理解。
My goal in life is to find a free market plan to protect life,freedom and property.
----Daniel Larimer
区块链技术源于2008年推出的比特币,自那时以来,企业家和开发人员一直在努力地推广该技术,以便在单个区块链平台上支持更广泛的应用。自2009年Daniel Larimer接触比特币后,他一直为其去中心化的理念和设计所着迷。为了解决比特币低吞吐量的问题,他亲自设计开发了Bitshares(去中心化交易所)和Steem(去中心化社交媒体平台),并成功实现了与中央服务器方案相似的用户体验。经过两个区块链项目的创造,他发现现有区块链平台使用费用高昂,性能有限,阻碍了区块链应用的广泛传播,为了让分布式应用程序可以在一个平台上灵活轻松地开发和管理,他率领团队开启了他的第三次区块链创业项目“EOS”。
EOS作为一个区块链应用开发平台,在笔者看来其为整个区块链技术生态提供了完备的发展体系和架构。虽然EOS本身的区块链技术是经过普遍证实、并通过长期实践考验的概念来设计,其代表着区块链技术根本性的进步,但是EOS为整个区块链技术生态提供的基石作用才更具里程碑意义。为阐述EOS的整体设计架构,笔者在此提出了EOS技术体系的七层架构模型,从资源层、协议层、共识层、合约层、工具层、去中心化应用层到生态层完整详细地解释EOS的整个生态布局。
在资源层主要由EOS的普通节点和超级节点的物理资源组成,普通节点通过P2P网络和超级节点连接,超级节点提供生产区块所需的网络资源、计算资源、存储资源以及运营和维护超级节点的运维资源。在这些资源上面实际存储和运行着区块链的基础数据区块,这些区块通过哈希函数、非对称加密、时间戳和Merkle树等技术手段来保证一种不可篡改的链式区块存储结构。在共识层通过BFT-DPoS机制共识出生产区块的顺序,如果区块生产者之间发生分歧则通过宪法来进行约束和调解,从而保证整个区块生产过程的一致性。基于生产的区块,合约层通过部署脚本和虚拟机来对区块数据进行自动化的逻辑运算从而达到确定性的输出结果。利用合约层的基本操作语言EOS模块化开发出账户系统、Token系统、交易系统、数据库系统、计算逻辑系统和日志系统等,这些系统工具为DAPP开发者提供了良好的服务接口,从而使开发人员不用关注区块链的底层技术。在去中心化应用层主要由钱包、区块链浏览器、去中心化交易所等基本的区块链工具应用组成,平台集成商在生态层集成多种DAPP打造适合多种场景的区块链解决方案,从而系统性地解决物流、金融、能源、社交、游戏等场景的信任传递和价值传输。
一、资源层
在资源层主要由超级节点的各种物理资源组成,根据Block Producer的竞选标准,在计算资源方面,每个区块生产者至少需要配备双核Xeon处理器,128Gb的RAM(可升级到2Tb),512Gb的SSD;在存储资源方面,至少需要配备双核Xeon处理器,32Gb的RAM(可升级到1Tb),Raided 500Gb 10k RPM(缓存驱动),10Tb 7.2 RPM;在网络资源方面,每个节点至少需要配备1Gbps的光纤接入。在运维资源方面,节点需要配备负载均衡、电源备份、设备冗余备份、抗DDoS设备、各种网络安全防护设备以及节点运维人员。
二、协议层
在协议层每个超级节点通过特定的哈希算法和Merkle树数据结构,将一段时间内接收到的交易数据和代码封装到一个带有时间戳的数据区块中,并链接到当前的主区块链上,形成最新的区块。该协议过程涉及区块、链式结构、哈希算法、Merkle树和时间戳等技术要素。数据区块一般包含区块头和区块体两部分,区块头主要有当前区块的版本号和序号、上一区块哈希值、Merkle根、时间戳等,区块体主要记录当前时间段内节点打包的交易。链式结构是由各个区块包含上一区块的哈希摘要依次连接,形成从创世区块到当前区块的一条最长主链,从而记录区块链数据的完整历史。哈希函数是一种摘要生成函数,任意长度的字符串作为哈希函数的输入都可得到一个独一无二的等长的字符串输出,通过哈希的输出几乎不能反推输入值,并且输入仅相差一个字节也会产生显著不同的输出值。Merkle树是一种数据结构,其作用是快速归纳和校验数据的存在性和完整性。非对称加密是在加密和解密过程中使用两个不同的密钥,分别称为公钥和私钥,用其中一个密钥加密信息后,只有另一个对应的密钥才能解开,并且公钥可以向其他人公开、私钥则保密,其他人无法通过该公钥推算出相应的私钥。
三、共识层
在共识层EOS主要采用BFT-DPoS共识算法来调度各超级节点的资源和区块生成顺序,采用宪法来协调社区内部的分歧,从而形成社区的高度自治管理。其具体过程为:EOS的持有者通过投票系统对各个超级节点竞选者进行投票,选出21个节点为超级节点。然后这21个超级节点以自身的网络资源状况商议出一个出块权拥有顺序,在每个超级节点拥有出块权时,超级节点A产生第一个新区块后,A将该区块进行签名并广播给其他超级节点,其他超级节点对该区块进行验证后对其进行签名并返回给A节点,当A节点收到来自14个不同节点签名的区块后,该区块就成为不可逆区块串联到之前的区块链中。EOS社区的宪法主要是为了调节社区成员的分歧而设立的基本原则,由于目前许多区块链项目在发展过程中会出现内部分歧从而导致区块链系统不能有效的进化,因此必须在项目之初就设立项目的进化原则,从而使得EOS成为一条可以持续不停进化的链,以满足市场和技术发展的需要。当EOS发展需要分叉和升级合约时,就可以根据宪法的规则来修改和升级EOS代码。
四、合约层
在合约层EOS通过开放RPC(Remote Procedure Call 远程过程调用)接口来使虚拟机与EOS进行集成,并且脚本语言和虚拟机的实现将独立于EOS操作系统技术,任何开发语言或虚拟机只要有适当的、性能足够的沙箱都可以通过RPC与EOS集成在一起。并且EOS目前已经可以支持Wren、WASM、EVM三种虚拟机,因此以太坊上的应用可以通过简单的修改就能直接移植到EOS系统中。由于虚拟机与EOS的分离,使得开发人员可以选择自己熟练的编程语言进行智能合约的开发,这使得EOS上的应用开发更加灵活,从而大大降低了区块链技术的使用门槛。
五、工具层
在工具层EOS已经封装和模块化了诸多调用模型,目前github上已经开源了11种工具的API(Application Programming Interface 应用程序编程接口)。开发人员可以直接调用这些API实现账户管理、数据库操作、逻辑计算、交易构建、进程控制、Token生成等操作,这样的工具组件又极大的降低了开发人员的技术门槛,使得在EOS上开发自己的去中心化应用成为一项简单而愉快的工程。
六、去中心化应用层
EOS通过对合约层的优化和工具层的模块化,使得EOS成为真正意义上的区块链技术基础设施。在EOS系统中,我们不仅可以开发自己的公链,还可以锚定某条公链开发相应的去中心化应用。目前市面主流的DAPP类型都可以在EOS系统中复现出来,截止笔者完稿时,在EOSindex(EOS应用检索平台)上已经有114个DAPP开发出来了。
七、生态层
由于在EOS上可以开发自己的公链,因此开发者可以围绕一条公链开发相应的去中心化应用,如钱包、区块浏览器、区块搜索引擎、去中心化交易平台等,形成某种特性场景下的区块链生态系统,从而形成物流、金融、医疗、能源、社交、游戏等一体化的区块链解决方案。
最后,笔者相信通过EOS的不断发展和完善,在EOS的整个系统框架上将应运而生一个去中心化的数字王国,在这个王国中我们可以找到一个自由的市场来保护生命、自由和财产。所以,把握好当下,拥抱区块链,因为未来已来。