2

解析 Tokenbridge 工作原理及如何保证可靠性和安全性

 2 years ago
source link: https://www.btc798.com/articles/89954.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

解析 Tokenbridge 工作原理及如何保证可靠性和安全性

BTCWan17小时前2043

前段时间,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:

1649673144465814.jpg

这个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事件类似的跨链桥安全问题的再度发生,从社会工程的角度,我们有以下几点思考:

  1. 跨链桥项目要关注签名验证节点的安全性,确保敏感信息安全存储;

  2. 如果跨链桥项目的签名是在线下进行的,网络必须更新签名的安全策略,关闭相关的服务模型,同时要考虑签名账户地址被泄漏的风险;

  3. 验证签名不仅要采取多重签名的方式,还要确保多签事实上属于执行隔离,签名内容的验证过程必须独立进行。

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最核心的安全问题。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK