@solana/addresses
This package contains utilities for generating account addresses. It can be used standalone, but it is also exported as part of the Solana JavaScript SDK @solana/web3.js@experimental
.
Types
Base58EncodedAddress
This type represents a string that validates as a Solana address. Functions that require well-formed addresses should specify their inputs in terms of this type.
Whenever you need to validate an arbitrary string as a base58-encoded address, use the assertIsBase58EncodedAddress()
function in this package.
Functions
assertIsBase58EncodedAddress()
Client applications primarily deal with addresses and public keys in the form of base58-encoded strings. Addresses returned from the RPC API conform to the type Base58EncodedAddress
. You can use a value of that type wherever a base58-encoded address is expected.
From time to time you might acquire a string, that you expect to validate as an address, from an untrusted network API or user input. To assert that such an arbitrary string is a base58-encoded address, use the assertIsBase58EncodedAddress
function.
import { assertIsBase58EncodedAddress } from '@solana/addresses';
function handleSubmit() {
const address: string = accountAddressInput.value;
try {
assertIsBase58EncodedAddress(address);
const balanceInLamports = await rpc.getBalance(address).send();
} catch (e) {
}
}
getBase58EncodedAddressFromPublicKey()
Given a public CryptoKey
, this method will return its associated Base58EncodedAddress
.
import { getBase58EncodedAddressFromPublicKey } from '@solana/addresses';
const address = await getBase58EncodedAddressFromPublicKey(publicKey);
getProgramDerivedAddress()
Given a program's Base58EncodedAddress
and up to 16 Seeds
, this method will return the program derived address (PDA) associated with each.
import { getBase58EncodedAddressCodec, getProgramDerivedAddress } from '@solana/addresses';
const { serialize } = getBase58EncodedAddressCodec();
const { bumpSeed, pda } = await getProgramDerivedAddress({
programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Base58EncodedAddress,
seeds: [
serialize('9fYLFVoVqwH37C3dyPi6cpeobfbQ2jtLpN5HgAYDDdkm' as Base58EncodedAddress),
serialize('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Base58EncodedAddress),
serialize('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Base58EncodedAddress),
],
});