Files
khadhroony-bobobot/docs/reports/RAYDIUM_LAUNCHPAD_EVENT_COVERAGE_REPORT.md
2026-06-15 20:16:27 +02:00

15 KiB

Raydium Launchpad event coverage report — 0.7.50

Scope

0.7.50 opens the raydium_launchpad tranche after the functional closure of 0.7.49 raydium_clmm.

Local canonical decoder/surface code:

raydium_launchpad

Canonical program id:

LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj

The legacy local name raydium_launchlab is not kept in the public Rust API. Coverage rows, upstream registry rows, launch origin entries, and support matrix rows use raydium_launchpad.

Sources used

Primary source hints for this tranche:

  • Carbon decoder registry/source: sevenlabs-hq/carbon/decoders/raydium-launchpad-decoder.
  • Solscan Program IDL/account page: https://solscan.io/account/LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj#programIdl.
  • fnzero IDL sources: sol-parser-sdk / solana-program-idls listings, including raydium_launchpad.json and separate raydium_pool_v4.json as an audit-only source.
  • Raydium SDK Launchpad examples for account-shape hints only.

These sources are not treated as final business proof. Promotion still requires local corpus observation and SQL validation.

Bootstrap implementation delta

Implemented in this delta:

  • RAYDIUM_LAUNCHPAD_PROGRAM_ID added as the canonical public constant.
  • Upstream generated registry rows normalized from raydium_launchlab to raydium_launchpad.
  • Built-in launch surface code normalized to raydium_launchpad.
  • DEX support/catalog entries normalized to raydium_launchpad.
  • Raydium instruction audit fallback now recognizes Launchpad program id.
  • Launchpad mapped instruction fallback added for locally listed Launchpad discriminators.
  • Coverage target override keeps Launchpad rows decoded_events_only until corpus promotion.
  • SQL validation file added for the 0.7.50 tranche.

Listed Launchpad entries

The local upstream registry now lists one program entry plus the following 26 discriminator entries.

Entry kind Entry name Discriminator Initial family Initial DB target
instruction buy_exact_in faea0d7bd59c13ec swap decoded_events_only
instruction buy_exact_out 18d3742869039938 swap decoded_events_only
instruction claim_creator_fee 1a618acb84ab8dfc fee decoded_events_only
instruction claim_platform_fee 9c27d0874ced3d48 fee decoded_events_only
instruction claim_platform_fee_from_vault 75f1c6a8f8da501d fee decoded_events_only
event claim_vested_event 15c2725778d3e220 fee/vesting audit decoded_events_only
instruction claim_vested_token 3121681ebd9d4f23 fee/vesting audit decoded_events_only
instruction collect_fee 3cadf767045d8230 fee decoded_events_only
instruction collect_migrate_fee ffba96dfeb76c9ba fee/migration audit decoded_events_only
instruction create_config c9cff3724b6f2fbd admin_config decoded_events_only
instruction create_platform_config b05ac4affd71dc14 admin_config decoded_events_only
instruction create_vesting_account 81b2020dd9ace6da account_create/vesting audit decoded_events_only
event create_vesting_event 96980bb334d2bf7d account_create/vesting audit decoded_events_only
instruction initialize afaf6d1f0d989bed pool_create/launch decoded_events_only
instruction initialize_v2 4399af27da102620 pool_create/launch decoded_events_only
instruction initialize_with_token_2022 25be7ede2c9aab11 pool_create/launch decoded_events_only
instruction migrate_to_amm cf52c091fecf91df migration decoded_events_only
instruction migrate_to_cpswap 885cc8671cda908c migration decoded_events_only
event pool_create_event 97d7e20976a173ae pool_create decoded_events_only
instruction remove_platform_curve_param 1b1e3ea95de01891 admin_config decoded_events_only
instruction sell_exact_in 9527de9bd37c981a swap decoded_events_only
instruction sell_exact_out 5fc8472208090ba6 swap decoded_events_only
event trade_event bddb7fd34ee661ee swap decoded_events_only
instruction update_config 1d9efcbf0a53db63 admin_config decoded_events_only
instruction update_platform_config c33c4c81922d438f admin_config decoded_events_only
instruction update_platform_curve_param 8a908afadc800439 admin_config decoded_events_only

Notes:

  • The buy/sell instruction account hints currently use account index 4 as candidate pool account and indexes 9/10 as candidate token mints, based on Carbon/Raydium Launchpad account shape hints. This is an audit helper, not a materialization proof.
  • Fee/admin/migration/vesting entries intentionally do not infer pool/token accounts until corpus confirms the account semantics.
  • Program-data transport is represented by cpi_event; embedded events are decoded by their own discriminators and materialized only when their event family has a validated target.

Family audit matrix

Family Launchpad status in 0.7.50 final Decision
swap trade_event materialized as trades/candles; buy/sell instructions materialized as launch breadcrumbs. No duplicate trades from instruction breadcrumbs.
pool_create initialize, initialize_v2, initialize_with_token_2022, pool_create_event. Pool lifecycle/catalogue materialized when transaction succeeded.
add_liquidity No direct Launchpad entry confirmed. Non-applicable unless local corpus proves direct Launchpad liquidity instruction.
remove_liquidity No direct Launchpad liquidity remove entry confirmed. Non-applicable unless local corpus proves direct Launchpad liquidity instruction.
position_open No direct Launchpad position instruction confirmed. Non-applicable.
position_close No direct Launchpad position instruction confirmed. Non-applicable.
fee claim/collect fee entries listed. Fee table materialization enabled for observed successful transactions.
reward No direct reward instruction confirmed. Non-applicable unless local corpus proves otherwise.
admin/config create/update config and platform curve/config entries listed. Pool admin materialization enabled for observed successful transactions.
mint Token minting may appear as SPL Token/Token-2022 side effect. Not raydium_launchpad.* without direct program proof.
burn Token burn may appear as SPL Token/Token-2022 side effect. Not raydium_launchpad.* without direct program proof.
transfer Transfers are expected as SPL Token/Token-2022 side effects. Not raydium_launchpad.* without direct program proof.
account_create / vesting create_vesting_account, create_platform_vesting_account, vesting events. Launch event materialization enabled for observed successful transactions; unobserved events remain mapped.
account_close No direct Launchpad account close confirmed. Non-applicable.
wrap_sol No direct Launchpad wrap SOL confirmed. Side effect only unless corpus proves direct instruction.
unwrap_sol No direct Launchpad unwrap SOL confirmed. Side effect only unless corpus proves direct instruction.
order_place No orderbook surface confirmed. Non-applicable.
order_cancel No orderbook surface confirmed. Non-applicable.
order_fill No orderbook surface confirmed. Non-applicable.
consume_events No orderbook surface confirmed. Non-applicable.
settle_funds No orderbook surface confirmed. Non-applicable.
vault_deposit No direct vault deposit confirmed. Non-applicable.
vault_withdraw No direct vault withdraw confirmed. Non-applicable.
lock No direct lock confirmed. Non-applicable.
unlock No direct unlock confirmed. Non-applicable.
launch initialize/pool_create path listed. Decode/audit only.
migration migrate_to_amm, migrate_to_cpswap, collect_migrate_fee listed. Decode/audit only. Destination DEX materialization must be proven locally.
stake No direct stake confirmed. Non-applicable.
unstake No direct unstake confirmed. Non-applicable.
unknown/unmapped audit raydium_launchpad.instruction_audit retained for unmatched program instructions. Must trend toward zero for locally covered discriminators after backfill/replay.

SQL validation expectations

After targeted backfill and replay:

  1. k_sol_dex_event_coverage_entries should contain the Launchpad program entry and discriminator entries.
  2. Mapped entries should have local_event_kind = raydium_launchpad.<entry_name> and initial proof_status = upstream_git_mapped_unverified until observed.
  3. Locally observed instructions should increment k_sol_instruction_observations for decoder_code = raydium_launchpad.
  4. upstream_git.instruction_match fallback rows for upstreamDecoderCode = raydium_launchpad should be zero for locally covered instruction discriminators.
  5. raydium_launchpad.* rows must not produce trades/candles unless a later corpus-backed patch explicitly promotes a specific event.
  6. Failed transactions may be decoded/audited, but must not be materialized in trade/candle tables.

Validation file:

validation_sql/SQL_VALIDATION_RAYDIUM_LAUNCHPAD_0_7_50.sql

Suggested targeted Solscan discovery loop

For each discriminator:

https://solscan.io/account/LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj?instruction=<DISCRIMINATOR>&hide_spam=true&hide_failed=true&show_related=false&sort=desc

Then:

  1. copy a small batch of recent non-failed signatures;
  2. backfill through Demo2 textarea batch;
  3. replay with forceDexDecode=yes and deferInstructionObservations=yes;
  4. run the validation SQL;
  5. promote only entries whose local payload and account semantics are proven.

raydium_pool_v4.json audit status

The current workspace archive does not contain a local raydium_pool_v4.json copy. External fnzero IDL listings expose a separate raydium_pool_v4.json beside raydium_launchpad.json, but this delta does not confirm its program id or business role.

Decision for 0.7.50:

  • do not promote raydium_pool_v4 as a DEX/surface;
  • keep 0.7.53 raydium_pool_v4 audit / program-id decision conditional;
  • require program id confirmation and local corpus before any roadmap promotion.

Current limitations

This delta was prepared from the provided archive only. No live RPC backfill, fresh SQLite replay, cargo fmt, cargo test, or cargo clippy could be executed in the current environment because the Rust toolchain is unavailable here. The SQL and code paths are prepared for local validation in the normal project environment.

Local corpus snapshot from first 0.7.50 backfill

Observed after targeted Demo2 backfills and pool backfill on a fresh 0.7.50 DB:

  • coverage listed entries: 27;
  • decoded/local mapped entries: 26;
  • observed entries: 21;
  • materialized entries: 0;
  • total observed coverage count: 672;
  • total materialized count: 0;
  • trade count: 0;
  • residual upstream_git.instruction_match for raydium_launchpad: 0;
  • residual raydium_launchpad.instruction_audit: 287;
  • residual audit discriminators: e445a52e51cb9a1d (276), 9247ad4562130f6a (10), a25b92c75d85eaed (1).

The e445a52e51cb9a1d selector is handled as Anchor self-CPI event transport. It is not promoted as a Raydium Launchpad business instruction. The two low-count residual discriminators remain local-corpus audit-only until an IDL/upstream mapping is confirmed.

pre3 correction — Demo3 preset and Launchpad pool catalog

The first replay after pre2 confirmed that Anchor self-CPI selector e445a52e51cb9a1d carries Launchpad trade_event (bddb7fd34ee661ee) and pool_create_event (97d7e20976a173ae). pre3 therefore decodes those two self-CPI event rows as direct raydium_launchpad.* events instead of leaving them under raydium_launchpad.instruction_audit. trade_event remains audit/decoded-only and is still not promoted to k_sol_trade_events or candles.

pre3 also fixes the Launchpad initialize, initialize_v2 and initialize_with_token_2022 account mapping using the Carbon account shape: pool_state index 5, base_mint index 6 and quote_mint index 7. These initialize rows are now routed to business-level pool detection as raydium_launchpad bonding-curve pools with pending status, which should allow pool 6HLQPoLrzX6LqePRiXQ1GGs2Dd9K3dp9VhTSHBugYzzZ to appear in the local catalog after a forced replay when its initialize transaction is present locally.

Demo3 now exposes a Raydium Launchpad preset with program id LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.

Final 0.7.50 closure snapshot

Validated closure state reported by local replay:

  • cargo test -p kb_lib: 404 passed, 0 failed.
  • Local replay: 437 replayed, 437 ledger upserts, 30 unsafe ledger rows, 256 trades, 115 lifecycle rows, 1024 candle upserts, 6205 instruction observations.
  • Launchpad catalogue: 58 tokens, 58 pools, 58 pairs after replay.
  • Coverage normalization: no ambiguous unknown family remains; only the synthetic program row may have an empty family.
  • trade_event: 260 decoded, 250 successful materialized trades; 10 failed transactions intentionally not materialized.
  • buy_exact_* / sell_exact_*: materialized as k_sol_launch_events swap-instruction breadcrumbs, not as trades.
  • cpi_event: kept as cpi_transport / decoded-only; embedded events are decoded by direct event discriminator.
  • Successful trade_event rows without materialized k_sol_trade_events: zero.

Post-closure recheck assets added:

  • validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_50_PRE_R2.sql
  • validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_50_PRE_R2.sql
  • docs/SOLSCAN_ACCOUNT_SOURCE_MATRIX.md
  • kb_lib::SOLSCAN_ACCOUNT_SOURCES

Final cleanup note — CPMM residual audit after 0.7.50 recheck

During the 0.7.50 post-Launchpad recheck, the CPMM residual audit query still showed three raydium_cpmm.instruction_audit rows for discriminator 40f4bc78a7e9690a even though the same discriminator is now locally mapped as raydium_cpmm.anchor_idl_instruction.

The final cleanup patch makes the deletion FK-safe by unlinking k_sol_instruction_observations.decoded_event_id before deleting the legacy audit rows. It also repeats the CPMM cleanup after coverage refresh and refreshes coverage again if rows were removed.

Expected final state after replay:

raydium_cpmm.instruction_audit / 40f4bc78a7e9690a = 0
raydium_cpmm decoded events without coverage row = 0
raydium_cpmm.anchor_idl_instruction remains decoded-only / idl_management

Validation SQL:

validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_AUDIT_CLEANUP_0_7_50_FINAL.sql