前言
试想这样一个场景,一个区块链平台业务迅猛发展,用户数量呈现井喷式增长,很快从百万级达到了千万级,短时间内带来了相关成本的急剧上升。此时此刻,什么样的方式能够继续保持业务体系的高效运转,不必因为复杂的共识和确认流程而阻碍发展步伐?扩容,就成为了企业选择技术解决方案的一条必经之路。
作为一种链下扩容技术,Layer 2具备高性能、低费率的特性,并拥有足够的去中心化和不可篡改性。企业可以放心地将大量的交易记录存在链下,在需要交互时再转移到链上,如此一来便可降低用户的交易成本,带来性能上的飞跃。
基本介绍
作为最新发布的 Aristotle 2020路线图中 Ontology 2.0技术体系的重要组成部分,连同此前发布的跨链、Wasm-JIT、Multi-VM 等多项前沿核心技术,Ontology Layer 2可实现全网领先性能,具体体现为存储成本低、多语言支持和解析执行版本完全兼容,使得部署合约能够像在同一台电脑上运行多个虚拟操作系统一样无缝交互,带来更高的执行效率与更低廉的手续费用。
工作流程
Ontology Layer 2主要包括3个主体部分,Ontology Deposit 到 Layer 2、Layer 2 Withdraw 到 Ontology 以及 Layer 2交易和安全性保证。
在 Layer 2交易中心,用户进行转账或执行合约请求并进行签名。这个交易可以和 Ontology 主链交易格式一致,也可以有所不同。交易收集者(以下简称 Collector)负责收集用户的 Layer 2交易,在整个过程中可以有多个 Collector 存在,用户可以将自己的 Layer 2交易广播给多个 Collector。
Collector 周期性地打包收集到的 Layer 2交易并运行,产生新的 State。Collector 负责将新 State 的 Root 提交到本体主链。在执行 Layer 2区块中打包的交易后,新 State 的 Root 为该 Layer 2区块 State。而 Challenger 负责验证 Collector 提交到本体主链的 Layer 2区块 State,这要求 Challenger 通过 Collector 同步 Layer 2区块,从而维护完整的全局状态。
账户状态证明包括账户状态信息以及其 merkle 证明,可以从 Collector 和 Challenger 查询来获取,只有他们维护有完整的全局状态。
Deposit 到 Layer 2
1. 用户首先在 Ontology 主链进行 Deposit 操作,主链合约锁定用户 deposit 的资金,记录这笔资金在 Layer 2的状态,此时状态为“未释放”。
2. Collector 查询到本体主链上有 Deposit 操作,collector 会在 Layer 2根据 Deposit 的操作修改其 State,Collector 增加一个Deposit 释放交易,并和收集的其他用户交易一起打包到 Layer 2区块,提交这个 Layer 2 区块 State 到本体主链时,会附带提交 Deposit 已经释放的请求。
3. 主链合约执行 Deposit 释放操作,修改 Deposit 资金状态为“已释放”。
Withdraw 到 Ontology
1. 用户构造 Withdraw 的 Layer 2交易并提交给 Collector;
2. Collector 根据 Withdraw 修改其 State,同时打包该 Withdraw 交易以及其他用户交易一起到一个 Layer 2区块,提交这个Layer 2区块 State 到本体主链时,会附带提交 Withdraw 请求;
3. 主链合约执行 Withdraw 请求,记录一笔资金记录,并设置状态为“未释放”;
4. 在 State 确认后,用户提交 Withdraw 释放请求;
5. 主链合约执行 Withdraw 释放请求,给目标账户转账,同时设置 Withdraw 记录为“已释放”。
Layer 2交易以及安全性保证
- Layer 2交易
1. 用户构造 Transfer 的 Layer 2交易并提交给 Collector;
2. Collector 打包该 transfer 交易以及其他交易到一个 Layer 2区块,执行区块中的交易,提交这个 Layer 2区块 State 到本体主链;
3. 等待 State 确认。
- 安全性保证
在 Operator 向本体主链提交 Layer 2区块 State 后,Challenge 可以同样运行 Layer 2区块的交易并验证 Layer 2区块 State 的正确性,如果不正确,Challenger 可以生成 Layer 2合约可以解释的欺诈证明挑战 Operator。
如何体验
目前,Ontology Layer 2已上线测试网,开发者可抢先进行体验。
链接:http://152.32.217.204/
文档链接:https://github.com/ontio/layer2
下一篇,我们将带来详细的与其他链上 Layer 2的性能对比。
附录:名词解释
Layer 2交易
用户在 Layer 2进行转账或者执行合约的请求,用户已经对其签名。这个交易可以和本体主链的交易格式一样,也可以不一样。
Collector
Collector 是 Layer 2交易收集器,它负责收集用户的 Layer 2交易,验证并执行交易,每生成一个L ayer 2区块,Collector 负责执行区块中的交易,更新状态,并生成 Layer 2合约可以解释的、用于安全性保证的状态证明。
Layer 2区块
Collector 周期性的打包收集到的 Layer 2交易,生成一个包含这期间所有 Layer 2交易的区块,产生一个新的 Layer2区块。
Layer 2 State
Collector 执行 Layer 2区块中打包的交易,更新状态,将所有更新的状态数据排序生成一个 Merkle 树,计算 Merkle 树的根 hash,该根hash即为该区块的 Layer 2 State。
Operator
Operator 是 Layer 2的安全守护程序,负责监听本体主链是否有到 Layer 2的代币转移或者 Layer 2到本体主链的代币转移交易,同时 Operator 还负责周期性的将 Layer 2的状态证明提交到本体主网作为证明。
Challenger
负责验证 Operator 提交到本体主链的状态证明。这要求 Challenger 从 Operator 或者链上同步 Layer 2交易,维护完整的全局状态。在 Challenger 同步执行交易并更新状态后,可以验证 Operator 提交在本体主网的状态证明正确性,如果不正确,Challenger 可以生成 Layer 2合约可以解释的欺诈证明挑战 Operator。
账户状态证明
包括账户状态信息以及其 Merkle 证明,可以从 Operator 和 Challenger 查询来获取。只有他们维护有完整的全局状态。
欺诈证明
欺诈证明包含当前 Layer 2区块更新之前账户状态证明。因为有以前 Layer 2区块的状态证明以及提交的账户状态证明,可以证明更新之前旧状态的合法性,在旧状态合法的情况下,运行当前区块即可证明新的状态证明合法性。
本体始终坚持“以实体为本”,助力企业实现转型升级,如有链下扩容、虚拟机或全套技术体系搭建等问题,欢迎通过 [email protected] 与我们联络。