技术分享——解析Vite异步架构设计

引言

Vite 是新一代响应式区块链 (Reactive Blockchain), 采用了基于消息驱动的异步架构,在其生态体系中,异步是一个很重要的概念,也是 Vite 十分重要的一个创新点。

Vite 中的异步设计主要包括三个方面:

  • 请求和响应的异步设计
  • 交易写入和确认的异步设计
  • 合约间通信的异步设计

异步请求模型

Vite 中的交易分为请求交易和响应交易。无论是一笔转账还是一次合约调用,均会在账本上先后生成两笔交易。

image.png

一笔转账交易可以拆分成一个出账交易和一个入账交易;一个合约调用交易可以拆分成一个合约请求交易和一个合约响应交易;每个合约内部的消息调用,可以拆分成一个合约请求交易和一个合约响应交易。

这样拆分之后,每个交易只影响一个账户的状态,交易之间不会彼此阻塞,有利于与提高系统的吞吐能力。同时,不同账户的交易可以分布在网络中的不同的节点上,为系统带来了扩展性。

异步确认模型

Vite 中,交易写入账本和被系统确认也是异步的。不同的用户可以并行的将交易写入账本,快照链将以固定的速度对账本进行快照。一旦交易被快照,就可以认为是 1 次确认,随着快照链的增长,确认数也会累积。

异步确认图解

异步确认机制可以削平交易写入速率的峰谷,最大化利用系统资源。

Vite 采用分层的 HDPoS 共识算法,账本中每条账户链产生候选的局部共识结果,最高层级的快照链从局部共识结果中选择出最终的共识结果。

异步通信模型

Vite 的合约间通信采用了一种基于消息驱动的架构,合约间不共享状态,只通过彼此发送消息进行通信。

异步通信模型图解

一个合约调用另一个合约,需要先发送一个请求交易,在逻辑上类似于向 MQ 中生产一个消息。运行目标合约的节点观测到这条请求交易后,向账本中写入一个对应的响应交易,并更新合约的状态。这个操作相当于从 MQ 中消费一条消息。如果需要返回结果,目标合约会以同样的方式向源合约发送另一条消息。

在这个模型中,Vite 的账本担任了消息中间件的角色,并且可以保障消息的 Exactly Once 语义。

基于消息的架构具有高吞吐和扩展性的优势。但与此相应,付出的代价是编程模型变得相对复杂,无法保证强一致性,而且有可能使延迟变大。

Vite 将提供 Solidity++ 合约语言以及完善的 SDK,降低异步编程的成本。经过认真的研究,我们发现在实际场景中,强一致性语义是可以用 BASE 语义替代的。由于 Vite 的 HDPoS 共识算法可以保障交易确认在 1 秒之内完成,因此,延迟的增加仍然在可控范围之内。

Vite白皮书:https://github.com/vitelabs/whitepaper/blob/master/vite_cn.pdf

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Vite 是一个通用的去中心化应用平台,在兼顾安全性的同时,满足了工业级应用对高吞吐、低延迟和扩展性的要求。 Vi...
    不出局007阅读 2,761评论 0 0
  • 合约即合同,自动售货机更是大家熟悉的东西,通过自动售货机你可以非常方便的买到水或饮料。它在我们生活中无处不在,你去...
    ROW供享社阅读 2,173评论 0 4
  • 简介:严格意义上说,DAG(有向无环图)并不属于区块链范畴,但以DAG为基础设计一条基础公链也是一种途径。目前为止...
    老猫___阅读 526评论 1 0
  • # This is a test 123123`blog body`12312
    小夜曲阅读 167评论 0 0
  • 突然间发现一个良好的工作环境有多重要了,那种随遇而安的心境实在只是适合养老的人们,要想把基本功练扎实,花时间和专注...
    芳芳行洁阅读 158评论 0 1