基于区块链智能合约的分片方案紫皮书正式发布
扫描二维码
随时随地手机看文章
MultiVAC今天正式发布了智能合约紫皮书:《MulTIVAC编程模式紫皮书:支持图灵完备智能合约的区块链分片方案》。
该论文是MulTIVAC核心算法团队继2018年发布技术白皮书和技术黄皮书后的第三个技术力作:
· 在弹性计算白皮书中,MulTIVAC首创了弹性计算分片模型,将区块链的不可能三角转化成为弹性架构,开发者可以自由定义和取舍安全性、去中心化和扩展性,描述和论证了MulTIVAC弹性公链的整体技术架构;
· 在全维度分片黄皮书中,MultiVAC提出了世界上首个计算、存储和传输三个维度都实现完全分片的区块链架构,真正实现了无限拓展性,还有效降低了矿工门槛,使得个人电脑等普通计算设备也能够自由加入网络;
· 在今天发布的编程模式紫皮书中,MultiVAC在高效低门槛的全分片架构上,实现了对图灵完备智能合约的有效支持,提供了一个全新的支持并行化处理的区块链编程模型,将区块链这台世界计算机从单核升级到可无限扩展的多核系统。
MultiVAC CTO应翔博士在紫皮书中指出:
“很多分片项目基于区块链2.0时代的浅薄认知,将区块链分片的层次划分为网络分片、交易分片、状态分片,而忽视了下一代区块链系统所面临的真正挑战来源于对传统冯诺依曼计算机体系的革命性创新和重定义。若真正视区块链为下一代去中心化的世界计算机,区块链系统应重建新的体系结构以应对吞吐量限制,设计全新的存储和传输策略来重定义世界计算机的数据流,提供全新的编程模式来适配全新的体系结构,坚守去中心化的初心以保障这一世界计算机不受任何单一个体的控制且永不被关停。
MultiVAC设计了全维度平行分片的架构,真正将区块链这个世界计算机从单核升级到可无限扩展的多核系统,解决了关键性的吞吐量瓶颈。开创性的存储与数据控制权分离策略,颠覆了冯诺依曼结构依赖的存储框架,使分布式数据流可交互、可验证。全新的异步分片开发模式和LLVM开发平台,允许开发者在多核分布式体系下灵活开发,实现各种编程逻辑。而低矿工门槛保证了普通用户可以自由加入MultiVAC系统,整个系统的控制权又完整掌控在普通矿工手中,保证了MultiVAC成为真正去中心化的区块链架构。
2008年中本聪在比特币白皮书中高喊的“One-CPU-One-Vote”理念,被ASIC矿机和中心化矿池所无情摧毁,但终将在MultiVAC上再次重建,并更加强大!”
自去年10月份MultiVAC算法团队启动智能合约编程模式设计,到今年5月份完稿发布,紫皮书共经历了6个月接近30个版本的迭代。方案设计的同时,团队同步推进了工程可行性验证和架构开发工作。
紫皮书的发布,也意味着MultiVAC底层架构已经全部设计完毕,接下来将进入经济模型讨论与开发者平台构建阶段。
以下内容是对紫皮书部分的摘要和解读,欢迎广大技术爱好者和社区粉丝讨论指正:
如果概括MultiVAC的整体设计,引用紫皮书中的一段话:“MultiVAC精巧地将各个功能模块做了合理划分,使运行节点各司其职。在存储上,将压力转移到存储模块,减轻了普通参与者的负担,而存储模块本身不涉及执行和共识,不存在中心化风险。在执行上,MultiVAC 提供了完整的指令集,不给开发者设置局限,且在设计过程中,时刻体现了对运行性能的重视。在共识方面,权力在各执行节点中均匀分布,平权原则落到实处。”
MultiVAC 系统的特色如下:
· MultiVAC 是一个图灵完备的分片区块链方案。为开发者提供灵活的编程开发框架以搭建复杂的应用。
· MultiVAC 是首个实现性能完全线性扩展的分片。异步分片架构为构建高 TPS 的区块链网络提供了基础。
· 降低了参与者的设备门槛,维护了区块链系统去中心化的核心价值主张。MultiVAC 网络的参与者不需要性能强劲的设备,使得社区更加平民化、去中心化。
· MultiVAC 的拓展性十分优异。目前的 MultiVAC 方案灵活、简洁、优雅,在当前基础上可以较简单地加入新的扩展功能,如闪电网络或隐私计算等。
MultiVAC 突破性地解决了当今区块链世界的多项关键性难题,为建立一个理想的区块链社区打下了坚实的基础。
1、UTXO/账户双模型弹性选择+异步分片编程——保证跨分片交互一致性
现有的其他合约分片方案,大多采用两种方式保证跨分片信息传递的一致性。一种要求发送跨分片交易时等待回执,并对涉及数据加锁,不仅大幅度降低系统性能,回执也可能丢失。这就像你通过微信给一人发送消息,如果对方没有回复,你需要一直等待,什么也不做。可能对方很久之后才能回复你,也有可能永远不回复(消息丢失了),因此这种方式会对系统性能产生极大的限制。
另一种是将跨分片交易拆分为多个子操作。比如一笔交易从分片A发送到分片B,在分片A中执行扣款后,转账指令的执行将完全由分片B决定,因此一但交易量上升,将导致执行顺序丧失单调一致性。这就要求跨片操作满足交换律(转账类操作),即改变执行顺序也可以得到同样结果。但很多其他逻辑的智能合约是无法满足交换律的,很多公链项目通过对系统的约束来保证此类指令的交换律,因此放弃了智能合约的图灵完备性,使得可开发的应用逻辑受到了极大的限制。
举个例子,A村的两个男村民皇埔铁牛和司马铁蛋都爱上了隔壁B村的苏翠花姑娘,他们都写了一封情书给苏翠花。而苏翠花先收到谁的情书就会接受谁。皇埔铁牛和司马铁蛋先后将情书放入邮筒,并由B村的邮递员送到苏翠花的手里。在一个无法维持单调一致性的邮政系统中,苏翠花先收到谁的信取决于邮递员:邮递员保证信最终会送到收信人手中,但是收信人收到信的顺序不一定遵循基础的顺序。而在MultiVAC的系统中,邮递员保证收信的顺序和寄出信件的顺序一致。
针对这一问题,MultiVAC将跨片操作分为两类:
对于满足交换律的操作,使用UTXO数据类型,矿工可以无视内容低成本快速执行操作;
对于必须满足单调一致性的复杂智能合约操作,则使用账户模型,并强制从协议层面要求矿工按照顺序执行,但成本较高,适用于低频操作。
通过首创的双数据模型弹性选择,允许开发者灵活选择所需的数据类型,使系统在一致性、性能和成本方面达成了灵活与平衡。
此外,矿工发送跨片间交易指令是异步操作,发送完毕后矿工可立即参与下一轮的出块,无需等待其他分片回执,分片之间数据不共享和交互不堵塞,避免了数据加锁带来的性能瓶颈。
2、全局数据分散设计+多账户模型——提高分片并行性能
我们知道,将区块链网络进行分片的目的是要提高整体性能。因此为了达到并行处理的目的,分片之间不可能进行完全数据共享,那样也违背了分片的初衷。但智能合约又要求所有分片都对此全局数据有感知。
比如,某个电商平台的智能合约中有10个商品,分片A的用户买了5个,分片B的用户最多只能购买5个,商品数量就是全局数据,每次合约调用各分片间都需要相互同步,否则就会造成超卖。因此,如何处理对全局数据的依赖是所有区块链系统都要面对的难题。
为了保证数据一致性,目前通常有两种方案,一种是给数据加锁,同一时间只能被单一分片读写;另一种是数据只允许被单一指定分片调用。但这两种方案都会导致智能合约的吞吐量严重制约于单个分片。
针对以上,我们首次提出将全局数据拆分到各个分片上,即将总商品数量下放到分片,每个分片中都会有一定的商品额度,当交易发生时,智能合约只读写对应分片的数据就可以。允许用户在不同分片上进行操作,防止分片间购买力不同而造成的库存不足,将全局交易分散到各个分片上。同时,用户在所有分片上都有账户,鼓励用户进行快速低成本的片内交易,充分释放了分片的并行性能。
3、图灵完备虚拟机+高级语言C/C++/Rust——实现超高自由度开发
正如紫皮书中提到的,目前很多公链方案为了简化设计,舍弃了图灵完备性,导致开发者能够实现的业务逻辑严重受限。也有部分公链提出了自己的开发语言,不仅学习成本高,而且无法支持高级开发框架,徒增开发者的编程负担。
在这一点上,MultiVAC秉承了一贯的设计理念,不给开发者设限。我们提供了图灵完备的虚拟机,同时适配C/C++/Rust等多种高级成熟编程语言,为开发者提供灵活的编程开发框架以搭建各种复杂应用。
不仅如此,MultiVAC 团队认为,没有完美的区块链系统,一套好的区块链方案应该能够随着各领域的技术突破不断进化。所以在设计过程中,MultiVAC遵循了松弛可扩展的原则,保证整套技术框架易迭代易拓展,各模块能够灵活地整合新技术,与时俱进。目前的 MultiVAC 方案灵活、简洁、优雅,在当前基础上可以较简单地加入新的扩展功能,如闪电网络或隐私计算等。