连接到本地网络
使用 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-validator
。RUST_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:
- 打开 Chrome 浏览器并导航到
chrome://extensions
。 - 点击 开发者模式 开关以启用(如果尚未启用)。
- 点击 加载已解压的 按钮,然后选择你的
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
)。