時(shí)間:2023-06-29|瀏覽:249
事后,Sky Mavis COO Alexsander Larsen表示,“Ronin Bridge被攻擊不是因?yàn)橹悄?a title='合約交易開(kāi)戶' target='_blank' class='f_c'>合約存在漏洞,而與社會(huì)工程和人為錯(cuò)誤有關(guān)”。Axie Infinity的投資方Animoca Brands聯(lián)合創(chuàng)始人Yat Siu曾在采訪中提到,“如果一座橋梁能夠鑄造代幣,那它就像鑄造機(jī)一樣……橋梁是權(quán)威,但如果它們?cè)O(shè)計(jì)不當(dāng)或存在漏洞,就會(huì)對(duì)生態(tài)系統(tǒng)構(gòu)成巨大風(fēng)險(xiǎn)。”
本文我們具體聊聊 Tokenbridge 的工作原理以及如何保證可靠性和安全性。
一、Tokenbridge的特性和模型
在 Ethereum 生態(tài)中,Tokenbridge 允許用戶在兩條鏈上傳輸數(shù)據(jù),并且提供了快速和安全的鏈接。Tokenbridge 對(duì)于資產(chǎn)和數(shù)據(jù)的轉(zhuǎn)移起到了決定性的作用。
1.鏈與網(wǎng)絡(luò)的定義
Native(Home):本地鏈(側(cè)鏈)是一個(gè)快速并且便宜的網(wǎng)絡(luò),所有收集 validator 的橋操作都在 native 這一側(cè)執(zhí)行。
Foreign(主鏈):這邊可以是任何鏈,但通常是指以太坊的主網(wǎng)。
ERC20:在 ERC20-ERC20 bridge 模式中,ERC667 作為 ERC20 的實(shí)現(xiàn)可以在 Native Side 端被創(chuàng)建和銷(xiāo)毀。
2.Bridge Modes
Bridge 可以被配置成多種網(wǎng)絡(luò)方式。當(dāng)前支持的方式包括 Native-to-ERC20 模式,ERC20-to-ERC20 模式,ERC20-to-Native 模式和 AMB(Arbitrary Message Bridge)模式。
ERC20 to ERC20:兼容的 ERC20 token 被鎖在 foreign network,同時(shí)在 native 邊創(chuàng)建 ERC20 token(ERC677 token);當(dāng)從 native 向 foreign 轉(zhuǎn)移時(shí),ERC677 token 被銷(xiāo)毀,ERC20 token(foreign)被解鎖。
ERC20 to Native:coins 被鎖在 foreign 邊,同時(shí)在 native 邊創(chuàng)建 ERC20 token。xDai 用的是這種模式。
AMB Bridge:在兩個(gè)鏈之間可以傳遞任意的數(shù)據(jù)。例如,允許傳輸 NFT token 以及它們的元數(shù)據(jù)。
3.Bridge Components
Bridge 也包括一些組件,內(nèi)容如下:
- Tokenbridge:監(jiān)聽(tīng)事件,發(fā)送交易去授權(quán)資產(chǎn)傳輸; - Bridge UI Application:在鏈之間傳輸 tokens 和 coins 的 dapp GUI 工具; - Bridge Monitor:檢查余額和未處理的 events 的工具; - Bridge Deployment Playbooks:可選的 playbook。對(duì)于遠(yuǎn)程部署,可以管理 Tokenbridge 的配置; - Bridge Smart Contract:管理 bridge 的 validator,收集簽名和確認(rèn)資產(chǎn)傳遞和丟棄。
為了方便理解,我們看一個(gè) use case:
這個(gè) ERC20-to-ERC20 模式的 Tokenbridge,展現(xiàn)了用戶如何在主鏈和側(cè)鏈直接相互轉(zhuǎn)賬。具體流程如下:
1.用戶通過(guò)交易所購(gòu)買(mǎi)了需要的 tokens; 2.用戶把購(gòu)買(mǎi)的 token 鎖在 foreign bridge 的智能合約里面,同時(shí)這個(gè) event 會(huì)通過(guò) Tokenbridge 進(jìn)行傳遞,在 native bridge contract 中會(huì)創(chuàng)建 ERC677 標(biāo)準(zhǔn)的 token,同時(shí)發(fā)送到用戶賬號(hào)上; 3.用戶通過(guò) sidechain 提供的 dapp,使用 dapp; 4.用戶想把 sidechain 的資產(chǎn)轉(zhuǎn)移回主鏈,通過(guò)燃燒 ERC677 的 token,Tokenbridge 把消息傳遞到 foreign bridge contract,智能合約解鎖 token; 5.用戶把解鎖后的 token,通過(guò)交易所賣(mài)掉。
Tokenbridge 的基本定義、概念、流程都介紹完成了,那么如何去管理一個(gè) Tokenbridge 呢?包括對(duì)于 Tokenbridge 的升級(jí)、維護(hù)、配置等等。這里就需要介紹 Tokenbridge 中的角色。
二、TokenBridge Roles
Tokenbridge 上的管理員負(fù)責(zé) bridge 的安全、升級(jí)和智能合約的部署。管理員的操作都是通過(guò)多簽名來(lái)確保安全的。
Administrative Groups and Roles
管理員負(fù)責(zé)管理 bridge 的智能合約,并負(fù)責(zé) validator 的管理。管理員分為以下三個(gè)組:
1.Group A - 負(fù)責(zé)管理 validator 的集合 - 添加或者刪除 validators; - 對(duì)于 validators 設(shè)置最小所需要的簽名數(shù)量。 2.Group B - 負(fù)責(zé)管理 bridge 的參數(shù) - 對(duì)于 user 和 validators 設(shè)置每日限制; - 設(shè)置每個(gè) transaction 的 min 和 max 的限制; - 設(shè)置 gas price 的 fallback; - 設(shè)置終止閾值。 3.Group C - 管理升級(jí) - 智能合約的升級(jí); - 解鎖 funds。
Validators Roles
- 提供100%的正常時(shí)間用于傳遞 transactions; - 在 native side 監(jiān)聽(tīng) UserRequestForSignatures 的事件,并簽署一個(gè)批準(zhǔn)對(duì)于傳遞的資產(chǎn)在 foreign side; - 在 native side 監(jiān)聽(tīng) CollectedSignatures。一旦收集到了足夠的簽名,傳輸所有收集到的簽名給 foreign side; - 在 foreign side 監(jiān)聽(tīng) UserRequestForAffirmationorTransfer 事件,并對(duì)于資產(chǎn)從 foreign 到 native,發(fā)送一個(gè)準(zhǔn)許給 native side。
Validator 的主要作用一方面是監(jiān)聽(tīng)兩邊的事件,另外一方面對(duì)于交易的傳遞做校驗(yàn)和傳遞。
Ronin 被盜事件中,攻擊者就是通過(guò)控制驗(yàn)證節(jié)點(diǎn)的方式盜取資產(chǎn)。Ronin 鏈有9個(gè)驗(yàn)證節(jié)點(diǎn),存、取加密資產(chǎn)需要9個(gè)驗(yàn)證者簽名中的5個(gè)。攻擊者設(shè)法控制了 Sky Mavis 的4個(gè) Ronin 驗(yàn)證器,另一個(gè)被控制的是由 AxieDAO 運(yùn)行的第三方驗(yàn)證器。Sky Mavis 是 Axie Infinity 的開(kāi)發(fā)商。
了解了跨鏈橋的工作機(jī)制后,對(duì)于如何規(guī)避 Ronin 事件類(lèi)似的跨鏈橋安全問(wèn)題的再度發(fā)