Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/trident-fuzz.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ jobs:
target: "fuzz_2"
- name: "fuzz_3"
target: "fuzz_3"
# - name: "fuzz_launchpad"
# target: "fuzz_launchpad"
# - name: "fuzz_pbpp"
# target: "fuzz_pbpp"
- name: "fuzz_launchpad"
target: "fuzz_launchpad"
- name: "fuzz_pbpp"
target: "fuzz_pbpp"

steps:
- uses: actions/checkout@v4
Expand Down
23 changes: 23 additions & 0 deletions trident-tests/common/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ pub const TOKEN_PROGRAM_ID: Pubkey = pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9S
pub const _TOKEN_2022_PROGRAM_ID: Pubkey = pubkey!("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
pub const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey =
pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
pub const SOLANA_PROGRAM_ID: Pubkey = pubkey!("11111111111111111111111111111111");
pub const USDC_MINT: Pubkey = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
pub const MPL_TOKEN_METADATA_PROGRAM_ID: Pubkey = pubkey!("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
pub const RENT_SYSVAR_ID: Pubkey = pubkey!("SysvarRent111111111111111111111111111111111");
pub const DAMM_V2_PROGRAM_ID: Pubkey = pubkey!("cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG");
pub const METEORA_CONFIG_ID: Pubkey = pubkey!("FaA6RM9enPh1tU9Y8LiGCq715JubLc49WGcYTdNvDfsc");
pub const FEE_RECIPIENT_ID: Pubkey = pubkey!("6awyHMshBGVjJ3ozdSJdyyDE1CTAXUwrpNMaRGMsb4sf");
pub const TOKEN_2022_PROGRAM_ID: Pubkey = pubkey!("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
// ============================================================================

// ============================================================================
Expand All @@ -26,6 +34,21 @@ pub const QUESTION_SEED_PREFIX: &[u8] = b"question";
pub const CONDITIONAL_TOKEN_SEED_PREFIX: &[u8] = b"conditional_token";
pub const STAKE_SEED_PREFIX: &[u8] = b"stake";
pub const AMM_POSITION_SEED_PREFIX: &[u8] = b"amm_position";
pub const PERFORMANCE_PACKAGE_SEED_PREFIX: &[u8] = b"performance_package";
pub const CHANGE_REQUEST_SEED_PREFIX: &[u8] = b"change_request";
pub const SQUADS_SEED_PROGRAM_CONFIG: &[u8] = b"program_config";
pub const POOL_CREATOR_AUTHORITY_SEED: &[u8] = b"damm_pool_creator_authority";
pub const POOL_AUTHORITY_SEED: &[u8] = b"pool_authority";
pub const POOL_PREFIX: &[u8] = b"pool";
pub const POSITION_NFT_ACCOUNT_PREFIX: &[u8] = b"position_nft_account";
pub const POSITION_PREFIX: &[u8] = b"position";
pub const POSITION_NFT_MINT_PREFIX: &[u8] = b"position_nft_mint";
pub const TOKEN_VAULT_PREFIX: &[u8] = b"token_vault";
pub const BID_WALL_PREFIX: &[u8] = b"bid_wall";
pub const LAUNCHPAD_SEED_PREFIX: &[u8] = b"launch";
pub const TOKEN_METADATA_SEED_PREFIX: &[u8] = b"metadata";
pub const LAUNCH_SIGNER_SEED_PREFIX: &[u8] = b"launch_signer";
pub const FUNDING_RECORD_SEED_PREFIX: &[u8] = b"funding_record";
// ============================================================================

// ============================================================================
Expand Down
2 changes: 1 addition & 1 deletion trident-tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ pub mod futarchy;
pub mod pda;
pub mod squads;
pub mod token;
pub mod types;
pub mod types;
99 changes: 99 additions & 0 deletions trident-tests/common/pda.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
use super::constants::*;
use super::types::conditional_vault;
use super::types::futarchy;
use super::types::price_based_performance_package;
use super::types::launchpad_v_7;
use super::types::bid_wall;

use trident_fuzz::fuzzing::*;

Expand All @@ -14,6 +17,102 @@ pub fn get_proposal_pda(trident: &mut Trident, squads_proposal: Pubkey) -> Pubke
.0
}

pub fn get_performance_package_pda(trident: &mut Trident, create_key: Pubkey) -> Pubkey {
trident
.find_program_address(&[PERFORMANCE_PACKAGE_SEED_PREFIX, create_key.as_ref()], &price_based_performance_package::program_id())
.0
}

pub fn get_change_request_pda(trident: &mut Trident, performance_package: Pubkey, proposer: Pubkey, pda_nonce: u32) -> Pubkey {
trident
.find_program_address(
&[CHANGE_REQUEST_SEED_PREFIX, performance_package.as_ref(), proposer.as_ref(), pda_nonce.to_le_bytes().as_ref()],
&price_based_performance_package::program_id(),
)
.0
}

pub fn get_launchpad_pda(trident: &mut Trident, base_mint: Pubkey) -> Pubkey {
trident
.find_program_address(&[LAUNCHPAD_SEED_PREFIX, base_mint.as_ref()], &launchpad_v_7::program_id())
.0
}
pub fn get_token_metadata_pda(trident: &mut Trident, base_mint: Pubkey) -> Pubkey {
trident
.find_program_address(&[TOKEN_METADATA_SEED_PREFIX, &MPL_TOKEN_METADATA_PROGRAM_ID.as_ref(), base_mint.as_ref()], &MPL_TOKEN_METADATA_PROGRAM_ID)
.0
}
pub fn get_launch_signer_pda(trident: &mut Trident, launch: Pubkey) -> Pubkey {
trident
.find_program_address(&[LAUNCH_SIGNER_SEED_PREFIX, launch.as_ref()], &launchpad_v_7::program_id())
.0
}

pub fn get_funding_record_pda(trident: &mut Trident, launch: Pubkey, funder: Pubkey) -> Pubkey {
trident
.find_program_address(&[FUNDING_RECORD_SEED_PREFIX, launch.as_ref(), funder.as_ref()], &launchpad_v_7::program_id())
.0
}
pub fn get_squads_program_config_pda(trident: &mut Trident) -> Pubkey {
trident
.find_program_address(&[SQUADS_SEED_PREFIX, SQUADS_SEED_PROGRAM_CONFIG], &SQUADS_PROGRAM_ID)
.0
}
pub fn get_pool_creator_authority_pda(trident: &mut Trident) -> Pubkey {
trident
.find_program_address(&[POOL_CREATOR_AUTHORITY_SEED], &launchpad_v_7::program_id())
.0
}
pub fn get_pool_authority_pda(trident: &mut Trident) -> Pubkey {
trident
.find_program_address(&[POOL_AUTHORITY_SEED], &DAMM_V2_PROGRAM_ID)
.0
}
fn max_key(left: &Pubkey, right: &Pubkey) -> [u8; 32] {
std::cmp::max(left, right).to_bytes()
}

fn min_key(left: &Pubkey, right: &Pubkey) -> [u8; 32] {
std::cmp::min(left, right).to_bytes()
}
pub fn get_pool_pda(trident: &mut Trident, config: Pubkey, base_mint: Pubkey, quote_mint: Pubkey) -> Pubkey {
let max_key = max_key(&base_mint, &quote_mint);
let min_key = min_key(&base_mint, &quote_mint);
trident
.find_program_address(&[POOL_PREFIX, config.as_ref(), max_key.as_ref(), min_key.as_ref()], &DAMM_V2_PROGRAM_ID)
.0
}
pub fn get_position_nft_account_pda(trident: &mut Trident, position_nft_mint: Pubkey) -> Pubkey {
trident
.find_program_address(&[POSITION_NFT_ACCOUNT_PREFIX, position_nft_mint.as_ref()], &DAMM_V2_PROGRAM_ID)
.0
}
pub fn get_position_pda(trident: &mut Trident, position_nft_mint: Pubkey) -> Pubkey {
trident
.find_program_address(&[POSITION_PREFIX, position_nft_mint.as_ref()], &DAMM_V2_PROGRAM_ID)
.0
}
pub fn get_position_nft_mint_pda(trident: &mut Trident, base_mint: Pubkey) -> Pubkey {
trident
.find_program_address(&[POSITION_NFT_MINT_PREFIX, base_mint.as_ref()], &launchpad_v_7::program_id())
.0
}
pub fn get_token_a_vault_pda(trident: &mut Trident, base_mint: Pubkey, pool: Pubkey) -> Pubkey {
trident
.find_program_address(&[TOKEN_VAULT_PREFIX, base_mint.as_ref(), pool.as_ref()], &DAMM_V2_PROGRAM_ID)
.0
}
pub fn get_token_b_vault_pda(trident: &mut Trident, quote_mint: Pubkey, pool: Pubkey) -> Pubkey {
trident
.find_program_address(&[TOKEN_VAULT_PREFIX, quote_mint.as_ref(), pool.as_ref()], &DAMM_V2_PROGRAM_ID)
.0
}
pub fn get_bid_wall_pda(trident: &mut Trident, base_mint: Pubkey, launch_signer: Pubkey) -> Pubkey {
trident
.find_program_address(&[BID_WALL_PREFIX, base_mint.as_ref(), launch_signer.as_ref(), 0_u64.to_le_bytes().as_ref()], &bid_wall::program_id())
.0
}

pub fn get_conditional_vault_pda(
trident: &mut Trident,
question: Pubkey,
Expand Down
19 changes: 19 additions & 0 deletions trident-tests/common/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,22 @@ pub fn mint_to(

assert!(res.is_success());
}

pub fn get_or_initialize_associated_token_account(
trident: &mut Trident,
payer: Pubkey,
mint: Pubkey,
owner: Pubkey,
) -> Pubkey {
let ata = trident
.get_associated_token_address(&mint, &owner, &TOKEN_PROGRAM_ID);

if trident.get_token_account(ata).is_err() {
let ix = trident
.initialize_associated_token_account(&payer, &mint, &owner);
let res = trident.process_transaction(&[ix], None);
assert!(res.is_success());
}

ata
}
68 changes: 0 additions & 68 deletions trident-tests/fuzz_launchpad/constants.rs

This file was deleted.

Loading
Loading