@solana/addresses
TypeScript icon, indicating that this package has built-in type declarations

2.0.0-experimental.083193b • Public • Published

npm npm-downloads semantic-release
code-style-prettier

@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';

// 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`.
        assertIsBase58EncodedAddress(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
    }
}

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: [
        // Owner
        serialize('9fYLFVoVqwH37C3dyPi6cpeobfbQ2jtLpN5HgAYDDdkm' as Base58EncodedAddress),
        // Token program
        serialize('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Base58EncodedAddress),
        // Mint
        serialize('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Base58EncodedAddress),
    ],
});

Readme

Keywords

Package Sidebar

Install

npm i @solana/addresses

Weekly Downloads

11,195

Version

2.0.0-experimental.083193b

License

MIT

Unpacked Size

203 kB

Total Files

29

Last publish

Collaborators

  • nickfrosty
  • mcintyre94
  • 2501babe
  • lorisleiva
  • buffalojoec
  • ngundotra
  • _chido
  • steveluscher
  • seanyoung
  • tyera
  • joncinque
  • ryoqun
  • trent-solana
  • jordansexton