Use bridge config to decide fee payer.
Change-Id: I5eb7601737eb5cbc687dee07567a6fab4e5ca4c5
This commit is contained in:
parent
3ec4ad6ad3
commit
254f1c8674
|
@ -94,12 +94,21 @@ pub struct BridgeData {
|
|||
pub config: BridgeConfig,
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "cpi"))]
|
||||
impl Owned for BridgeData {
|
||||
fn owner(&self) -> AccountOwner {
|
||||
AccountOwner::This
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "cpi")]
|
||||
impl Owned for BridgeData {
|
||||
fn owner(&self) -> AccountOwner {
|
||||
use std::str::FromStr;
|
||||
AccountOwner::Other(Pubkey::from_str(env!("BRIDGE_ADDRESS")).unwrap())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, BorshSerialize, BorshDeserialize)]
|
||||
pub struct SignatureSet {
|
||||
/// Signatures of validators
|
||||
|
|
|
@ -18,6 +18,7 @@ use crate::{
|
|||
},
|
||||
};
|
||||
use bridge::{
|
||||
accounts::Bridge,
|
||||
api::{
|
||||
PostMessage,
|
||||
PostMessageData,
|
||||
|
@ -76,7 +77,7 @@ pub struct AttestToken<'b> {
|
|||
pub spl_metadata: SplTokenMeta<'b>,
|
||||
|
||||
/// CPI Context
|
||||
pub bridge: Mut<Info<'b>>,
|
||||
pub bridge: Mut<Bridge<'b, { AccountState::Initialized }>>,
|
||||
|
||||
/// Account to store the posted message
|
||||
pub message: Signer<Mut<Info<'b>>>,
|
||||
|
@ -123,8 +124,11 @@ pub fn attest_token(
|
|||
data: AttestTokenData,
|
||||
) -> Result<()> {
|
||||
// Pay fee
|
||||
let transfer_ix =
|
||||
solana_program::system_instruction::transfer(accs.payer.key, accs.fee_collector.key, 1000);
|
||||
let transfer_ix = solana_program::system_instruction::transfer(
|
||||
accs.payer.key,
|
||||
accs.fee_collector.key,
|
||||
accs.bridge.config.fee,
|
||||
);
|
||||
|
||||
invoke(&transfer_ix, ctx.accounts)?;
|
||||
|
||||
|
@ -171,7 +175,7 @@ pub fn attest_token(
|
|||
accs.config.wormhole_bridge,
|
||||
params.try_to_vec()?.as_slice(),
|
||||
vec![
|
||||
AccountMeta::new(*accs.bridge.key, false),
|
||||
AccountMeta::new(*accs.bridge.info().key, false),
|
||||
AccountMeta::new(*accs.message.key, true),
|
||||
AccountMeta::new_readonly(*accs.emitter.key, true),
|
||||
AccountMeta::new(*accs.sequence.key, false),
|
||||
|
|
|
@ -18,6 +18,7 @@ use crate::{
|
|||
TokenBridgeError::WrongAccountOwner,
|
||||
};
|
||||
use bridge::{
|
||||
accounts::Bridge,
|
||||
api::{
|
||||
PostMessage,
|
||||
PostMessageData,
|
||||
|
@ -80,7 +81,7 @@ pub struct TransferNative<'b> {
|
|||
pub custody_signer: CustodySigner<'b>,
|
||||
|
||||
/// CPI Context
|
||||
pub bridge: Mut<Info<'b>>,
|
||||
pub bridge: Mut<Bridge<'b, { AccountState::Initialized }>>,
|
||||
|
||||
/// Account to store the posted message
|
||||
pub message: Signer<Mut<Info<'b>>>,
|
||||
|
@ -171,8 +172,11 @@ pub fn transfer_native(
|
|||
invoke_seeded(&transfer_ix, ctx, &accs.authority_signer, None)?;
|
||||
|
||||
// Pay fee
|
||||
let transfer_ix =
|
||||
solana_program::system_instruction::transfer(accs.payer.key, accs.fee_collector.key, 1000);
|
||||
let transfer_ix = solana_program::system_instruction::transfer(
|
||||
accs.payer.key,
|
||||
accs.fee_collector.key,
|
||||
accs.bridge.config.fee,
|
||||
);
|
||||
invoke(&transfer_ix, ctx.accounts)?;
|
||||
|
||||
// Post message
|
||||
|
@ -197,7 +201,7 @@ pub fn transfer_native(
|
|||
accs.config.wormhole_bridge,
|
||||
params.try_to_vec()?.as_slice(),
|
||||
vec![
|
||||
AccountMeta::new(*accs.bridge.key, false),
|
||||
AccountMeta::new(*accs.bridge.info().key, false),
|
||||
AccountMeta::new(*accs.message.key, true),
|
||||
AccountMeta::new_readonly(*accs.emitter.key, true),
|
||||
AccountMeta::new(*accs.sequence.key, false),
|
||||
|
@ -226,7 +230,7 @@ pub struct TransferWrapped<'b> {
|
|||
pub authority_signer: AuthoritySigner<'b>,
|
||||
|
||||
/// CPI Context
|
||||
pub bridge: Mut<Info<'b>>,
|
||||
pub bridge: Mut<Bridge<'b, { AccountState::Initialized }>>,
|
||||
|
||||
/// Account to store the posted message
|
||||
pub message: Signer<Mut<Info<'b>>>,
|
||||
|
@ -304,8 +308,12 @@ pub fn transfer_wrapped(
|
|||
invoke_seeded(&burn_ix, ctx, &accs.authority_signer, None)?;
|
||||
|
||||
// Pay fee
|
||||
let transfer_ix =
|
||||
solana_program::system_instruction::transfer(accs.payer.key, accs.fee_collector.key, 1000);
|
||||
let transfer_ix = solana_program::system_instruction::transfer(
|
||||
accs.payer.key,
|
||||
accs.fee_collector.key,
|
||||
accs.bridge.config.fee,
|
||||
);
|
||||
|
||||
invoke(&transfer_ix, ctx.accounts)?;
|
||||
|
||||
// Post message
|
||||
|
@ -330,7 +338,7 @@ pub fn transfer_wrapped(
|
|||
accs.config.wormhole_bridge,
|
||||
params.try_to_vec()?.as_slice(),
|
||||
vec![
|
||||
AccountMeta::new(*accs.bridge.key, false),
|
||||
AccountMeta::new(*accs.bridge.info().key, false),
|
||||
AccountMeta::new(*accs.message.key, true),
|
||||
AccountMeta::new_readonly(*accs.emitter.key, true),
|
||||
AccountMeta::new(*accs.sequence.key, false),
|
||||
|
|
Loading…
Reference in New Issue