Struct anchor_lang::prelude::Pubkey
source · [−]#[repr(transparent)]pub struct Pubkey(_);
Implementations
sourceimpl Pubkey
impl Pubkey
pub fn new(pubkey_vec: &[u8]) -> Pubkey
pub const fn new_from_array(pubkey_array: [u8; 32]) -> Pubkey
pub fn new_rand() -> Pubkey
Please use ‘Pubkey::new_unique’ instead
sourcepub fn new_unique() -> Pubkey
pub fn new_unique() -> Pubkey
unique Pubkey for tests and benchmarks.
pub fn create_with_seed(
base: &Pubkey,
seed: &str,
owner: &Pubkey
) -> Result<Pubkey, PubkeyError>
sourcepub fn create_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> Result<Pubkey, PubkeyError>
pub fn create_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> Result<Pubkey, PubkeyError>
Create a program address
Program addresses are account keys that only the program has the
authority to sign. The address is of the same form as a Solana
Pubkey
, except they are ensured to not be on the ed25519 curve and
thus have no associated private key. When performing cross-program
invocations the program can “sign” for the key by calling
invoke_signed
and passing the same seeds used to generate the address.
The runtime will check that indeed the program associated with this
address is the caller and thus authorized to be the signer.
Because the program address cannot lie on the ed25519 curve there may be
seed and program id combinations that are invalid. In these cases an
extra seed (bump seed) can be calculated that results in a point off the
curve. Use find_program_address
to calculate that bump seed.
Warning: Because of the way the seeds are hashed there is a potential for program address collisions for the same program id. The seeds are hashed sequentially which means that seeds {“abcdef”}, {“abc”, “def”}, and {“ab”, “cd”, “ef”} will all result in the same program address given the same program id. Since the change of collision is local to a given program id the developer of that program must take care to choose seeds that do not collide with themselves.
sourcepub fn find_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> (Pubkey, u8)
pub fn find_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> (Pubkey, u8)
Find a valid program address and its corresponding bump seed which must
be passed as an additional seed when calling invoke_signed
.
Panics in the very unlikely event that the additional seed could not be found.
sourcepub fn try_find_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> Option<(Pubkey, u8)>
pub fn try_find_program_address(
seeds: &[&[u8]],
program_id: &Pubkey
) -> Option<(Pubkey, u8)>
Find a valid program address and its corresponding bump seed which must
be passed as an additional seed when calling invoke_signed
pub fn to_bytes(self) -> [u8; 32]
Trait Implementations
sourceimpl BorshDeserialize for Pubkey
impl BorshDeserialize for Pubkey
sourcefn deserialize(buf: &mut &[u8]) -> Result<Pubkey, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Pubkey, Error>
Deserializes this instance from a given slice of bytes. Updates the buffer to point at the remaining bytes. Read more
sourcefn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
Deserialize this instance from a slice of bytes.
sourcefn is_u8() -> bool
fn is_u8() -> bool
Whether Self is u8.
NOTE: Vec<u8>
is the most common use-case for serialization and deserialization, it’s
worth handling it as a special case to improve performance.
It’s a workaround for specific Vec<u8>
implementation versus generic Vec<T>
implementation. See https://github.com/rust-lang/rfcs/pull/1210 for details. Read more
sourceimpl BorshSchema for Pubkey
impl BorshSchema for Pubkey
sourcefn add_definitions_recursively(
_definitions: &mut HashMap<String, Definition, RandomState>
)
fn add_definitions_recursively(
_definitions: &mut HashMap<String, Definition, RandomState>
)
Recursively, using DFS, add type definitions required for this type. For primitive types this is an empty map. Type definition explains how to serialize/deserialize a type. Read more
sourcefn declaration() -> String
fn declaration() -> String
Get the name of the type without brackets.
sourcefn add_definition(
declaration: String,
definition: Definition,
definitions: &mut HashMap<String, Definition, RandomState>
)
fn add_definition(
declaration: String,
definition: Definition,
definitions: &mut HashMap<String, Definition, RandomState>
)
Helper method to add a single type definition to the map.
fn schema_container() -> BorshSchemaContainer
sourceimpl BorshSerialize for Pubkey
impl BorshSerialize for Pubkey
fn serialize<W>(&self, writer: &mut W) -> Result<(), Error> where
W: Write,
sourcefn try_to_vec(&self) -> Result<Vec<u8, Global>, Error>
fn try_to_vec(&self) -> Result<Vec<u8, Global>, Error>
Serialize this instance into a vector of bytes.
sourcefn is_u8() -> bool
fn is_u8() -> bool
Whether Self is u8.
NOTE: Vec<u8>
is the most common use-case for serialization and deserialization, it’s
worth handling it as a special case to improve performance.
It’s a workaround for specific Vec<u8>
implementation versus generic Vec<T>
implementation. See https://github.com/rust-lang/rfcs/pull/1210 for details. Read more
sourceimpl<'de> Deserialize<'de> for Pubkey
impl<'de> Deserialize<'de> for Pubkey
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<Pubkey, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<Pubkey, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Ord for Pubkey
impl Ord for Pubkey
sourceimpl PartialOrd<Pubkey> for Pubkey
impl PartialOrd<Pubkey> for Pubkey
sourcefn partial_cmp(&self, other: &Pubkey) -> Option<Ordering>
fn partial_cmp(&self, other: &Pubkey) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl Serialize for Pubkey
impl Serialize for Pubkey
sourcefn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Copy for Pubkey
impl Eq for Pubkey
impl StructuralEq for Pubkey
impl StructuralPartialEq for Pubkey
Auto Trait Implementations
impl RefUnwindSafe for Pubkey
impl Send for Pubkey
impl Sync for Pubkey
impl Unpin for Pubkey
impl UnwindSafe for Pubkey
Blanket Implementations
impl<T> AbiEnumVisitor for T where
T: Serialize + ?Sized,
impl<T> AbiEnumVisitor for T where
T: Serialize + ?Sized,
default fn visit_for_abi(
&self,
_digester: &mut AbiDigester
) -> Result<AbiDigester, DigestError>
impl<T> AbiEnumVisitor for T where
T: Serialize + AbiExample + ?Sized,
impl<T> AbiEnumVisitor for T where
T: Serialize + AbiExample + ?Sized,
default fn visit_for_abi(
&self,
digester: &mut AbiDigester
) -> Result<AbiDigester, DigestError>
impl<T> AbiExample for T
impl<T> AbiExample for T
default fn example() -> T
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToHex for T where
T: AsRef<[u8]>,
impl<T> ToHex for T where
T: AsRef<[u8]>,
sourcefn encode_hex<U>(&self) -> U where
U: FromIterator<char>,
fn encode_hex<U>(&self) -> U where
U: FromIterator<char>,
Encode the hex strict representing self
into the result. Lower case
letters are used (e.g. f9b4ca
) Read more
sourcefn encode_hex_upper<U>(&self) -> U where
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> U where
U: FromIterator<char>,
Encode the hex strict representing self
into the result. Upper case
letters are used (e.g. F9B4CA
) Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more