PublicKey
PublicKey is an immutable, hashable wrapper around the native solders
Pubkey. It accepts base58 text, exactly 32 bytes, an integer, a sequence of 32
byte values, or an existing solders public key.
from solathon import PublicKey
address = PublicKey("11111111111111111111111111111111")
str(address) # base58 text
bytes(address) # 32 raw bytes
address.byte_value # the same immutable bytes
address.is_on_curve() # False for most program-derived addresses
native_address = address.to_solders()base58_encode() remains available for compatibility and returns base58 as
bytes. Prefer str(address) for text.
Program-derived addresses
program_id = PublicKey("BPFLoaderUpgradeab1e11111111111111111111111")
pda, bump = PublicKey.find_program_address([b"vault"], program_id)Seeded addresses and explicit program addresses are also available:
seeded = PublicKey.create_with_seed(base_public_key, "profile", program_id)
pda = PublicKey.create_program_address([b"vault", bytes([bump])], program_id)A PDA can contain at most 16 seeds and each seed can contain at most 32 bytes.