TruFin Raydium Vault
Lineagei
Frameworki
What's Anchor?
Batteries-included Rust framework. Ships account-validation codegen, 8-byte instruction discriminators, and an on-chain IDL — the program describes itself.
Bigger binary and higher rent in exchange for safety rails, introspection, and dev speed. The choice of a team optimizing for correctness over on-chain footprint.
Originally Coral (Armani Ferrante); now community-maintained.
What it is
The de facto standard. Rust macros (#[program], #[derive(Accounts)]) eliminate boilerplate: it auto-generates 8-byte account and instruction discriminators — SHA256("account:<Name>")[..8] and SHA256("global:<ix>")[..8] — handles Borsh (de)serialization, enforces account constraints declaratively (mut, has_one, seeds, init), and emits a JSON IDL that client libraries consume directly. The cost: Borsh copies data on every deserialize (not zero-copy), and the macro machinery adds binary bloat and compute overhead — irrelevant for ~99% of programs.
When to pick it
Building a new protocol, moving fast, or wanting maximum ecosystem compatibility. It's the beginner default and stays the right call for most production programs.
How it looks on-chain
The most recognizable framework. Every account it owns begins with an 8-byte discriminator, and the IDL is often published on-chain at a PDA derived from the program id. Both are strong, reliable fingerprints — this is the only framework we can label with confidence.
Others in the wild: Steel (Ore team — near-native performance on solana-program), Seahorse (Python → Anchor), and Poseidon & Quasar (TypeScript → Rust). Transpilers inherit their lowering target's fingerprint: a Quasar or Poseidon program that compiles down to Anchor will look like Anchor on-chain — discriminators and all.
Anchor docsFootprinti
Recovered architecturei
Reachi
Controli
What's upgrade authority?
The upgrade authority is the account allowed to replace a program's code after it's deployed.
If it's set (mutable), that key can push new bytecode at any time — including malicious code, the classic "rug" vector. If it's null (immutable / frozen), the code can never change; what 's on-chain is final. A Squads multisig sits in between — upgrades are possible but need M-of-N signers, not one hot wallet. So mutable + single hot-wallet = highest risk; immutable or multisig = stronger guarantees.
What's a verified build?
A verified build proves the program running on-chain was compiled from the public source you can read — nothing hidden.
Someone re-compiles the source in a deterministic (Docker) environment and checks the resulting bytecode is byte-for-byte identical to what's deployed; tools like solana-verify do this and record it with a verification service. "Not verified" isn't a red flag by itself — most programs simply never submit one. It just means you're trusting the deployed bytecode as-is, with no source cross-check.
Security.txti
What's a security.txt?
A block of contact info a developer embeds directly in the program binary — the Neodyme convention — so whitehats know how to report a vulnerability.
It carries contacts, a disclosure policy, auditors, and a source link. It's self-declared, so treat it as a claim, not proof — but its presence signals a team that expects scrutiny and wants to be reachable.
Convictioni
Interface — the on-chain IDLi
7 of 19 instructions used · 12 never called in this window
Raydium Vault
Instructions 19
claim_ownership
- vault_accesswritable
- pending_ownersigner
- event_authority
- program
clmm_close_position
Closes a concentrated liquidity position
- clmm_program
- payersignerwritable
- vault_statewritable
- vault_access
- vault_sol_pdawritable
- pool_statewritable
- position_nft_mintwritable
- position_nft_accountwritable
- current_positionwritable
- token_program_2022
- system_program
- event_authority
- program
clmm_decrease_liquidity
Decreases liquidity for an existing personal position
- clmm_program
- vault_statewritable
- vault_access
- payersignerwritable
- vault_sol_pdawritable
- position_nft_accountwritable
- pool_statewritable
- tick_array_lowerwritable
- tick_array_upperwritable
- current_positionwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- token_program
- token_program_2022
- memo_program
- wsol_mint
- trusol_mint
- event_authority
- program
- liquidityu128
- wsol_amount_minu64
- trusol_amount_minu64
clmm_increase_liquidity
Increases liquidity for an existing personal position (ticks derived from position)
- vault_state
- vault_access
- payersignerwritable
- vault_sol_pda
- position_nft_accountwritable
- pool_statewritable
- current_positionwritable
- tick_array_lowerwritable
- tick_array_upperwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- wsol_mint
- trusol_mint
- token_program
- token_program_2022
- clmm_program
- event_authority
- program
- liquidityu128
- amount_wsol_maxu64
- amount_trusol_maxu64
clmm_open_position
Opens a new concentrated liquidity position using Token2022 NFT
- clmm_program
- vault_statewritable
- vault_access
- payersignerwritable
- vault_sol_pdawritable
- position_nft_mintwritable
- position_nft_accountwritable
- pool_statewritable
- tick_array_lowerwritable
- tick_array_upperwritable
- current_positionwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- rent
- system_program
- token_program
- associated_token_program
- token_program_2022
- wsol_mint
- trusol_mint
- event_authority
- program
- tick_lower_indexi32
- tick_upper_indexi32
- tick_array_lower_start_indexi32
- tick_array_upper_start_indexi32
- with_metadatabool
collect_fees
- payersignerwritable
- vault_statewritable
- vault_sol_pdawritable
- share_mintwritable
- wsol_atawritable
- trusol_atawritable
- treasury_trusol_atawritable
- treasury_wsol_atawritable
- wsol_mint
- trusol_mintwritable
- treasurywritable
- token_program
- token_program_2022
- associated_token_program
- system_program
- event_authority
- program
deploy_vault_assets
- payersignerwritable
- vault_statewritable
- vault_access
- accesswritable
- vault_sol_pdawritable
- vault_sol_whitelistwritable
- stake_poolwritable
- deposit_authoritywritable
- withdraw_authoritywritable
- pool_reservewritable
- fee_token_accountwritable
- event_program
- stake_pool_programwritable
- wsol_atawritable
- trusol_atawritable
- temp_wsol_atawritable
- wsol_mint
- trusol_mintwritable
- clmm_program
- token_program
- token_program_2022
- associated_token_program
- system_program
- trusol_staker_program
- position_nft_accountwritable
- pool_statewritable
- current_positionwritable
- tick_array_lowerwritable
- tick_array_upperwritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- event_authority
- program
- wsol_to_convertu64
- liquidityu128
deposit
- payersignerwritable
- vault_statewritable
- accesswritable
- user_whitelistwritable
- vault_sol_pdawritable
- vault_sol_whitelistwritable
- stake_poolwritable
- deposit_authoritywritable
- withdraw_authoritywritable
- pool_reservewritable
- fee_token_accountwritable
- event_program
- stake_pool_programwritable
- user_vault_token_accountwritable
- share_mintwritable
- position_nft_accountwritable
- pool_statewritable
- personal_positionwritable
- tick_array_lowerwritable
- tick_array_upperwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- wsol_mint
- trusol_mintwritable
- clmm_program
- token_program
- token_program_2022
- associated_token_program
- system_program
- trusol_staker_program
- event_authority
- program
- amountu64
- max_wsol_amountu64
- max_trusol_amountu64
- liquidityu128
initialize_vault
- vault_statewritable
- vault_accesswritable
- vault_sol_pdawritable
- share_mintwritable
- vault_wsol_atawritable
- vault_trusol_atawritable
- wsol_mint
- trusol_mint
- owner_info
- curator_address_info
- operator_info
- treasury_info
- raydium_pool_address_info
- payersignerwritable
- metadata_pdawritable
- metadata_program
- system_program
- token_program
- token_program_2022
- associated_token_program
- rent
- sysvar_instructions
- event_authority
- program
pause
- vault_accesswritable
- vault_statewritable
- ownersigner
- event_authority
- program
set_curator
- vault_accesswritable
- ownersigner
- event_authority
- program
- new_curatorpubkey
set_fee
- vault_accesswritable
- vault_statewritable
- ownersigner
- event_authority
- program
- new_feeu64
set_max_slippage
- vault_accesswritable
- vault_statewritable
- ownersigner
- event_authority
- program
- new_max_slippage_bpsu64
set_operator
- vault_accesswritable
- ownersigner
- event_authority
- program
- new_operatorpubkey
set_pending_owner
- vault_accesswritable
- ownersigner
- event_authority
- program
- new_pending_ownerpubkey
set_treasury
- vault_accesswritable
- vault_statewritable
- ownersigner
- event_authority
- program
- new_treasurypubkey
sweep_fees
Sweeps accrued trading fees from the CLMM position into the vault
- clmm_program
- vault_statewritable
- vault_access
- payersignerwritable
- vault_sol_pdawritable
- position_nft_accountwritable
- pool_statewritable
- tick_array_lowerwritable
- tick_array_upperwritable
- current_positionwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- token_program
- token_program_2022
- memo_program
- wsol_mint
- trusol_mint
- event_authority
- program
unpause
- vault_accesswritable
- vault_statewritable
- ownersigner
- event_authority
- program
withdraw
- payersignerwritable
- vault_statewritable
- user_whitelistwritable
- vault_sol_pdawritable
- stake_pool
- share_mintwritable
- user_share_accountwritable
- pool_statewritable
- current_positionwritable
- tick_array_lowerwritable
- tick_array_upperwritable
- position_nft_accountwritable
- wsol_atawritable
- trusol_atawritable
- wsol_pool_tokenwritable
- trusol_pool_tokenwritable
- user_trusol_atawritable
- user_wsol_atawritable
- wsol_mint
- trusol_mintwritable
- clmm_program
- token_program
- token_program_2022
- associated_token_program
- system_program
- memo_program
- event_authority
- program
- sharesu64
- min_sol_to_receiveu64
Accounts 6
Access
no fields
PersonalPositionState
no fields
PoolState
no fields
UserStatus
no fields
VaultAccess
no fields
VaultState
no fields
Types 29
Accessstruct
- ownerpubkey
- stake_managerpubkey
- is_pausedbool
- pending_ownerOption<pubkey>
CollectedFeesstruct
- wsol_fee_to_treasuryu64
- trusol_fee_to_treasuryu64
CuratorSetstruct
- new_curatorpubkey
Depositedstruct
- amount_depositedu64
- amount_stakedu64
- trusol_receivedu64
- user_shares_mintedu64
- liquidity_addedu128
- wsol_usedu64
- trusol_usedu64
DynamicFeeInfostruct
- filter_periodu16
- decay_periodu16
- reduction_factoru16
- dynamic_fee_controlu32
- max_volatility_accumulatoru32
- tick_spacing_index_referencei32
- volatility_referenceu32
- volatility_accumulatoru32
- last_update_timestampu64
- padding[u8; 46]
FeeSetstruct
- old_feeu64
- new_feeu64
FeeSweptstruct
- wsol_feesu64
- trusol_feesu64
- wsol_treasury_feeu64
- trusol_treasury_feeu64
LiquidityDecreasedstruct
- current_positionpubkey
- wsol_amountu64
- trusol_amountu64
- liquidity_removedu128
- wsol_treasury_feeu64
- trusol_treasury_feeu64
LiquidityIncreasedstruct
- current_positionpubkey
- wsol_amountu64
- trusol_amountu64
- liquidity_addedu128
MaxSlippageSetstruct
- old_max_slippage_bpsu64
- new_max_slippage_bpsu64
OperatorSetstruct
- new_operatorpubkey
OwnershipClaimedstruct
- new_ownerpubkey
PendingOwnerSetstruct
- ownerpubkey
- pending_ownerpubkey
PersonalPositionStatestruct
- bump[u8; 1]
- nft_mintpubkey
- pool_idpubkey
- tick_lower_indexi32
- tick_upper_indexi32
- liquidityu128
- fee_growth_inside_0_last_x64u128
- fee_growth_inside_1_last_x64u128
- token_fees_owed_0u64
- token_fees_owed_1u64
- reward_infos[PositionRewardInfo; 3]
- recent_epochu64
- padding[u64; 7]
PoolStatestruct
- bump[u8; 1]
- amm_configpubkey
- ownerpubkey
- token_mint_0pubkey
- token_mint_1pubkey
- token_vault_0pubkey
- token_vault_1pubkey
- observation_keypubkey
- mint_decimals_0u8
- mint_decimals_1u8
- tick_spacingu16
- liquidityu128
- sqrt_price_x64u128
- tick_currenti32
- padding3u16
- padding4u16
- fee_growth_global_0_x64u128
- fee_growth_global_1_x64u128
- protocol_fees_token_0u64
- protocol_fees_token_1u64
- padding5[u128; 4]
- statusu8
- fee_onu8
- padding[u8; 6]
- reward_infos[RewardInfo; 3]
- tick_array_bitmap[u64; 16]
- padding6[u64; 4]
- fund_fees_token_0u64
- fund_fees_token_1u64
- open_timeu64
- recent_epochu64
- dynamic_fee_infoDynamicFeeInfo
- padding1[u64; 14]
- padding2[u64; 32]
PositionClosedstruct
- position_nft_mintpubkey
- position_nft_accountpubkey
- current_positionpubkey
PositionOpenedstruct
- position_nft_mintpubkey
- position_nft_accountpubkey
- current_positionpubkey
- tick_loweri32
- tick_upperi32
PositionRewardInfostruct
- growth_inside_last_x64u128
- reward_amount_owedu64
RewardInfostruct
- reward_stateu8
- open_timeu64
- end_timeu64
- last_update_timeu64
- emissions_per_second_x64u128
- reward_total_emittedu64
- reward_claimedu64
- token_mintpubkey
- token_vaultpubkey
- authoritypubkey
- reward_growth_global_x64u128
TreasurySetstruct
- new_treasurypubkey
- old_treasurypubkey
UserStatusstruct
- statusWhitelistUserStatus
VaultAccessstruct
- ownerpubkey
- curator_addresspubkey
- operatorpubkey
- pending_ownerOption<pubkey>
VaultAssetsDeployedstruct
- current_positionpubkey
- wsol_addedu64
- trusol_addedu64
- liquidity_addedu128
- vault_wsol_amountu64
- vault_trusol_amountu64
VaultInitializedstruct
- ownerpubkey
- curator_addresspubkey
- operatorpubkey
- raydium_pool_addresspubkey
- treasurypubkey
VaultPausedstruct
no fields
VaultStatestruct
- vault_sol_bumpu8
- current_position_tick_loweri32The tick lower of current position
- current_position_tick_upperi32The tick upper of current position
- feeu64Fees taken by the vault
- treasury_trusol_feesu64Fees taken by the vault from pool swaps that have not yet been collected
- treasury_wsol_feesu64
- treasurypubkey
- is_pausedbool
- raydium_pool_addresspubkey
- max_slippage_bpsu64Maximum allowed slippage (in basis points) between the Raydium pool exchange rate and the TruSOL stake-pool share price. 0 = check disabled; 50 = 0.50 %.
VaultUnpausedstruct
no fields
WhitelistUserStatusenum
- None
- Whitelisted
- Blacklisted
Withdrawnstruct
- shares_redeemedu64
- wsol_amountu64
- trusol_amountu64
- wsol_to_useru64
- trusol_to_useru64
- wsol_fee_to_treasuryu64
- trusol_fee_to_treasuryu64
Events 19
CollectedFees
no fields
CuratorSet
no fields
Deposited
no fields
FeeSet
no fields
FeeSwept
no fields
LiquidityDecreased
no fields
LiquidityIncreased
no fields
MaxSlippageSet
no fields
OperatorSet
no fields
OwnershipClaimed
no fields
PendingOwnerSet
no fields
PositionClosed
no fields
PositionOpened
no fields
TreasurySet
no fields
VaultAssetsDeployed
no fields
VaultInitialized
no fields
VaultPaused
no fields
VaultUnpaused
no fields
Withdrawn
no fields
Errors 51
- 6000NotApproved
- 6001InvalidUpdateConfigFlag
- 6002AccountLack
- 6003ClosePositionErr
- 6004InvalidTickIndex
- 6005TickInvalidOrder
- 6006TickLowerOverflow
- 6007TickUpperOverflow
- 6008TickAndSpacingNotMatch
- 6009InvalidTickArray
- 6010InvalidTickArrayBoundary
- 6011SqrtPriceLimitOverflow
- 6012SqrtPriceX64
- 6013LiquiditySubValueErr
- 6014LiquidityAddValueErr
- 6015ForbidBothZeroForSupplyLiquidity
- 6016LiquidityInsufficient
- 6017PriceSlippageCheck
- 6018TooLittleOutputReceived
- 6019TooMuchInputPaid
- 6020ZeroAmountSpecified
- 6021InvalidInputPoolVault
- 6022TooSmallInputOrOutputAmount
- 6023NotEnoughTickArrayAccount
- 6024InvalidFirstTickArrayAccount
- 6025InvalidRewardIndex
- 6026FullRewardInfo
- 6027RewardTokenAlreadyInUse
- 6028ExceptRewardMint
- 6029InvalidRewardInitParam
- 6030InvalidRewardInputAccountNumber
- 6031InvalidRewardPeriod
- 6032NotApproveUpdateRewardEmissions
- 6033UnInitializedRewardInfo
- 6034NotSupportMint
- 6035MissingTickArrayBitmapExtensionAccount
- 6036InsufficientLiquidityForDirection
- 6037MaxTokenOverflow
- 6038CalculateOverflow
- 6039TransferFeeCalculateNotMatch
- 6040OrderAlreadyFilled
- 6041InvalidOrderPhase
- 6042InvalidLimitOrderAmount
- 6043OrderPhaseSaturated
- 6044InvalidDynamicFeeConfigParams
- 6045InvalidFeeOn
- 6046ZeroSqrtPrice
- 6047ZeroLiquidity
- 6048MissingBaseFlag
- 6049MissingMintAccount
- 6050MissingTokenProgram2022
What's an IDL?
An IDL — Interface Description Language — is a JSON spec that describes how to talk to a program: its instructions, the accounts each one needs, argument and account types, events, and errors.
Anchor auto-generates it at build time. A program can publish it on-chain at a PDA derived from its id, so any client or explorer can decode the program's transactions without its source code.
Why it's often missing
Publishing is opt-in — a courtesy, not a requirement. Many programs never do, and non-Anchor frameworks (Pinocchio, native, Steel) don't produce one at all; their interface lives in an off-chain Shank/Codama artifact, or nowhere public. Absence means you can't auto-decode it — not that anything is wrong.
7 of 19 instructions used · 12 never called in this window · +4 more
Tractioni
The recordi
| Event | When | Detail | Receipt |
|---|---|---|---|
| DEPLOY | 4d ago | slot 431,809,226 | back…9226 |