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
AVAIL
required to join a nomination pool is100 AVAIL
. - Enter the
poolId
carefully.
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.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