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

2019年08月26日 11:16

关注

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,直接调整账户余额

阅读 1355

20
分享

评论

暂无评论

推荐阅读

波场TRON

05月04日 17:12

关注
596 次阅读
评论
18
分享

K站的朋友们

06月04日 11:05

关注
32370 次阅读
7
50
分享

aelf

04月21日 19:25

关注
997 次阅读
评论
31
分享

波场TRON

05月18日 15:58

关注
480 次阅读
评论
22
分享

TezosChina

首发

04月23日 16:39

关注
1727 次阅读
1
7
分享

波场TRON

05月18日 15:57

关注
407 次阅读
评论
27
分享

CocosBCX

05月09日 12:06

关注
680 次阅读
评论
24
分享

真本聪RealSatoshi

原创

04月26日 14:08

关注
5631 次阅读
9
20
分享

哔哔News

原创

05月21日 11:31

关注
2749 次阅读
3
15
分享

波场TRON

05月05日 12:57

关注
623 次阅读
评论
12
分享
加载更多