Struct dflow_sdk::instructions::NewOrderInstruction
source · [−]pub struct NewOrderInstruction<'info> {Show 16 fields
pub vault_token_account: Account<'info, TokenAccount>,
pub vault_meta_account: Box<Account<'info, VaultMetaAccount>>,
pub current_auction_epoch_state: Box<Account<'info, AuctionEpochState>>,
pub previous_auction_epoch_state: Account<'info, AuctionEpochState>,
pub retail_x_token_account: Account<'info, TokenAccount>,
pub rebate_receiver_token_account: Box<Account<'info, TokenAccount>>,
pub auction_state_account: Box<Account<'info, AuctionStateAccount>>,
pub retail_data_account: Box<Account<'info, RetailDataAccount>>,
pub market_maker_data_account: Box<Account<'info, MarketMakerDataAccount>>,
pub retail_account_owner: AccountInfo<'info>,
pub x_mint: Account<'info, Mint>,
pub signatory_record: Account<'info, SignatoryRecord>,
pub signatory_server: AccountInfo<'info>,
pub system_program: AccountInfo<'info>,
pub rent: Sysvar<'info, Rent>,
pub token_program: AccountInfo<'info>,
}
Expand description
This instruction is called by retail traders when they submit their order. A transaction containing this instruction must be signed by a signatory server. When submitting orders, retail traders must encrypt the details of their order in order to hide information regarding which token is being received.
Fields
vault_token_account: Account<'info, TokenAccount>
The SPL token account owned by the escrow vault,
which holds the sold tokens during a swap from the retail trader.
This account is being initialized and is paid for by retail_account_owner.
This is a token account which is being initialized, and is associated
with the x_mint mint. The authority for this token account is
vault_meta_account. This account is a PDA generated by the following
seeds: the public key of the retail_account_owner account, the
string literal vault
, the unsigned integer field named nonce
in the retail_data_account account
vault_meta_account: Box<Account<'info, VaultMetaAccount>>
The account which holds state specific to a given
order initiated by the retail trader. This account is being initialized
with 816 bytes, paid for by retail_account_owner. This account
is a PDA generated by the following seeds: the public key of
the retail_account_owner account, the string literal vault_meta
,
the unsigned integer field named nonce in the retail_data_account
account
current_auction_epoch_state: Box<Account<'info, AuctionEpochState>>
The auction epoch state account for the current
epoch. This account is expected to be mutable. This account is
a PDA generated by the following seeds: the string literal epoch
,
an unsigned 64 bit integer, an unsigned 64 bit integer
previous_auction_epoch_state: Account<'info, AuctionEpochState>
The auction epoch state account for the previous
epoch. This account is expected to be mutable. This account is
a PDA generated by the following seeds: the string literal epoch
,
an unsigned 64 bit integer, an unsigned 64 bit integer
retail_x_token_account: Account<'info, TokenAccount>
The SPL token account associated with the retail trader which is used to deposit the sold token into escrow prior to the trade occurring. This account is expected to be mutable
rebate_receiver_token_account: Box<Account<'info, TokenAccount>>
The SPL token account associated with the order used to receive a payment from the network, with the same mint as the token accounts used by market makers to bid in the associated auction.
auction_state_account: Box<Account<'info, AuctionStateAccount>>
The auction state account holds state specific
to the auction. This account is expected to be mutable. This
account is a PDA generated by the following seeds: the string
literal auction_state
, an unsigned 64 bit integer
retail_data_account: Box<Account<'info, RetailDataAccount>>
The retail data account holds state specific to the retail trader. This account is expected to be mutable
market_maker_data_account: Box<Account<'info, MarketMakerDataAccount>>
The account storing state specific to the market maker. This account must be owned by the DFlow program, and this account must be initialized by calling the initialize market maker instruction. This account is expected to be mutable
retail_account_owner: AccountInfo<'info>
The public key of the retail trader. This account is a signer for the instruction. This account is expected to be mutable
x_mint: Account<'info, Mint>
The SPL mint account associated with the token that is sold by the retail trader during the swap.
signatory_record: Account<'info, SignatoryRecord>
The signatory record account holds information about a signatory server, and the existence of the signatory record account is a valid proof that the signatory server has staked the requisite value in the protocol allowing it to endorse flow as originating from a retail source. This account is a PDA generated by the following seeds: the public key of the signatory_server account
signatory_server: AccountInfo<'info>
The public key of the signatory server that endorses new orders as originating from a retail source. This account is a signer for the instruction. This account is expected to be mutable
system_program: AccountInfo<'info>
rent: Sysvar<'info, Rent>
token_program: AccountInfo<'info>
Trait Implementations
sourceimpl<'info> Accounts<'info> for NewOrderInstruction<'info> where
'info: 'info,
impl<'info> Accounts<'info> for NewOrderInstruction<'info> where
'info: 'info,
sourcefn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
ix_data: &[u8],
__bumps: &mut BTreeMap<String, u8>,
__reallocs: &mut BTreeSet<Pubkey>
) -> Result<Self>
fn try_accounts(
program_id: &Pubkey,
accounts: &mut &[AccountInfo<'info>],
ix_data: &[u8],
__bumps: &mut BTreeMap<String, u8>,
__reallocs: &mut BTreeSet<Pubkey>
) -> Result<Self>
Returns the validated accounts struct. What constitutes “valid” is
program dependent. However, users of these types should never have to
worry about account substitution attacks. For example, if a program
expects a Mint
account from the SPL token program in a particular
field, then it should be impossible for this method to return Ok
if
any other account type is given–from the SPL token program or elsewhere. Read more
sourceimpl<'info> AccountsExit<'info> for NewOrderInstruction<'info> where
'info: 'info,
impl<'info> AccountsExit<'info> for NewOrderInstruction<'info> where
'info: 'info,
sourceimpl<'info> ToAccountInfos<'info> for NewOrderInstruction<'info> where
'info: 'info,
impl<'info> ToAccountInfos<'info> for NewOrderInstruction<'info> where
'info: 'info,
sourceimpl<'info> ToAccountMetas for NewOrderInstruction<'info>
impl<'info> ToAccountMetas for NewOrderInstruction<'info>
sourcefn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
fn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
is_signer
is given as an optional override for the signer meta field.
This covers the edge case when a program-derived-address needs to relay
a transaction from a client to another program but sign the transaction
before the relay. The client cannot mark the field as a signer, and so
we have to override the is_signer meta field given by the client. Read more
Auto Trait Implementations
impl<'info> !RefUnwindSafe for NewOrderInstruction<'info>
impl<'info> !Send for NewOrderInstruction<'info>
impl<'info> !Sync for NewOrderInstruction<'info>
impl<'info> Unpin for NewOrderInstruction<'info>
impl<'info> !UnwindSafe for NewOrderInstruction<'info>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more