4.4 KiB
Prompt de reprise — khadhroony-bobobot 0.7.47-1FE5
Reprise du projet khadhroony-bobobot.
Archive de départ
Utiliser comme base de travail :
kb_lib-v0.7.47-1FE5-full.zip
Joindre aussi les docs mises à jour :
README.md
ROADMAP.md
CHANGELOG.md
DEX_DECODER_MATRIX.md
Décision de planification
Ne plus tenter “tous les events de tous les decoders” dans une seule session. L’objectif reste de couvrir tous les decoders disponibles dans Carbon et les sources Git/IDL, mais par tranches DEX/version.
Ordre cible :
raydium_cpmm
raydium_clmm
pump_swap
pump_fun
meteora_dbc
meteora_dlmm
meteora_damm_v1
meteora_damm_v2
phoenix_v1
openbook_v2
orca_whirlpools
launch surfaces
DEX historiques / candidats
Sources upstream obligatoires
Ces sources sont des indices de décodage, pas des preuves de validation locale :
https://github.com/sevenlabs-hq/carbon/tree/main/decoders
https://github.com/0xfnzero/solana-streamer
https://github.com/0xfnzero/sol-parser-sdk/tree/main/idl
https://github.com/pinax-network/substreams-solana-idls/tree/main/src
https://github.com/hodlwarden/solana-tx-parser/tree/main/src
https://github.com/openbook-dex/openbook-v2
https://github.com/all-in-one-blockchain/phoenix-onchain-mm
https://docs.vybenetwork.com/docs/available-dexs-amms
État validé
Dernier état validé côté kb_lib :
cargo test -p kb_lib
371 passed
Clippy doit être relancé à chaque tranche :
cargo clippy -p kb_lib --all-targets -- -D warnings
0.7.47 acquis
- Upstream Git Registry ajouté.
- Demo3 étendu : multi-target, multi-source, pagination, orderbook targets, burn/mint/transfer/wrap/unwrap/stake.
- Demo2 backfill signature fonctionnel.
- Replay local avec ledger.
- OpenBook v2 decoder audit-only.
- Phoenix v1 decoder audit-only.
- Les decoders audit-only ne produisent aucun trade/candle.
OpenBook v2
Program id :
opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb
État :
audit-only local decoder
upstream_git fallback cleaned
Program data mapped:
- FillLog
- OpenOrdersPositionLog
- TotalOrderFillEvent
- SettleFundsLog
trade_count = 0
Ne pas activer de trade/candle tant que maker/taker/base/quote et les lots ne sont pas validés.
Phoenix v1
Program id :
PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY
État :
audit-only local decoder
log instruction strict 0x0f
events observed:
- Reduce
- Place
- TimeInForce
currentInstructionTag mappings:
- 0x09 CancelUpToWithFreeFunds
- 0x0c WithdrawFunds
- 0x10 PlaceMultiplePostOnlyOrders
trade_count = 0
Prochaine action préférée : finir Phoenix v1 avec tous les events disponibles dans les sources Git/IDL, mais rester audit-only jusqu’à validation économique.
Contraintes
- Rust 2024.
- Pas de
mod.rs. - Fichiers Rust avec entête
// file: .... - Exposition centralisée via
lib.rs. #![deny(unreachable_pub)],#![warn(missing_docs)].- Pas de
anyhow. - Pas de
thiserror. - Pas de
?,unwrap,expectdans le code applicatif. - Utiliser
match,if let Err,let Err = ... else. - Si une requête DB est ajoutée/modifiée, mettre à jour
kb_lib/src/db.rs, puiskb_lib/src/lib.rssi nécessaire.
Méthode par DEX/version
Pour chaque DEX/version :
- inspecter Carbon + autres sources Git/IDL ;
- lister tous les discriminants instructions/events ;
- compléter
upstream_registry/ matrice si nécessaire ; - utiliser Demo3 pour corpus ;
- backfill Demo2 ;
- replay forcé ;
- valider SQL ;
- ajouter decoder audit-only ou materialized selon preuve ;
- supprimer les doublons
upstream_git.instruction_matchsi decoder spécialisé ; - ne jamais produire trade/candle sans montants exploitables et sens économique validé.
Requêtes de sécurité audit-only
SELECT
de.protocol_name,
de.event_kind,
COUNT(te.id) AS trade_count
FROM k_sol_dex_decoded_events de
LEFT JOIN k_sol_trade_events te
ON te.decoded_event_id = de.id
WHERE de.protocol_name IN ('openbook_v2', 'phoenix_v1')
GROUP BY de.protocol_name, de.event_kind
ORDER BY trade_count DESC;
Attendu :
trade_count = 0
Livrable attendu
Pour chaque tranche :
- fichiers ajoutés/modifiés seulement ;
- archive zip ;
- commandes de test ;
- requêtes SQL ;
- notes sur ce qui reste non vérifié ;
- ne pas prétendre qu’un event ou program id est vérifié sans corpus local.