Wavebreak decoder

Decode Wavebreak instructions and accounts in Rust with carbon-wavebreak-decoder 2.0.0. Program ID waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.

On this page

carbon-wavebreak-decoder decodes the instructions and accounts of the Wavebreak program (waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF): 64 instructions, 5 account types. It is generated with Codama from the program's IDL; see decoders for how decoders plug into a pipeline.

Cratecarbon-wavebreak-decoder 2.0.0
Installcargo add carbon-wavebreak-decoder@2.0.0
Program IDwaveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF (carbon_wavebreak_decoder::PROGRAM_ID)
CategoryLaunchpads
Decodercarbon_wavebreak_decoder::WavebreakDecoder
Instruction enuminstructions::WavebreakInstruction
Account enumaccounts::WavebreakAccount
Featuresserde, postgres, graphql (none enabled by default)
API docsdocs.rs/carbon-wavebreak-decoder/2.0.0
Sourcedecoders/wavebreak-decoder

Other launchpad decoders: Boop, Meteora DBC, Moonshot, Pump.fun, Raydium Launchpad, Vertigo, Virtuals. To decode several in one pipeline, see launchpad decoders.

The serde feature derives Serialize/Deserialize on every type, postgres adds tables and processors for Postgres, and graphql adds a schema for the GraphQL server.

Usage#

This program crawls recent Wavebreak transactions from the public RPC and prints every decoded TokenBuyExactIn instruction. Add the dependencies:

Terminal
cargo add carbon-core@2.0.0 carbon-wavebreak-decoder@2.0.0 carbon-rpc-transaction-crawler-datasource@2.0.0 carbon-log-metrics@2.0.0 env_logger tokio --features tokio/full
src/main.rs
use {
    carbon_core::{
        error::CarbonResult, instruction::InstructionProcessorInputType, pipeline::Pipeline,
        processor::Processor,
    },
    carbon_log_metrics::LogMetrics,
    carbon_wavebreak_decoder::{instructions::WavebreakInstruction, WavebreakDecoder, PROGRAM_ID},
    carbon_rpc_transaction_crawler_datasource::{ConnectionConfig, Filters, RpcTransactionCrawler},
    std::sync::Arc,
};

#[tokio::main]
async fn main() -> CarbonResult<()> {
    env_logger::init();

    // Fetches the program's recent transactions over JSON-RPC, newest first.
    let datasource = RpcTransactionCrawler::new(
        "https://api.mainnet-beta.solana.com".to_string(),
        PROGRAM_ID,
        ConnectionConfig::default(),
        Filters::new(None, None, None),
        None,
    );

    Pipeline::builder()
        .datasource(datasource)
        .metrics(Arc::new(LogMetrics::new()))
        .instruction(WavebreakDecoder, InstructionLogger)
        .build()?
        .run()
        .await
}

struct InstructionLogger;

impl Processor<InstructionProcessorInputType<'_, WavebreakInstruction>> for InstructionLogger {
    async fn process(
        &mut self,
        input: &InstructionProcessorInputType<'_, WavebreakInstruction>,
    ) -> CarbonResult<()> {
        let signature = input.metadata.transaction_metadata.signature;
        if let WavebreakInstruction::TokenBuyExactIn { data, accounts, .. } = input.decoded_instruction {
            println!("token_buy_exact_in {signature}: {data:?} buyer={}", accounts.buyer);
        }
        Ok(())
    }
}
Terminal
RUST_LOG=info cargo run

Each TokenBuyExactIn instruction prints one line with the transaction signature and the decoded TokenBuyExactIn data. The public endpoint rate-limits requests, so the first lines can take a while; use your own RPC URL for anything beyond a test. See stream with RPC for the crawler options.

Decode accounts#

The transaction crawler emits transactions only. To decode accounts, use a datasource that emits account updates. This program subscribes to the program's accounts with programSubscribe on the public WebSocket endpoint and prints every decoded BondingCurve account as it changes. Add the datasource and the Solana RPC types it takes:

Terminal
cargo add carbon-rpc-program-subscribe-datasource@2.0.0 solana-client@4.2.2
src/main.rs
use {
    carbon_core::{
        account::AccountProcessorInputType, error::CarbonResult, pipeline::Pipeline,
        processor::Processor,
    },
    carbon_log_metrics::LogMetrics,
    carbon_wavebreak_decoder::{accounts::WavebreakAccount, WavebreakDecoder, PROGRAM_ID},
    carbon_rpc_program_subscribe_datasource::{Filters, RpcProgramSubscribe},
    solana_client::rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig, UiAccountEncoding},
    std::sync::Arc,
};

#[tokio::main]
async fn main() -> CarbonResult<()> {
    env_logger::init();

    // Streams every change to an account owned by the program (programSubscribe).
    let config = RpcProgramAccountsConfig {
        account_config: RpcAccountInfoConfig {
            encoding: Some(UiAccountEncoding::Base64),
            ..Default::default()
        },
        ..Default::default()
    };
    let datasource = RpcProgramSubscribe::new(
        "wss://api.mainnet-beta.solana.com".to_string(),
        Filters::new(PROGRAM_ID, Some(config)),
    );

    Pipeline::builder()
        .datasource(datasource)
        .metrics(Arc::new(LogMetrics::new()))
        .account(WavebreakDecoder, AccountLogger)
        .build()?
        .run()
        .await
}

struct AccountLogger;

impl Processor<AccountProcessorInputType<'_, WavebreakAccount>> for AccountLogger {
    async fn process(
        &mut self,
        input: &AccountProcessorInputType<'_, WavebreakAccount>,
    ) -> CarbonResult<()> {
        if let WavebreakAccount::BondingCurve(bonding_curve) = &input.decoded_account.data {
            println!("bonding_curve {}: {bonding_curve:?}", input.metadata.pubkey);
        }
        Ok(())
    }
}
Terminal
RUST_LOG=info cargo run

Each update to a BondingCurve account prints its address and decoded fields; the program runs until you stop it. Cargo resolves solana-client to 4.2.2, the exact version the datasource pins, so both use the same RpcProgramAccountsConfig type. To load every existing account once instead of streaming changes, see load account state.

Instructions#

Variants of WavebreakInstruction. Each is WavebreakInstruction::<Variant> { program_id, data, accounts }, where data and accounts are the types listed under the variant, exported from carbon_wavebreak_decoder::instructions. Discriminators are the leading bytes of the instruction data, in hex.

How an instruction decodes. The decoder returns a variant only when all of these hold; otherwise the instruction is skipped and no processor is called:

  1. The instruction's program ID is waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.
  2. The data starts with the variant's discriminator, and the rest deserializes into its data type.
  3. The instruction has at least as many accounts as the variant requires (the "Required accounts" count under each variant).

Accounts. They are matched by position, in the order listed. An account marked optional is None only when the instruction ends before it; Anchor programs pass the program ID as a placeholder for an omitted optional account, so check for Some(PROGRAM_ID) too. Accounts after the listed ones are in accounts.remaining as AccountMetas. The decoder doesn't record whether an account signed or was writable: read that from input.raw_instruction.accounts[i].is_signer and .is_writable, which follow the same order. It doesn't check signer, writable, owner or PDA constraints either; the program enforced those when the transaction executed, so a decoded instruction from a successful transaction already satisfied them.

AuthorityConfigGrant#

Discriminator 11 · data AuthorityConfigGrant · accounts AuthorityConfigGrantInstructionAccounts.

FieldType
accountPubkey
privilegesVec<Privilege>

Required accounts: 2; extras go to remaining.

Fields of AuthorityConfigGrantInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1authority_configPubkey
2…remainingVec<AccountMeta>

AuthorityConfigInitialize#

Discriminator 10 · data AuthorityConfigInitialize · accounts AuthorityConfigInitializeInstructionAccounts.

No data fields.

Required accounts: 3; extras go to remaining.

Fields of AuthorityConfigInitializeInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1authority_configPubkey
2system_programPubkey
3…remainingVec<AccountMeta>

AuthorityConfigRevoke#

Discriminator 12 · data AuthorityConfigRevoke · accounts AuthorityConfigRevokeInstructionAccounts.

FieldType
accountPubkey
privilegesVec<Privilege>

Required accounts: 2; extras go to remaining.

Fields of AuthorityConfigRevokeInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1authority_configPubkey
2…remainingVec<AccountMeta>

BondingCurveClose#

Discriminator 33 · data BondingCurveClose · accounts BondingCurveCloseInstructionAccounts.

No data fields.

Required accounts: 13; extras go to remaining.

Fields of BondingCurveCloseInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1creatorPubkey
2fee_authorityPubkey
3bonding_curvePubkey
4quote_mintPubkey
5quote_vaultPubkey
6fee_authority_quote_ataPubkey
7base_mintPubkey
8authority_configPubkey
9quote_token_programPubkey
10base_token_programPubkey
11system_programPubkey
12ata_programPubkey
13…remainingVec<AccountMeta>

BondingCurveCollectFees#

Discriminator 31 · data BondingCurveCollectFees · accounts BondingCurveCollectFeesInstructionAccounts.

No data fields.

Required accounts: 11; extras go to remaining.

Fields of BondingCurveCollectFeesInstructionAccounts, in account order:

#FieldType
0signerPubkey
1fee_authorityPubkey
2fee_authority_ataPubkey
3bonding_curvePubkey
4base_mintPubkey
5quote_mintPubkey
6quote_vaultPubkey
7authority_configPubkey
8system_programPubkey
9ata_programPubkey
10quote_token_programPubkey
11…remainingVec<AccountMeta>

BondingCurveGraduate#

Discriminator 32 · data BondingCurveGraduate · accounts BondingCurveGraduateInstructionAccounts.

No data fields.

Required accounts: 17; extras go to remaining.

Fields of BondingCurveGraduateInstructionAccounts, in account order:

#FieldType
0signerPubkey
1creatorPubkey
2fee_authorityPubkey
3bonding_curvePubkey
4authority_configPubkey
5quote_mintPubkey
6quote_vaultPubkey
7signer_quote_ataPubkey
8creator_quote_ataPubkey
9fee_authority_quote_ataPubkey
10base_mintPubkey
11creator_base_ataPubkey
12fee_authority_base_ataPubkey
13system_programPubkey
14ata_programPubkey
15quote_token_programPubkey
16base_token_programPubkey
17…remainingVec<AccountMeta>

BondingCurveInitialize#

Discriminator 30 · data BondingCurveInitialize · accounts BondingCurveInitializeInstructionAccounts.

FieldType
start_priceu128
end_priceu128
control_points[u16; 4]
creatorPubkey
graduation_methods[GraduationMethod; 8]
swap_fee_bpsu16
quote_fee_bpsu16
base_fee_bpsu16
launch_timei64
creator_rewardu64
graduation_rewardu64
graduation_targetu64
graduation_timei64
min_reserve_bpsu16
buy_requires_permissionbool
buy_permission_bitmap[u8; 32]
sell_requires_permissionbool
sell_permission_bitmap[u8; 32]
max_buy_amountu64
max_sell_amountu64
retain_mint_authoritybool
base_allocation_bpsu16

Required accounts: 10; extras go to remaining.

Fields of BondingCurveInitializeInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1bonding_curvePubkey
2base_mintPubkey
3quote_mintPubkey
4quote_vaultPubkey
5authority_configPubkey
6system_programPubkey
7base_token_programPubkey
8quote_token_programPubkey
9ata_programPubkey
10…remainingVec<AccountMeta>

CreateLaunch#

Discriminator 29 · data CreateLaunch · accounts CreateLaunchInstructionAccounts.

FieldType
nameString
symbolString
uriString
start_priceOption<u128>
end_priceOption<u128>
control_pointsOption<[u16; 4]>
graduation_targetOption<u64>
graduation_methodsOption<[GraduationMethod; 8]>
launch_timeOption<i64>
graduation_timeOption<i64>
base_allocation_bpsOption<u16>

Required accounts: 12; extras go to remaining.

Fields of CreateLaunchInstructionAccounts, in account order:

#FieldType
0creatorPubkey
1bonding_curvePubkey
2base_mintPubkey
3quote_mintPubkey
4quote_vaultPubkey
5mint_configPubkey
6metadataPubkey
7system_programPubkey
8base_token_programPubkey
9quote_token_programPubkey
10ata_programPubkey
11metaplex_programPubkey
12…remainingVec<AccountMeta>

CreateLockedlaunch#

Discriminator 28 · data CreateLockedlaunch · accounts CreateLockedlaunchInstructionAccounts.

FieldType
nameString
symbolString
uriString

Required accounts: 12; extras go to remaining.

Fields of CreateLockedlaunchInstructionAccounts, in account order:

#FieldType
0creatorPubkey
1bonding_curvePubkey
2base_mintPubkey
3quote_mintPubkey
4quote_vaultPubkey
5mint_configPubkey
6metadataPubkey
7system_programPubkey
8base_token_programPubkey
9quote_token_programPubkey
10ata_programPubkey
11metaplex_programPubkey
12…remainingVec<AccountMeta>

CreatePresale#

Discriminator 2a · data CreatePresale · accounts CreatePresaleInstructionAccounts.

FieldType
nameString
symbolString
uriString
token_priceOption<u128>
graduation_targetOption<u64>
graduation_methodsOption<[GraduationMethod; 8]>
launch_timeOption<i64>
graduation_timeOption<i64>
min_reserve_bpsOption<u16>
base_allocation_bpsOption<u16>

Required accounts: 12; extras go to remaining.

Fields of CreatePresaleInstructionAccounts, in account order:

#FieldType
0creatorPubkey
1bonding_curvePubkey
2base_mintPubkey
3quote_mintPubkey
4quote_vaultPubkey
5mint_configPubkey
6metadataPubkey
7system_programPubkey
8base_token_programPubkey
9quote_token_programPubkey
10ata_programPubkey
11metaplex_programPubkey
12…remainingVec<AccountMeta>

GraduateManual#

Discriminator 21 · data GraduateManual · accounts GraduateManualInstructionAccounts.

No data fields.

Required accounts: 13; extras go to remaining.

Fields of GraduateManualInstructionAccounts, in account order:

#FieldType
0signerPubkey
1destinationPubkey
2bonding_curvePubkey
3quote_mintPubkey
4quote_vaultPubkey
5signer_quote_ataPubkey
6destination_quote_ataPubkey
7base_mintPubkey
8destination_base_ataPubkey
9system_programPubkey
10ata_programPubkey
11quote_token_programPubkey
12base_token_programPubkey
13…remainingVec<AccountMeta>

GraduateWhirlpool#

Discriminator 20 · data GraduateWhirlpool · accounts GraduateWhirlpoolInstructionAccounts.

No data fields.

Required accounts: 35; extras go to remaining.

Fields of GraduateWhirlpoolInstructionAccounts, in account order:

#FieldType
0signerPubkey
1lp_authorityPubkey
2bonding_curvePubkey
3quote_mintPubkey
4quote_vaultPubkey
5signer_quote_ataPubkey
6lp_authority_quote_ataPubkey
7whirlpool_quote_vaultPubkey
8base_mintPubkey
9base_vaultPubkey
10lp_authority_base_ataPubkey
11whirlpool_base_vaultPubkey
12whirlpool_configPubkey
13fee_tierPubkey
14whirlpoolPubkey
15oraclePubkey
16positionPubkey
17position_mintPubkey
18position_token_accountPubkey
19lp_authority_token_accountPubkey
20lower_tick_arrayPubkey
21upper_tick_arrayPubkey
22quote_token_badgePubkey
23base_token_badgePubkey
24whirlpool_init_authorityPubkey
25whirlpool_update_authorityPubkey
26lock_configPubkey
27system_programPubkey
28ata_programPubkey
29quote_token_programPubkey
30base_token_programPubkey
31token22_programPubkey
32memo_programPubkey
33whirlpool_programPubkey
34rentPubkey
35…remainingVec<AccountMeta>

LpHarvest#

Discriminator 38 · data LpHarvest · accounts LpHarvestInstructionAccounts.

No data fields.

Required accounts: 31; extras go to remaining.

Fields of LpHarvestInstructionAccounts, in account order:

#FieldType
0lp_authorityPubkey
1lp_escrowPubkey
2whirlpoolPubkey
3positionPubkey
4position_token_accountPubkey
5lower_tick_arrayPubkey
6upper_tick_arrayPubkey
7token_a_mintPubkey
8token_b_mintPubkey
9token_a_ataPubkey
10token_b_ataPubkey
11token_a_vaultPubkey
12token_b_vaultPubkey
13reward1_mintPubkey
14reward2_mintPubkey
15reward3_mintPubkey
16reward1_ataPubkey
17reward2_ataPubkey
18reward3_ataPubkey
19reward1_vaultPubkey
20reward2_vaultPubkey
21reward3_vaultPubkey
22system_programPubkey
23token_a_programPubkey
24token_b_programPubkey
25reward1_token_programPubkey
26reward2_token_programPubkey
27reward3_token_programPubkey
28ata_programPubkey
29memo_programPubkey
30whirlpool_programPubkey
31…remainingVec<AccountMeta>

LpTakeover#

Discriminator 3a · data LpTakeover · accounts LpTakeoverInstructionAccounts.

No data fields.

Required accounts: 15; extras go to remaining.

Fields of LpTakeoverInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1authority_configPubkey
2lp_authorityPubkey
3new_lp_authorityPubkey
4lp_escrowPubkey
5new_lp_escrowPubkey
6position_mintPubkey
7positionPubkey
8position_token_accountPubkey
9new_position_token_accountPubkey
10lock_configPubkey
11system_programPubkey
12token22_programPubkey
13ata_programPubkey
14whirlpool_programPubkey
15…remainingVec<AccountMeta>

LpTransfer#

Discriminator 39 · data LpTransfer · accounts LpTransferInstructionAccounts.

No data fields.

Required accounts: 13; extras go to remaining.

Fields of LpTransferInstructionAccounts, in account order:

#FieldType
0lp_authorityPubkey
1new_lp_authorityPubkey
2lp_escrowPubkey
3new_lp_escrowPubkey
4position_mintPubkey
5positionPubkey
6position_token_accountPubkey
7new_position_token_accountPubkey
8lock_configPubkey
9system_programPubkey
10token22_programPubkey
11ata_programPubkey
12whirlpool_programPubkey
13…remainingVec<AccountMeta>

MintConfigClose#

Discriminator 19 · data MintConfigClose · accounts MintConfigCloseInstructionAccounts.

No data fields.

Required accounts: 3; extras go to remaining.

Fields of MintConfigCloseInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1mint_configPubkey
2authority_configPubkey
3…remainingVec<AccountMeta>

MintConfigInitialize#

Discriminator 18 · data MintConfigInitialize · accounts MintConfigInitializeInstructionAccounts.

FieldType
token_mintPubkey
instruction_discriminatoru8

Required accounts: 4; extras go to remaining.

Fields of MintConfigInitializeInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1mint_configPubkey
2authority_configPubkey
3system_programPubkey
4…remainingVec<AccountMeta>

MintConfigUpdate#

Discriminator 1a · data MintConfigUpdate · accounts MintConfigUpdateInstructionAccounts.

FieldType
updateMintConfigUpdateType

Required accounts: 3; extras go to remaining.

Fields of MintConfigUpdateInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1mint_configPubkey
2authority_configPubkey
3…remainingVec<AccountMeta>

PermissionConfigClose#

Discriminator 04 · data PermissionConfigClose · accounts PermissionConfigCloseInstructionAccounts.

No data fields.

Required accounts: 3; extras go to remaining.

Fields of PermissionConfigCloseInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1permission_configPubkey
2authority_configPubkey
3…remainingVec<AccountMeta>

PermissionConfigInitialize#

Discriminator 02 · data PermissionConfigInitialize · accounts PermissionConfigInitializeInstructionAccounts.

FieldType
permission_authorityPermissionSigner
consumer_programPubkey

Required accounts: 4; extras go to remaining.

Fields of PermissionConfigInitializeInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1permission_configPubkey
2authority_configPubkey
3system_programPubkey
4…remainingVec<AccountMeta>

PermissionConfigUpdate#

Discriminator 03 · data PermissionConfigUpdate · accounts PermissionConfigUpdateInstructionAccounts.

Required accounts: 3; extras go to remaining.

Fields of PermissionConfigUpdateInstructionAccounts, in account order:

#FieldType
0authorityPubkey
1permission_configPubkey
2authority_configPubkey
3…remainingVec<AccountMeta>

PermissionConsumeCpi#

Discriminator 01 · data PermissionConsumeCpi · accounts PermissionConsumeCpiInstructionAccounts.

FieldType
permission_messagePermissionMessage
permission_signaturePermissionSignature
consumer_program_authority_seedsVec<Vec<u8>>

Required accounts: 5; extras go to remaining.

Fields of PermissionConsumeCpiInstructionAccounts, in account order:

#FieldType
0consumerPubkey
1consumer_program_authorityPubkey
2permission_configPubkey
3consumed_permissionPubkey
4system_programPubkey
5…remainingVec<AccountMeta>

PermissionConsumeTopLevel#

Discriminator 00 · data PermissionConsumeTopLevel · accounts PermissionConsumeTopLevelInstructionAccounts.

FieldType
permission_messagePermissionMessage
permission_signaturePermissionSignature

Required accounts: 5; extras go to remaining.

Fields of PermissionConsumeTopLevelInstructionAccounts, in account order:

#FieldType
0consumerPubkey
1permission_configPubkey
2consumed_permissionPubkey
3system_programPubkey
4instructionsPubkey
5…remainingVec<AccountMeta>

PermissionRefund#

Discriminator 06 · data PermissionRefund · accounts PermissionRefundInstructionAccounts.

No data fields.

Required accounts: 2; extras go to remaining.

Fields of PermissionRefundInstructionAccounts, in account order:

#FieldType
0consumed_permissionPubkey
1refund_destinationPubkey
2…remainingVec<AccountMeta>

PermissionRevoke#

Discriminator 05 · data PermissionRevoke · accounts PermissionRevokeInstructionAccounts.

FieldType
permission_messagePermissionMessage
permission_signaturePermissionSignature

Required accounts: 4; extras go to remaining.

Fields of PermissionRevokeInstructionAccounts, in account order:

#FieldType
0funderPubkey
1permission_configPubkey
2consumed_permissionPubkey
3system_programPubkey
4…remainingVec<AccountMeta>

ReservedAuthorityConfigA#

Discriminator 15 · data ReservedAuthorityConfigA · accounts ReservedAuthorityConfigAInstructionAccounts.

No data fields.

No named accounts.

ReservedAuthorityConfigB#

Discriminator 16 · data ReservedAuthorityConfigB · accounts ReservedAuthorityConfigBInstructionAccounts.

No data fields.

No named accounts.

ReservedAuthorityConfigC#

Discriminator 17 · data ReservedAuthorityConfigC · accounts ReservedAuthorityConfigCInstructionAccounts.

No data fields.

No named accounts.

ReservedAuthorityConfigY#

Discriminator 13 · data ReservedAuthorityConfigY · accounts ReservedAuthorityConfigYInstructionAccounts.

No data fields.

No named accounts.

ReservedAuthorityConfigZ#

Discriminator 14 · data ReservedAuthorityConfigZ · accounts ReservedAuthorityConfigZInstructionAccounts.

No data fields.

No named accounts.

ReservedBondingCurveA#

Discriminator 37 · data ReservedBondingCurveA · accounts ReservedBondingCurveAInstructionAccounts.

No data fields.

No named accounts.

ReservedBondingCurveX#

Discriminator 34 · data ReservedBondingCurveX · accounts ReservedBondingCurveXInstructionAccounts.

No data fields.

No named accounts.

ReservedBondingCurveY#

Discriminator 35 · data ReservedBondingCurveY · accounts ReservedBondingCurveYInstructionAccounts.

No data fields.

No named accounts.

ReservedBondingCurveZ#

Discriminator 36 · data ReservedBondingCurveZ · accounts ReservedBondingCurveZInstructionAccounts.

No data fields.

No named accounts.

ReservedCreateA#

Discriminator 2d · data ReservedCreateA · accounts ReservedCreateAInstructionAccounts.

No data fields.

No named accounts.

ReservedCreateB#

Discriminator 2e · data ReservedCreateB · accounts ReservedCreateBInstructionAccounts.

No data fields.

No named accounts.

ReservedCreateC#

Discriminator 2f · data ReservedCreateC · accounts ReservedCreateCInstructionAccounts.

No data fields.

No named accounts.

ReservedCreateY#

Discriminator 2b · data ReservedCreateY · accounts ReservedCreateYInstructionAccounts.

No data fields.

No named accounts.

ReservedCreateZ#

Discriminator 2c · data ReservedCreateZ · accounts ReservedCreateZInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateA#

Discriminator 25 · data ReservedGraduateA · accounts ReservedGraduateAInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateB#

Discriminator 26 · data ReservedGraduateB · accounts ReservedGraduateBInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateC#

Discriminator 27 · data ReservedGraduateC · accounts ReservedGraduateCInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateX#

Discriminator 22 · data ReservedGraduateX · accounts ReservedGraduateXInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateY#

Discriminator 23 · data ReservedGraduateY · accounts ReservedGraduateYInstructionAccounts.

No data fields.

No named accounts.

ReservedGraduateZ#

Discriminator 24 · data ReservedGraduateZ · accounts ReservedGraduateZInstructionAccounts.

No data fields.

No named accounts.

ReservedLpA#

Discriminator 3e · data ReservedLpA · accounts ReservedLpAInstructionAccounts.

No data fields.

No named accounts.

ReservedLpB#

Discriminator 3f · data ReservedLpB · accounts ReservedLpBInstructionAccounts.

No data fields.

No named accounts.

ReservedLpX#

Discriminator 3b · data ReservedLpX · accounts ReservedLpXInstructionAccounts.

No data fields.

No named accounts.

ReservedLpY#

Discriminator 3c · data ReservedLpY · accounts ReservedLpYInstructionAccounts.

No data fields.

No named accounts.

ReservedLpZ#

Discriminator 3d · data ReservedLpZ · accounts ReservedLpZInstructionAccounts.

No data fields.

No named accounts.

ReservedMintConfigA#

Discriminator 1d · data ReservedMintConfigA · accounts ReservedMintConfigAInstructionAccounts.

No data fields.

No named accounts.

ReservedMintConfigB#

Discriminator 1e · data ReservedMintConfigB · accounts ReservedMintConfigBInstructionAccounts.

No data fields.

No named accounts.

ReservedMintConfigC#

Discriminator 1f · data ReservedMintConfigC · accounts ReservedMintConfigCInstructionAccounts.

No data fields.

No named accounts.

ReservedMintConfigY#

Discriminator 1b · data ReservedMintConfigY · accounts ReservedMintConfigYInstructionAccounts.

No data fields.

No named accounts.

ReservedMintConfigZ#

Discriminator 1c · data ReservedMintConfigZ · accounts ReservedMintConfigZInstructionAccounts.

No data fields.

No named accounts.

ReservedPermissionA#

Discriminator 07 · data ReservedPermissionA · accounts ReservedPermissionAInstructionAccounts.

No data fields.

No named accounts.

ReservedTokenA#

Discriminator 0f · data ReservedTokenA · accounts ReservedTokenAInstructionAccounts.

No data fields.

No named accounts.

ReservedTokenY#

Discriminator 0d · data ReservedTokenY · accounts ReservedTokenYInstructionAccounts.

No data fields.

No named accounts.

ReservedTokenZ#

Discriminator 0e · data ReservedTokenZ · accounts ReservedTokenZInstructionAccounts.

No data fields.

No named accounts.

TokenBuyExactIn#

Discriminator 08 · data TokenBuyExactIn · accounts TokenBuyExactInInstructionAccounts.

FieldType
amount_inu64
allow_partial_fillbool
price_thresholdOption<(u64, u64)>

Required accounts: 11; extras go to remaining.

Fields of TokenBuyExactInInstructionAccounts, in account order:

#FieldType
0buyerPubkey
1bonding_curvePubkey
2base_mintPubkey
3base_ataPubkey
4quote_mintPubkey
5quote_vaultPubkey
6quote_ataPubkey
7system_programPubkey
8ata_programPubkey
9base_token_programPubkey
10quote_token_programPubkey
11…remainingVec<AccountMeta>

TokenBuyExactOut#

Discriminator 09 · data TokenBuyExactOut · accounts TokenBuyExactOutInstructionAccounts.

FieldType
amount_outu64
allow_partial_fillbool
price_thresholdOption<(u64, u64)>

Required accounts: 11; extras go to remaining.

Fields of TokenBuyExactOutInstructionAccounts, in account order:

#FieldType
0buyerPubkey
1bonding_curvePubkey
2base_mintPubkey
3base_ataPubkey
4quote_mintPubkey
5quote_vaultPubkey
6quote_ataPubkey
7system_programPubkey
8ata_programPubkey
9base_token_programPubkey
10quote_token_programPubkey
11…remainingVec<AccountMeta>

TokenRefund#

Discriminator 0c · data TokenRefund · accounts TokenRefundInstructionAccounts.

No data fields.

Required accounts: 11; extras go to remaining.

Fields of TokenRefundInstructionAccounts, in account order:

#FieldType
0signerPubkey
1bonding_curvePubkey
2quote_mintPubkey
3quote_vaultPubkey
4signer_quote_ataPubkey
5base_mintPubkey
6signer_base_ataPubkey
7system_programPubkey
8base_token_programPubkey
9quote_token_programPubkey
10ata_programPubkey
11…remainingVec<AccountMeta>

TokenSellExactIn#

Discriminator 0a · data TokenSellExactIn · accounts TokenSellExactInInstructionAccounts.

FieldType
amount_inu64
allow_partial_fillbool
price_thresholdOption<(u64, u64)>

Required accounts: 11; extras go to remaining.

Fields of TokenSellExactInInstructionAccounts, in account order:

#FieldType
0sellerPubkey
1bonding_curvePubkey
2base_mintPubkey
3base_ataPubkey
4quote_mintPubkey
5quote_vaultPubkey
6quote_ataPubkey
7system_programPubkey
8ata_programPubkey
9base_token_programPubkey
10quote_token_programPubkey
11…remainingVec<AccountMeta>

TokenSellExactOut#

Discriminator 0b · data TokenSellExactOut · accounts TokenSellExactOutInstructionAccounts.

FieldType
amount_outu64
allow_partial_fillbool
price_thresholdOption<(u64, u64)>

Required accounts: 11; extras go to remaining.

Fields of TokenSellExactOutInstructionAccounts, in account order:

#FieldType
0sellerPubkey
1bonding_curvePubkey
2base_mintPubkey
3base_ataPubkey
4quote_mintPubkey
5quote_vaultPubkey
6quote_ataPubkey
7system_programPubkey
8ata_programPubkey
9base_token_programPubkey
10quote_token_programPubkey
11…remainingVec<AccountMeta>

Accounts#

Variants of WavebreakAccount. Each wraps a boxed struct from carbon_wavebreak_decoder::accounts::<module>. decode_account only considers accounts owned by PROGRAM_ID and returns the first variant that matches.

AuthorityConfig#

No discriminator (matched by Borsh layout) · accounts::authority_config::AuthorityConfig.

FieldType
authorities[ProgramAuthority; 64]

BondingCurve#

No discriminator (matched by Borsh layout) · accounts::bonding_curve::BondingCurve.

FieldType
base_mintPubkey
quote_mintPubkey
creatorPubkey
retain_mint_authoritybool
buy_requires_permissionbool
buy_permission_bitmap[u8; 32]
sell_requires_permissionbool
sell_permission_bitmap[u8; 32]
quote_fee_bpsu16
base_fee_bpsu16
control_points[u16; 4]
start_priceu128
end_priceu128
quote_amountu64
base_amountu64
launch_timei64
creator_rewardu64
graduation_targetu64
graduation_timei64
graduation_rewardu64
max_buy_amountu64
max_sell_amountu64
swap_fee_bpsu16
base_allocation_bpsu16
graduation_methods[GraduationMethodData; 8]
min_reserve_bpsu16
padding1[u8; 2]
preminted_supplyu64
padding2[u8; 728]

ConsumedPermission#

No discriminator (matched by Borsh layout) · accounts::consumed_permission::ConsumedPermission.

FieldType
padding1[u8; 7]
safe_to_close_slotu64
refund_destinationPubkey
padding2[u8; 16]

MintConfig#

No discriminator (matched by Borsh layout) · accounts::mint_config::MintConfig.

FieldType
instruction_discriminatoru8
quote_mintPubkey
create_requires_permissionbool
create_permission_bitmap[u8; 32]
default_buy_requires_permissionbool
default_buy_permission_bitmap[u8; 32]
default_sell_requires_permissionbool
default_sell_permission_bitmap[u8; 32]
padding1[u8; 3]
default_creator_rewardu64
default_graduation_rewardu64
default_graduation_targetu64
default_max_buy_amountu64
default_max_sell_amountu64
default_start_priceu128
default_end_priceu128
default_control_points[u16; 4]
default_swap_fee_bpsu16
default_quote_fee_bpsu16
default_base_fee_bpsu16
padding2[u8; 1826]

PermissionConfig#

No discriminator (matched by Borsh layout) · accounts::permission_config::PermissionConfig.

FieldType
consumer_programPubkey
allowed_signers[PermissionSigner; 3]
padding[u8; 124]

Types#

Types used by the instructions, accounts and events above, exported from carbon_wavebreak_decoder::types.

AccountDiscriminator#

Enum types::AccountDiscriminator.

Variant
Uninitialized
Closed
BondingCurve
AuthorityConfig
PermissionConfig
ConsumedPermission
MintConfig

BondingCurveCreationType#

Enum types::BondingCurveCreationType.

Variant
Manual
Launch
Lockedlaunch
Presale

Event#

Enum types::Event.

VariantFields
BondingCurveCreatedcreation_type: BondingCurveCreationType, base_mint: Pubkey, quote_mint: Pubkey, creator: Pubkey, start_price: u128, end_price: u128, control_points: [u16; 4], swap_fee_bps: u16, quote_fee_bps: u16, base_fee_bps: u16, base_allocation_bps: u16, launch_time: i64, creator_reward: u64, graduation_methods: [GraduationMethodData; 8], graduation_target: u64, graduation_time: i64, graduation_reward: u64, retain_mint_authority: bool, min_reserve_bps: u16, buy_requires_permission: bool, buy_permission_bitmap: [u8; 32], max_buy_amount: u64, sell_requires_permission: bool, sell_permission_bitmap: [u8; 32], max_sell_amount: u64, quote_token_program: Pubkey, base_token_program: Pubkey, quote_token_decimals: u8, base_token_decimals: u8
TokenBoughtbuyer: Pubkey, base_mint: Pubkey, quote_mint: Pubkey, amount_in: u64, amount_out: u64, price_before: u128, price_after: u128, quote_amount_before: u64, quote_amount_after: u64, base_amount_before: u64, base_amount_after: u64, protocol_fee: u64
TokenSoldseller: Pubkey, base_mint: Pubkey, quote_mint: Pubkey, amount_in: u64, amount_out: u64, price_before: u128, price_after: u128, quote_amount_before: u64, quote_amount_after: u64, base_amount_before: u64, base_amount_after: u64, protocol_fee: u64
TokenRefundedsigner: Pubkey, base_mint: Pubkey, quote_mint: Pubkey, price: u128, quote_amount: u64, base_amount: u64
BondingCurveGraduatedgraduator: Pubkey, base_mint: Pubkey, quote_mint: Pubkey, final_price: u128, graduation_methods: [GraduationMethodData; 8]
BondingCurveClosedbonding_curve: Pubkey

GraduationMethod#

Enum types::GraduationMethod.

VariantFields
None
Whirlpoolsplit_bps: u16, fee_tier_index: u16, destination: Pubkey, unlocked: bool
Manualsplit_bps: u16, destination: Pubkey

GraduationMethodData#

Struct types::GraduationMethodData.

FieldType
labelGraduationMethodLabel
graduatedbool
fee_tier_indexu16
split_bpsu16
destinationPubkey
unlockedbool
padding[u8; 89]

GraduationMethodLabel#

Enum types::GraduationMethodLabel.

Variant
None
Whirlpool
Manual

LockTypeLabel#

Enum types::LockTypeLabel.

Variant
Permanent

MetaplexCollection#

Struct types::MetaplexCollection.

FieldType
verifiedbool
keyPubkey

MetaplexCollectionDetails#

Enum types::MetaplexCollectionDetails.

VariantFields
V1size: u64
V2padding: [u8; 8]

MetaplexCreator#

Struct types::MetaplexCreator.

FieldType
addressPubkey
verifiedbool
shareu8

MetaplexData#

Struct types::MetaplexData.

FieldType
nameString
symbolString
uriString
seller_fee_basis_pointsu16
creatorsOption<Vec<MetaplexCreator>>

MetaplexMetadata#

Struct types::MetaplexMetadata.

FieldType
discriminatoru8
update_authorityPubkey
mintPubkey
dataMetaplexData
primary_sale_happenedbool
mutablebool
edition_nonceOption<u8>
token_standardOption<MetaplexTokenStandard>
collectionOption<MetaplexCollection>
usesOption<MetaplexUses>
collection_detailsOption<MetaplexCollectionDetails>
programmable_configOption<MetaplexProgrammableConfig>

MetaplexProgrammableConfig#

Enum types::MetaplexProgrammableConfig.

VariantFields
V1rule_set: Option<Pubkey>

MetaplexTokenStandard#

Enum types::MetaplexTokenStandard.

Variant
NonFungible
FungibleAsset
Fungible
NonFungibleEdition
ProgrammableNonFungible
ProgrammableNonFungibleEdition

MetaplexUseMethod#

Enum types::MetaplexUseMethod.

Variant
Burn
Multiple
Single

MetaplexUses#

Struct types::MetaplexUses.

FieldType
use_methodMetaplexUseMethod
remainingu64
totalu64

MintConfigUpdateType#

Enum types::MintConfigUpdateType.

VariantFields
DefaultCreatorRewardu64
DefaultGraduationRewardu64
DefaultGraduationTargetu64
DefaultMaxBuyAmountu64
DefaultMaxSellAmountu64
DefaultBuyPermissionBitmapOption<[u8; 32]>
DefaultSellPermissionBitmapOption<[u8; 32]>
CreatePermissionBitmapOption<[u8; 32]>
PriceCurveu128, u128, [u16; 4]
DefaultSwapFeeBpsu16
DefaultBaseFeeBpsu16
DefaultQuoteFeeBpsu16

PermissionConfigUpdateType#

Enum types::PermissionConfigUpdateType.

VariantFields
AllowedSigner1PermissionSigner
AllowedSigner2PermissionSigner
AllowedSigner3PermissionSigner

PermissionMessage#

Enum types::PermissionMessage.

VariantFields
V1nonce: u64, consumer_program: Pubkey, permission_signer: PermissionSigner, permission_subject: Pubkey, valid_until: u64, permission_type: u8, instruction_discriminators: Vec<Vec<u8>>

PermissionSignature#

Struct types::PermissionSignature.

FieldType
recovery_idu8
bytes[u8; 64]

PermissionSigner#

Struct types::PermissionSigner.

FieldType
bytes[u8; 33]

Privilege#

Enum types::Privilege.

Variant
AuthorityConfigUpdate
ReceiveProtocolFees
MintConfigInitialize
MintConfigUpdate
MintConfigClose
PermissionConfigInitialize
PermissionConfigUpdate
PermissionConfigClose
BondingCurveInitialize
BondingCurveUpdate
BondingCurveClose
ExecuteLpTakeover

ProgramAuthority#

Struct types::ProgramAuthority.

FieldType
keyPubkey
privileges[u8; 32]

TokenAccount#

Struct types::TokenAccount.

FieldType
mintPubkey
ownerPubkey
amountu64
delegate_flagu32
delegatePubkey
stateTokenAccountState
is_native_flagu32
native_amountu64
delegate_amountu64
close_authority_flagu32
close_authorityPubkey

TokenAccountState#

Enum types::TokenAccountState.

Variant
Uninitialized
Initialized
Frozen

TokenMetadata#

Struct types::TokenMetadata.

FieldType
update_authorityPubkey
mintPubkey
nameString
symbolString
uriString
additional_metadataVec<(String, String)>

TokenMetadataPointer#

Struct types::TokenMetadataPointer.

FieldType
update_authorityPubkey
metadata_addressPubkey

TokenMint#

Struct types::TokenMint.

FieldType
mint_authority_flagu32
mint_authorityPubkey
supplyu64
decimalsu8
is_initializedbool
freeze_authority_flagu32
freeze_authorityPubkey

Whirlpool#

Struct types::Whirlpool.

FieldType
discriminator[u8; 8]
whirlpool_configPubkey
whirlpool_bumpu8
tick_spacingu16
fee_tier_indexu16
fee_rateu16
protocol_fee_rateu16
liquidityu128
sqrt_priceu128
tick_current_indexi32
protocol_fee_owed_au64
protocol_fee_owed_bu64
token_a_mintPubkey
token_a_vaultPubkey
fee_growth_global_au128
token_b_mintPubkey
token_b_vaultPubkey
fee_growth_global_bu128
reward_last_updated_timestampu64
reward_infos[WhirlpoolRewardInfo; 3]

WhirlpoolAdaptiveFeeTier#

Struct types::WhirlpoolAdaptiveFeeTier.

FieldType
discriminator[u8; 8]
whirlpool_configPubkey
fee_tier_indexu16
tick_spacingu16
initialize_pool_authorityPubkey
delegated_fee_authorityPubkey
default_base_fee_rateu16
filter_periodu16
decay_periodu16
reduction_factoru16
adaptive_fee_control_factoru32
max_volatility_accumulatoru32
tick_group_sizeu16
major_swap_threshold_ticksu16

WhirlpoolConfig#

Struct types::WhirlpoolConfig.

FieldType
discriminator[u8; 8]
fee_authorityPubkey
collect_protocol_fees_authorityPubkey
reward_emissions_super_authorityPubkey
default_protocol_fee_rateu16
feature_flagsu16

WhirlpoolFeeTier#

Struct types::WhirlpoolFeeTier.

FieldType
discriminator[u8; 8]
whirlpool_configPubkey
tick_spacingu16
default_fee_rateu16

WhirlpoolLockConfig#

Struct types::WhirlpoolLockConfig.

FieldType
discriminator[u8; 8]
positionPubkey
position_ownerPubkey
whirlpoolPubkey
locked_timestampu64
lock_typeLockTypeLabel

WhirlpoolPosition#

Struct types::WhirlpoolPosition.

FieldType
discriminator[u8; 8]
whirlpoolPubkey
position_mintPubkey
liquidityu128
tick_lower_indexi32
tick_upper_indexi32
fee_growth_checkpoint_au128
fee_owed_au64
fee_growth_checkpoint_bu128
fee_owed_bu64
reward_infos[WhirlpoolPositionRewardInfo; 3]

WhirlpoolPositionRewardInfo#

Struct types::WhirlpoolPositionRewardInfo.

FieldType
growth_inside_checkpointu128
amount_owedu64

WhirlpoolRewardInfo#

Struct types::WhirlpoolRewardInfo.

FieldType
mintPubkey
vaultPubkey
authorityPubkey
emissions_per_second_x64u128
growth_global_x64u128

WhirlpoolTickArray#

Struct types::WhirlpoolTickArray.

FieldType
discriminator[u8; 8]
start_tick_indexi32
ticks[u8; 9944]
whirlpoolPubkey

Generated from the crate’s source at Carbon v2.0.0, so it always matches the published code. Spotted a problem? Report it; edits to this page itself are overwritten on the next release.

Your endpoints

Code samples use these instead of the placeholders, so you can copy and run them as they are. They’re stored only in this browser and never sent anywhere.