大规模采用的最大挑战之一是让应用程序对终端用户来说既安全又简单。对于开发人员来说,工具和基础设施是一个挑战,他们必须努力的在难用的工具和交付给用户的良好体验之间取得微妙平衡。这些工具通常很复杂,很难使用。基础设施缺乏标准化和无缝兼容性。虽然继续取得进展,但终点仍遥遥无期。区块链世界的竞争是激烈的,协议被采用的同时也被重新发明。区块链还存在许多有待解决的巨大挑战,多个行业领导者正在采取非常不同的方法来解决它们的问题。已经出现的标准仍在发展中,在这些不同的基础设施之间集成的能力仍然是一个有待解决的挑战。Nervos 底层平台的灵活性能让未来深度集成的体验迈出的一大步,这种体验可以简化并方便普通用户使用,而开发人员也可以对平台进行调整和扩展,以适应目前正在使用的任何解决方案,而不必等待解决方案的开发。开发者能够像乐高积木一样混合和匹配各种基础设施,然后为用户将一系列动作统一为一个单一的简化动作。我们将在本任务中演示一个这样的范例。

任务说明

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

修改之前任务中 既存的 EVM dApp,以支持使用 Force Bridge 进行资产转移。这可以通过将nervos-godwoken-integration库集成到您的应用程序中来实现。

你的 dApp 将为透过 Force Bridge 从以太坊传输而来的资产计算特殊的接收地址。这些地址将允许用户通过 Force Bridge直接将资产转移到 Layer2,以便您的应用程序进行交互。

在这个任务中,我们将描述需要进行的更改,但是没有示范的项目。您需要对自己的应用程序进行这些更改,以完成这个任务。

1. 安装 Godwoken Integration Package

第一步是安装 nervos-godwoken-integration 包 。这个包中包含将 Nervos 的 Layer2 基础设施集成到您的应用程序所需的工具。

yarn add [email protected]

2.在 Layer1 上生成 Layer2 的存款地址

Layer2 存款地址是 Nervos 的 Layer1 地址,作为进入 Layer2 的网关。所有的 CKBytes 和 SUDT token 会从 Layer1 转移到这个地址,将被区块生产的节点自动收集并交付给 Layer2 。

的代码将可以用来生成一个 Layer2 的存款地址,我们只需要将用户在 Layer2 的以太坊地址替换下方代码中的 <ETHEREUM_ADDRESS> 即可。

const { AddressTranslator } = require('nervos-godwoken-integration');

const addressTranslator = new AddressTranslator();
const depositAddress = await addressTranslator.getLayer2DepositAddress(web3, <ETHEREUM_ADDRESS>);

console.log(`Layer 2 Deposit Address on Layer 1: \\n${depositAddress.addressString}`);

3. 将用户重新导到 ForceBridge 网站中

当你的应用程序计算并显示用户的存款地址后,你可以引导他们使用 Force Bridge :

https://force-bridge-test.ckbapp.dev/bridge/Ethereum/Nervos 您还可以指定要交易的资产,以便它已经被转移。下面是 ETH 跨链的预选链接:

https://force-bridge-test.ckbapp.dev/bridge/Ethereum/Nervos?xchain-asset=0x0000000000000000000000000000000000000000 应该指示用户输入他们的 Layer2 存款地址作为上一步的接收地址。

本教程提供了一个完整的指南,介绍如何通过 ForceBridge 进行转移。

4. 计算用户的 Polyjuice 地址

用户完成 Force Bridge 的传输以后,应用程序需要去检测它。最简单的方法之一是显示特定资产的用户余额,并定期更新余额。