Struct switchboard_solana::attestation_program::accounts::routine::FunctionRoutineAccountData
source · pub struct FunctionRoutineAccountData {Show 25 fields
pub name: [u8; 64],
pub metadata: [u8; 256],
pub created_at: i64,
pub updated_at: i64,
pub is_disabled: ResourceLevel,
pub status: RoutineStatus,
pub error_status: u8,
pub enclave_signer: Pubkey,
pub verifier: Pubkey,
pub bounty: u64,
pub authority: Pubkey,
pub payer: Pubkey,
pub function: Pubkey,
pub attestation_queue: Pubkey,
pub escrow_wallet: Pubkey,
pub escrow_token_wallet: Pubkey,
pub queue_idx: u32,
pub schedule: [u8; 64],
pub max_container_params_len: u32,
pub container_params_hash: [u8; 32],
pub container_params: Vec<u8>,
pub last_execution_timestamp: i64,
pub last_successful_execution_timestamp: i64,
pub next_allowed_timestamp: i64,
pub _ebuf: [u8; 512],
}Fields§
§name: [u8; 64]The name of the function routine for easier identification.
metadata: [u8; 256]The metadata of the function routine for easier identification.
created_at: i64The unix timestamp when the function routine was created.
updated_at: i64The unix timestamp when the function routine config was changed.
is_disabled: ResourceLevelFlag to disable the function and prevent new verification requests.
status: RoutineStatusThe type of resource that disabled the routine.
error_status: u8The last reported error code if the most recent response was a failure
enclave_signer: PubkeyThe enclave generated signer for this routine.
verifier: PubkeyThe verifier oracle who signed this verification.
bounty: u64The SOL bounty in lamports used to incentivize a verifier to expedite the request. 0 = no bounty. Receiver = verifier oracle.
Signer allowed to manage the routine.
payer: PubkeyThe default destination for rent exemption when the account is closed.
function: PubkeyThe function that manages the mr_enclave set for this routine.
attestation_queue: PubkeyThe Attestation Queue for this request.
escrow_wallet: PubkeyThe tokenAccount escrow
escrow_token_wallet: PubkeyThe TokenAccount with funds for the escrow.
queue_idx: u32The index of the verifier on the queue that is assigned to process the next invocation. This is incremented after each invocation in a round-robin fashion.
schedule: [u8; 64]The cron schedule to run the function on.
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.
last_execution_timestamp: i64The unix timestamp when the function was last run.
last_successful_execution_timestamp: i64The unix timestamp when the function was last run successfully.
next_allowed_timestamp: i64The unix timestamp when the function is allowed to run next.
_ebuf: [u8; 512]Reserved.
Implementations§
source§impl FunctionRoutineAccountData
impl FunctionRoutineAccountData
sourcepub fn assert_data_len(account_info: &AccountInfo<'_>, len: Option<u32>) -> bool
pub fn assert_data_len(account_info: &AccountInfo<'_>, len: Option<u32>) -> bool
sourcepub fn is_empty_schedule(&self) -> bool
pub fn is_empty_schedule(&self) -> bool
Checks if the schedule is empty by reading the first byte.
§Returns
A boolean indicating whether the schedule is empty or not.
sourcepub fn is_disabled(&self) -> bool
pub fn is_disabled(&self) -> bool
Returns a bool representing whether the routine is disabled for use.
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 the given signer account against the function_loader and the enclave_signer
stored in this FunctionRoutineAccountData.
§Arguments
function_loader- TheAccountLoaderof the function account to validate.enclave_signer- TheAccountInfoof the enclave signer to validate.
§Errors
Returns an error if:
- the function cannot be deserialized
- the routine is not assigned to the function
- the function and routine have different attestation queues
- the routine’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::FunctionRoutineAccountData;
#[derive(Accounts)]
pub struct Settle<'info> {
// YOUR PROGRAM ACCOUNTS
#[account(
mut,
has_one = switchboard_routine,
)]
pub user: AccountLoader<'info, UserState>,
// SWITCHBOARD ACCOUNTS
pub switchboard_function: AccountLoader<'info, FunctionAccountData>,
#[account(
constraint = switchboard_routine.validate_signer(
&switchboard_function,
&enclave_signer.to_account_info()
)?
)]
pub switchboard_routine: Box<Account<'info, FunctionRoutineAccountData>>,
pub enclave_signer: Signer<'info>,
}pub fn get_name(&self) -> String
pub fn get_metadata(&self) -> String
source§impl FunctionRoutineAccountData
impl FunctionRoutineAccountData
sourcepub async fn get_program_accounts(
rpc: &RpcClient,
filters: FunctionRoutineFilters,
commitment: Option<CommitmentLevel>,
) -> Result<Vec<(Pubkey, FunctionRoutineAccountData)>, SbError>
Available on non-target_os="solana" only.
pub async fn get_program_accounts( rpc: &RpcClient, filters: FunctionRoutineFilters, commitment: Option<CommitmentLevel>, ) -> Result<Vec<(Pubkey, FunctionRoutineAccountData)>, SbError>
target_os="solana" only.Client Methods
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.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.pub fn get_is_enabled_filter() -> RpcFilterType
target_os="solana" only.pub fn get_metadata_filter(metadata: Vec<u8>) -> RpcFilterType
target_os="solana" only.pub fn get_schedule(&self) -> Option<Schedule>
target_os="solana" only.pub fn get_last_execution_datetime(&self) -> DateTime<Utc>
target_os="solana" only.pub fn get_next_execution_datetime(&self) -> Option<DateTime<Utc>>
target_os="solana" only.pub fn should_execute(&self, now: DateTime<Utc>) -> bool
target_os="solana" only.pub fn calc_container_params_hash(container_params: &Vec<u8>) -> [u8; 32]
target_os="solana" only.pub fn get_container_params_hash(&self) -> [u8; 32]
target_os="solana" only.Trait Implementations§
source§impl AccountDeserialize for FunctionRoutineAccountData
impl AccountDeserialize for FunctionRoutineAccountData
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 FunctionRoutineAccountDatawhere
[u8; 64]: BorshDeserialize,
[u8; 256]: BorshDeserialize,
i64: BorshDeserialize,
ResourceLevel: BorshDeserialize,
RoutineStatus: BorshDeserialize,
u8: BorshDeserialize,
Pubkey: BorshDeserialize,
u64: BorshDeserialize,
u32: BorshDeserialize,
[u8; 32]: BorshDeserialize,
Vec<u8>: BorshDeserialize,
[u8; 512]: BorshDeserialize,
impl BorshDeserialize for FunctionRoutineAccountDatawhere
[u8; 64]: BorshDeserialize,
[u8; 256]: BorshDeserialize,
i64: BorshDeserialize,
ResourceLevel: BorshDeserialize,
RoutineStatus: BorshDeserialize,
u8: BorshDeserialize,
Pubkey: BorshDeserialize,
u64: BorshDeserialize,
u32: BorshDeserialize,
[u8; 32]: BorshDeserialize,
Vec<u8>: BorshDeserialize,
[u8; 512]: BorshDeserialize,
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 BorshSerialize for FunctionRoutineAccountDatawhere
[u8; 64]: BorshSerialize,
[u8; 256]: BorshSerialize,
i64: BorshSerialize,
ResourceLevel: BorshSerialize,
RoutineStatus: BorshSerialize,
u8: BorshSerialize,
Pubkey: BorshSerialize,
u64: BorshSerialize,
u32: BorshSerialize,
[u8; 32]: BorshSerialize,
Vec<u8>: BorshSerialize,
[u8; 512]: BorshSerialize,
impl BorshSerialize for FunctionRoutineAccountDatawhere
[u8; 64]: BorshSerialize,
[u8; 256]: BorshSerialize,
i64: BorshSerialize,
ResourceLevel: BorshSerialize,
RoutineStatus: BorshSerialize,
u8: BorshSerialize,
Pubkey: BorshSerialize,
u64: BorshSerialize,
u32: BorshSerialize,
[u8; 32]: BorshSerialize,
Vec<u8>: BorshSerialize,
[u8; 512]: BorshSerialize,
source§impl Clone for FunctionRoutineAccountData
impl Clone for FunctionRoutineAccountData
source§fn clone(&self) -> FunctionRoutineAccountData
fn clone(&self) -> FunctionRoutineAccountData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Default for FunctionRoutineAccountData
impl Default for FunctionRoutineAccountData
source§impl Discriminator for FunctionRoutineAccountData
impl Discriminator for FunctionRoutineAccountData
const DISCRIMINATOR: [u8; 8] = _
fn discriminator() -> [u8; 8]
source§impl PartialEq for FunctionRoutineAccountData
impl PartialEq for FunctionRoutineAccountData
source§fn eq(&self, other: &FunctionRoutineAccountData) -> bool
fn eq(&self, other: &FunctionRoutineAccountData) -> bool
self and other values to be equal, and is used
by ==.impl StructuralPartialEq for FunctionRoutineAccountData
Auto Trait Implementations§
impl Freeze for FunctionRoutineAccountData
impl RefUnwindSafe for FunctionRoutineAccountData
impl Send for FunctionRoutineAccountData
impl Sync for FunctionRoutineAccountData
impl Unpin for FunctionRoutineAccountData
impl UnwindSafe for FunctionRoutineAccountData
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