金色观察|Sui网络的双共识是如何工作的?
Sui是一条新的区块链,除了使用Rust编程开发和融合Move智能合约外,并行共识是Sui网络的核心,本文重点解释这个部分。
传统的区块链是众多验证器共同构建一个共享账本,每次验证者想要对区块链进行增量添加时,会做区块提案并对提案进行排序。最终状态达成一致。
而网络里大部分交易与区块链状态的其他任意部分没有相互依赖性,所以Sui网络利用了这个思路,实现并行。
大概的方式是,Sui锁定一笔交易相关数据,将验证独立。利用Move的所有权模型,可以进一步将这种方法扩展到更多交易。这样所有的交易都是一个通道,这种“多通道”方法可以作为事务验证的方式,互不影响,并行进行。
当每笔交易成功,会迅速获得一份最终证明。该证明表示交易完成,并可信。
依靠这样的独立验证,Sui并不需要像其他区块链一样,要对对客户端提交的事务进行一个总排序,除共享对象外。这很像DAG中前一笔交易和后一笔交易相关,用不断连续的相关性来确保交易顺序。
很多使用DAG技术实现共识的链,就是利用了这样的因果关系。
这样的并行方式,为交易验证节省了时间。
但在这样的情况下,交易验证是可以加速了。网络仍需要账本一致性。
也就是Sui需要两个共识协议:
1. 基于拜占庭一致广播的协议来处理简单的交易,即账本共识。
2. 因果关系的独立协议来处理独立的交易。
这样代表着,交易独立验证后进行账本共识的时候需要一些gas消耗。
官方指出这个过程大概需要200毫秒,总确认时间在2-3秒范围内。这种消耗需求,是安全地组合两种共识协议所必需的。其他区块链大都会直接将交易提交给共识协议单独完成。
为了找到这个思路的验证逻辑。
笔者去思考了交易出块的过程,对于传统区块链,一个交易被发出之后,会先同步到网络中,等待验证节点验证,这个过程是一个不确定过程,交易被打包之后,会继续广播,因为要有一个最长链的竞争过程,无论是pos还是pow,都会有这个过程,这也是个比较浮动的过程。
似乎,Sui是先利用因果关系快速将交易验证完,然后再让共识验证交易证明,两次的过程,都以快于传统共识来设计。
我们再去找到这两个共识的一些数据。
其一:每个客户端提交一批 100 笔交易(即,转移到 100 个不同的接收者),并带有一个签名。这种配置实现了高度可扩展区块链的预期使用模式。例如,大规模运行的托管钱包或游戏服务器可能需要每秒提交数百或数千个链上交易。批量大小为1时,在一台机器上运行的8核验证器可以处理20,000 TPS,并且随着添加更多核,吞吐量呈现相同的线性增长。
其二:截至 2022 年 3 月 19 日,在 8 核 M1 Macbook Pro 上运行的未优化单工 Sui 验证器每秒可以执行和提交 120,000 个token传输事务 (TPS)。吞吐量与内核数量呈线性关系,同一台机器在单核配置中处理 25,000 TPS。
以上可以看到,在未将网络完全分布式搭建时,其表现为20000tps-25000tps,而很明显的,当网络开始以分布式结构搭建起时,因为p2p网络通信的原因,网络中第二个共识,即确定账本一致性的共识就会受到影响,也就会影响其表现。
Sui网络的设计,目前看来基本得益于DAG的确认方式,交易并行,就能把压力分散,至少,在网络资源消耗上,就可以跳出以太坊等区块链的共识运作思路,去看到可能性,Sui网络很快将上线测试网,上线后官方会公布更多测试数据,届时可再次具体分析。