Struct solana_program::pubkey::Pubkey[][src]

#[repr(transparent)]
pub struct Pubkey(_);

Implementations

impl Pubkey[src]

pub fn new(pubkey_vec: &[u8]) -> Self[src]

pub const fn new_from_array(pubkey_array: [u8; 32]) -> Self[src]

pub fn new_rand() -> Self[src]

👎 Deprecated since 1.3.9:

Please use ‘Pubkey::new_unique’ instead

pub fn new_unique() -> Self[src]

unique Pubkey for tests and benchmarks.

pub fn create_with_seed(
    base: &Pubkey,
    seed: &str,
    owner: &Pubkey
) -> Result<Pubkey, PubkeyError>
[src]

pub fn create_program_address(
    seeds: &[&[u8]],
    program_id: &Pubkey
) -> Result<Pubkey, PubkeyError>
[src]

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.

pub fn find_program_address(
    seeds: &[&[u8]],
    program_id: &Pubkey
) -> (Pubkey, u8)
[src]

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.

The processes of finding a valid program address is by trial and error, and even though it is deterministic given a set of inputs it can take a variable amount of time to succeed across different inputs. This means that when called from an on-chain program it may incur a variable amount of the program’s compute budget. Programs that are meant to be very performant may not want to use this function because it could take a considerable amount of time. Also, programs that area already at risk of exceeding their compute budget should also call this with care since there is a chance that the program’s budget may be occasionally exceeded.

pub fn try_find_program_address(
    seeds: &[&[u8]],
    program_id: &Pubkey
) -> Option<(Pubkey, u8)>
[src]

Find a valid program address and its corresponding bump seed which must be passed as an additional seed when calling invoke_signed.

The processes of finding a valid program address is by trial and error, and even though it is deterministic given a set of inputs it can take a variable amount of time to succeed across different inputs. This means that when called from an on-chain program it may incur a variable amount of the program’s compute budget. Programs that are meant to be very performant may not want to use this function because it could take a considerable amount of time. Also, programs that area already at risk of exceeding their compute budget should also call this with care since there is a chance that the program’s budget may be occasionally exceeded.

pub fn to_bytes(self) -> [u8; 32][src]

pub fn is_on_curve(&self) -> bool[src]

pub fn log(&self)[src]

Log a Pubkey from a program

Trait Implementations

impl AbiExample for Pubkey[src]

fn example() -> Self[src]

impl AsRef<[u8]> for Pubkey[src]

fn as_ref(&self) -> &[u8]

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[src]

Performs the conversion.

impl BorshDeserialize for Pubkey[src]

fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>[src]

Deserializes this instance from a given slice of bytes. Updates the buffer to point at the remaining bytes. Read more

fn try_from_slice(v: &[u8]) -> Result<Self, Error>[src]

Deserialize this instance from a slice of bytes.

fn is_u8() -> bool[src]

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

impl BorshSchema for Pubkey where
    [u8; 32]: BorshSchema
[src]

fn declaration() -> Declaration[src]

Get the name of the type without brackets.

fn add_definitions_recursively(
    definitions: &mut HashMap<Declaration, Definition>
)
[src]

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

fn add_definition(
    declaration: String,
    definition: Definition,
    definitions: &mut HashMap<String, Definition, RandomState>
)
[src]

Helper method to add a single type definition to the map.

fn schema_container() -> BorshSchemaContainer[src]

impl BorshSerialize for Pubkey[src]

fn serialize<W: Write>(&self, writer: &mut W) -> Result<(), Error>[src]

fn try_to_vec(&self) -> Result<Vec<u8, Global>, Error>[src]

Serialize this instance into a vector of bytes.

fn is_u8() -> bool[src]

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

impl Clone for Pubkey[src]

fn clone(&self) -> Pubkey[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for Pubkey[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl Default for Pubkey[src]

fn default() -> Pubkey[src]

Returns the “default value” for a type. Read more

impl<'de> Deserialize<'de> for Pubkey[src]

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
    __D: Deserializer<'de>, 
[src]

Deserialize this value from the given Serde deserializer. Read more

impl Display for Pubkey[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl FromStr for Pubkey[src]

type Err = ParsePubkeyError

The associated error which can be returned from parsing.

fn from_str(s: &str) -> Result<Self, Self::Err>[src]

Parses a string s to return a value of this type. Read more

impl Hash for Pubkey[src]

fn hash<__H: Hasher>(&self, state: &mut __H)[src]

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl Ord for Pubkey[src]

fn cmp(&self, other: &Pubkey) -> Ordering[src]

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl PartialEq<Pubkey> for Pubkey[src]

fn eq(&self, other: &Pubkey) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &Pubkey) -> bool[src]

This method tests for !=.

impl PartialOrd<Pubkey> for Pubkey[src]

fn partial_cmp(&self, other: &Pubkey) -> Option<Ordering>[src]

This method returns an ordering between self and other values if one exists. Read more

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Sanitize for Pubkey[src]

impl Serialize for Pubkey[src]

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
    __S: Serializer
[src]

Serialize this value into the given Serde serializer. Read more

impl TryFrom<&'_ str> for Pubkey[src]

type Error = ParsePubkeyError

The type returned in the event of a conversion error.

fn try_from(s: &str) -> Result<Self, Self::Error>[src]

Performs the conversion.

impl Copy for Pubkey[src]

impl Eq for Pubkey[src]

impl StructuralEq for Pubkey[src]

impl StructuralPartialEq for Pubkey[src]

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
[src]

pub default fn visit_for_abi(
    &self,
    _digester: &mut AbiDigester
) -> Result<AbiDigester, DigestError>
[src]

impl<T> AbiEnumVisitor for T where
    T: Serialize + AbiExample + ?Sized
[src]

pub default fn visit_for_abi(
    &self,
    digester: &mut AbiDigester
) -> Result<AbiDigester, DigestError>
[src]

impl<T> AbiExample for T[src]

pub default fn example() -> T[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToHex for T where
    T: AsRef<[u8]>, 
[src]

pub fn encode_hex<U>(&self) -> U where
    U: FromIterator<char>, 
[src]

Encode the hex strict representing self into the result. Lower case letters are used (e.g. f9b4ca) Read more

pub fn encode_hex_upper<U>(&self) -> U where
    U: FromIterator<char>, 
[src]

Encode the hex strict representing self into the result. Upper case letters are used (e.g. F9B4CA) Read more

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]