为了使用在 Layer1Layer2 之间移动的 SUDT 通证,您需要部署 ERC20 代理合约来与它们交互。这个特殊的 solidity 智能合约是由 Nervos 团队准备的,允许 EVM 与 Nervos 上的 SUDT 通证交互。

ERC20 代理合约是修改后的 ERC20 solidity 合约,其中 token balance 和 transfer 的函数已被修改,好让他能直接与 Polyjuice EVM 兼容层交互。这允许以太坊智能合约使用 ERC20 接口在 Layer2 使用 SUDT 通证。

任务说明

注意:在开始任务之前,建议您检查任务提交部分,这样您就知道您需要提供哪些材料,以审查您的任务提交。

我们将使用一些示例代码,你将需要用你的私钥和以太坊地址等值填充这些代码。更新这些值之后,我们将执行脚本来部署 ERC20 代理合约,然后我们将使用它在 Nervos 的 Layer2 上检查您的 SUDT余额!

注意:你的私钥是用来保护你的账户和账户内的所有资金和资产。重要的是要保证私钥的安全,并且只使用您可以信任的工具。然而,在这些任务中,我们将只使用测试网资金和没有价值的资产。你可以毫不担心地操作,因为这里没有任何风险。

先决条件

要部署 ERC20 代理合约(也称为 SUDT-ERC20 代理合约),首先需要有 Layer2 上的 SUDT ID。这可以通过使用 account-cli 工具将 SUDT 存入 Layer2 来实现,这是在前面的任务中完成的。如果您还没有完成此任务,请在继续本任务之前完成。

该任务需要在任务2 中设置的 Gitcoin Task Instruction Examples repo (gw-gitcoin-instruction)。如果你出于任何原因还没有这个仓库,那请你现在设置它。

1. 编译智能合约并复制工件

在部署智能合约之前,需要对其进行编译。我们的说明将向您展示如何使用 Truffle 编译器快速编译智能合约。

以下 SUDT-ERC20 代理的 solidity 智能合约为 SudtERC20Proxy.sol。它位于 [gw-gitcoin-instruction/src/examples/5-erc20-proxy/contracts/SudtERC20Proxy.sol](https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/examples/5-erc20-proxy/contracts/SudtERC20Proxy.sol) 的文件中。

下面的命令可以使用 Truffle 编译器将 solidity 编译成 EVM 字节码。这个过程我们将使用 Docker。如果您没有安装 Docker,请重新访问任务设置和需求页面。

cd ~/projects/gw-gitcoin-instruction/src/examples/5-erc20-proxy
yarn compile

命令完成后,您将在 build/contracts 目录中找到编译后的文件。例如 src/examples/5-erc20-proxy/build/contracts/SudtERC20Proxy.json

2. 使用 Web3.js 来部署 SUDT-ERC20 代理合约

接下来,我们将使用范例代码来部署智能合约。在选择的编辑器中打开 src/examples/5-erc20-proxy/index.js 文件。你需要更新 index.js 中的值,以匹配你的以太坊私钥和 SUDT ID。

Ethereum私钥 该私钥将用于部署智能合约,并且它应该与之前任务中添加资金的以太坊私钥相同。确保在 Layer2 使用以太坊私钥,而不是 Nervos CKB 的 Layer1 私钥。我们会用这个值替换<YOUR_ETHEREUM_PRIVATE_KEY>。始终确保您私钥的前缀为「0x」