帖子
分享您的知识。
如何使用 SUI CLI 在测试网和主网之间切换?
我想理解 Sui Network 的这一方面,因为我要么构建、调试,要么部署涉及这个领域的东西. 我想详细解释这个机制或功能的工作原理,以及相关的 CLI 用法、移动代码结构或架构概念. 我的目标是获得足够的清晰度,将这些知识应用到一个真实的项目中——无论是自定义智能合约、NFT系统、钱包集成还是DeFi工具. 与 EVM 链相比,Sui Network 具有独特的功能,因此我对它的与众不同之处以及它如何影响开发最佳实践特别感兴趣. 有示例代码、命令行示例或典型错误需要注意会有所帮助,尤其是在使用 Sui CLI、SDK 或在本地网络/测试网上部署时. 归根结底,我希望避免常见错误,遵循最佳的安全原则,并确保我正在开发的功能在现实条件下表现出预期.
- Sui
- NFT Ecosystem
- Move
答案
15要使用 Sui CLI 在测试网和主网之间切换,可以在--network
运行命令时使用该标志来指定所需的网络.
键盘命令:
*切换到测试网:
sui client set-config --network testnet
*切换到主网:
sui client set-config --network mainnet
这将根据您的选择,将 CLI 配置为与测试网或主网进行交互.
CLI 用法示例:
- 在测试网上部署:
sui client publish --network testnet --package <package-id>
- 在主网上部署:
sui client publish --network mainnet --package <package-id>
最佳实践:
- 确保使用正确的网络进行部署,以避免在错误的链上进行意外操作.
- 在主网上部署之前,请务必在测试网上进行测试,以确保正确性.
*要使用 Sui CLI 在测试网和主网之间切换,您需要使用 sui 客户端交换机更新您的活动环境. Sui CLI 通过配置文件管理环境,每个配置文件都指向不同的 RPC 端点. *
步骤:
- 列出可用环境:
sui 客户机活跃地址
- 切换到测试网:
sui 客户端交换机--env 测试网
3.切换到主网:
sui 客户端交换机--env 主网
- 验证环境:
sui 客户端 active-env
- 如果你需要自定义 RPC 网址或想创建自己的个人资料(例如,用于本地网络),请编辑 ~/.sui/sui_config/client.yaml 文件或使用:
sui 客户端 new-env--alias localnet--rpc http://127.0.0.1:9000
注意事项:
确保您的钱包资金来自您正在使用的网络.
**测试网和主网地址是分开的;代币或对象不能结转. **
*请注意,未经全面审核和测试,不要将测试代码部署到主网. *
*这种方法允许在实际测试条件下在环境之间进行干净切换,以便调试、部署和与智能合约或其他资产进行交互. *
sui client switch
要在 Sui CLI 中的测试网和主网之间切换,请使用sui client switch --env mainnet
命令后跟所需的环境(例如,). 或者,在client.yaml
或通过中手动配置 RPC 端点sui client new-env
以定义自定义网络. 与网络切换通常依赖于提供商 URL 的 EVM 链不同,Sui 的 CLI 维护明确的环境配置文件,从而减少了意外的跨网络部署. sui client active-env
在执行交易之前,请务必验证您的活跃网络,以避免测试网/主网混淆.
要使用 Sui CLI 在测试网和主网之间切换,您需要更改 Sui 客户端配置中的活动 RPC 端点. 为此,您可以将sui client switch
命令与指定的环境(例如testnet``mainnet
、或自定义 URL)一起使用. sui client switch --env testnet
如果你正确安装了 Sui CLI,你可以通过运行快速切换到测试网sui client switch --env mainnet
,也可以使用切换到主网. 这会更改您的本地 CLI 连接的 RPC 终端节点,从而影响所有后续事务、查询或部署. --rpc <your_rpc_url>
如果您正在运行全节点或想要通过使用来定位特定的公共节点,也可以使用自定义终端节点. 要确认当前设置,您可以运行sui client active-address``sui client envs
并查看当前的环境设置. 在部署 Move 软件包、测试智能合约或查询不同链上的实时数据时,切换网络至关重要. 在提交真实交易之前,请务必仔细检查网络,以避免资金损失或将测试代码部署到生产环境中.
要在 SUI CLI 中的测试网和主网之间切换,您需要为命令设置相应的网络. 这是通过指定网络 URL 或使用配置文件来完成的. 以下是操作方法:
使用 SUI CLI 在测试网和主网之间切换
- 为 SUI CLI 设置网络:
C
sui
LI 使用环境变量来确定网络. 您可以通过设置网络的环境变量SUI_ENV
或在命令中使用该--network
标志来在测试网和主网之间切换.
选项 1:通过环境变量设置
您可以将SUI_ENV
环境变量设置为testnet
或mainnet
.
*对于测试网:
export SUI_ENV=testnet
*对于主网:
export SUI_ENV=mainnet
设置环境变量后,SUI CLI 将使用相应的网络执行所有后续命令.
--network
### 选项 2:通过命令行标志 () 进行设置
对于每个命令,您可以使用--network
标志指定网络:
*对于测试网:
sui client <command> --network testnet
*对于主网:
sui client <command> --network mainnet
示例命令:
要在Testnet上发布软件包,请执行以下操作:
sui client publish --gas-budget 10000 --network testnet
要在主网上发布软件包,请执行以下操作:
sui client publish --gas-budget 10000 --network mainnet
需要注意的常见错误:
*错误的网络:如果您尝试与错误的网络进行交互,您的交易可能会失败或被发送到错误的链.
*配置问题:确保SUI_ENV
环境变量设置正确,或者为每条命令使用正确的标志.
最佳实践:
--network
*特定环境配置:在会话开始时设置网络环境变量,以免必须为每个命令指定.
*在主网之前测试:在部署到主网之前,请务必在 Testnet 上测试您的合约或交易.
通过执行这些步骤,您可以在 SUI CLI 中轻松地在测试网和主网之间切换,与相应的环境进行交互,以满足您的开发或生产需求.
要使用 Sui CLI 在测试网和主网之间切换,您需要更新 CLI 用于与 Sui 网络交互的活动环境配置文件. 您可以通过--env
在命令中指定标志或使用配置文件设置环境来实现此目的. Sui CLI 支持预定义的环境testnet
,如mainnet
、和localnet
.
如果要永久切换,请使用以下命令:
sui client switch --env testnet
要么
sui client switch --env mainnet
这会更改您的 CLI 配置文件中的默认全节点 URL 和配置. 您还可以通过检查~/.sui/sui_config/sui_client.yaml
文件来验证或编辑 CLI 设置. 这是存储端点 URL、活动地址和密钥对的地方.
或者,您可以使用以下方法临时覆盖端点而无需切换配置文件:
sui client call --url https://fullnode.testnet.sui.io:443
或者对于主网:
sui client call --url https://fullnode.mainnet.sui.io:443
确保您的钱包或密钥对在相应的网络上有资产,因为每个环境都有自己的状态和资产. 此外,为了安全和数据分离,避免在主网上使用测试网密钥或地址.
sui client switch
要在 Sui CLI 中在测试网和主网之间切换,请使用以下命令更新您的活动网络配置:
# Switch to testnet
sui client switch --network testnet
# Switch to mainnet
sui client switch --network mainnet
# Check current network
sui client active-address
https://fullnode.testnet.sui.io:443
CLI 使用预定义的网络端点(测试网:https://fullnode.mainnet.sui.io:443
、主网:). 配置存储在~/.sui/sui-config/client.yaml
.
关键注意事项:
-为测试网和主网使用单独的钱包/地址
-测试网 SUI 没有价值;通过水龙头获取:sui client faucet-request
-主网需要真正的SUI才能获得汽油(使用可信交易所或钱包)
-在签署交易之前务必验证网络
-在一个网络上发布的移动包不在另一个网络上自动可用
这种网络隔离可确保安全性并防止在开发期间意外部署主网.
通过更改活动环境在 Sui CLI 中的测试网和主网之间切换:
####1. 列出可用网络
sui client envs
####2. 切换到测试网或主网
# Switch to Testnet
sui client switch --env testnet
# Switch to Mainnet
sui client switch --env mainnet
####3. 验证当前网络
sui client active-env
###重点注意事项
-RPC 终端节点:
-测试网:https://fullnode.testnet.sui.io
-主网:https://fullnode.mainnet.sui.io
~/.sui/sui_config/client.yaml
-本地配置:存储在.
###常见陷阱
-地址不匹配:测试网/主网地址不同.
-天然气预算:主网需要比测试网更高的天然气预算.
用于sui client switch
更改网络:
- 列出网络
sui client envs
- 切换
sui client switch --env mainnet # or testnet
主要注意事项:
✔ 配置存储在~/.sui/sui_config/client.yaml
.
✔ 每个网络都有单独的地址/密钥.
**备选方案:**手动设置 RPC 网址:
sui client --rpc-url https://fullnode.mainnet.sui.io
*(与 EVM 链不同,Sui CLI 将网络作为命名环境进行管理. ) *
要在 Sui CLI 中在测试网和主网之间切换,请使用 sui 客户端切换命令. 此命令将活动环境更新为测试网、主网或其他已配置的端点. 首先,确保你已经安装了 Sui CLI 并使用 sui 客户端初始化了你的钱包. 要切换到测试网,请运行 sui 客户端交换机--env 测试网. 要切换到主网,请使用 sui 客户端交换机--env 主网. 你可以通过运行 sui 客户端 active-env 来确认你当前的环境. 每个网络都有单独的地址和对象状态,因此测试网上的资产不会出现在主网上.
要使用 Sui CLI 在测试网和主网之间切换,您需要修改 CLI 配置中的活动环境配置文件. Sui CLI 使用 sui_config/sui_config.yaml 文件来管理与不同网络的连接. 该文件包含多个环境(主网、测试网、开发网络和本地网络),您可以根据需要在它们之间切换.
切换网络的步骤:
- 查看当前的活跃环境:
sui 客户端 active-env
- 列出可用环境:
sui 客户端 envs
3.切换到测试网:
sui 客户端交换机--env 测试网
- 切换到主网:
sui 客户端交换机--env 主网
- 可选:添加自定义 RPC 端点(如果需要):
sui 客户端 new-env--alias customnet--rpc < https://fullnode.custom.sui.io:443 > sui 客户端交换机--env customnet
架构概念:
每个环境使用单独的 RPC 网址与 Sui 网络通信. 主网和测试网具有不同的对象状态、包和硬币价值. 除非你再次明确部署,否则部署在 Testnet 上的智能合约不会存在于主网上.
移动开发注意事项:
在编写或测试 Move 代码时,通常使用以下方式进行部署:
sui 客户发布--gas-budget 100000000
在发布软件包或与包交互之前,请确保您已连接到正确的环境.
常见错误:
忘记切换环境并发布到错误的网络.
在无效的主网上使用测试网水龙头或硬币.
假设网络中的包裹地址相同,但事实并非如此.
最佳实践:
在执行操作之前,请务必确认活动网络:
sui 客户端 active-env
如果你正在管理多个项目,请为每个网络保留一个单独的 sui_config.yaml 备份. 这样可以确保您避免在错误的链上部署或调用合约.
要使用 Sui CLI 在测试网和主网之间切换,可以使用 sui 客户端切换命令. CLI 将环境配置文件存储在您的 ~/.sui/sui_config.yaml 文件中. 要检查您当前的环境,请运行:
sui 客户端 active-env
要列出所有已配置的环境,请使用:
sui 客户端 envs
要切换到测试网,请执行以下操作:
sui 客户端交换机--env 测试网
要切换到主网,请执行以下操作:
sui 客户端交换机--env 主网
如果你缺少一个环境,你可以使用以下方法添加一个环境:
sui 客户端 new-env--alias customnet--rpc https://fullnode.testnet.sui.io:443
在部署智能合约或与之交互之前,请务必验证您的环境.
要使用 Sui CLI 在测试网和主网之间切换,您只需更改活动环境配置文件,它会告诉 CLI 使用哪个 RPC 网址和网络设置. Sui CLI 支持多个环境testnet
,如mainnet
、devnet``localnet
、和,并且每个环境在您的 Sui 配置文件中存储了不同的 RPC 和水龙头配置.
你可以通过运行以下命令查看你当前的个人资料:
sui client active-env
要切换到测试网,请执行以下操作:
sui client switch --env testnet
要切换到主网,请执行以下操作:
sui client switch --env mainnet
如果你之前没有设置过它们,CLI 将自动从 Sui 的默认配置端点中获取正确的 RPC URL 和网络设置. 切换后,发布、传输和查询等所有命令都将指向所选网络.
每个个人资料都有自己的钱包和密钥存储空间,因此,如果您在Testnet上为地址注资,则该地址不会自动转移到主网——您需要一个单独的钱包或在需要时手动导入密钥.
这与 EVM 链的不同之处在于,Sui 将环境视为单独的配置文件,而不仅仅是不同的 RPC 端点. 这意味着CLI会为您抽象出RPC选择,从而使网络切换更加顺畅,但需要知道您的钱包和软件包ID属于哪个环境.
常见的错误包括尝试在主网上使用测试网对象(ID不存在),在部署或资助之前没有切换,或者由于不同网络的费用略有不同,使用了错误的天然气预算.
###1. CLI 网络交换 ####列出可用网络
sui client envs
示例输出:
Active Environment: testnet
Available Environments:
1. mainnet
2. testnet
3. devnet
4. localnet
####切换网络
# To Mainnet
sui client switch --env mainnet
# To Testnet
sui client switch --env testnet
# Verify current network
sui client active-address
###自定义 RPC 端点
sui client new-env \
--alias custom-mainnet \
--rpc https://fullnode.mainnet.sui.io:443
###2. 移动代码注意事项 ####网络特定的常量
module my_pkg::config {
const MAINNET: bool = true; // Compile-time flag
public fun get_chain_id(): u64 {
if (MAINNET) 1 else 2 // 1=Mainnet, 2=Testnet
}
}
####条件编译
# Build for Mainnet
sui move build --features mainnet
# Build for Testnet
sui move build --features testnet
###3. 主要架构差异 | Aspect | 主网 | 测试网 | | -----------------| ---------| |汽油成本| 更高(实际 SUI)| 更低(测试 SUI)| |升级政策| 严格治理 | 灵活 | |持久性| 永久性 | 定期擦拭 |
###4. 钱包管理 ####每个网络都有单独的账户
# Generate Testnet-specific keypair
sui client new-address testnet-ed25519
# Fund with Testnet SUI
sui client faucet --address 0xYOUR_TESTNET_ADDRESS
####导出/导入密钥
# Export Mainnet key
sui client export-address mainnet-address
# Import to Testnet
sui client import-key mainnet-key.json --env testnet
###5. 部署工作流程 ####先测试网
sui client publish --gas-budget 50000000 --env testnet
####主网推广
sui client publish --gas-budget 100000000 --env mainnet
###6. 错误处理 ####常见问题
错误 | 解决方案 |
---|---|
EWrongNetwork | sui client active-address |
EInsufficientGas | 使用水龙头(测试网)或交易所(主网)的资金地址 |
EVersionMismatch | 确保 CLI 版本与网络相匹配 (sui upgrade ) |
####网络检查
#[test_only]
module test {
fun test_network() {
let chain_id = config::get_chain_id();
assert!(chain_id == 1, 0); // Fail if not Mainnet
}
}
###7. 安全最佳实践
- 独立密钥:切勿在主网上重复使用测试网密钥
--dry-run
试运行:务必先进行测试 3.天然气预算:主网需要增加 5-10 倍的预算
###8. 监控工具 ####特定网络资源管理器 -主网:Suiscan 主网 -测试网:Sui Explorer 测试网
###CLI 监控
# Watch Mainnet sync status
watch -n 1 'sui client --env mainnet call \
--package 0x3 --module sui_system --function get_metrics'
###9. 本地网络备用 对于不依赖网络的关键测试:
sui-test-validator --reset
sui client switch --env localnet
###与 EVM 的主要差异化因素 | 功能 | Sui | EVM | | --------------| -----| |网络切换| CLI 管理的环境 | 手动 RPC URL 更改 | |汽油代币| SUI(原生)| ETH/其他(基于合约)| |持久性| 预计会抹掉测试网 | 测试网通常是持久的 |
对于生产部署:
- 在 Testnet 上进行彻底测试
- 监控器Sui 状态页面 3.使用 CI/CD强制执行网络检查
要使用Sui CLI在测试网和主网之间切换,您可以在启动Sui节点或与之交互时指定网络. 以下是在两个网络之间切换的方法:
1. 在测试网或主网上启动节点
当您使用 CLI 启动 Sui 节点时,可以使用--network
标志指定网络.
*对于测试网:
sui node start --network testnet
*对于主网:
sui node start --network mainnet
此命令将在相应网络上启动 Sui 节点.
2. 用于 RPC 交互的切换网络
如果您想使用 Sui CLI 与测试网或主网RPC 服务器进行交互,则需要为要连接的网络设置相应的终端节点.
*对于测试网:
https://fullnode.testnet.sui.io:443
要与测试网进行交互,您可以将 RPC 端点设置为.
示例命令:
sui client --url https://fullnode.testnet.sui.io:443
*对于主网:
https://fullnode.mainnet.sui.io:443
要与主网进行交互,您可以将 RPC 终端节点设置为.
示例命令:
sui client --url https://fullnode.mainnet.sui.io:443
您也可以将其设置为当前会话的默认值.
3. 更改默认网络(永久设置)
要永久更改默认网络配置,可以修改 Sui CLI 的配置文件:
- 打开 Sui CLI 配置文件(
~/.sui/config.toml
在 Linux/macOS 或 WindowsC:\Users\<username>\AppData\Local\sui\config.toml
上). - 查找 “
network
或rpc
” 部分. - 将
rpc
端点和网络名称更新为相应的值(测试网或主网).
例如,要使用Testnet:
[network]
rpc = "https://fullnode.testnet.sui.io:443"
要使用主网,请执行以下操作:
[network]
rpc = "https://fullnode.mainnet.sui.io:443"
4. 验证网络连接
您可以使用以下命令检查网络的当前状态,以验证与所需网络的连接:
sui client --url https://fullnode.testnet.sui.io:443 status
或者对于主网:
sui client --url https://fullnode.mainnet.sui.io:443 status
这将返回有关所连接网络的详细信息,这将帮助您确认您使用的是正确的网络.
结论
在--network
启动节点时使用标志,或者为命令指定正确的 RPC 终端节点,在 Sui CLI 中在测试网和主网之间切换非常简单. 您也可以修改配置文件,为 CLI 会话设置永久网络.
你知道答案吗?
请登录并分享。
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.