SUN Network开发者文档 | 第五期:关于DAppChain——主侧链交互所涉及详细步骤

波场TRON

08-26

SUN Network 计划是波场主网的扩容计划, 包含智能合约应用侧链(DAppChain), 跨链通讯等一系列扩容项目。SUN Network 整体计划将在为波场TRON主网提供接近无限扩容能力的同时,为波场TRON DApp乃至整体生态系统的发展提供更多可能性。我们将设置SUN Network开发者文档专栏,定期把更完整的侧链开发者手册内容传送给开发者。

1 概述

为了实现主链与侧链之间的交互通信, DAppchain 实现了三个模块:主链的网关合约、Oracle 服务、侧链的网关合约。

其中 Oracle 通过 Kafka 监听来自主链网关合约、侧链网关合约的消息,实现主侧链之间的交互通信。只有当主链与侧链之间的交互被超过 2/3 的 Oracle 共识,才能够被认为有效的交易。

主侧链之间交互动作主要分为三类:TRC20/TRC721 合约映射、存款功能、取款功能。

2 TRC20/TRC721 合约映射(Mapping)

当用户使用 TRC20/TRC721 合约时,通过在主链触发 TRC20/TRC721 合约映射,将在主链部署的 TRC20/TRC721 合约映射到侧链的对应的合约,即用户无需在侧链手动部署 TRC20/TRC721 合约。

具体流程为:

  1. Deployer 先在主链部署 TRC20/TRC721 合约
  2. 资产所有者调用 gateway 中的部署映射合约方法去创建相应的 TRC20/TRC721 合约,Gateway 合约验证映射合法性。如果验证通过,将会产生 Deploy 事件
  3. oracle 监听侧链 Deploy 事件
  4. oracle 调用侧链 Gateway 合约在侧链创建基础功能的 TRC20/TRC721 合约,并将主链与侧链的合约进行映射。

3 存款功能(Deposit)

当用户需要将主链上的资产转移到侧链时,需要调用主链网关合约的存款功能。
具体流程为:
  1. 如果使用 TRC20/TRC721 代币,需要调用 TRC20/TRC721 合约 approve 方法,允许 gateway 转移自己资产(使用 TRX 无需此步)。
  2. 调用主链网关合约的 deposit 方法
  3. Oracle 监听 Deposit 事件
  4. Oracle 调用侧链网关合约进行资产转移操作
  5. 如果使用 TRC20/TRC721 代币,需要在侧链上 mint 相应数量的代币;如果使用 TRX 直接增加账户余额

4 取款功能(Withdraw)

当用户需要将侧链上的资产转移到主链时,需要调用侧链网关合约的取款功能。
具体流程为:
  1. 如果使用 TRC20/TRC721 合约,调用合约的 withdraw 方法,合约会再去调用网关合约。如果使用 TRX,直接调用侧链网关合约进行取款操作。
  2. Oracle 监听取款事件
  3. 调用主链网关合约的取款方法
  4. 如果使用 TRC20/TRC721 合约,则网关合约会再调用合约方法;如果使用 TRX,直接调整账户余额

评论

暂无评论

推荐阅读

关注
关注
关注
关注
关注
关注
关注
关注
关注
关注
加载更多