Struct switchboard_solana::attestation_program::accounts::request::FunctionRequestAccountData
source · pub struct FunctionRequestAccountData {Show 16 fields
pub is_triggered: u8,
pub status: RequestStatus,
pub authority: Pubkey,
pub payer: Pubkey,
pub function: Pubkey,
pub escrow: Pubkey,
pub attestation_queue: Pubkey,
pub active_request: FunctionRequestTriggerRound,
pub previous_request: FunctionRequestTriggerRound,
pub max_container_params_len: u32,
pub container_params_hash: [u8; 32],
pub container_params: Vec<u8>,
pub created_at: i64,
pub garbage_collection_slot: Option<u64>,
pub error_status: u8,
pub _ebuf: [u8; 255],
}Fields§
§is_triggered: u8Whether the request is ready to be processed.
status: RequestStatusThe status of the current request.
Signer allowed to cancel the request.
payer: PubkeyThe default destination for rent exemption when the account is closed.
function: PubkeyThe function that can process this request
escrow: PubkeyThe tokenAccount escrow
attestation_queue: PubkeyThe Attestation Queue for this request.
active_request: FunctionRequestTriggerRoundThe current active request.
previous_request: FunctionRequestTriggerRoundThe previous request.
max_container_params_len: u32The maximum number of bytes to pass to the container params.
container_params_hash: [u8; 32]Hash of the serialized container_params to prevent RPC tampering. Should be verified within your function to ensure you are using the correct parameters.
container_params: Vec<u8>The stringified container params to pass to the function.
created_at: i64The unix timestamp when the function was created.
garbage_collection_slot: Option<u64>The slot when the account can be garbage collected and closed by anyone for a portion of the rent.
error_status: u8The last recorded error code if most recent response was an error.
_ebuf: [u8; 255]Reserved.
Implementations§
source§impl FunctionRequestAccountData
impl FunctionRequestAccountData
pub fn space(len: Option<u32>) -> usize
pub fn is_round_active(&self, clock: &Clock) -> bool
sourcepub fn validate_signer<'a>(
&self,
function_loader: &AccountLoader<'a, FunctionAccountData>,
enclave_signer: &AccountInfo<'a>,
) -> Result<bool>
pub fn validate_signer<'a>( &self, function_loader: &AccountLoader<'a, FunctionAccountData>, enclave_signer: &AccountInfo<'a>, ) -> Result<bool>
Validates that the provided request is assigned to the same AttestationQueueAccountData as the function and the
provided enclave_signer matches the enclave_signer stored in the request’s active_request field.
§Arguments
request- TheFunctionRequestAccountDatabeing validated.enclave_signer- TheAccountInfoof the enclave signer to validate.
§Errors
Returns an error if:
- the function cannot be deserialized
- the function is not assigned to the request
- the function and request have different attestation queues
- the request’s verified signer does not match the provided
enclave_signer - the
enclave_signerdid not sign the transaction
§Returns
Returns Ok(true) if the validation succeeds, Ok(false) otherwise.
§Examples
use switchboard_solana::FunctionRequestAccountData;
#[derive(Accounts)]
pub struct Settle<'info> {
// YOUR PROGRAM ACCOUNTS
#[account(
mut,
has_one = switchboard_request,
)]
pub user: AccountLoader<'info, UserState>,
// SWITCHBOARD ACCOUNTS
pub switchboard_function: AccountLoader<'info, FunctionAccountData>,
#[account(
constraint = switchboard_request.validate_signer(
&switchboard_function,
&enclave_signer.to_account_info()
)?
)]
pub switchboard_request: Box<Account<'info, FunctionRequestAccountData>>,
pub enclave_signer: Signer<'info>,
}source§impl FunctionRequestAccountData
impl FunctionRequestAccountData
sourcepub async fn get_program_accounts(
rpc: &RpcClient,
filters: FunctionRequestFilters,
commitment: Option<CommitmentLevel>,
) -> Result<Vec<(Pubkey, FunctionRequestAccountData)>, SbError>
Available on non-target_os="solana" only.
pub async fn get_program_accounts( rpc: &RpcClient, filters: FunctionRequestFilters, commitment: Option<CommitmentLevel>, ) -> Result<Vec<(Pubkey, FunctionRequestAccountData)>, SbError>
target_os="solana" only.Client Methods
pub async fn get_or_create_from_seed( rpc: &RpcClient, payer: Arc<Keypair>, function: Pubkey, seed: Option<&str>, params: Option<FunctionRequestInitAndTriggerParams>, ) -> Result<Pubkey, SbError>
target_os="solana" only.sourcepub fn fetch(client: &RpcClient, pubkey: Pubkey) -> Result<Self, SbError>
Available on non-target_os="solana" only.
pub fn fetch(client: &RpcClient, pubkey: Pubkey) -> Result<Self, SbError>
target_os="solana" only.Fetch Methods
pub async fn fetch_async( client: &RpcClient, pubkey: Pubkey, ) -> Result<Self, SbError>
target_os="solana" only.pub fn fetch_sync<T: SyncClient>( client: &T, pubkey: Pubkey, ) -> Result<Self, SbError>
target_os="solana" only.pub fn get_discriminator_filter() -> RpcFilterType
target_os="solana" only.pub fn get_is_triggered_filter() -> RpcFilterType
target_os="solana" only.pub fn get_is_active_filter() -> RpcFilterType
target_os="solana" only.pub fn get_is_triggered_and_active_filter() -> RpcFilterType
target_os="solana" only.pub fn get_queue_filter(queue_pubkey: &Pubkey) -> RpcFilterType
target_os="solana" only.pub fn get_queue_idx_filter(queue_idx: &u32) -> RpcFilterType
target_os="solana" only.target_os="solana" only.pub fn get_is_ready_filters(queue_pubkey: &Pubkey) -> Vec<RpcFilterType>
target_os="solana" only.pub fn calc_container_params_hash(&self) -> [u8; 32]
target_os="solana" only.Trait Implementations§
source§impl AccountDeserialize for FunctionRequestAccountData
impl AccountDeserialize for FunctionRequestAccountData
source§fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize(buf: &mut &[u8]) -> Result<Self>
Mint account into a token
Account.source§fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self>
source§impl BorshDeserialize for FunctionRequestAccountData
impl BorshDeserialize for FunctionRequestAccountData
fn deserialize_reader<R: Read>(reader: &mut R) -> Result<Self, Error>
source§fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
source§fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_reader<R>(reader: &mut R) -> Result<Self, Error>where
R: Read,
source§impl Clone for FunctionRequestAccountData
impl Clone for FunctionRequestAccountData
source§fn clone(&self) -> FunctionRequestAccountData
fn clone(&self) -> FunctionRequestAccountData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Default for FunctionRequestAccountData
impl Default for FunctionRequestAccountData
source§impl Discriminator for FunctionRequestAccountData
impl Discriminator for FunctionRequestAccountData
const DISCRIMINATOR: [u8; 8] = _
fn discriminator() -> [u8; 8]
source§impl PartialEq for FunctionRequestAccountData
impl PartialEq for FunctionRequestAccountData
source§fn eq(&self, other: &FunctionRequestAccountData) -> bool
fn eq(&self, other: &FunctionRequestAccountData) -> bool
self and other values to be equal, and is used
by ==.impl StructuralPartialEq for FunctionRequestAccountData
Auto Trait Implementations§
impl Freeze for FunctionRequestAccountData
impl RefUnwindSafe for FunctionRequestAccountData
impl Send for FunctionRequestAccountData
impl Sync for FunctionRequestAccountData
impl Unpin for FunctionRequestAccountData
impl UnwindSafe for FunctionRequestAccountData
Blanket Implementations§
source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more