Skip to main content

Module address

Module address 

Source
Expand description

Functions to derive compressed account addresses.

§Addresses

Address seed is 32 bytes. Multiple seeds are hashed into a single 32 bytes seed that is passed into the light system program for address creation. Addresses are created independently from compressed accounts. This means that an address can be used in a compressed account but does not have to be used.

§Address uniqueness

Every address can only be created once per address tree. Addresses over all address trees are unique but address seeds can be reused in different address trees. If your program security requires global address uniqueness over all address trees, the used address Merkle tree must be checked. If your program just requires addresses to identify accounts but not uniqueness over all address trees the used address Merkle tree does not need to be checked.

§Create address example

let packed_address_tree_info = instruction_data.address_tree_info;
let tree_accounts = cpi_accounts.tree_accounts();

let address_tree_pubkey = tree_accounts[address_tree_info
   .address_merkle_tree_pubkey_index as usize]
   .key();

let (address, address_seed) = derive_address(
    &[b"counter"],
    &address_tree_pubkey,
    &crate::ID,
);

// Used in cpi to light-system program
// to insert the new address into the address merkle tree.
let new_address_params = packed_address_tree_info
    .into_new_address_params_packed(address_seed);

Modules§

v1
v2

Structs§

AddressSeed
A seed used to derive compressed account addresses.
NewAddressParams
NewAddressParamsAssigned
NewAddressParamsAssignedPacked
PackedNewAddressParams
Struct passed into the light system program cpi to create a new address.
PackedReadOnlyAddress
ReadOnlyAddress