192 lines
4.4 KiB
Markdown
192 lines
4.4 KiB
Markdown
# Prompt de reprise — khadhroony-bobobot `0.7.47-1FE5`
|
||
|
||
Reprise du projet `khadhroony-bobobot`.
|
||
|
||
## Archive de départ
|
||
|
||
Utiliser comme base de travail :
|
||
|
||
```text
|
||
kb_lib-v0.7.47-1FE5-full.zip
|
||
```
|
||
|
||
Joindre aussi les docs mises à jour :
|
||
|
||
```text
|
||
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 :
|
||
|
||
```text
|
||
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 :
|
||
|
||
```text
|
||
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` :
|
||
|
||
```text
|
||
cargo test -p kb_lib
|
||
371 passed
|
||
```
|
||
|
||
Clippy doit être relancé à chaque tranche :
|
||
|
||
```bash
|
||
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 :
|
||
|
||
```text
|
||
opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb
|
||
```
|
||
|
||
État :
|
||
|
||
```text
|
||
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 :
|
||
|
||
```text
|
||
PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY
|
||
```
|
||
|
||
État :
|
||
|
||
```text
|
||
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`, `expect` dans 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`, puis `kb_lib/src/lib.rs` si nécessaire.
|
||
|
||
## Méthode par DEX/version
|
||
|
||
Pour chaque DEX/version :
|
||
|
||
1. inspecter Carbon + autres sources Git/IDL ;
|
||
2. lister tous les discriminants instructions/events ;
|
||
3. compléter `upstream_registry` / matrice si nécessaire ;
|
||
4. utiliser Demo3 pour corpus ;
|
||
5. backfill Demo2 ;
|
||
6. replay forcé ;
|
||
7. valider SQL ;
|
||
8. ajouter decoder audit-only ou materialized selon preuve ;
|
||
9. supprimer les doublons `upstream_git.instruction_match` si decoder spécialisé ;
|
||
10. ne jamais produire trade/candle sans montants exploitables et sens économique validé.
|
||
|
||
## Requêtes de sécurité audit-only
|
||
|
||
```sql
|
||
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 :
|
||
|
||
```text
|
||
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.
|