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-idlslistings, includingraydium_launchpad.jsonand separateraydium_pool_v4.jsonas 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_IDadded as the canonical public constant.- Upstream generated registry rows normalized from
raydium_launchlabtoraydium_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_onlyuntil corpus promotion. - SQL validation file added for the
0.7.50tranche.
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
4as candidate pool account and indexes9/10as 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:
k_sol_dex_event_coverage_entriesshould contain the Launchpad program entry and discriminator entries.- Mapped entries should have
local_event_kind = raydium_launchpad.<entry_name>and initialproof_status = upstream_git_mapped_unverifieduntil observed. - Locally observed instructions should increment
k_sol_instruction_observationsfordecoder_code = raydium_launchpad. upstream_git.instruction_matchfallback rows forupstreamDecoderCode = raydium_launchpadshould be zero for locally covered instruction discriminators.raydium_launchpad.*rows must not produce trades/candles unless a later corpus-backed patch explicitly promotes a specific event.- 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:
- copy a small batch of recent non-failed signatures;
- backfill through Demo2 textarea batch;
- replay with
forceDexDecode=yesanddeferInstructionObservations=yes; - run the validation SQL;
- 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_v4as a DEX/surface; - keep
0.7.53 raydium_pool_v4 audit / program-id decisionconditional; - 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_matchforraydium_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
unknownfamily remains; only the syntheticprogramrow may have an empty family. trade_event: 260 decoded, 250 successful materialized trades; 10 failed transactions intentionally not materialized.buy_exact_*/sell_exact_*: materialized ask_sol_launch_eventsswap-instruction breadcrumbs, not as trades.cpi_event: kept ascpi_transport/ decoded-only; embedded events are decoded by direct event discriminator.- Successful
trade_eventrows without materializedk_sol_trade_events: zero.
Post-closure recheck assets added:
validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_50_PRE_R2.sqlvalidation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_50_PRE_R2.sqldocs/SOLSCAN_ACCOUNT_SOURCE_MATRIX.mdkb_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