作為最新發布的 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進行轉賬或者執行合約的請求,使用者已經對其簽名。這個交易可以和本體主鏈的交易格式一樣,也可以不一樣。
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區塊的狀態證明以及提交的賬戶狀態證明,可以證明更新之前舊狀態的合法性,在舊狀態合法的情況下,執行當前區塊即可證明新的狀態證明合法性。