使用 NextJS & WalletConnect 部署合约

circle-info

请在GitHub参阅完整的walletconnect-nextjsarrow-up-right代码库。

本节将展示如何设置NextJS Web应用程序,配置Berachain网络详细信息,设置基本钱包连接,以及通过前端与WalletConnectarrow-up-right部署合约。

先决条件

开始之前,请确保你的本地设备上满足以下条件:

创建NextJS代码设置

首先,为NextJS创建一个新的文件夹:

npx create-next-app@latest;

# [Expected Prompts & Responses]:
# ✔ What is your project named? … walletconnect-nextjs
# ✔ Would you like to use TypeScript? … No / _Yes_
# ✔ Would you like to use ESLint? … No / _Yes_
# ✔ Would you like to use Tailwind CSS? … No / _Yes_
# ✔ Would you like to use `src/` directory? … _No_ / Yes
# ✔ Would you like to use App Router? (recommended) … No / _Yes_
# ✔ Would you like to customize the default import alias (@/*)? … _No_ / Yes
# Creating a new Next.js app in /path/to/walletconnect-nextjs.
#
# Using npm.
#
# Initializing project with template: app-tw
#
# ...
#
# Success! Created walletconnect-nextjs at /path/to/walletconnect-nextjs

cd walletconnect-nextjs;

添加依赖项

获取WalletConnect ID

访问WalletConnect Cloudarrow-up-right,注册新帐户 (如果没有账户) 并登陆到WalletConnect Cloud,接下来创建新项目以生成项目 ID。

首先,创建一个新项目:

然后,编辑项目详细信息:

最后,获取项目 ID:

配置WalletConnect

成功获得项目 ID后,在存储库中创建一个新的.env变量:

使用以下详细信息修改文件:

文件位置./.env

web3modal创建一个新的配置文件夹和文件:

在新的配置文件夹中添加以下代码:

文件位置./config/index.tsx

接下来,创建一个新的context文件夹,该文件夹通过来自TanStackarrow-up-rightWagmiarrow-up-right的必要Context Providers程序封装待部署项目。

文件位置./context/index.tsx

circle-info

该文件顶部会出现一个use client,因为它需要在客户端渲染,并且需要与服务器端区分。

接下来,修改现有layout.tsx文件,以适配这些额外的Context Providers程序。

文件位置./app/layout.tsx

另外,还可以添加一些CSS样式,使应用程序更美观。

文件位置./app/globals.css

添加Web3Modal按钮组件

现在,已成功配置Web应用程序,接下来,需要添加Web3Modal按钮组件,以允许钱包连接。

文件位置./app/page.tsx

启动应用程序,以确认是否可以与MetaMask等网页扩展钱包连接。

演示Web3Modal按钮组件的工作原理。

通过Web3Modal连接钱包。

显示如下,钱包已成功连接。

帐户连接组件

设置好Web3Modal后,需要创建一个Account组件,通过wagmi现有的hooks测试账户是否成功连接。

创建一个Account组件,检查账户是否已成功连接和当前连接状态。

文件位置./components/Account/index.tsx

然后,将其添加到主page.tsx文件中。

文件位置./app/page.tsx

现在,查看应用程序,页面下方会显示用户是否已成功连接 (Connected or Not)。

签名消息组件

接下来,演示的另一个功能是钱包签名基本功能。首先,创建一个名为SignMessage的文件夹,以添加签名和消息验证功能。

文件位置./components/SignMessage/index.tsx

然后,将其添加到主page.tsx文件中。

文件位置./app/page.tsx

现在,当钱包连接到应用程序时,钱包会出现签名消息提示。

完成签名后,查看应用程序,页面下方会显示用户签名和验证信息。

部署合约组件

最后一步,演示如何直接从前端部署现有字节码,以提示用户钱包发起交易。

circle-info

如果你对字节码感到好奇——它是来自使用Hardhat部署HelloWorld合约的编译字节码。

文件位置./components/Deploy.tsx

然后,将其添加到主page.tsx文件中。

文件位置./app/page.tsx

现在,可以通过新部署的组件功能,设置初始问候语。

确认一笔交易

查询交易信息,点击Berarail合约地址链接 (Beratrail Contract Address Link)按钮。

circle-info

可能会出现延迟,需要一点时间才能显示在前端。

在Beratrail测试网区块浏览器中查看交易结果。

现在,已成功将WalletConnect Web3Modal与Berachain集成。

完整代码库

本节完整代码库,可在Github - Berachain Guidesarrow-up-right - walletconnect-nextjsarrow-up-right中查看。

最后更新于