Fetch balances and other information for an account
On-chain name of method: system_account
Parameters
avail-js
parameter | type | optional | description |
---|---|---|---|
address | SS58 | true | The account address to fetch information for |
Returns
nonce
: Current nonce of the account on Avail DAconsumers
: The number of other modules that currently depend on this account’s existence. The account cannot be reaped until this is zeroproviders
: The number of other modules that allow this account to exist. The account may not be reaped until this is zero.sufficients
: The number of modules that allow this account to exist for their own purposes only. The account may not be reaped until this is zero.free
: Amount of Transferrable AVAIL tokens with the accountreserved
: Amount of AVAIL tokens that are not bonded, but also not yet freely availablefrozen
: Amount of AVAIL tokens currently staked by the accountflags
: Some extra information about the account
NONCE
-
Every account on Avail DA starts with a nonce value of
0
. This number represents the number of transactions executed on Avail DA by that particular account. -
Every successive transaction will have a nonce value that is incremented by
1
from the previous transaction. -
To extend this a bit further, the sum of all non-zero nonces on Avail DA will be equal to the total number of transactions executed on Avail DA.
Minimal example (Fetch account information for a single account)
-
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.
avail-js
- Inside
your-file-name.ts
, add the following code:
avail-js
import * as dotenv from 'dotenv';
import { SDK, Pallets } from 'avail-js-sdk';
dotenv.config();
export async function getAccountBalance() {
// Initialize SDK with Turing endpoint
const sdk = await SDK.New('wss://turing-rpc.avail.so/ws');
// Address to check balance for
const address = "5DDY2yzh8uCysYFAiRSTeQVwtZSKNF49CkQkyPH852xvrYKk";
console.log(`Checking balance for address: ${address}`);
// Get the current block hash
const blockHash = await sdk.client.bestBlockHash();
// Get storage at the current block
const storageAt = await sdk.client.storageAt(blockHash);
// Fetch account information
const accountInfo = await Pallets.SystemStorage.Account.fetch(storageAt, address);
// Format balances in AVAIL (dividing by 10^18)
const free = accountInfo.value.accountData.free.toString();
const reserved = accountInfo.value.accountData.reserved.toString();
const frozen = accountInfo.value.accountData.frozen.toString();
console.log("The following balances are in the smallest units, divide by 10^18 to get the balance in AVAIL");
console.log(`Free Balance: ${free}`);
console.log(`Reserved Balance: ${reserved}`);
console.log(`Frozen Balance: ${frozen}`);
process.exit(0);
}
// Execute the function
getAccountBalance();
- Run the code using:
terminal
ts-node your-file-name.ts
Last updated on