Hello Sui
This basic example introduces you to the Sui TypeScript SDK. The Node.js example mints SUI on a Sui network and then queries the address to get a sum for the owned SUI. You don't need to use an IDE to complete the example, but one like Microsoft Visual Studio Code helps centralize more advanced projects.
Before you begin
You need an address on a Sui development network (Devnet, Testnet, local). If you don't already have an address, use the Sui Client CLI (opens in a new tab) or the Sui Wallet browser extension (opens in a new tab) to create one.
You also need Node.js (opens in a new tab) and a package manager like pnpm (opens in a new tab) to follow this example, so install them on your system if you haven't already.
Start a project
Using a Terminal or Console, create a folder on your system (hello-sui
in this example) and make it the working directory.
mkdir hello-sui
cd hello-sui
When you use a package manager to install the necessary packages, it downloads the modules to your node_modules
folder and adds the references to your package.json
file, creating the file if it doesn't already exist. For this example, you need only the Sui TypeScript SDK:
npm i -D @mysten/sui.js
Your package.json
file now has a dependencies section with @mysten/sui.js
listed with the package version number.
"dependencies": {
"@mysten/sui.js": "^<VERSION_NUMBER>"
}
Get some SUI for your account
Instead of a 'Hello World' output to your console, this example introduces some SUI to your wallet address. You must be on Devnet, Testnet, or a local network to use a faucet for minting SUI.
Create a new index.js
file in the root of your project with the following code.
import { requestSuiFromFaucetV0, getFaucetHost } from '@mysten/sui.js/faucet';
import { SuiClient } from '@mysten/sui.js/client';
const SUI_NETWORK = 'https://fullnode.devnet.sui.io:443/';
// Replace <YOUR_SUI_ADDRESS> with your actual address, which is in the form 0x123...
const MY_ADDRESS = '<YOUR_SUI_ADDRESS>';
// Create a new SuiClient object pointing to the network you want to use.
const suiClient = new SuiClient({url: SUI_NETWORK})
// Function to process the JSON that getCoins provides and then return number of SUI.
const balance = (coins) => {
let bal = 0;
coins.data.map((coin) => bal += Number(coin.balance));
return bal/1000000000;
}
// Store the JSON representation for the SUI the address owns before using faucet.
const coinsBefore = await suiClient.getCoins({
owner: MY_ADDRESS
})
const statusId = await requestSuiFromFaucetV0({
// Use getFaucetHost to make sure you're using correct faucet address.
// You can also just use the address (see Connecting to Sui Network topic for values).
host: getFaucetHost('testnet'),
recipient: MY_ADDRESS
})
// Store the JSON representation for the SUI the address owns after using faucet.
const coinsAfter = await suiClient.getCoins({
owner: MY_ADDRESS
})
// Output result to console.
console.log(`Balance before faucet: ${balance(coinsBefore)} SUI. Balance after: ${balance(coinsAfter)} SUI. Hello, SUI!`);
Save the file, then use Node.js to run it in your Console or Terminal:
node index.js
The code imports the requestSuiFromFaucetV0
function from the SDK and calls it to mint SUI for the provided address. The code also imports SuiClient
to create a new client on the Sui network that it uses to query the address and output the amount of SUI the address owns before and after using the faucet. You can check the total SUI for your address using the Sui Wallet or Sui Client CLI.
Faucets on Devnet and Testnet are rate limited. If you run the script too many times, you surpass the limit and must wait to successfully run it again.
You can also use the Sui Client CLI (opens in a new tab) to perform client calls on a Sui network.