Join a nomination pool
On-chain name of method: nominationPools_join
Parameters
avail-js
| parameter | type | optional | description | 
|---|---|---|---|
| amount | BN | false | The amount of funds to delegate to the pool | 
| poolId | number | false | pool id | 
| waitFor | WaitFor | false | wait for block inclusion or finalization | 
| account | KeyringPair | false | account that will send and sign the transaction | 
| options | SignerOptions | true | used 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
- 
You will need to set up the dev environment required to run this example. For instructions, check out our docs here. 
- 
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. 
- The minimum amount of AVAILrequired to join a nomination pool is100 AVAIL.
- Enter the poolIdcarefully.
avail-js
- 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();- Run the code using:
terminal
ts-node your-file-name.tsSample Response:
{
    "isErr": false,
    "event": {
        "member": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
        "poolId": "1",
        "bonded": "10000",
        "joined": "true"
    },
    "events": [...],
    "txHash": "0x06baecbb8680e90d025d1fd08044d0d251054a89e82dd460022bdf3796020050",
    "txIndex": 1,
    "blockHash": "0x82078130da46adacf5bdff86618ab6e1c443fda6d883d9fcf967a41a2e29d612",
    "blockNumber": 19
}Last updated on