Skip to Content

Join a nomination pool

On-chain name of method: nominationPools_join

Parameters

parametertypeoptionaldescription
amountBNfalseThe amount of funds to delegate to the pool
poolIdnumberfalsepool id
waitForWaitForfalsewait for block inclusion or finalization
accountKeyringPairfalseaccount that will send and sign the transaction
optionsSignerOptionstrueused to overwrite existing signer options

Returns

On failure, a reason for the failure is returned. On success, the function will return a object of type PoolJoinTxSuccess. This object contains the details of the transaction and some information about the nomination pool oyu just joined.

Minimal example

  1. You will need to set up the dev environment required to run this example. For instructions, check out our docs here.

  2. If you’re sending an extrinsic (i.e conducting a transaction) you will need to replace the demo seed phrase with your own seed phrase. The rest of the code should work as is.

⚠️
  1. The minimum amount of AVAIL required to join a nomination pool is 100 AVAIL.
  2. Enter the poolId carefully.
  1. Inside your-file-name.ts, add the following code:
avail-js
import * as dotenv from 'dotenv'; import { Account, SDK, BN, Pallets } from 'avail-js-sdk'; dotenv.config(); export async function nominationPoolsJoin() { // Initialize SDK with Turing endpoint const sdk = await SDK.New('wss://turing-rpc.avail.so/ws'); // Create account from seed in .env file const seed = process.env.SEED; if (!seed) { throw new Error("SEED environment variable is not set"); } // Create account from seed const account = Account.new(seed); console.log("Account Address: ", account.address); // Join amount: 1,000 AVAIL const amount = new BN(10).pow(new BN(18)).mul(new BN(1000)); // 1,000 AVAIL console.log("Join Amount: 1,000 AVAIL"); // Pool ID to join // Replace with the actual pool ID you want to join const poolId = 1; console.log(`Joining Pool ID: ${poolId}`); // Create join transaction const tx = sdk.tx.nominationPools.join(amount, poolId); console.log("Submitting join transaction..."); // Execute and wait for inclusion const res = await tx.executeWaitForInclusion(account, {}); // Check if transaction was successful const isOk = res.isSuccessful(); if (isOk === undefined) { throw new Error("Cannot check if transaction was successful"); } else if (!isOk) { throw new Error("Transaction failed"); } console.log("Pool join operation completed successfully"); // Log all transaction details console.log("\nTransaction Details:"); console.log(`Transaction Hash: ${res.txHash}`); console.log(`Block Hash: ${res.blockHash}`); console.log(`Block Number: ${res.blockNumber}`); process.exit(0); } // Execute the function nominationPoolsJoin();
  1. Run the code using:
terminal
ts-node your-file-name.ts

Sample Response:

{ "isErr": false, "event": { "member": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty", "poolId": "1", "bonded": "10000", "joined": "true" }, "events": [...], "txHash": "0x06baecbb8680e90d025d1fd08044d0d251054a89e82dd460022bdf3796020050", "txIndex": 1, "blockHash": "0x82078130da46adacf5bdff86618ab6e1c443fda6d883d9fcf967a41a2e29d612", "blockNumber": 19 }
Last updated on