Files
khadhroony-solana-project/docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md
2026-08-25 17:50:08 +02:00

14 KiB

Validation 0.2.11 — Off-chain price transport SOL/USD

1. Objet

Cette matrice suit la release 0.2.11 — Off-chain price transport ouverte par pre.001.

Le contrat fonctionnel V1 est :

SOL/USD uniquement
plusieurs providers gratuits admis
HTTP REST reqwest uniquement
aucun SDK provider
provider/rate-limit/availability possédés par ksp-offchain-transport-lib
Config -> Off-chain Transport sans dépendance inverse
future ksp-app-solprices-desk purement HID et provider-agnostic

Les statuts PLANNED restent non validés tant que la tranche correspondante n'est pas exécutée.

2. Gate 0.2.11-pre.001

Critère Statut Preuve
archive stable v0.2.10 utilisée PASS archive Gitea fournie par l'opérateur
workspace.package.version = 0.2.10 à l'entrée PASS inspection Cargo.toml
deltas/0.2.10/rel.001.md présent PASS inspection archive
prompts/016-V0_2_11_START_PROMPT.md présent PASS inspection archive
.git absent de l'archive PASS inspection filesystem
ksp-offchain-transport-lib absent à l'entrée PASS inventaire workspace
primitives reqwest/serde/serde_json/tokio/http déjà présentes PASS inventaire [workspace.dependencies]
audit providers gratuit/live actuel PASS sources officielles CoinGecko, CMC, CoinPaprika, Kraken, Coinbase, Jupiter, Birdeye, DS
conditions d'usage gratuites distinguées du transport PASS plan 018, gratuité technique distincte de licence commerciale durable
SOL/USD retenu comme seule paire V1 PASS décision opérateur + plan 018
aucun SDK provider retenu PASS décision opérateur + plan 018
huit providers retenus pour implémentation PASS plan 018 section provider
DexScreener V1 limité à une paire SOL/USD configurée PASS décision opérateur + plan 018
future ksp-app-solprices-desk purement HID PASS décision opérateur + architecture
ownership rate limits/availability dans Off-chain Transport PASS décision opérateur + plan 018
threat model V1 établi PASS plan 018
forecast prereleases établi PASS plan 018
code runtime provider ajouté en pre.001 N/A interdit par le gate, aucune crate créée

3. Matrice provider prévue

Provider SOL/USD V1 Gratuit V1 Mode auth prévu Test déterministe Smoke live Statut courant
CoinGecko Oui Oui keyless ou Demo key PLANNED PLANNED AUDITED
CoinMarketCap Oui Oui keyless ou Basic key PLANNED PLANNED AUDITED
CoinPaprika Oui Oui aucune PLANNED PLANNED AUDITED
Kraken Oui Oui aucune PLANNED PLANNED AUDITED
Coinbase Exchange Oui Oui aucune PLANNED PLANNED AUDITED
Jupiter Price V3 Oui Oui keyless ou Free key PLANNED PLANNED AUDITED
Birdeye Oui Oui API key Standard PLANNED PLANNED AUDITED
DexScreener Oui Oui aucune PLANNED PLANNED AUDITED

AUDITED signifie uniquement que la documentation officielle actuelle satisfait le gate d'entrée. Ce statut ne vaut pas preuve d'un smoke réseau KSP.

Avant la stable, les conditions d'usage et la persistance des offres gratuites doivent être réauditées ; un provider peut rester techniquement supporté tout en nécessitant un plan différent pour certains usages.

4. Contrat public prévu

Invariant Statut
surface publique limitée à SOL/USD dans V1 PLANNED
identifiants provider opaques pour les consumers PLANNED
provenance provider toujours observable PLANNED
sémantique de prix observable sans prétendre à une équivalence PLANNED
timestamp requête/réception KSP présents PLANNED
timestamp provider optionnel seulement lorsqu'il est réellement fourni PLANNED
absence de prix distincte de zéro PLANNED
f64 non utilisé comme canon public PLANNED
aucune structure wire provider exportée PLANNED
aucune URL/header/asset id provider requis côté app PLANNED
registry provider et état runtime possédés par Off-chain Transport PLANNED
refresh provider par identifiant générique PLANNED
refresh multiple sans connaissance provider côté consumer PLANNED

5. Rate limiting et availability

Cas Statut
cadence locale fixe représentable PLANNED
burst documenté représentable PLANNED
limite dynamique keyless représentable PLANNED
429 classé PLANNED
Retry-After honoré lorsqu'exploitable PLANNED
cooldown expose prochain instant admissible PLANNED
refresh all ne lance que les providers éligibles PLANNED
provider en cooldown ne bloque pas les autres PLANNED
provider down ne rend pas le service global inutilisable PLANNED
auth manquante distinguée d'un transport down PLANNED
quota indisponible distingué d'un transport down PLANNED
quota mensuel local non présenté comme compteur authoritative PLANNED

6. Numeric safety

Cas Statut
décimal string valide PLANNED
JSON number valide sans passage canonique par f64 PLANNED
notation scientifique bornée PLANNED
coefficient/scale overflow rejeté PLANNED
valeur négative rejetée PLANNED
zéro rejeté pour une observation réussie PLANNED
NaN/Inf impossibles dans le type canonique PLANNED
serialization canonique sans perte PLANNED
round-trip public déterministe PLANNED

7. HTTP et sécurité

Invariant Statut
reqwest seul client provider PLANNED
aucun SDK provider PLANNED
endpoint provider officiel fixe en V1 PLANNED
redirects désactivés PLANNED
proxy implicite désactivé selon policy KSP PLANNED
connect timeout borné PLANNED
request timeout borné PLANNED
body réponse borné avant parsing PLANNED
URL retirée des erreurs reqwest PLANNED
réponse remote brute absente des KspError/logs PLANNED
API key absente de Debug/log/error PLANNED
401/403 classés auth/access PLANNED
429 classé rate limit PLANNED
5xx classé transient PLANNED
schema drift classé provider protocol PLANNED

8. DexScreener V1

Invariant Statut
pair address SOL/USD explicite dans settings PLANNED
chainId = solana vérifié PLANNED
identité SOL de la paire vérifiée PLANNED
priceUsd utilisé comme prix commun PLANNED
aucune recherche automatique de pool PLANNED
aucun tri automatique par liquidité PLANNED
aucune moyenne/consensus entre pools PLANNED

9. Config -> Off-chain Transport

Invariant Statut
Off-chain Transport ne dépend pas de Config PLANNED
document standard offchain dédié PLANNED
branches provider conditionnelles dans schema PLANNED
CoinGecko keyless/Demo représentés PLANNED
CoinMarketCap keyless/Basic représentés PLANNED
Jupiter keyless/Free représentés PLANNED
Birdeye exige credential lorsqu'activé PLANNED
DexScreener exige pair address lorsqu'activé PLANNED
providers sans auth n'exposent pas de faux champ API key PLANNED
secrets via Config uniquement PLANNED
.env.example synchronisé pour les secrets réellement ajoutés PLANNED
aucune cadence provider configurable au-dessus de la limite sûre PLANNED

10. Frontière future ksp-app-solprices-desk

Invariant Statut
nom de l'application fixé à ksp-app-solprices-desk DECIDED
rôle HID uniquement DECIDED
aucun enum/provider spécifique requis dans l'UI PLANNED
aucun endpoint/header/provider id propriétaire dans l'app PLANNED
table construite depuis l'inventaire générique Off-chain Transport PLANNED
refresh row appelle une opération générique PLANNED
refresh multiple appelle une opération générique PLANNED
cooldown/availability affichables depuis état générique PLANNED
aucune logique de rate limiting dans Tauri/frontend PLANNED

Cette section valide l'architecture préparée par 0.2.11; l'application elle-même reste hors scope et sera testée en 0.2.12.

11. Non-régression et gates finaux prévus

Gate Statut
cargo fmt --all PLANNED
audit Rust workspace PLANNED
audit Markdown tables PLANNED
cargo check --workspace PLANNED
cargo clippy --workspace --all-targets PLANNED
cargo test --workspace PLANNED
tests ksp-offchain-transport-lib PLANNED
tests Config PLANNED
cargo tree Off-chain Transport PLANNED
absence de dépendances provider SDK PLANNED
smokes keyless gratuits PLANNED
smokes keyed gratuits disponibles à l'opérateur PLANNED
réconciliation README/USAGE/plan/validation PLANNED

12. Hors scope validé

SOL/EUR et autres quotes
SPL token price générique
OHLCV/historique
streaming price
fallback automatique
consensus/moyenne/médiane
pool discovery DexScreener
Price Desk dans 0.2.11
Wallet Desk dans 0.2.11
Pyth V1
Binance SOL/USDT assimilé à SOL/USD