智能合约跨链

虽然TRON已经实现了基于TRC10代币的跨链转账,但这种纯基于代币的跨链机制存在一定的局限性。TVM 为开发者提供了一个灵活、安全、可编程的环境,可以使用 Solidity 语言开发合约,智能合约的跨链调用为TRON的跨链生态带来了更多的可能性。因此,智能合约跨链也成为了TRON跨链生态中必不可少的一环。

与TRC-10的跨链相比,智能合约的跨链复杂度较高。以下例来说明:

设想如下场景:

TRON主链上的Tom要转100个USDT给平行链上的Jerry。要完成这笔交易,要满足一些条件:

对于合约的部署者Tether来说:

  • 在TRON主链和平行链同时部署了USDT合约;
  • 编写了专用于跨链转账的合约方法;

对于Tom和Jerry来说:

  • 拥有足够的Solidity知识,能确认合约方法逻辑是否和和预想的一致

对于平行链的维护者来说:

  • 保证proxy账户是激活的,并且有一定余额以支付合约调用手续费

当满足条件时,Tom只要调用TRON主链上的跨链转账方法,Jerry就可以收到相应的代币了。

在上面的例子中提到了一些条件,可抽象归纳为:

  1. 跨链合约必须同时部署在源链和目标链上
  2. 支持跨链调用的合约方法必须同时在两条链上都存在,并且方法名以及参数必须完全一致
  3. 用户在编写合约方法时,需要自己主动为方法新增 fromContractAddr(源链的合约地址)和toContractAddr(目标链的合约地址)两个参数
  4. 目标链在接收到跨链合约后会将待执行的合约交易owner设置为proxy地址,同时跨链合约方法中需要判断owner地址是否为proxy地址,以防非法用户恶意调用
  5. Proxy账户在对应的链上应该是激活状态,并且保留一定的量的余额以便于配合计算能量消耗