pub struct SolanaTransactionValidator {}Implementations§
Source§impl SolanaTransactionValidator
impl SolanaTransactionValidator
pub fn validate_allowed_token( token_mint: &str, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Sourcepub fn validate_fee_payer(
tx: &Transaction,
relayer_pubkey: &Pubkey,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_fee_payer( tx: &Transaction, relayer_pubkey: &Pubkey, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s fee payer matches the relayer’s address.
Sourcepub async fn validate_blockhash<T: SolanaProviderTrait>(
tx: &Transaction,
provider: &T,
) -> Result<(), SolanaTransactionValidationError>
pub async fn validate_blockhash<T: SolanaProviderTrait>( tx: &Transaction, provider: &T, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s blockhash is still valid.
Checks if the provided blockhash is still valid on-chain. If the blockhash has expired, the transaction will fail when submitted.
Note: For single-signer transactions, expired blockhashes can be refreshed during resubmission. However, validation still occurs to provide early feedback. For multi-signer transactions, expired blockhashes cannot be refreshed without invalidating existing signatures, so validation is critical.
Sourcepub fn validate_max_signatures(
tx: &Transaction,
policy: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_max_signatures( tx: &Transaction, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates the number of required signatures against policy limits.
Sourcepub fn validate_allowed_programs(
tx: &Transaction,
policy: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_allowed_programs( tx: &Transaction, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s programs are allowed by the relayer’s policy.
pub fn validate_allowed_account( account: &str, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Sourcepub fn validate_tx_allowed_accounts(
tx: &Transaction,
policy: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_tx_allowed_accounts( tx: &Transaction, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s accounts are allowed by the relayer’s policy.
pub fn validate_disallowed_account( account: &str, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Sourcepub fn validate_tx_disallowed_accounts(
tx: &Transaction,
policy: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_tx_disallowed_accounts( tx: &Transaction, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s accounts are not disallowed by the relayer’s policy.
Sourcepub fn validate_data_size(
tx: &Transaction,
config: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_data_size( tx: &Transaction, config: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates that the transaction’s data size is within policy limits.
Sourcepub async fn validate_lamports_transfers(
tx: &Transaction,
relayer_account: &Pubkey,
) -> Result<(), SolanaTransactionValidationError>
pub async fn validate_lamports_transfers( tx: &Transaction, relayer_account: &Pubkey, ) -> Result<(), SolanaTransactionValidationError>
Validates that the relayer is not used as source in lamports transfers.
Sourcepub fn validate_max_fee(
amount: u64,
policy: &RelayerSolanaPolicy,
) -> Result<(), SolanaTransactionValidationError>
pub fn validate_max_fee( amount: u64, policy: &RelayerSolanaPolicy, ) -> Result<(), SolanaTransactionValidationError>
Validates transfer amount against policy limits.
Sourcepub async fn validate_sufficient_relayer_balance(
fee: u64,
relayer_address: &str,
policy: &RelayerSolanaPolicy,
provider: &impl SolanaProviderTrait,
) -> Result<(), SolanaTransactionValidationError>
pub async fn validate_sufficient_relayer_balance( fee: u64, relayer_address: &str, policy: &RelayerSolanaPolicy, provider: &impl SolanaProviderTrait, ) -> Result<(), SolanaTransactionValidationError>
Validates transfer amount against policy limits.
Sourcepub async fn validate_token_transfers(
tx: &Transaction,
policy: &RelayerSolanaPolicy,
provider: &impl SolanaProviderTrait,
relayer_account: &Pubkey,
) -> Result<(), SolanaTransactionValidationError>
pub async fn validate_token_transfers( tx: &Transaction, policy: &RelayerSolanaPolicy, provider: &impl SolanaProviderTrait, relayer_account: &Pubkey, ) -> Result<(), SolanaTransactionValidationError>
Validates token transfers against policy restrictions.
Sourcepub async fn simulate_transaction<T: SolanaProviderTrait>(
tx: &Transaction,
provider: &T,
) -> Result<RpcSimulateTransactionResult, SolanaTransactionValidationError>
pub async fn simulate_transaction<T: SolanaProviderTrait>( tx: &Transaction, provider: &T, ) -> Result<RpcSimulateTransactionResult, SolanaTransactionValidationError>
Simulates transaction
Auto Trait Implementations§
impl Freeze for SolanaTransactionValidator
impl RefUnwindSafe for SolanaTransactionValidator
impl Send for SolanaTransactionValidator
impl Sync for SolanaTransactionValidator
impl Unpin for SolanaTransactionValidator
impl UnwindSafe for SolanaTransactionValidator
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more