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§
Structs§
- Address
Seed - A seed used to derive compressed account addresses.
- NewAddress
Params - NewAddress
Params Assigned - NewAddress
Params Assigned Packed - Packed
NewAddress Params - Struct passed into the light system program cpi to create a new address.
- Packed
Read Only Address - Read
Only Address