Skip to content

Commit eaa358f

Browse files
authored
Merge pull request #404 from kralonur/refactor/update-raydium-launchpad-decoder
refactor: update raydium launchpad decoder
2 parents 918b22b + 0724ce2 commit eaa358f

39 files changed

+892
-292
lines changed

decoders/raydium-launchpad-decoder/src/accounts/platform_config.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
use super::super::types::*;
2+
3+
use alloc::vec::Vec;
14
use carbon_core::{borsh, CarbonDeserialize};
25

36
#[derive(
@@ -18,6 +21,10 @@ pub struct PlatformConfig {
1821
pub web: [u8; 256],
1922
#[serde(with = "serde_big_array::BigArray")]
2023
pub img: [u8; 256],
24+
pub cpswap_config: solana_pubkey::Pubkey,
25+
pub creator_fee_rate: u64,
26+
pub transfer_fee_extension_auth: solana_pubkey::Pubkey,
2127
#[serde(with = "serde_big_array::BigArray")]
22-
pub padding: [u8; 256],
28+
pub padding: [u8; 180],
29+
pub curve_params: Vec<PlatformCurveParam>,
2330
}

decoders/raydium-launchpad-decoder/src/accounts/pool_state.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,8 @@ pub struct PoolState {
3131
pub base_vault: solana_pubkey::Pubkey,
3232
pub quote_vault: solana_pubkey::Pubkey,
3333
pub creator: solana_pubkey::Pubkey,
34-
pub padding: [u64; 8],
34+
pub token_program_flag: u8,
35+
pub amm_creator_fee_on: AmmCreatorFeeOn,
36+
#[serde(with = "serde_big_array::BigArray")]
37+
pub padding: [u8; 62],
3538
}

decoders/raydium-launchpad-decoder/src/instructions/buy_exact_in.rs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use carbon_core::{borsh, CarbonDeserialize};
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
22

33
#[derive(
44
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
@@ -35,28 +35,39 @@ impl carbon_core::deserialize::ArrangeAccounts for BuyExactIn {
3535
fn arrange_accounts(
3636
accounts: &[solana_instruction::AccountMeta],
3737
) -> Option<Self::ArrangedAccounts> {
38-
let [payer, authority, global_config, platform_config, pool_state, user_base_token, user_quote_token, base_vault, quote_vault, base_token_mint, quote_token_mint, base_token_program, quote_token_program, event_authority, program, _remaining @ ..] =
39-
accounts
40-
else {
41-
return None;
42-
};
38+
let mut iter = accounts.iter();
39+
let payer = next_account(&mut iter)?;
40+
let authority = next_account(&mut iter)?;
41+
let global_config = next_account(&mut iter)?;
42+
let platform_config = next_account(&mut iter)?;
43+
let pool_state = next_account(&mut iter)?;
44+
let user_base_token = next_account(&mut iter)?;
45+
let user_quote_token = next_account(&mut iter)?;
46+
let base_vault = next_account(&mut iter)?;
47+
let quote_vault = next_account(&mut iter)?;
48+
let base_token_mint = next_account(&mut iter)?;
49+
let quote_token_mint = next_account(&mut iter)?;
50+
let base_token_program = next_account(&mut iter)?;
51+
let quote_token_program = next_account(&mut iter)?;
52+
let event_authority = next_account(&mut iter)?;
53+
let program = next_account(&mut iter)?;
4354

4455
Some(BuyExactInInstructionAccounts {
45-
payer: payer.pubkey,
46-
authority: authority.pubkey,
47-
global_config: global_config.pubkey,
48-
platform_config: platform_config.pubkey,
49-
pool_state: pool_state.pubkey,
50-
user_base_token: user_base_token.pubkey,
51-
user_quote_token: user_quote_token.pubkey,
52-
base_vault: base_vault.pubkey,
53-
quote_vault: quote_vault.pubkey,
54-
base_token_mint: base_token_mint.pubkey,
55-
quote_token_mint: quote_token_mint.pubkey,
56-
base_token_program: base_token_program.pubkey,
57-
quote_token_program: quote_token_program.pubkey,
58-
event_authority: event_authority.pubkey,
59-
program: program.pubkey,
56+
payer,
57+
authority,
58+
global_config,
59+
platform_config,
60+
pool_state,
61+
user_base_token,
62+
user_quote_token,
63+
base_vault,
64+
quote_vault,
65+
base_token_mint,
66+
quote_token_mint,
67+
base_token_program,
68+
quote_token_program,
69+
event_authority,
70+
program,
6071
})
6172
}
6273
}

decoders/raydium-launchpad-decoder/src/instructions/buy_exact_out.rs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use carbon_core::{borsh, CarbonDeserialize};
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
22

33
#[derive(
44
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
@@ -35,28 +35,39 @@ impl carbon_core::deserialize::ArrangeAccounts for BuyExactOut {
3535
fn arrange_accounts(
3636
accounts: &[solana_instruction::AccountMeta],
3737
) -> Option<Self::ArrangedAccounts> {
38-
let [payer, authority, global_config, platform_config, pool_state, user_base_token, user_quote_token, base_vault, quote_vault, base_token_mint, quote_token_mint, base_token_program, quote_token_program, event_authority, program, _remaining @ ..] =
39-
accounts
40-
else {
41-
return None;
42-
};
38+
let mut iter = accounts.iter();
39+
let payer = next_account(&mut iter)?;
40+
let authority = next_account(&mut iter)?;
41+
let global_config = next_account(&mut iter)?;
42+
let platform_config = next_account(&mut iter)?;
43+
let pool_state = next_account(&mut iter)?;
44+
let user_base_token = next_account(&mut iter)?;
45+
let user_quote_token = next_account(&mut iter)?;
46+
let base_vault = next_account(&mut iter)?;
47+
let quote_vault = next_account(&mut iter)?;
48+
let base_token_mint = next_account(&mut iter)?;
49+
let quote_token_mint = next_account(&mut iter)?;
50+
let base_token_program = next_account(&mut iter)?;
51+
let quote_token_program = next_account(&mut iter)?;
52+
let event_authority = next_account(&mut iter)?;
53+
let program = next_account(&mut iter)?;
4354

4455
Some(BuyExactOutInstructionAccounts {
45-
payer: payer.pubkey,
46-
authority: authority.pubkey,
47-
global_config: global_config.pubkey,
48-
platform_config: platform_config.pubkey,
49-
pool_state: pool_state.pubkey,
50-
user_base_token: user_base_token.pubkey,
51-
user_quote_token: user_quote_token.pubkey,
52-
base_vault: base_vault.pubkey,
53-
quote_vault: quote_vault.pubkey,
54-
base_token_mint: base_token_mint.pubkey,
55-
quote_token_mint: quote_token_mint.pubkey,
56-
base_token_program: base_token_program.pubkey,
57-
quote_token_program: quote_token_program.pubkey,
58-
event_authority: event_authority.pubkey,
59-
program: program.pubkey,
56+
payer,
57+
authority,
58+
global_config,
59+
platform_config,
60+
pool_state,
61+
user_base_token,
62+
user_quote_token,
63+
base_vault,
64+
quote_vault,
65+
base_token_mint,
66+
quote_token_mint,
67+
base_token_program,
68+
quote_token_program,
69+
event_authority,
70+
program,
6071
})
6172
}
6273
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
2+
3+
#[derive(
4+
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5+
)]
6+
#[carbon(discriminator = "0x1a618acb84ab8dfc")]
7+
pub struct ClaimCreatorFee {}
8+
9+
#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
10+
pub struct ClaimCreatorFeeInstructionAccounts {
11+
pub creator: solana_pubkey::Pubkey,
12+
pub fee_vault_authority: solana_pubkey::Pubkey,
13+
pub creator_fee_vault: solana_pubkey::Pubkey,
14+
pub recipient_token_account: solana_pubkey::Pubkey,
15+
pub quote_mint: solana_pubkey::Pubkey,
16+
pub token_program: solana_pubkey::Pubkey,
17+
pub system_program: solana_pubkey::Pubkey,
18+
pub associated_token_program: solana_pubkey::Pubkey,
19+
}
20+
21+
impl carbon_core::deserialize::ArrangeAccounts for ClaimCreatorFee {
22+
type ArrangedAccounts = ClaimCreatorFeeInstructionAccounts;
23+
24+
fn arrange_accounts(
25+
accounts: &[solana_instruction::AccountMeta],
26+
) -> Option<Self::ArrangedAccounts> {
27+
let mut iter = accounts.iter();
28+
let creator = next_account(&mut iter)?;
29+
let fee_vault_authority = next_account(&mut iter)?;
30+
let creator_fee_vault = next_account(&mut iter)?;
31+
let recipient_token_account = next_account(&mut iter)?;
32+
let quote_mint = next_account(&mut iter)?;
33+
let token_program = next_account(&mut iter)?;
34+
let system_program = next_account(&mut iter)?;
35+
let associated_token_program = next_account(&mut iter)?;
36+
37+
Some(ClaimCreatorFeeInstructionAccounts {
38+
creator,
39+
fee_vault_authority,
40+
creator_fee_vault,
41+
recipient_token_account,
42+
quote_mint,
43+
token_program,
44+
system_program,
45+
associated_token_program,
46+
})
47+
}
48+
}

decoders/raydium-launchpad-decoder/src/instructions/claim_platform_fee.rs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use carbon_core::{borsh, CarbonDeserialize};
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
22

33
#[derive(
44
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
@@ -26,23 +26,29 @@ impl carbon_core::deserialize::ArrangeAccounts for ClaimPlatformFee {
2626
fn arrange_accounts(
2727
accounts: &[solana_instruction::AccountMeta],
2828
) -> Option<Self::ArrangedAccounts> {
29-
let [platform_fee_wallet, authority, pool_state, platform_config, quote_vault, recipient_token_account, quote_mint, token_program, system_program, associated_token_program, _remaining @ ..] =
30-
accounts
31-
else {
32-
return None;
33-
};
29+
let mut iter = accounts.iter();
30+
let platform_fee_wallet = next_account(&mut iter)?;
31+
let authority = next_account(&mut iter)?;
32+
let pool_state = next_account(&mut iter)?;
33+
let platform_config = next_account(&mut iter)?;
34+
let quote_vault = next_account(&mut iter)?;
35+
let recipient_token_account = next_account(&mut iter)?;
36+
let quote_mint = next_account(&mut iter)?;
37+
let token_program = next_account(&mut iter)?;
38+
let system_program = next_account(&mut iter)?;
39+
let associated_token_program = next_account(&mut iter)?;
3440

3541
Some(ClaimPlatformFeeInstructionAccounts {
36-
platform_fee_wallet: platform_fee_wallet.pubkey,
37-
authority: authority.pubkey,
38-
pool_state: pool_state.pubkey,
39-
platform_config: platform_config.pubkey,
40-
quote_vault: quote_vault.pubkey,
41-
recipient_token_account: recipient_token_account.pubkey,
42-
quote_mint: quote_mint.pubkey,
43-
token_program: token_program.pubkey,
44-
system_program: system_program.pubkey,
45-
associated_token_program: associated_token_program.pubkey,
42+
platform_fee_wallet,
43+
authority,
44+
pool_state,
45+
platform_config,
46+
quote_vault,
47+
recipient_token_account,
48+
quote_mint,
49+
token_program,
50+
system_program,
51+
associated_token_program,
4652
})
4753
}
4854
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
2+
3+
#[derive(
4+
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5+
)]
6+
#[carbon(discriminator = "0x75f1c6a8f8da501d")]
7+
pub struct ClaimPlatformFeeFromVault {}
8+
9+
#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
10+
pub struct ClaimPlatformFeeFromVaultInstructionAccounts {
11+
pub platform_fee_wallet: solana_pubkey::Pubkey,
12+
pub fee_vault_authority: solana_pubkey::Pubkey,
13+
pub platform_config: solana_pubkey::Pubkey,
14+
pub platform_fee_vault: solana_pubkey::Pubkey,
15+
pub recipient_token_account: solana_pubkey::Pubkey,
16+
pub quote_mint: solana_pubkey::Pubkey,
17+
pub token_program: solana_pubkey::Pubkey,
18+
pub system_program: solana_pubkey::Pubkey,
19+
pub associated_token_program: solana_pubkey::Pubkey,
20+
}
21+
22+
impl carbon_core::deserialize::ArrangeAccounts for ClaimPlatformFeeFromVault {
23+
type ArrangedAccounts = ClaimPlatformFeeFromVaultInstructionAccounts;
24+
25+
fn arrange_accounts(
26+
accounts: &[solana_instruction::AccountMeta],
27+
) -> Option<Self::ArrangedAccounts> {
28+
let mut iter = accounts.iter();
29+
let platform_fee_wallet = next_account(&mut iter)?;
30+
let fee_vault_authority = next_account(&mut iter)?;
31+
let platform_config = next_account(&mut iter)?;
32+
let platform_fee_vault = next_account(&mut iter)?;
33+
let recipient_token_account = next_account(&mut iter)?;
34+
let quote_mint = next_account(&mut iter)?;
35+
let token_program = next_account(&mut iter)?;
36+
let system_program = next_account(&mut iter)?;
37+
let associated_token_program = next_account(&mut iter)?;
38+
39+
Some(ClaimPlatformFeeFromVaultInstructionAccounts {
40+
platform_fee_wallet,
41+
fee_vault_authority,
42+
platform_config,
43+
platform_fee_vault,
44+
recipient_token_account,
45+
quote_mint,
46+
token_program,
47+
system_program,
48+
associated_token_program,
49+
})
50+
}
51+
}

decoders/raydium-launchpad-decoder/src/instructions/claim_vested_token.rs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use carbon_core::{borsh, CarbonDeserialize};
1+
use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
22

33
#[derive(
44
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
@@ -26,23 +26,29 @@ impl carbon_core::deserialize::ArrangeAccounts for ClaimVestedToken {
2626
fn arrange_accounts(
2727
accounts: &[solana_instruction::AccountMeta],
2828
) -> Option<Self::ArrangedAccounts> {
29-
let [beneficiary, authority, pool_state, vesting_record, base_vault, user_base_token, base_token_mint, base_token_program, system_program, associated_token_program, _remaining @ ..] =
30-
accounts
31-
else {
32-
return None;
33-
};
29+
let mut iter = accounts.iter();
30+
let beneficiary = next_account(&mut iter)?;
31+
let authority = next_account(&mut iter)?;
32+
let pool_state = next_account(&mut iter)?;
33+
let vesting_record = next_account(&mut iter)?;
34+
let base_vault = next_account(&mut iter)?;
35+
let user_base_token = next_account(&mut iter)?;
36+
let base_token_mint = next_account(&mut iter)?;
37+
let base_token_program = next_account(&mut iter)?;
38+
let system_program = next_account(&mut iter)?;
39+
let associated_token_program = next_account(&mut iter)?;
3440

3541
Some(ClaimVestedTokenInstructionAccounts {
36-
beneficiary: beneficiary.pubkey,
37-
authority: authority.pubkey,
38-
pool_state: pool_state.pubkey,
39-
vesting_record: vesting_record.pubkey,
40-
base_vault: base_vault.pubkey,
41-
user_base_token: user_base_token.pubkey,
42-
base_token_mint: base_token_mint.pubkey,
43-
base_token_program: base_token_program.pubkey,
44-
system_program: system_program.pubkey,
45-
associated_token_program: associated_token_program.pubkey,
42+
beneficiary,
43+
authority,
44+
pool_state,
45+
vesting_record,
46+
base_vault,
47+
user_base_token,
48+
base_token_mint,
49+
base_token_program,
50+
system_program,
51+
associated_token_program,
4652
})
4753
}
4854
}

0 commit comments

Comments
 (0)