Skip to main content

连接到本地网络

使用 Sui 本地网络测试你的 dApps 是否与 Sui 的最新更改兼容,并为下一个 Sui 发布准备 Devnet 或 Testnet 网络。为了设置本地网络,Sui 提供了 sui-test-validator 二进制文件。sui-test-validator 启动一个本地网络,包括一个 Sui 全节点、一个 Sui 验证节点和一个 Sui 水龙头。你可以使用附带的水龙头获取测试 SUI 以在本地网络上使用。

如果尚未安装 Sui,请参阅 安装 Sui

启动本地网络

要启动本地网络,请从你的 sui 根文件夹运行以下命令。

RUST_LOG="off,sui_node=info" cargo run --bin sui-test-validator

该命令启动 sui-test-validatorRUST_LOG=off,sui_node=info 关闭了除 sui-node 之外所有组件的日志记录。如果你想查看更详细的日志,可以从命令中删除 RUST_LOG

重要提示: 每次启动 sui-test-validator 时,网络都会作为一个全新的网络启动,没有之前的数据。本地网络不是持久化的。

要自定义本地 Sui 网络,例如更改使用的端口,请在启动 sui-test-validator 的命令中包含附加参数:

OPTIONS:
--epoch-duration-ms <EPOCH_DURATION_MS>
The duration for epochs (defaults to one minute) [default: 60000]

--faucet-port <FAUCET_PORT>
Port to start the Sui faucet on [default: 9123]

--fullnode-rpc-port <FULLNODE_RPC_PORT>
Port to start the Fullnode RPC server on [default: 9000]

使用 sui-test-validator --help 命令在控制台中查看这些选项。

访问本地的全节点

使用以下命令从你的本地网络检索总交易计数:

curl --location --request POST 'http://127.0.0.1:9000' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_getTotalTransactionBlocks",
"params": []
}'

如果成功,响应将类似于以下内容:

{
"jsonrpc": "2.0",
"result": 168,
"id": 1
}

将 Sui 客户端 CLI 连接到你的本地网络

你可以使用 Sui 客户端 CLI 连接到任何 Sui 网络。默认情况下,它连接到 Sui Devnet。要连接到你的本地网络,请创建一个名为 local 的新环境别名,将客户端使用的 RPC URL 设置为你的本地网络。

sui client new-env --alias local --rpc http://127.0.0.1:9000

接下来,请使用以下命令将活动环境设置为你创建的新的 local 环境。

sui client switch --env local

该命令返回:

已切换到活动环境 [local]

你可以使用以下命令检查当前的活动环境:

sui client active-env

该命令返回:

local

显示当前活动地址

如果你没有指定地址,Sui 客户端 CLI 将使用活动地址执行命令。使用以下命令在你的本地网络上显示活动地址。

sui client active-address

该命令返一个地址:

0xbc33e6e4818f9f2ef77d020b35c24be738213e64d9e58839ee7b4222029610de

使用活动地址获取在你的本地网络上使用的测试 SUI。使用 sui client addresses 命令查看你本地网络上的所有地址。

注意: 在运行该命令时返回的地址是唯一的,与本示例中使用的地址不匹配。

使用本地水龙头

在你的本地网络上进行的交易需要 SUI 币支付燃气费,就像其他网络一样。要将币发送到连接到你的本地网络的 Sui 钱包,请参阅设置本地 Sui 钱包。你可以使用本地 Sui 钱包的地址与水龙头一起使用。

使用以下 cURL 命令从本地水龙头获取测试币。

curl --location --request POST 'http://127.0.0.1:9123/gas' \
--header 'Content-Type: application/json' \
--data-raw '{
"FixedAmountRequest": {
"recipient": "0xbc33e6e4818f9f2ef77d020b35c24be738213e64d9e58839ee7b4222029610de"
}
}'

如果成功,响应类似于以下内容:

{
"transferredGasObjects": [
{
"amount": 200000000,
"id": "0x192ce62506ed8705b76e8423be1f6e011064a3f887ba924605f27a8c83c8c970",
"transferTxDigest": "7sp4fFPH2WaUgvN43kjDzCpEhKfifqjx5RTki74y8T3E"
},
{
"amount": 200000000,
"id": "0x31d003ade00675d1ab82b225bfcceaa60bb993f5d90e9d0aa88f81dc24ec14d6",
"transferTxDigest": "7sp4fFPH2WaUgvN43kjDzCpEhKfifqjx5RTki74y8T3E"
},
{
"amount": 200000000,
"id": "0x98cbdc93ae672110f91bc0c39c0c87bc66f36984c79218bb2c0bac967260970c",
"transferTxDigest": "7sp4fFPH2WaUgvN43kjDzCpEhKfifqjx5RTki74y8T3E"
},
{
"amount": 200000000,
"id": "0xba66aee6289cc6d0203c451bea442ad30d4cfe699e50b36fed0ff3e99ba51529",
"transferTxDigest": "7sp4fFPH2WaUgvN43kjDzCpEhKfifqjx5RTki74y8T3E"
},
{
"amount": 200000000,
"id": "0xd9f0b521443d66227eddc2aac2e16f667ca9caeef9f1b7afb4a6c2fc7dcb58d8",
"transferTxDigest": "7sp4fFPH2WaUgvN43kjDzCpEhKfifqjx5RTki74y8T3E"
}
],
"error": null
}

检查燃气硬币对象是否有效地址

从水龙头获得硬币后,使用以下命令查看地址的硬币对象:

sui client gas

响应类似于以下内容,但具有不同的ID:

╭────────────────────────────────────────────────────────────────────┬────────────╮
│ gasCoinId │ gasBalance │
├────────────────────────────────────────────────────────────────────┼────────────┤
│ 0x1d790713c1c3441a307782597c088f11230c47e609af2cec97f393123ea4de45 │ 200000000
│ 0x20c1d5ad2e8693953fca09fd2fec0fbc52a787e0a0f77725220d36a09a5b312d │ 200000000
│ 0x236714566110f5624516faa0da215ad29f8daa611e8b651d1e972168207567b2 │ 200000000
│ 0xc81f30256bb04ad84bc4a92017cffd7c1f98286e028fa504d8515ad72ddd1088 │ 200000000
│ 0xf61c8b21b305cc8e062b3a37de8c3a37583e17f437a449a2ab42321d019aeeb4 │ 200000000
╰────────────────────────────────────────────────────────────────────┴────────────╯

在本地安装 Sui 钱包和 Sui Explorer

要在本地安装和使用这些应用程序,你首先必须安装 pnpm。请根据你的操作系统使用相应的说明。

安装了 pnpm 后,请使用以下命令在你的工作空间中安装所需的依赖项:

pnpm install

安装完成后,运行以下命令以安装 SUI Wallet 和 Sui Explorer:

pnpm turbo build

如果你遇到Turbo Build的错误,请确认没有`package-lock.json'。 如果文件存在,请将其删除,然后再次运行命令。

###在你的本地网络上设置SUI Explorer

要将实时SUI Explorer连接到你的本地网络,请打开URL:[https://suiexplorer.com/?network=local]https://suiexplorer.com/?network=local)。 SUI Explorer的实时版本可能不包括SUI Repo的“ Main”分支中添加的最新更新。 要使用SUI Explorer,其中包括最新更新,请从SUI Repo的本地克隆中安装和运行SUI Explorer。

从“ sui”根文件夹中运行以下命令:

注意:运行已安装pnpm的命令。 有关详细信息,请参见[在本地安装SUI Wallet和Sui Explorer](#安装sui-wallet and-sui-explorer)。

pnpm explorer dev

命令完成后,通过以下URL打开你的本地SUI Explorer:[http:// localhost:3000/](http:// localhost:3000/)。

有关SUI Explorer的更多详细信息,请参见[Explorer Readme]https://github.com/mystenlabs/sui/sui/blob/main/main/main/apps/explorer/readme.md#set-up)。

##设置当地的SUI钱包

你还可以使用本地SUI钱包来测试本地网络。 然后,你可以在本地SUI Explorer上看到从本地SUI钱包执行的交易。

注意:要运行命令,你必须安装pnpm。 有关详细信息,请参见[在本地安装SUI Wallet和Sui Explorer](#安装sui-wallet and-sui-explorer)。

在启动SUI Wallet应用程序之前,请更新其默认环境,以指向你的本地网络。 为此,首先制作sui/apps/wallet/configs/vosings/.env.defaults“并将其重命名为同一目录中的.env”的副本。 在你的.env文件中,编辑第一行读取api_env = local`然后保存文件。

从“ SUI”根文件夹中运行以下命令,以在本地网络上启动SUI钱包:

pnpm wallet dev

将本地 Sui 钱包添加到 Chrome

在构建本地版本的 Sui 钱包之后,你可以将扩展添加到 Chrome:

  1. 打开 Chrome 浏览器并导航到 chrome://extensions
  2. 点击 开发者模式 开关以启用(如果尚未启用)。
  3. 点击 加载已解压的 按钮,然后选择你的 sui/apps/wallet/dist 目录。

有关在 Chrome 上使用本地构建的钱包的更多信息,请参阅 Sui 钱包 Readme

生成示例数据

使用 TypeScript SDK 向你的网络添加示例数据。

注意: 要运行该命令,你必须首先完成“在本地构建应用程序的先决条件”部分。

sui 根目录运行以下命令:

pnpm --filter @mysten/sui.js test:e2e

有关测试示例数据的附加信息,请参阅 https://github.com/MystenLabs/sui/tree/main/sdk/typescript#testing

故障排除

如果你没有使用 Node.js 18,你可能会看到以下消息:

Retrying requesting from faucet: Retry failed: fetch is not defined

要解决此问题,请切换或更新到 Node.js 18,然后再次尝试。

使用 Sui TypeScript SDK 进行测试

Sui TypeScript SDK 的发布版本可能是你为本地网络安装的 Sui 版本之前的版本。为确保你使用的是 SDK 的最新版本,请在 Sui NPM 注册表的 Current Tags 部分使用带有 experimental 标签的版本(例如 0.0.0-experimental-20230317184920)。