Package Exports
- @solana/addresses
Readme
@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 assertIsAddress() function in this package.
Functions
assertIsAddress()
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 assertIsAddress function.
import { assertIsAddress } from '@solana/addresses';
// Imagine a function that fetches an account's balance when a user submits a form.
function handleSubmit() {
    // We know only that what the user typed conforms to the `string` type.
    const address: string = accountAddressInput.value;
    try {
        // If this type assertion function doesn't throw, then
        // Typescript will upcast `address` to `Base58EncodedAddress`.
        assertIsAddress(address);
        // At this point, `address` is a `Base58EncodedAddress` that can be used with the RPC.
        const balanceInLamports = await rpc.getBalance(address).send();
    } catch (e) {
        // `address` turned out not to be a base58-encoded address
    }
}getAddressFromPublicKey()
Given a public CryptoKey, this method will return its associated Base58EncodedAddress.
import { getAddressFromPublicKey } from '@solana/addresses';
const address = await getAddressFromPublicKey(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 { getAddressCodec, getProgramDerivedAddress } from '@solana/addresses';
const { serialize } = getAddressCodec();
const { bumpSeed, pda } = await getProgramDerivedAddress({
    programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Base58EncodedAddress,
    seeds: [
        // Owner
        serialize('9fYLFVoVqwH37C3dyPi6cpeobfbQ2jtLpN5HgAYDDdkm' as Base58EncodedAddress),
        // Token program
        serialize('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Base58EncodedAddress),
        // Mint
        serialize('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Base58EncodedAddress),
    ],
});