一文解析Tokenbridge價值傳輸
前段時間,Axie Infinity的底層區塊鏈網絡Ronin Network失竊6億美金,直到用戶無法從跨鏈橋Ronin Bridge提款後盜竊案才被發現。跨鏈橋的資產安全問題再次引發熱議。
事後,Sky Mavis COO Alexsander Larsen表示,“Ronin Bridge被攻擊不是因為智能合約存在漏洞,而與社會工程和人為錯誤有關”。Axie Infinity的投資方Animoca Brands聯合創始人Yat Siu曾在採訪中提到,“如果一座橋梁能夠鑄造代幣,那它就像鑄造機一樣……橋梁是權威,但如果它們設計不當或存在漏洞,就會對生態系統構成巨大風險。”
本文我們具體聊聊Tokenbridge的工作原理以及如何保證可靠性和安全性。
一、Tokenbridge的特性和模型
在ethereum生態中,tokenbridge允許用戶在兩條鏈上傳輸數據,並且提供了快速和安全的鏈接。tokenbridge作為主鏈和側鏈之間的橋梁,對於資產和數據的轉移起到了決定性的作用。
1. 鏈與網絡的定義
Native(Home):本地鏈(側鏈)是一個快速並且便宜的網絡,所有收集validator的bridge操作都在native這一側執行。
Foregin(主鏈):這邊可以是任何鏈,但通常是指以太坊的主網。
ERC20:在ERC20-ERC20bridge模式中,ERC667作為ERC20的實現可以在NativeSide端被創建和銷毀。
2. Bridge Modes
bridge可以被配置成多種網絡方式。當前支持的方式包括Native-to-ERC20 模式,ERC20-to-ERC20 模式,ERC20-to-Native模式和AMB(arbitrary message bridge)模式。
ERC20 to ERC20 : 兼容的ERC20 token被鎖在 foreign network,同時在native邊創建erc20token(erc677 token);當從navtive向foregin轉移時,erc677token被銷毀,erc20token(foregin)被unlock。
ERC20 to Native :coins被鎖在foregin邊,同時在native邊創建erc20token。xDai用的是這種模式。
AMB Bridge :在兩個鏈之間可以傳遞任意的數據。例如,允許傳輸nft token以及它們的metadata。
3. Bridge Components
bridge也包括一些組件,內容如下:
tokenbridge:監聽事件,發送交易去授權資產傳輸;
bridge ui application:在鏈之間傳輸tokens和coins的dapp gui工具;
bridge monitor: 檢查余額和未處理的events的工具;
bridge deployment playbooks:可選的playbook。對於遠程部署,可以管理token bridge的配置;
bridge smart contract:管理bridge的validator,收集籤名和確認資產傳遞和丟棄。
為了方便理解,我們看一個user case:
這個ERC20-to-ERC20模式的token bridge,展現了用戶如何在主鏈和側鏈直接相互轉账。具體流程如下:
1. 用戶通過交易所購买了需要的tokens;
2. 用戶把購买的token 鎖在 foregin bridge的智能合約裏面,同時這個event會通過 token bridge進行傳遞,在native bridge contract中會創建erc677標准的token,同時發送到用戶账號上;
3. 用戶通過sidechain提供的dapp,使用dapp;
4. 用戶想把sidechain的資產轉移回主鏈,通過燃燒erc677 的token,token bridge把消息傳遞到foreign bridge contract,智能合約解鎖token;
5. 用戶把解鎖後的token,通過交易所賣掉。
token bridge的基本定義,概念,流程都介紹完成了,那么如何去管理一個token bridge呢?包括對於token bridge的升級,維護,配置等等。這裏就需要介紹token bridge中的角色。
二、Token Bridge Roles
tokenbridge上的管理員負責bridge的安全,升級和智能合約的部署。管理員的操作都是通過多籤名來確保安全的。
Administrative Groups and Roles
管理員負責管理bridge的智能合約,並負責validator的管理。管理員分為以下三個組:
1. Group A - 負責管理validator的集合
添加或者刪除validators;
對於validators設置最小所需要的籤名數量。
2. Group B - 負責管理bridge的參數
對於user和validators設置每日限制;
設置每個transaction的min和max的限制;
設置gas price的fallback;
設置終止閾值。
3. Group C - 管理升級
智能合約的升級;
解鎖funds。
Validators Roles
提供100%的正常時間用於傳遞transactions;
在native side監聽UserRequestForSignatures的事件,並籤署一個批准對於傳遞的資產在foreign side;
在native side監聽CollectedSignatures。一旦收集到了足夠的籤名,傳輸所有收集到籤名給foregin side;
在foreign side監聽UserRequestForAffirmation or Transfer事件並對於資產從foregin到native,發送一個准許給native side。
validator的主要作用一方面是監聽兩邊的時間,另外一方面對於交易的傳遞做校驗和傳遞。
Ronin被盜事件中,攻擊者就是通過控制驗證節點的方式盜取資產。Ronin鏈有9個驗證節點,存、取加密資產需要9個驗證者籤名中的5個。攻擊者設法控制了Sky Mavis的4個Ronin驗證器,另一個被控制的是由Axie DAO運行的第三方驗證器。Sky Mavis是Axie Infinity的开發商。
了解了跨鏈橋的工作機制後,對於如何規避Ronin事件類似的跨鏈橋安全問題的再度發生,從社會工程的角度,我們有以下幾點思考:
跨鏈橋項目要關注籤名驗證節點的安全性,確保敏感信息安全存儲;
如果跨鏈橋項目的籤名是在线下進行的,網絡必須更新籤名的安全策略,關閉相關的服務模型,同時要考慮籤名账戶地址被泄漏的風險;
驗證籤名不僅要採取多重籤名的方式,還要確保多籤事實上屬於執行隔離,籤名內容的驗證過程必須獨立進行。
User Roles
這裏就不做過多解釋了,主要就是在主鏈和側鏈之間發起資產傳遞的請求。
三、Component - Monitor
token bridge monitor的主要作用是識別tokenbridge oracle過程中出現的數據不一致和異常情況。monitor從tokenbridge contract 獲取數據以及bridge中的transation,分析他們的健康狀態,並通過Json的數據格式展現出來。
四、總結
我們從另外一個視角分享了sidechain和mainchain的關系,在兩條鏈中資產和數據的傳輸是通過token bridge來保證的:
tokenbridge通過權限角色模型並借助多籤的方式,管理bridge的角色和配置;
validators負責兩邊transaction的確認和傳輸;
monitor負責監控數據的一致性和異常情況。
但是這也暴露了一個問題,tokenbridge的管理權限在admin手中,而admin使用是通過多籤的方式保證安全的,是一種弱中心化的管理方式。所以,對於admin私鑰安全性的管理就成為整個tokenbridge最核心的安全問題。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。