Nervos x Gitcoin bounty 任务9:从 Layer2 发起取款回 Layer1

  • Nervos
  • 更新于 2021-09-13 13:24
  • 阅读 207

使用区块链 Layer2 网络的自然而然会有一个步骤是提取资金。在 Layer1 网络中,这个概念通常通过交易所或跨链桥的方式存在。

在 Godwoken 中,把你的资金取出来的最基本方法是使用内置的提现机制。

使用区块链 Layer2 网络的自然而然会有一个步骤是提取资金。在 Layer1 网络中,这个概念通常通过交易所或跨链桥的方式存在。

在 Godwoken 中,把你的资金取出来的最基本方法是使用内置的提现机制。

由于 Godwoken(Optimistic Rollup 架构)的性质,这是一个缓慢的过程。从开始提款的过程到 Layer1 实际收到资金,你需要等待 5 天。当然这是出于安全考虑。强制等待时间被称为“挑战”期,它给了网络运营者检查和挑战恶意交易的时间。

注1: Optimistic Rollup 安全假设是网络中至少有一个诚实节点。 注2:未来可能存在其他解决方案,允许更快地提取资产。

任务说明

在本任务中,您将使用 Godwoken 的 Godwoken Examples Tools Package 来运行“取款(Withdraw)”命令。它将启动取款的程序。

在你执行“取款”命令后,你需要等待 5 天,你的资金才可以“解锁(Unlocked )”。具体操作请参见独立的教程。

以上是由于 Optimstic Rollup 的本质。一个较长的所谓的“挑战”周期允许网络中的节点提交挑战,并在出现问题时回滚恶意交易。

在请求提取资金到能够实际解锁之间的这段时间内,必须确保网络中的交易是有效的,并且确保您是提取的资产的真正所有者。

提取条件

在开始这个任务之前,您必须完成在 EVM Layer 2 Testnet 上创建 Godwoken 帐户的首要任务。您还需要在第一个任务中的私钥和测试网地址,以便继续进行。如果您还没有完成,请现在先完成它。

你可以在这里找到 Godwoken Examples Tools Package 的安装说明。

1. 执行 Withdraw 取款命令

假设您已经满足了先决条件并创建了帐户,您将能使用 Godwoken 范例工具包执行“withdraw”命令。它将启动一个取款程序。

cd godwoken-examples
node ./packages/tools/lib/account-cli.js withdraw -r <INSERT_TESTNET_RPC_URL> -p <YOUR_ETHEREUM_PRIVATE_KEY> -o <YOUR_LAYER1_ADDRESS> -c <SHANNONS_AMOUNT>
  1. <INSERT_TESTNET_RPC_URL> :您会用到的 CKB 测试网节点的 RPC URL。你可以设置你本地的测试网节点,或者你可以使用任何公共的节点。 本地测试网 CKB 节点链接:http://127.0.0.1:8114 公共测试网 CKB 节点链接:http://3.235.223.161:18114
  2. <YOUR_ETHEREUM_PRIVATE_KEY> :这是您 Layer 2 账户的以太坊私钥,其中包含之前存入的CKBytes。始终确保您私钥的前缀为「0x」。
  3. <YOUR_LAYER_1_ADDRESS> :这是您在 Nervos CKB Layer 1 的地址,将用于从 Layer 2 接收资金。如果您使用ckb-cli 生成您的帐户,您可以使用 account list 命令查看它们。
  4. <SHANNONS_AMOUNT> :要转账的 CKBytes 的数量,以 Shannons 为单位。Shannons 是Nervos 中的一个度量单位,相当于比特币中的聪。我们建议存储 400 CKBytes,这是 Godwoken 所需的最小数量。一个 CKBye 中 100,000,000 Shannons ,这个值必须用 Shannons 表示。例如:400 * 100,000,000 = 40,000,000,000

范例:填入含有所有变数的最终命令

cd godwoken-examples
node ./packages/tools/lib/account-cli.js withdraw -c 40000000000 -p 0xd9066ff9f753a1898709b568119055660a77d9aae4d7a4ad677b8fb3d2a571e5 -o ckt1qyq9u5vzgtklnqrr6cevra7w2utrsxmjgefs72sfju -r <http://3.235.223.161:18114>
  • 范例:成功的输出如下
    LUMOS_CONFIG_NAME: AGGRON4
    owner lock hash: 0x5c7253696786b9eddd34e4f6b6e478ec5742bd36569ec60c1d0487480ba4f9e3
    eth address: 0xd173313a51f8fc37bcf67569b463abd89d81844f
    l2 lock hash: 0x8016dcd1af7c8cceda53e4d2d2cd4e2924e245b629e0f81f3f64969787b2b049
    --- godwoken withdraw ---
    nonce: 92
    rollupTypeHash: 0x4cc2e6526204ae6a2e8fcf12f7ad472f41a1606d5b9624beebd215d780809f6a
    withdrawalRequest: {
    raw: {
      nonce: '0x5c',
      capacity: '0x9502f9000',
      amount: '0x0',
      sudt_script_hash: '0x0000000000000000000000000000000000000000000000000000000000000000',
      account_script_hash: '0x8016dcd1af7c8cceda53e4d2d2cd4e2924e245b629e0f81f3f64969787b2b049',
      sell_amount: '0x0',
      sell_capacity: '0x2540be400',
      owner_lock_hash: '0x5c7253696786b9eddd34e4f6b6e478ec5742bd36569ec60c1d0487480ba4f9e3',
      payment_lock_hash: '0x0000000000000000000000000000000000000000000000000000000000000000',
      fee: { sudt_id: 1, amount: 0n }
    },
    signature: '0xd9f5bf8fa5ff21fd8d43b5cd09122938ef9c84825f633d645432bd61763253f323ab9579328a5f4a4b09d8247fae1b4d1788d8c956d79cc0769e507d8643820101'
    }
    result: null
    --- godwoken withdraw finished ---
    Your account id: 13
    ckb balance in godwoken is: 399999661932
    Success! Withdrawal request sent. You need to wait now for challenge period duration to unlock the funds.

如果你在输出的结果最后面看到 Success! Withdrawal request sent. You need to wait now for challenge period duration to unlock the funds.,那恭喜你,这意味着你已经成功启动了取款过程。

注意:这就只是个任务。记住,从 Nervos 的 Layer 2 取款是一个两步的过程。你现在需要等待挑战期间期间,实际上真正收到资金回到 Layer1,然后执行“解锁(Unlock)”命令才算。

任务提交

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

  1. 运行“Withdraw”命令后控制台输出的屏幕截图。
  2. 你用于 Layer2 账户的以太坊地址。
  3. 你的"Withdraw"命令要传送到的 Nervos Layer1 地址。
点赞 2
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Nervos
Nervos
Nervos Network 是一个开源的公链生态,包含以区块链技术为核心、相互兼容的一组分层协议,来解决区块链可扩展性上的困境。Nervos CKB 是一条基于 PoW 共识机制的多资产价值存储公链,是加密经济网络安全、可信并且可持续发展的根基,通过「价值存储」的加密经济设计使得原生代币 CKBytes 捕获整个网络的价值。