Lineagei
Frameworki
What's Pinocchio?
Zero-dependency, no-std entrypoint. No codegen, no IDL — the developer hand-writes account parsing against the raw C ABI (sol_invoke_signed_c).
Tiny binary and low compute-unit cost, at the price of manual safety and no self-description. The choice for a hot path — routing, MEV, high-frequency — where every CU and lamport of rent is optimized.
Built by Anza (the Agave client team).
What it is
A drop-in replacement for the solana-program crate — not an Anchor-style framework. Its core innovation is zero-copy AccountInfo: instead of deserializing account data into an owned struct, it returns a pointer directly into the input buffer, eliminating a major class of memory copies and cutting CU usage on hot instructions. It has zero external dependencies and is no_std. It's completely unopinionated — no IDL, no account-validation helpers, no standard layout — so you bring Shank + Codama to generate IDLs and clients yourself. Still unaudited and not at full feature parity with solana-program.
When to pick it
Programs that process enormous volume where CU cost is the bottleneck — token programs, AMM hot paths, Ore-style mining. Not beginner-friendly.
How it looks on-chain
No enforced discriminator or account layout, and no on-chain IDL — so it can't be positively identified from account data. The tiny, dependency-free binary is the main tell, which is why we label it 'inferred'.
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.
Pinocchio 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.
Convictioni
Interface — the on-chain IDLi
Meng Lend Program
Instructions 43
init_amm
- protocol
- poolwritable
- a_mint
- b_mint
- a_vaultwritable
- b_vaultwritable
- lp_mintwritable
- oracle_prices
- adminsigner
- payersignerwritable
- a_token_program
- b_token_program
- system_program
- mid_fee_e10u64
- out_fee_e10u64
- fee_gamma_e18u64
- initial_au64
- initial_gammau64
- initial_price_scaleu128
- allowed_extra_profitu64
- adjustment_stepu64
- ma_timeu64
- oracle_slot_indexu16
- oracle_max_staleness_slotsu64
add_liquidity
- poolwritable
- a_mint
- b_mint
- a_vaultwritable
- b_vaultwritable
- lp_mintwritable
- user_awritable
- user_bwritable
- user_lpwritable
- usersigner
- a_token_program
- b_token_program
- amount_au64
- amount_bu64
- min_lp_outu64
remove_liquidity
- poolwritable
- a_mint
- b_mint
- a_vaultwritable
- b_vaultwritable
- lp_mintwritable
- user_awritable
- user_bwritable
- user_lpwritable
- usersigner
- a_token_program
- b_token_program
- lp_amountu64
- min_amount_au64
- min_amount_bu64
swap_exact_in
- poolwritable
- a_mint
- b_mint
- a_vaultwritable
- b_vaultwritable
- trader_awritable
- trader_bwritable
- tradersigner
- a_token_program
- b_token_program
- iu8
- amount_inu64
- min_amount_outu64
update_amm_fee_config
- poolwritable
- adminsigner
- mid_fee_e10u64
- out_fee_e10u64
- fee_gamma_e18u64
pause_amm
- poolwritable
- adminsigner
unpause_amm
- poolwritable
- adminsigner
set_amm_fee_receiver
- poolwritable
- new_fee_receiver
- adminsigner
claim_admin_fees
- poolwritable
- a_mint
- b_mint
- a_vaultwritable
- b_vaultwritable
- fee_receiver_a_atawritable
- fee_receiver_b_atawritable
- token_program
- alt_token_program
init_protocol
- protocolwritable
- program_data
- payersignerwritable
- adminsigner
- treasury
- system_program
init_lending
- protocolwritable
- lendingwritable
- deposit_mint
- collateral_mint
- receipt_mintwritable
- liquidity_vaultwritable
- fee_vaultwritable
- payer_tokenwritable
- adminsigner
- payersignerwritable
- token_program
- system_program
- target_utilization_bpsu16
- curve_steepness_centibpsu16
- adjustment_speedu16
- min_rate_at_target_bpsu32
- max_rate_at_target_bpsu32
- initial_rate_at_target_bpsu32
- base_rate_bpsu32
- waterfall_lenders_bpsu16
- waterfall_insurance_bpsu16
- waterfall_treasury_bpsu16
- oracle_max_staleness_slotsu64
- min_initial_deposit_amountu64
- supply_capu64
- borrow_capu64
- seed_amountu64
harvest_and_distribute_interest
- lendingwritable
- liquidity_vaultwritable
- fee_vaultwritable
- deposit_mint
- crankersigner
- token_program
init_borrow
- lendingwritable
- collateral_mint
- borrow_mint
- price_oracle
- borrowwritable
- collateral_vaultwritable
- borrow_vaultwritable
- ownersignerwritable
- token_program
- system_program
- leverage_e18u128
- feeu64
- rateu64
borrow_increase
- lendingwritable
- borrowwritable
- price_oracle
- collateral_mint
- borrow_mint
- collateral_vaultwritable
- liquidity_vaultwritable
- owner_collateralwritable
- owner_borrow_tokenwritable
- ownersigner
- token_program
- collateral_inu64
- debt_outu64
borrow_repay
- lendingwritable
- borrowwritable
- borrow_mint
- liquidity_vaultwritable
- borrow_vaultwritable
- owner_borrow_tokenwritable
- ownersigner
- token_program
- amountu64
borrow_withdraw
- lendingwritable
- borrowwritable
- price_oracle
- collateral_mint
- borrow_mint
- collateral_vaultwritable
- borrow_vaultwritable
- liquidity_vaultwritable
- owner_collateralwritable
- ownersigner
- token_program
- collateral_outu64
borrow_exchange
- borrowwritable
- lendingwritable
- price_oracle
- collateral_mint
- borrow_mint
- collateral_vaultwritable
- borrow_vaultwritable
- trader_collateralwritable
- trader_borrow_tokenwritable
- tradersigner
- token_program
- iu8
- in_amountu128
- min_outu128
borrow_set_killed
- borrowwritable
- lending
- adminsigner
- is_killedu8
borrow_hard_liquidate
- protocol
- lendingwritable
- borrowwritable
- price_oracle
- collateral_mint
- borrow_mint
- collateral_vaultwritable
- borrow_vaultwritable
- liquidity_vaultwritable
- recipient_collateralwritable
- adminsigner
- token_program
set_lending_oracle
- protocol
- lendingwritable
- prices
- collateral_mint
- adminsigner
- oracle_prices_accountpubkey
- oracle_slot_indexu16
set_rate_model_kind
- protocol
- lendingwritable
- adminsigner
- kindu8
update_rate_model
- protocol
- lendingwritable
- adminsigner
- target_utilization_bpsu16
- curve_steepness_centibpsu16
- adjustment_speedu16
- min_rate_at_target_bpsu32
- max_rate_at_target_bpsu32
- initial_rate_at_target_bpsu32
- base_rate_bpsu32
update_lending_config
- protocol
- lendingwritable
- adminsigner
- supply_capOption<u64>
- borrow_capOption<u64>
- statusOption<u8>
- max_utilization_bpsOption<u16>
- withdrawal_cap_amountOption<u64>
- withdrawal_cap_intervalOption<u64>
- min_initial_deposit_amountOption<u64>
- oracle_max_staleness_slotsOption<u64>
- waterfall_lenders_bpsOption<u16>
- waterfall_insurance_bpsOption<u16>
- waterfall_treasury_bpsOption<u16>
- stability_modeOption<u8>
- borrow_disabledOption<bool>
- protocol_pausedOption<bool>
- pause_duration_secsOption<u64>
withdraw_protocol_fees
- protocol
- lendingwritable
- deposit_mint
- fee_vaultwritable
- treasury_tokenwritable
- adminsigner
- token_program
transfer_admin
- protocolwritable
- adminsigner
- new_admin
accept_admin
- protocolwritable
- new_adminsigner
user_deposit_stable
- lendingwritable
- liquidity_vaultwritable
- receipt_mintwritable
- stable_mint
- owner_stablewritable
- receiptswritable
- ownersigner
- token_program
- amountu64
- min_receipt_amountu64
user_withdraw_stable
- lendingwritable
- liquidity_vaultwritable
- receipt_mintwritable
- stable_mint
- owner_stablewritable
- receiptswritable
- ownersigner
- token_program
- receipts_to_burnu64
- min_liquidity_amountu64
init_levamm_config
- protocol
- factorywritable
- stable_mint
- aggregator
- fee_receiver
- lending
- adminsigner
- payersignerwritable
- system_program
- min_admin_fee_bpsu16
init_levamm_market
- factorywritable
- amm
- asset_mint
- stable_mint
- amm_lp_mint
- marketwritable
- levamm_ammwritable
- tranchewritable
- oraclewritable
- share_mintwritable
- lp_vaultwritable
- amm_stable_vaultwritable
- tranche_stable_vaultwritable
- price_oracle
- adminsigner
- payersignerwritable
- token_program
- system_program
- feeu128
- rateu64
- aggregator_slot_indexu16
- aggregator_max_staleness_slotsu64
set_oracle_staleness
- factory
- market
- oraclewritable
- adminsigner
- max_stalenessu64
set_reserve_tvl_cap
- factorywritable
- adminsigner
- new_capu128
amm_exchange
- levamm_ammwritable
- market
- oracle
- collateral_mint
- stable_mint
- lp_vaultwritable
- stable_vaultwritable
- trader_lpwritable
- trader_stablewritable
- tradersigner
- token_program
- lendingwritable
- lending_liquidity_vaultwritable
- amm
- aggregator
- iu8
- in_amountu128
- min_outu128
distribute_borrower_fees
- factory
- market
- tranchewritable
- ammwritable
- stable_mint
- tranche_stable_vaultwritable
- amm_stable_vaultwritable
- adminsigner
- token_program
user_deposit
- factory
- market
- tranchewritable
- levamm_ammwritable
- ammwritable
- oracle
- lendingwritable
- lending_liquidity_vaultwritable
- share_mintwritable
- amm_lp_mintwritable
- amm_stable_vaultwritable
- amm_asset_vaultwritable
- levamm_amm_stable_vaultwritable
- levamm_amm_lp_vaultwritable
- stable_mint
- asset_mint
- owner_assetwritable
- receiver_shareswritable
- vault_shares
- ownersigner
- token_program
- alt_token_program
- aggregator
- pool_idu16
- assetsu64
- debtu64
- min_sharesu128
user_withdraw
- factory
- market
- tranchewritable
- levamm_ammwritable
- ammwritable
- oracle
- lendingwritable
- lending_liquidity_vaultwritable
- share_mintwritable
- amm_lp_mintwritable
- amm_stable_vaultwritable
- amm_asset_vaultwritable
- levamm_amm_lp_vaultwritable
- levamm_amm_stable_vaultwritable
- stable_mint
- asset_mint
- owner_assetwritable
- user_shareswritable
- vault_shares
- ownersigner
- token_program
- alt_token_program
- aggregator
- pool_idu16
- sharesu128
- min_asset_outu64
user_emergency_withdraw
- factory
- market
- lendingwritable
- lending_liquidity_vaultwritable
- tranchewritable
- levamm_ammwritable
- ammwritable
- oracle
- tranche_share_mintwritable
- amm_lp_mintwritable
- stable_mint
- asset_mint
- amm_stable_vaultwritable
- amm_asset_vaultwritable
- levamm_amm_lp_vaultwritable
- levamm_amm_stable_vaultwritable
- owner
- owner_assetwritable
- owner_stablewritable
- owner_lt_shareswritable
- vault_lt_shares
- signersigner
- token_program
- alt_token_program
- aggregator
- sharesu128
tranche_set_params
- levamm_ammwritable
- lt
- adminsigner
- killedOption<bool>
- feeOption<u64>
- rateOption<u64>
tranche_set_vault
- ltwritable
- new_vault
- adminsigner
set_max_deposit_divergence
- levamm_ammwritable
- adminsigner
- bpsu16
tranche_withdraw_admin_fees
- factory
- market
- levamm_amm
- ltwritable
- oracle
- tranche_share_mintwritable
- fee_receiver_shareswritable
- fee_receiver_owner
- vault_lt_shares
- token_program
- amm
- aggregator
tranche_checkpoint_vault_rebase
- factory
- market
- levamm_ammwritable
- tranchewritable
- oracle
- share_mint
- vault_shares
- vault
- amm
- aggregator
amm_collect_fees
- levamm_ammwritable
- market
- tranche
- stable_mint
- amm_stable_vaultwritable
- tranche_stable_vaultwritable
- token_program
Accounts 9
AmmPool
no fields
LevammAmm
no fields
LeveragedTranche
no fields
Lending
no fields
Borrow
no fields
LevammMarket
no fields
LevammOracle
no fields
LevammFactory
no fields
ProtocolState
no fields
Types 12
AmmPoolstruct
- adminpubkey
- fee_receiverpubkey
- token_a_mintpubkey
- token_b_mintpubkey
- token_a_vaultpubkey
- token_b_vaultpubkey
- lp_mintpubkey
- reserve_au64
- reserve_bu64
- lp_supplyu64
- mid_fee_e10u64
- out_fee_e10u64
- fee_gamma_e18u64
- allowed_extra_profitu64
- adjustment_stepu64
- ma_timeu64
- initial_au64
- initial_gammau64
- future_au64
- future_gammau64
- initial_a_gamma_timeu64
- future_a_gamma_timeu64
- invariantu128
- virtual_priceu128
- xcp_profitu128
- xcp_profit_au128
- cached_price_scaleu128
- cached_price_oracleu128
- last_pricesu128
- admin_lp_virtual_balanceu128
- last_timestampu64
- last_admin_fee_claim_tsu64
- oracle_prices_accountpubkey
- oracle_slot_indexu16
- _oracle_padding[u8; 6]
- oracle_max_staleness_slotsu64
- donation_balance_au64
- donation_balance_bu64
- last_donation_absorb_tsu64
- donation_end_tsu64
- pausedbool
- mint_a_decimalsu8
- mint_b_decimalsu8
- bumpu8
- versionu8
- _padding[u8; 3]
- _reserved[u8; 64]
LevammAmmstruct
- adminpubkey
- tranchepubkey
- ammpubkey
- collateral_mintpubkey
- stable_mintpubkey
- price_oraclepubkey
- leverageu128
- lev_ratiou128
- min_safe_debtu128
- max_safe_debtu128
- borrow_precisionu128
- feeu64
- collateral_amountu64
- debtu128
- rateu64
- rate_mulu128
- rate_timeu64
- mintedu128
- redeemedu128
- is_killedbool
- bumpu8
- versionu8
- _padding[u8; 5]
- lp_vaultpubkey
- stable_vaultpubkey
- debt_rawu128
- max_deposit_divergence_bpsu16
- _reserved[u8; 46]
LiquidityValuesstruct
- admini128
- totalu128
- ideal_vault_valueu128
- vault_valueu128
LeveragedTranchestruct
- adminpubkey
- levamm_ammpubkey
- ammpubkey
- stable_mintpubkey
- asset_mintpubkey
- vaultpubkey
- tranche_share_mintpubkey
- liquidityLiquidityValues
- stablecoin_allocationu128
- last_vault_share_balanceu128
- bumpu8
- versionu8
- _padding[u8; 6]
- tranche_stable_vaultpubkey
- _reserved[u8; 160]
RateConfigstruct
- target_utilization_bpsu16
- curve_steepness_centibpsu16
- adjustment_speedu16
- _padding[u8; 2]
- min_rate_at_target_bpsu32
- max_rate_at_target_bpsu32
- initial_rate_at_target_bpsu32
- base_rate_bpsu32
WaterfallConfigstruct
- lenders_bpsu16
- insurance_bpsu16
- treasury_bpsu16
- _padding[u8; 2]
Lendingstruct
- protocolpubkey
- adminpubkey
- deposit_mintpubkey
- receipt_mintpubkey
- liquidity_vaultpubkey
- fee_vaultpubkey
- oraclepubkey
- mint_token_programpubkey
- supply_exchange_priceu128
- borrow_exchange_priceu128
- total_supply_rawu128
- total_borrow_rawu128
- accumulated_protocol_feesu128
- accumulated_insuranceu128
- rate_modelRateConfig
- waterfallWaterfallConfig
- supply_capu64
- borrow_capu64
- oracle_max_staleness_slotsu64
- min_initial_deposit_amountu64
- last_update_tsu64
- last_update_slotu64
- rate_at_target_bpsu32
- max_utilization_bpsu16
- oracle_slot_indexu16
- withdrawal_cap_amountu64
- withdrawal_cap_intervalu64
- last_withdrawal_cap_reset_tsu64
- current_withdrawal_amountu64
- pause_start_tsu64
- pause_expires_tsu64
- daily_pause_reset_tsu64
- last_admin_fee_claim_tsu64
- mint_decimalsu8
- statusu8
- current_stability_modeu8
- bumpu8
- versionu8
- rate_model_kindu8
- consecutive_pause_countu8
- daily_pause_countu8
- protocol_pausedbool
- borrow_disabledbool
- _padding[u8; 6]
- borrow_collateral_mintpubkey
- collateral_mintpubkey
- _reserved[u8; 344]
Borrowstruct
- ownerpubkey
- collateral_mintpubkey
- borrow_mintpubkey
- lendingpubkey
- price_oraclepubkey
- collateral_vaultpubkey
- borrow_vaultpubkey
- collateral_amountu64
- borrow_amountu64
- debt_rawu128
- leverageu128
- lev_ratiou128
- min_safe_debtu128
- max_safe_debtu128
- collateral_precisionu128
- borrow_precisionu128
- feeu64
- rateu64
- rate_mulu128
- rate_timeu64
- mintedu128
- redeemedu128
- price_oracle_slot_indexu16
- _oracle_padding[u8; 6]
- price_oracle_max_staleness_slotsu64
- is_killedbool
- collateral_decimalsu8
- borrow_decimalsu8
- bumpu8
- versionu8
- in_progressbool
- _padding[u8; 2]
- killed_at_tsu64
- _reserved[u8; 136]
LevammMarketstruct
- factorypubkey
- pool_idu16
- bumpu8
- _padding[u8; 5]
- ammpubkey
- asset_tokenpubkey
- stable_tokenpubkey
- levamm_ammpubkey
- tranchepubkey
- price_oraclepubkey
- lendingpubkey
- _reserved[u8; 160]
LevammOraclestruct
- marketpubkey
- ammpubkey
- aggregator_oraclepubkey
- aggregator_slot_indexu16
- bumpu8
- _padding[u8; 5]
- aggregator_max_staleness_slotsu64
- _reserved[u8; 64]
LevammFactorystruct
- adminpubkey
- emergency_adminpubkey
- fee_receiverpubkey
- stable_mintpubkey
- default_aggregator_oraclepubkey
- lendingpubkey
- min_admin_fee_bpsu16
- market_countu16
- bumpu8
- _padding[u8; 3]
- lending_tvl_capu128
- lending_total_requiredu128
- _reserved[u8; 352]
ProtocolStatestruct
- adminpubkey
- pending_adminpubkey
- treasurypubkey
- market_countu16
- bumpu8
- versionu8
- _padding[u8; 4]
- _reserved[u8; 256]
Errors 69
- 0Overflowarithmetic overflow
- 1DivisionByZerodivision by zero
- 2NotAdminsigner is not the admin
- 3InvalidMarketConfiginvalid market config
- 4ReservePausedreserve is paused
- 5ReserveReduceOnlyreserve is reduce-only
- 6InvalidReserveConfiginvalid reserve config
- 7InvalidRateModelinvalid rate model
- 8SupplyCapExceededsupply cap exceeded
- 9BorrowCapExceededborrow cap exceeded
- 10MaxUtilizationExceededmax utilization exceeded
- 11SeedBelowMinInitialDepositseed below min initial deposit
- 12RateOutOfBoundsrate out of bounds
- 13WaterfallNonLenderTooHighwaterfall non-lender share too high
- 14PauseDurationTooLongpause duration too long
- 15DailyPauseLimitExceededdaily pause limit exceeded
- 16ConsecutivePauseLimitExceededconsecutive pause limit exceeded
- 17InvalidStabilityModeTransitioninvalid stability mode transition
- 18ZeroAmountamount is zero
- 19InsufficientLiquidityinsufficient liquidity
- 20OracleStaleoracle price is stale
- 21OracleTooFreshoracle refreshed too recently
- 22InvalidOracleConfiginvalid oracle config
- 23OracleNotInitializedoracle not initialized
- 24InvalidTokenAccountinvalid token account
- 25InvalidMintinvalid mint
- 26StabilityModeDepositRestricteddeposits restricted by stability mode
- 27ProtocolPausedprotocol is paused
- 28WithdrawalCapExceededwithdrawal cap exceeded
- 29SeedDepositBelowMinimumseed deposit below minimum
- 30SlippageExceededslippage tolerance exceeded
- 31InvalidAmmConfiginvalid amm config
- 32LeverageNotL2leverage must be exactly 2x
- 33AmmPoolPausedamm pool is paused
- 34AmmZeroLiquidityamm has zero liquidity
- 35AmmTokenMismatchamm token mismatch
- 36AmmInsufficientLiquidityamm insufficient liquidity
- 37InvalidTimestampinvalid timestamp
- 38AmmKilledamm is killed
- 39UnsafeDebtposition outside safe debt envelope
- 40DebtTooHighdebt too high
- 41RemainderTooSmallremaining amount too small
- 42AccessDeniedaccess denied
- 43RateTooHighrate too high
- 44FeeTooHighfee too high
- 45AlreadySetvalue already set
- 46InsufficientStableBackinginsufficient stable backing
- 47StalePositionposition is stale
- 48BeyondLendingTvlCapbeyond lending tvl cap
- 49InvalidWaterfallConfiginvalid waterfall config
- 50BadPoolIdbad pool id
- 51UsedVaultsFullused vaults full
- 52PositionNotFoundposition not found
- 53BadFinalStatefinal state did not move toward safety
- 54AmountTooLargeamount too large
- 55EmptyAmmamm collateral is empty
- 56WithdrawNothingnothing to withdraw
- 57AdminFeeNegativeadmin fee is negative
- 58VirtualPriceDecreasedvirtual price decreased
- 59AdminFeeClaimTooSoonadmin fee claim too soon
- 60AdminClaimLpSupplyTooLowadmin claim lp supply too low
- 61AdminClaimWhileRampingadmin claim while ramping
- 62AdminClaimWouldDropVpadmin claim would drop virtual price
- 63MinAssetsFloorbelow minimum assets floor
- 64HardLiqNotPermittedhard liquidation not permitted
- 65BorrowAlreadyClosedborrow already closed
- 66Reentrancyreentrancy detected
- 67InvalidTokenPrograminvalid token program
- 68SpotOracleDivergencespot price diverges from oracle
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.
Tractioni
The recordi
| Event | When | Detail | Receipt |
|---|---|---|---|
| DEPLOY | 3d ago | slot 431,972,698 | poll…2698 |