Nervos x Gitcoin bounty 任务6:通过 Force Bridge 将 token 从以太坊存到 Polyjuice

在这个任务中,你将使用 Force Bridge 从以太坊 Rinkeby 测试网将 ETH 转到 Nervos Layer 2 上变成 ckETH。ETH 是以太坊上的原生资产,它在 Nervos 上使用 ckETH 来表示他是一个包装过的 sudt 通证。ckETH SUDT 通证是 Nervos 上的原生资产,它可以在 Layer1 和 Layer2 之间使用,并且得到Nervos 生态系统内所有工具的广泛支持。

在区块链之间移动资产是未来构建跨链 dApp 的一个极其重要的部分。开发人员不仅需要在安全的基础设施上来构建 dApp ,而且最终用户的体验必须简单明了。 Nervos 的跨链互操作性 2.0 解决方案是实现这些目标的主要步骤。在此基础上是 Force Bridge 这个去中心化的跨链桥,可以在 Nervos 和其他区块链之间转移资产。Force Bridge 目前处于最后的测试阶段了,已经支持将通证在 CKB 和 以太坊 Rinkeby 测试网之间转移。 Cardano 的跨链桥也已宣布,并处于开发的后期阶段。在可预见的未来 ForceBridge 将会支持更多的区块链,继续强化 Force Bridge 的跨链网络。 ## 任务说明 *注意:在开始任务之前,建议您检查[任务提交](https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/tasks/6.use.force.bridge.to.deposit.md#task-submission)部分,这样您就知道您需要提供哪些材料给裁判,以审查您的任务提交。* 在这个任务中,你将使用 Force Bridge 从以太坊 Rinkeby 测试网将 ETH 转到 Nervos Layer 2 上变成 ckETH。ETH 是以太坊上的原生资产,它在 Nervos 上使用 ckETH 来表示他是一个包装过的 sudt 通证。ckETH SUDT 通证是 Nervos 上的原生资产,它可以在 Layer1 和 Layer2 之间使用,并且得到Nervos 生态系统内所有工具的广泛支持。 为了做到这一点,我们将使用 MetaMask 和 Force Bridge 将 ETH 从 Rinkeby 测试网直接传输到Nervos 的 Layer 2。在你操作的背后,资产将从以太坊经过 Force Bridge,再到 Nervos Layer 1,最后到 Nervos Layer 2,但从终端用户的角度来看,这一切都将在一个步骤中完成。 ### 先决条件 此任务需要在[任务2](https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/tasks/2.deploy.eth.contract.md#2-clone-and-setup-the-gitcoin-task-instruction-examples)中设置的 Gitcoin Task Instruction Examples (gw-gitcoin-instruction)仓库。如果还没有这个仓库,请你现在设置它。 ### 1. 在 Rinkeby 测试网中设置 MetaMask 帐户 打开 MetaMask 并选择你想要用于 Force Bridge 转账的以太坊账户。这个账户也该是你在 Nervos 的 Layer2 使用的以太坊账户。然后从“Network”下拉框中选择“Rinkeby测试网络”。 ![image.png](https://img.learnblockchain.cn/attachments/2021/09/71CU1Ssa6139be94c44e5.png) 你需要从Rinkeby 的水龙头中获得一些测试网中的 ETH。你可以使用 [Rinkeby Authenticated Faucet](https://faucet.rinkeby.io/)或 [Rinkeby Ether Faucet](http://rinkeby-faucet.com/) 获得少量的测试网资金。 ## 2.计算您的存款接收地址 Nervos 独特的架构允许我们能够为单一帐户基于不同的目的而创建的多个地址。但在此我们将只会使用其中一个地址,以便于简化 token 移动到 Layer2 的过程。 我们之前提到的从以太坊到 ForceBridge 桥到 Nervos Layer 1 ,再到 Nervos Layer 2的流程仍在进行开发中,但最终用户可以将这些步骤合并为单个操作。我们将介绍开发过程的步骤,从计算用户的Layer2 存款接收地址开始。 在你选择的编辑器中打开 [gw-gitcoin-instruction/src/examples/6-bridge/index.js](https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/examples/6-bridge/index.js) 中的范例代码。 将 `<YOUR_ETHEREUM_ADDRESS>` 替换为您希望接收 Layer2 上的 ckETH token 的以太坊地址。 替换所有值后,在控制台中使用以下命令执行脚本。 当你把你的地址放在代码运行: ``` cd ~/projects/gw-gitcoin-instruction/src/examples/6-bridge node index.js ``` 你将会看到控制台输出长得像这样: ```jsx node index.js Using Ethereum address: 0xD173313A51f8fc37BcF67569b463abd89d81844f Corresponding Polyjuice address: 0xa3cd0b1d997e5281dd574dd34155945febcf73a4 Deposit to Layer 2 address on Layer 1: ckt1qs4vva27537dzxxpgle3vq5jjgfd8x2ye3dynmqj7c78z3vmuzve4xexq9s7qquh9s9knxfehstyelw0eelagr4ezdvr2qyd6lsf60dw5yqqqqqsqqqqqvqqqqqfjqqqqp303zade957p346euv9lgwy2zhpj6d0tkdhsgchl8kdnvhantykq6gqqqqpqqqqqqcqqqqqxyqqqq8u7zf6tuwlgqmuagje6jwlqp0quujcknmrueer8md9kdmt0lfzjqqngqqqqzdjvqtpuqpewtqtdxvnn0qkfn7ulnnl6s8tjy6cx5qgm4lqn576a5tnxya9r78ux770vatfk336hkyasxzy7q9rqgqqqqqqcq7pq9ye ``` 在输出的底部的长地址是您的存款接收地址。这是 Layer1 得地址,可以用来自动将资金转移到 Layer2 。我们将在下一步搭配着 Force Bridge 使用他。 ## 3.启动 Force Bridge 的资产转移 在浏览器中打开 [Force Bridge 测试网版本](https://force-bridge-test.ckbapp.dev/bridge/Ethereum/Nervos?xchain-asset=0x0000000000000000000000000000000000000000)。确保你在 MetaMask 中选择了 Rinkeby 网络,并且你选择的账户里有 Rinkeby ETH。 你将把资产从以太坊转移到 Nervos,你将把 ETH 转变为 ckETH。如果这些值还没有被你勾选到,请你按照下面的截图所示将这些值选起来。 ![image.png](https://img.learnblockchain.cn/attachments/2021/09/6VLkzo6V6139befc8b65d.png) ![image.png](https://img.learnblockchain.cn/attachments/2021/09/pd7K9M9V6139bf05bd67b.png) 在选择要跨桥传输的资产后,可以在顶部框中指定要传送的金额。转账会有一小笔费用,而这笔费用会自动计算出来。 在“ Recipient ”框中,您将指定资金的 Nervos 目的地地址。输入上一步中生成的存款接收者地址。 当您完成输入和确认好你的选择后,单击 Bridge 按钮。您将被要求使用MetaMask对交易进行签名,如下图所示: ![image.png](https://img.learnblockchain.cn/attachments/2021/09/GUi1tPl26139bf29ef0f1.png) 当你在 MetaMask 中确认交易后,你将会立即得到一个带有 Etherscan 链接的提示弹窗,在那里你可以看到你在以太坊链上交易被上链的进度。 ![image.png](https://img.learnblockchain.cn/attachments/2021/09/U2N1QYr86139bf44e78c0.png) 您还将在页面底部的 Pending 视窗的 History 部分看到该笔的交易。它将首先处于“以太坊锁定资产(x/15)”状态,其中 x 是以太坊链上区块确认的数量。 ![image.png](https://img.learnblockchain.cn/attachments/2021/09/ycTUtRr96139bf5e6a572.png) 当有至少15个区块确认时,你的待处理交易将转移到 “以太坊锁定资产(已确认)” 的状态: ![image.png](https://img.learnblockchain.cn/attachments/2021/09/qumAQzw86139bf729e362.png) 在收到所有需要的确认信息后,转账的第一部分就完成了。资金现在已经被 Force Bridge收到,跨链资金转移的第二部分是在 Nervos 的 Layer 1 上发送 SUDT 通证。一旦提交了该交易,History 状态将从 “Pending” 转移到 “Succeed”的状态。 ![image.png](https://img.learnblockchain.cn/attachments/2021/09/wadiyZrG6139bf856aec6.png) 此时,SUDT token 将暂时驻留在 Layer1,等待 Layer2 验证节点收集交易。一旦它们被验证节点给收集,SUDT token 将在 Layer2 上发布到用户的以太坊账户。这个过程是自动的,但在正常情况下需要 10 分钟。 ## 任务提交 为了完成任务,你需要提交以下材料供评委评审: 1. 成功生成您的存款接收地址后,控制台输出的屏幕截图。 2. 您的收款人地址( text 格式)。 3. 用于生成存款接收地址的以太坊地址(text 格式)。 4. 成功完成 Force Bridge 交易的 Etherscan explorer 链接。这可以在 Force Bridge 界面的的 History —>Succeed 路径中找到。 5. 贴上 Nervos 浏览器中关于我们用于 Force Bridge 交易成功的链接。这可以在 Force Bridge 界面的 History → Succeed 中找到。 ## Bonus:检查你的 Layer2 余额 如果您想检查您的 Layer2 token 余额,您可以为 Force Bridge 中的一个代币重复[前面任务中](https://github.com/Kuzirashi/gw-gitcoin-instruction/blob/master/src/tasks/5.deploy.erc20.proxy.contract.md)的步骤。这不是任务提交的要求,但我们鼓励您这样做,以验证代币已安全抵达您的账户。 来自 Force Bridge 的 SUDT token 使用以下这些众所周知的 SUDT id: * ckETH: 30 * ckDAI: 35 * ckUSDT: 36 * ckUSDC: 37 > *注意:您是否看到所有任务如何一起运行以创建一个完整的区块链应用程序生命周期?* >

在区块链之间移动资产是未来构建跨链 dApp 的一个极其重要的部分。开发人员不仅需要在安全的基础设施上来构建 dApp ,而且最终用户的体验必须简单明了。

Nervos 的跨链互操作性 2.0 解决方案是实现这些目标的主要步骤。在此基础上是 Force Bridge 这个去中心化的跨链桥,可以在 Nervos 和其他区块链之间转移资产。Force Bridge 目前处于最后的测试阶段了,已经支持将通证在 CKB 和 以太坊 Rinkeby 测试网之间转移。 Cardano 的跨链桥也已宣布,并处于开发的后期阶段。在可预见的未来 ForceBridge 将会支持更多的区块链,继续强化 Force Bridge 的跨链网络。

任务说明

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

在这个任务中,你将使用 Force Bridge 从以太坊 Rinkeby 测试网将 ETH 转到 Nervos Layer 2 上变成 ckETH。ETH 是以太坊上的原生资产,它在 Nervos 上使用 ckETH 来表示他是一个包装过的 sudt 通证。ckETH SUDT 通证是 Nervos 上的原生资产,它可以在 Layer1 和 Layer2 之间使用,并且得到Nervos 生态系统内所有工具的广泛支持。

为了做到这一点,我们将使用 MetaMask 和 Force Bridge 将 ETH 从 Rinkeby 测试网直接传输到Nervos 的 Layer 2。在你操作的背后,资产将从以太坊经过 Force Bridge,再到 Nervos Layer 1,最后到 Nervos Layer 2,但从终端用户的角度来看,这一切都将在一个步骤中完成。

先决条件

此任务需要在任务2中设置的 Gitcoin Task Instruction Examples (gw-gitcoin-instruction)仓库。如果还没有这个仓库,请你现在设置它。

1. 在 Rinkeby 测试网中设置 MetaMask 帐户

打开 MetaMask 并选择你想要用于 Force Bridge 转账的以太坊账户。这个账户也该是你在 Nervos 的 Layer2 使用的以太坊账户。然后从“Network”下拉框中选择“Rinkeby测试网络”。

你需要从Rinkeby 的水龙头中获得一些测试网中的 ETH。你可以使用 Rinkeby Authenticated Faucet或 Rinkeby Ether Faucet 获得少量的测试网资金。

2.计算您的存款接收地址

Nervos 独特的架构允许我们能够为单一帐户基于不同的目的而创建的多个地址。但在此我们将只会使用其中一个地址,以便于简化 token 移动到 Layer2 的过程。

我们之前提到的从以太坊到 ForceBridge 桥到 Nervos Layer 1 ,再到 Nervos Layer 2的流程仍在进行开发中,但最终用户可以将这些步骤合并为单个操作。我们将介绍开发过程的步骤,从计算用户的Layer2 存款接收地址开始。

在你选择的编辑器中打开 gw-gitcoin-instruction/src/examples/6-bridge/index.js 中的范例代码。

&lt;YOUR_ETHEREUM_ADDRESS> 替换为您希望接收 Layer2 上的 ckETH token 的以太坊地址。

替换所有值后,在控制台中使用以下命令执行脚本。

当你把你的地址放在代码运行:

cd ~/projects/gw-gitcoin-instruction/src/examples/6-bridge
node index.js

你将会看到控制台输出长得像这样:

 node index.js 
Using Ethereum address: 0xD173313A51f8fc37BcF67569b463abd89d81844f
Corresponding Polyjuice address: 0xa3cd0b1d997e5281dd574dd34155945febcf73a4

Deposit to Layer 2 address on Layer 1: 
ckt1qs4vva27537dzxxpgle3vq5jjgfd8x2ye3dynmqj7c78z3vmuzve4xexq9s7qquh9s9knxfehstyelw0eelagr4ezdvr2qyd6lsf60dw5yqqqqqsqqqqqvqqqqqfjqqqqp303zade957p346euv9lgwy2zhpj6d0tkdhsgchl8kdnvhantykq6gqqqqpqqqqqqcqqqqqxyqqqq8u7zf6tuwlgqmuagje6jwlqp0quujcknmrueer8md9kdmt0lfzjqqngqqqqzdjvqtpuqpewtqtdxvnn0qkfn7ulnnl6s8tjy6cx5qgm4lqn576a5tnxya9r78ux770vatfk336hkyasxzy7q9rqgqqqqqqcq7pq9ye

在输出的底部的长地址是您的存款接收地址。这是 Layer1 得地址,可以用来自动将资金转移到 Layer2 。我们将在下一步搭配着 Force Bridge 使用他。

3.启动 Force Bridge 的资产转移

在浏览器中打开 Force Bridge 测试网版本。确保你在 MetaMask 中选择了 Rinkeby 网络,并且你选择的账户里有 Rinkeby ETH。

你将把资产从以太坊转移到 Nervos,你将把 ETH 转变为 ckETH。如果这些值还没有被你勾选到,请你按照下面的截图所示将这些值选起来。

在选择要跨桥传输的资产后,可以在顶部框中指定要传送的金额。转账会有一小笔费用,而这笔费用会自动计算出来。

在“ Recipient ”框中,您将指定资金的 Nervos 目的地地址。输入上一步中生成的存款接收者地址。

当您完成输入和确认好你的选择后,单击 Bridge 按钮。您将被要求使用MetaMask对交易进行签名,如下图所示:

当你在 MetaMask 中确认交易后,你将会立即得到一个带有 Etherscan 链接的提示弹窗,在那里你可以看到你在以太坊链上交易被上链的进度。

您还将在页面底部的 Pending 视窗的 History 部分看到该笔的交易。它将首先处于“以太坊锁定资产(x/15)”状态,其中 x 是以太坊链上区块确认的数量。

当有至少15个区块确认时,你的待处理交易将转移到 “以太坊锁定资产(已确认)” 的状态:

在收到所有需要的确认信息后,转账的第一部分就完成了。资金现在已经被 Force Bridge收到,跨链资金转移的第二部分是在 Nervos 的 Layer 1 上发送 SUDT 通证。一旦提交了该交易,History 状态将从 “Pending” 转移到 “Succeed”的状态。

此时,SUDT token 将暂时驻留在 Layer1,等待 Layer2 验证节点收集交易。一旦它们被验证节点给收集,SUDT token 将在 Layer2 上发布到用户的以太坊账户。这个过程是自动的,但在正常情况下需要 10 分钟。

任务提交

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

  1. 成功生成您的存款接收地址后,控制台输出的屏幕截图。
  2. 您的收款人地址( text 格式)。
  3. 用于生成存款接收地址的以太坊地址(text 格式)。
  4. 成功完成 Force Bridge 交易的 Etherscan explorer 链接。这可以在 Force Bridge 界面的的 History —>Succeed 路径中找到。
  5. 贴上 Nervos 浏览器中关于我们用于 Force Bridge 交易成功的链接。这可以在 Force Bridge 界面的 History → Succeed 中找到。

Bonus:检查你的 Layer2 余额

如果您想检查您的 Layer2 token 余额,您可以为 Force Bridge 中的一个代币重复前面任务中的步骤。这不是任务提交的要求,但我们鼓励您这样做,以验证代币已安全抵达您的账户。

来自 Force Bridge 的 SUDT token 使用以下这些众所周知的 SUDT id:

  • ckETH: 30
  • ckDAI: 35
  • ckUSDT: 36
  • ckUSDC: 37

注意:您是否看到所有任务如何一起运行以创建一个完整的区块链应用程序生命周期?

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-09-09 16:03
  • 阅读 ( 341 )
  • 学分 ( 5 )
  • 分类:Nervos
  • 专栏:Nervos x Gitcoin 黑客松培训

评论