Skip to main content

Connect to a Local Network

Use a Sui local network to test your dApps against the latest changes to Sui, and to prepare for the next Sui release to the Devnet or Testnet network. To set up a local network, Sui provides the sui-test-validator binary. The sui-test-validator starts a local network that includes a Sui Full node, a Sui validator, and a Sui faucet. You can use the included faucet to get test SUI to use on the local network.

If you haven't already, you need to install Sui on your system.

Start the local network

To start the local network, run the following command from your sui root folder.

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

The command starts the sui-test-validator. The RUST_LOG=off,sui_node=info turns off logging for all components except sui-node. If you want to see more detailed logs, you can remove RUST_LOG from the command.

Important: Each time you start the sui-test-validator, the network starts as a new network with no previous data. The local network is not persistent.

To customize your local Sui network, such as changing the port used, include additional parameters in the command to start 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]

Use sui-test-validator --help to see these options in your console.

Access your local Full node

Use the following command to retrieve the total transaction count from your local network:

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": []
}'

If successful, the response resembles the following:

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

Connect the Sui Client CLI to your local network

You can use the Sui Client CLI with any Sui network. By default it connects to Sui Devnet. To connect to your local network, create a new environment alias named local that sets the RPC URL the client uses to your local network.

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

Next, use the following command to set the active environment to the new local environment you created.

sui client switch --env local

The command returns:

Active environment switched to [local]

You can check the current active environment with the following command:

sui client active-env

The command returns:

local

Show the current active address

The Sui Client CLI uses the active address for command if you don't specify one. Use the following command to show the active address on your local network.

sui client active-address

The command returns an address:

0xbc33e6e4818f9f2ef77d020b35c24be738213e64d9e58839ee7b4222029610de

Use the active address to get test SUI to use on your local network. Use the sui client addresses command to see all of the addresses on your local network.

info

The address returned when you run the command is unique and does not match the one used in this example.

Use the local faucet

Transactions on your local network require SUI coins to pay for gas fees just like other networks. You can use the currently active address with the faucet.

Sui CLI provides the sui client faucet command to get coins from the faucet. In the most basic case, run sui client faucet and wait up to 60 seconds for the coins to reach your address. Use sui client gas to check for the new coins.

info

The faucet command uses the active address and the active network environment by default. If you need to pass in a different address or faucet server URL, check the help menu. If you're using a different network than a local network or the public ones (fullnode.network.sui.io), you will have to pass the URL to the faucet server.

Check the gas coin objects for the active address

After you get coins from the faucet, use the following command to view the coin objects for the address:

sui client gas

The response resembles the following, but with different IDs:

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

Generate example data

Use the TypeScript SDK to add example data to your network. Run the following command from the sui root folder:

pnpm --filter @mysten/sui test:e2e

For additional information about example data for testing, see https://github.com/MystenLabs/sui/tree/main/sdk/typescript#testing.

Troubleshooting

If you do not use Node.js 18, you might see the following message:

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

To resolve this, switch or update to Node.js 18 and then try again.

Test with the Sui TypeScript SDK

The published version of the Sui TypeScript SDK might be an earlier version than the version of Sui you installed for your local network. To make sure you're using the latest version of the SDK, use the experimental-tagged version (for example, 0.0.0-experimental-20230317184920) in the Current Tags section of the Sui NPM registry.