BurnMessageV2

Struct BurnMessageV2 

Source
pub struct BurnMessageV2 {
    pub version: u32,
    pub burn_token: Address,
    pub mint_recipient: Address,
    pub amount: U256,
    pub message_sender: Address,
    pub max_fee: U256,
    pub fee_executed: U256,
    pub expiration_block: U256,
    pub hook_data: Bytes,
}
Expand description

CCTP v2 Burn Message Body

The burn message body contains information about a token burn operation for cross-chain USDC transfers.

§Format

  • version: uint32 (4 bytes)
  • burnToken: bytes32 (32 bytes) - address of token being burned
  • mintRecipient: bytes32 (32 bytes) - address to receive minted tokens
  • amount: uint256 (32 bytes) - amount being transferred
  • messageSender: bytes32 (32 bytes) - original sender address
  • maxFee: uint256 (32 bytes) - maximum fee willing to pay
  • feeExecuted: uint256 (32 bytes) - actual fee charged
  • expirationBlock: uint256 (32 bytes) - block number when message expires
  • hookData: dynamic bytes - arbitrary data for destination chain hooks

Total fixed size: 4 + 32 + 32 + 32 + 32 + 32 + 32 + 32 = 228 bytes + dynamic hookData

Fields§

§version: u32

Message body version

§burn_token: Address

Address of the token being burned (USDC contract)

§mint_recipient: Address

Address that will receive minted tokens on destination chain

§amount: U256

Amount of tokens being transferred (in wei/smallest unit)

§message_sender: Address

Address of the original message sender

§max_fee: U256

Maximum fee the sender is willing to pay (for Fast Transfers)

§fee_executed: U256

Actual fee that was charged

§expiration_block: U256

Block number after which the message expires (anti-replay protection)

§hook_data: Bytes

Optional hook data for programmable transfers

Implementations§

Source§

impl BurnMessageV2

Source

pub const MIN_SIZE: usize = 228

Minimum size of the burn message body in bytes (without hookData)

Source

pub fn new( burn_token: Address, mint_recipient: Address, amount: U256, message_sender: Address, ) -> Self

Creates a new burn message with standard settings (no fast transfer, no hooks)

Source

pub fn new_with_fast_transfer( burn_token: Address, mint_recipient: Address, amount: U256, message_sender: Address, max_fee: U256, ) -> Self

Creates a new burn message with fast transfer settings

Source

pub fn new_with_hooks( burn_token: Address, mint_recipient: Address, amount: U256, message_sender: Address, hook_data: Bytes, ) -> Self

Creates a new burn message with hook data

Source

pub fn with_hook_data(self, hook_data: Bytes) -> Self

Sets the hook data for this message

Source

pub fn with_max_fee(self, max_fee: U256) -> Self

Sets the maximum fee for fast transfer

Source

pub fn with_expiration_block(self, expiration_block: U256) -> Self

Sets the expiration block

Source

pub fn has_hooks(&self) -> bool

Returns true if this message has hook data

Source

pub fn is_fast_transfer(&self) -> bool

Returns true if this message is configured for fast transfer (max_fee > 0)

Trait Implementations§

Source§

impl Clone for BurnMessageV2

Source§

fn clone(&self) -> BurnMessageV2

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BurnMessageV2

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for BurnMessageV2

Source§

fn eq(&self, other: &BurnMessageV2) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for BurnMessageV2

Source§

impl StructuralPartialEq for BurnMessageV2

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more