时间:2023-06-29|浏览:202
事后,Sky Mavis COO Alexsander Larsen表示,“Ronin Bridge被攻击不是因为智能合约存在漏洞,而与社会工程和人为错误有关”。Axie Infinity的投资方Animoca Brands联合创始人Yat Siu曾在采访中提到,“如果一座桥梁能够铸造代币,那它就像铸造机一样……桥梁是权威,但如果它们设计不当或存在漏洞,就会对生态系统构成巨大风险。”
本文我们具体聊聊 Tokenbridge 的工作原理以及如何保证可靠性和安全性。
一、Tokenbridge的特性和模型
在 Ethereum 生态中,Tokenbridge 允许用户在两条链上传输数据,并且提供了快速和安全的链接。Tokenbridge 对于资产和数据的转移起到了决定性的作用。
1.链与网络的定义
Native(Home):本地链(侧链)是一个快速并且便宜的网络,所有收集 validator 的桥操作都在 native 这一侧执行。
Foreign(主链):这边可以是任何链,但通常是指以太坊的主网。
ERC20:在 ERC20-ERC20 bridge 模式中,ERC667 作为 ERC20 的实现可以在 Native Side 端被创建和销毁。
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 边创建 ERC20 token(ERC677 token);当从 native 向 foreign 转移时,ERC677 token 被销毁,ERC20 token(foreign)被解锁。
ERC20 to Native:coins 被锁在 foreign 边,同时在 native 边创建 ERC20 token。xDai 用的是这种模式。
AMB Bridge:在两个链之间可以传递任意的数据。例如,允许传输 NFT token 以及它们的元数据。
3.Bridge Components
Bridge 也包括一些组件,内容如下:
- Tokenbridge:监听事件,发送交易去授权资产传输; - Bridge UI Application:在链之间传输 tokens 和 coins 的 dapp GUI 工具; - Bridge Monitor:检查余额和未处理的 events 的工具; - Bridge Deployment Playbooks:可选的 playbook。对于远程部署,可以管理 Tokenbridge 的配置; - Bridge Smart Contract:管理 bridge 的 validator,收集签名和确认资产传递和丢弃。
为了方便理解,我们看一个 use case:
这个 ERC20-to-ERC20 模式的 Tokenbridge,展现了用户如何在主链和侧链直接相互转账。具体流程如下:
1.用户通过交易所购买了需要的 tokens; 2.用户把购买的 token 锁在 foreign bridge 的智能合约里面,同时这个 event 会通过 Tokenbridge 进行传递,在 native bridge contract 中会创建 ERC677 标准的 token,同时发送到用户账号上; 3.用户通过 sidechain 提供的 dapp,使用 dapp; 4.用户想把 sidechain 的资产转移回主链,通过燃烧 ERC677 的 token,Tokenbridge 把消息传递到 foreign bridge contract,智能合约解锁 token; 5.用户把解锁后的 token,通过交易所卖掉。
Tokenbridge 的基本定义、概念、流程都介绍完成了,那么如何去管理一个 Tokenbridge 呢?包括对于 Tokenbridge 的升级、维护、配置等等。这里就需要介绍 Tokenbridge 中的角色。
二、TokenBridge 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。一旦收集到了足够的签名,传输所有收集到的签名给 foreign side; - 在 foreign side 监听 UserRequestForAffirmationorTransfer 事件,并对于资产从 foreign 到 native,发送一个准许给 native side。
Validator 的主要作用一方面是监听两边的事件,另外一方面对于交易的传递做校验和传递。
Ronin 被盗事件中,攻击者就是通过控制验证节点的方式盗取资产。Ronin 链有9个验证节点,存、取加密资产需要9个验证者签名中的5个。攻击者设法控制了 Sky Mavis 的4个 Ronin 验证器,另一个被控制的是由 AxieDAO 运行的第三方验证器。Sky Mavis 是 Axie Infinity 的开发商。
了解了跨链桥的工作机制后,对于如何规避 Ronin 事件类似的跨链桥安全问题的再度发
用戶喜愛的交易所
已有账号登陆后会弹出下载