Nervos x Gitcoin bounty 任务4:在 Layer1 发行一个 sUDT token,然后将他存到 Layer2 上面

在本任务中,我们在 Layer1 上创建一个通证,然后将其移动到 Nervos 的 EVM兼容 Layer2 。Layer1 上通证牌将使用 SUDT 标准,这是 Nervos 上最基础的资产形式。当通证移动到 Layer2 时,它被转换为 ERC20 标准的通证,这是支持以太坊虚拟机(EVM)的区块链上最流行的通证标准。

在本任务中,我们在 Layer1 上创建一个通证,然后将其移动到 Nervos 的 EVM兼容 Layer2 。Layer1 上通证牌将使用 SUDT 标准,这是 Nervos 上最基础的资产形式。当通证移动到 Layer2 时,它被转换为 ERC20 标准的通证,这是支持以太坊虚拟机(EVM)的区块链上最流行的通证标准。

在 Nervos 的 Layer2 使用 ERC20 通证的原因是这样能确保与 EVM 智能合约的完全兼容性。这能让既存的那些适用于 ERC20 代币标准的智能合约无需修改就能继续运作。由于 EVM Layer2 是 Optimistic rollup,因此任何基于 Godwoken 的dApp 在将立即获得更高的 TPS,同时对所有用户的交易费用也将大幅降低。

在未来,Godwoken + Polyjuice 这个 Layer2 还可以添加对其他区块链的支持,如 Cardano、Polkadot 和 Stellar。这使得 Nervos 能够支持几乎任何平台、任何公链的智能合约,以及它们各自的通证标准。基于任何标准的所有通证也将能够在不同层和不同的执行环境之间自由转移,从而实现以前在许多其他平台上难以实现的资产转移能力。

任务说明

注意:在进行这个任务前,我们推荐你先看一下任务提交的部份,这样一来你可以知道你要提交说明材料给评委审批。

我们将首先在 Layer1 上发出一个 SUDT 通证。为此,您需要使用你在测试网上已经存入 CKBytes 的 Layer1 帐户的私钥。这个私钥您应该已经从前面的任务中获得了。有了含有 ckbytes 的帐户后,可以使用 sudt-cli 这个工具在 Layer1 测试网上创建一个 sudt 通证。

注意:你的私钥是用来保护你的账户和账户内的所有资金和资产。保证你的私钥安全,并且只使用您可以信任的工具这两点是重要的。在这些任务中,我们将只会使用测试网上的资金,以及没有价值的资产,这样一来你可以在知道这里任何风险的前提下毫不担心地进行操作。

1. 设置一个具有资金的 Layer1 账户

第一步是用测试网的 ckbytes 建立一个账户。如果您在以前的任务中完成了这个步骤,您可以直接用现有帐户。如果没有,你可以先完成本教程中的步骤。

在您的帐户设置好,资金也存入了之后,请记录下您的私钥和相应的测试网地址。然后你将可以使用 sudt-cli`工具在 Nervos 的 Layer1 上发行通证!

2.使用 sudt-cli 工具在 Layer1 上发行 SUDT 通证

下一步是在 Nervos 的 Layer1 上创建一个 SUDT token。这个步骤您可以使用 sudt-cli 命令行工具完成。此工具将会使用您的私钥来访问相应帐户上的资产,以创建 SUDT 通证。

您可以按照本教程中的说明使用 sudt-cli ,并且在测试网上使用您的 Layer1 私钥发出和使用SUDT通证。

3. 设置 Godwoken Example 工具包

下一步是克隆 Godwoken Examples工具包并准备来使用他。这个工具包包含了我们与 Godwoekn 交互所需要的代码。

你可以参照这个教程的说明来设置 Godwoken Example 工具包。

4.存入 Layer1 的 SUDT 通证到 Layer2 以创建一个 Godwoken 账户

要将您的SUDT 通证存储到 Layer2 ,您需要在 godwoken-examples 的目录中执行以下命令。将下面命令模板中的<VARIABLES> 替换为与您的帐户和节点信息匹配的值。

node ./packages/tools/lib/account-cli.js deposit-sudt -m 20 -s <INSERT_SUDT_ISSUER_LOCK_HASH> -p <INSERT_PRIVATE_KEY> -l <INSERT_ETH_ADDRESS> -r <INSERT_TESTNET_RPC_URL> -i <INSERT_TESTNET_INDEXER_URL>

变量说明:

  1. <INSERT_SUDT_ISSUER_LOCK_HASH> :这是来自 SUDT-CLI 工具的发行者的 lock 哈希,在您发出通证或检查余额后可见。这与 “SUDT Type Script Args” 的值相同,根据所使用的SUDT- CLI 版本,您可能也会看到这个值。如果您不确定如何获得它,请重新阅读使用命令行界面发行 SUDT教程
  2. <INSERT_PRIVATE_KEY> :这是您 Nervos Layer1 帐户的私钥。如何获取它的说明在本教程的第一步。始终确保您私钥的前缀为「0x」。
  3. <INSERT_ETH_ADDRESS> :MetaMask上您账户的以太坊地址。这将用于接收 Layer2 上的资金,这可以在 MetaMask 中通过点击钱包内的地址找到,如下所示。
  • Metamask 截图画面 image.png
  1. <INSERT_TESTNET_RPC_URL> :您会用到的 CKB 测试网节点的 RPC URL。你可以设置你本地的测试网节点,或者你可以使用任何公共的节点。 本地测试网 CKB 节点链接:http://127.0.0.1:8114 公共测试网 CKB 节点链接:http://3.235.223.161:18114
  2. <INSERT_INDEXER_RPC_URL> :您将使用的测试网 CKB 索引器的 RPC URL。如果您使用的是本地索引器,这应该是您的本地地址;如果您使用的是公共索引器,这也可以是公共地址。 本地测试网 CKB 索引器链接:http://127.0.0.1:8116 公共测试网 CKB 索引器链接:http://3.235.223.161:18116

附带所有参数值的完整命令示例:

node ./packages/tools/lib/account-cli.js deposit-sudt -m 20 -s 0x5c7253696786b9eddd34e4f6b6e478ec5742bd36569ec60c1d0487480ba4f9e3 -p 0x79682c20bbcaf7fcf18eb0c69b133c872227ceb88971090e7f2242c80cd54d18 -l 0xD173313A51f8fc37BcF67569b463abd89d81844f -r <http://3.235.223.161:18114> -i <http://3.235.223.161:18116>

注意:「account-cli」工具正在使用 CKB Nodeckb-indexer。确保这两个工具在第一次使用时都与测试网同步。

  • 示范代码输出的结果如下:
    LUMOS_CONFIG_NAME: AGGRON4
    Indexer is syncing. Please wait...
    Syncing 99.99% completed.
    Indexer synchronized.
    Using ETH address: 0xD173313A51f8fc37BcF67569b463abd89d81844f
    Using CKB address: ckt1qyq9u5vzgtklnqrr6cevra7w2utrsxmjgefs72sfju
    Layer 2 lock script hash: 0x8016dcd1af7c8cceda53e4d2d2cd4e2924e245b629e0f81f3f64969787b2b049
    Your address: 0x8016dcd1af7c8cceda53e4d2d2cd4e2924e245b6
    Layer 1 sUDT script hash: 0xaaa98d5a0880fac496e42a1ed57b14a2cbd0acd6e57cad451e99c1f391fc62bc
    Transaction hash: 0x9fc8472dd5677519240587d093fb9307309265ee927b11d69ae924d3c5a07409
    --------- wait for token deposit transaction ----------
    tx 0x9fc8472dd5677519240587d093fb9307309265ee927b11d69ae924d3c5a07409 is pending, waited for 0 seconds
    ...
    tx 0x9fc8472dd5677519240587d093fb9307309265ee927b11d69ae924d3c5a07409 is proposed, waited for 30 seconds
    tx 0x9fc8472dd5677519240587d093fb9307309265ee927b11d69ae924d3c5a07409 is committed, waited for 40 seconds
    tx 0x9fc8472dd5677519240587d093fb9307309265ee927b11d69ae924d3c5a07409 is committed!
    CKB balance in Godwoken is: 2239996473241 Shannons.
    Waiting for Layer 2 block producer to collect the deposit cell ... 0 seconds.
    Your account id: 13
    Your sUDT id: 17
    Waiting for Layer 2 block producer to collect the deposit cell ... 10 seconds.
    CKB balance in Godwoken is: 2339996473241 Shannons.
    sUDT balance in Godwoken is: 80.
    Deposit success!

恭喜你!您刚刚已经将您的 Layer1 SUDT 通证变成 ERC20 通证存入您的以太坊兼容的 Layer2 账户了!

可能的错误和解决方案

  • 如果你得到错误是:“Not enough capacity in from infos!”,那么它意味着你的 Layer1 账户(通过你的私钥访问的)没有足够的资金来执行操作。
  • 如果您得到错误:“Not enough amount in from infos!”,那么它意味着您在运行此命令之前没有在 Layer1上发出的通证,或者您发出的通证数量少于您现在想要存入 Layer2 的数量。

任务提交

为了完成任务,你需要提交以下材料供评委评审:

  1. 您存入资金的 Layer1 地址的测试网浏览器链接
  2. 在使用sudt-cli在 Layer1 创建您的 SUDT 通证后控制台输出的屏幕截图。
  3. 一个由sudt-cli 创建交易 ID 后的测试网浏览器链接。
  4. 使用account-cli 工具成功向 Layer 2 提交存款后,控制台输出的屏幕截图。
  5. 在执行存款脚本后,控制台输出中的SUDT ID(文本格式)。

0 条评论

请先 登录 后评论
Nervos
Nervos

22 篇文章, 114 学分