Files
khadhroony-solana-project/deltas/0.2.4/pre.001-fix.001.md

11 KiB

Delta 0.2.4-pre.001-fix.001 — audit SIMD Transport et correction des matrices du plan

Base requise

Ce fix s'applique après :

0.2.4-pre.001
workspace.package.version = "0.2.4-pre.1"

Le delta historique deltas/0.2.4/pre.001.md reste inchangé.

Motif du fix

Deux corrections documentaires sont nécessaires avant pre.002 :

  1. les matrices Blocks/Economics du plan utilisaient des caractères | à l'intérieur de cellules Markdown, notamment dans des unions telles que object | null; certains renderers les interprètent comme des séparateurs de colonnes même lorsqu'ils sont placés dans du code inline ;
  2. l'apparition de commissionBps liée à SIMD-0291 impose de vérifier systématiquement si d'autres SIMDs actuels ou proches de la baseline stable affectent la surface HTTP couverte par KSP-TRANSPORT-007.

Ce fix ne modifie aucun wrapper ni source Rust. Il complète le plan avant l'implémentation afin que les modifications nécessaires soient réalisées dans les prereleases fonctionnelles prévues.

Audit SIMD KSP-TRANSPORT-007

Le critère retenu est le wire réellement supporté par la baseline Solana/Agave stable, pas le seul statut administratif d'un SIMD. Un SIMD encore en Review peut donc être pertinent si Agave stable expose déjà un champ de compatibilité ; inversement, un champ proposé mais absent d'Agave stable n'est pas inventé par KSP.

SIMD à prendre en compte dans 0.2.4

SIMD-0118 — Partitioned Epoch Rewards Distribution

  • statut actuel : Activated ;
  • impact HTTP direct : getBlock.numRewardPartitions ;
  • Agave v4.2.1 expose UiConfirmedBlock.num_reward_partitions: Option<u64> ;
  • le futur DTO bloc KSP doit préserver la présence/omission du champ, sans synthétiser 0 ;
  • le plan retient SolanaWireField<u64> ou une représentation wire équivalente et des fixtures present/omitted.

SIMD-0291 — Commission Rate in Basis Points

  • statut actuel du document SIMD : Review ;
  • Agave stable v4.2.1 expose néanmoins déjà les champs RPC de compatibilité en basis points ;
  • getVoteAccounts.inflationRewardsCommissionBps est déjà implémenté et testé par la surface 0.2.2 : aucune remédiation des 37 wrappers acquis ;
  • getBlock.rewards[].commissionBps doit être conservé dans un reward wire de bloc dédié ;
  • getInflationReward[].commissionBps doit être conservé dans le DTO d'inflation reward ;
  • commission reste nullable et commissionBps reste optionnel/omis ; KSP ne dérive pas l'un depuis l'autre ;
  • getTransaction.meta de 0.2.3 est déjà lossless en serde_json::Value, donc les rewards imbriqués ne perdent pas cette extension.

SIMDs déjà couverts ou sans nouveau wire immédiat

SIMD-0185 — Vote Account v4 est Accepted. Les évolutions des account parsers restent compatibles avec SolanaParsedAccountData.parsed: serde_json::Value. Le DTO stable RpcVoteAccountInfo d'Agave v4.2.1 n'expose pas les collector fields de Vote Account v4 ; KSP ne les ajoute pas spéculativement à SolanaVoteAccountInfo.

SIMD-0186 — Loaded Transaction Data Size Specification est Accepted. simulateTransaction.loadedAccountsDataSize est déjà préservé dans 0.2.3 via SolanaWireField<u32> avec couverture de l'omission. Transport restitue cette valeur runtime et ne la recalcule pas.

SIMD-0385 — Transaction V1 Format est en Review. Le contrat KSP actuel est déjà future-compatible parce que SolanaTransactionVersion::Number(u8) n'est pas limité à la version 0 et les payloads JSON restent lossless. Le plan ajoute toutefois une canary avec une version numérique non nulle et impose la même propriété au wire getBlock.

SIMD-0096 — Reward full priority fee to validator est Activated, mais modifie la distribution économique sans modifier la forme HTTP consommée par Transport. Aucun calcul de distribution ne doit être réimplémenté côté KSP.

SIMD-0550 — Double Disinflation Rate est en Review et annonce explicitement une évolution des valeurs retournées par getInflationRate et getInflationGovernor sans changement d'API. Les DTOs KSP restent des valeurs runtime et Transport ne réimplémente aucune formule d'inflation.

Watchlist obligatoire

SIMD-0180 — Vote Account Address Keyed Leader Schedule est en Review. Il demande que les endpoints RPC existants de leader schedule continuent à retourner l'identité validator pour compatibilité et prévoit de nouveaux endpoints vote-account-keyed. Le wrapper getLeaderSchedule existant ne change donc pas ; le réaudit final de l'inventaire doit en revanche détecter si de nouveaux endpoints sont devenus officiels.

SIMD-0307 — Add Block Footer est en Review et propose une option footer ainsi que de nouveaux champs dans getBlock. SIMD-0298 — Add bank_hash to block footer est encore au statut Idea et prévoit d'étendre ce footer avec bank_hash. Ces éléments sont absents de la baseline stable Agave v4.2.1. Ils ne sont donc pas ajoutés maintenant, mais le plan impose un réaudit conjoint avant getBlock et à la compliance finale. S'ils deviennent stables pendant 0.2.4, KSP-TRANSPORT-007 imposera config, wire et fixtures pour la totalité des champs livrés.

SIMD-0490 — Upgrade BPF Stake Program to v5.0.0 est en Review et prévoit une évolution du minimum de délégation. getStakeMinimumDelegation doit restituer la valeur runtime contextualisée sans coder en dur 1 lamport, 1 SOL ou une autre valeur. Réaudit prévu avant la tranche Economics concernée et à la clôture.

SIMD-0553 — Base Inclusion and Resource-based Fee est en Draft. Il modifie la sémantique des totals de fee pour getFeeForMessage, simulateTransaction et getTransaction.meta.fee mais n'impose actuellement pas de nouveau JSON wire. Les wrappers acquis restent pass-through/lossless ; la compliance finale réaudite ce point si le schéma stable évolue.

SIMD-0123 — Block Revenue Sharing reste en Review. Il peut modifier à terme la provenance/sémantique des rewards sans ajouter aujourd'hui un champ HTTP stable dans v4.2.1. KSP ne crée donc aucune taxonomie économique spéculative dans le reward wire.

Modifications désormais prévues par le plan

Les prereleases fonctionnelles devront notamment prévoir :

getBlock
  confirmed block dédié
  numRewardPartitions préservé via SolanaWireField<u64> ou équivalent (SIMD-0118)
  reward de bloc dédié
  commission nullable
  commissionBps optionnel/omis (SIMD-0291)
  transaction version Number(u8) non limitée à 0 (canary SIMD-0385)
  réaudit conjoint SIMD-0298/0307 avant implémentation finale du contrat

getInflationReward
  reward d'inflation distinct du reward de bloc
  commission nullable
  commissionBps optionnel/omis (SIMD-0291)

getStakeMinimumDelegation
  valeur runtime contextualisée
  aucun minimum local codé en dur
  réaudit SIMD-0490

compliance pre.009
  réaudit SIMD HTTP au minimum 0180 / 0298 / 0307 / 0385 / 0490 / 0550 / 0553
  réaudit de l'inventaire officiel pour détecter de nouveaux endpoints
  vérification qu'aucune évolution devenue stable pendant la session n'est omise

Aucune nouvelle dépendance n'est requise par ces décisions.

Correction des matrices Markdown

Les deux matrices du plan ont été réécrites avec les mêmes quatre largeurs de colonnes afin d'être alignées dans la source Markdown.

Les unions textuelles qui contenaient un pipe interne ont été remplacées par ou, notamment :

object ou null
array<u64> ou null
i64 ou null
commission: u8 ou null

Le contrôle statique du fichier exige désormais exactement cinq caractères | par ligne de tableau : un délimiteur initial, trois séparateurs de colonnes et un délimiteur final. Il n'existe plus de pipe de données à l'intérieur d'une cellule.

Version Cargo

Ce fix est exclusivement documentaire. Conformément à la règle de versioning des fixes documentaires, le signal technique reste :

workspace.package.version = "0.2.4-pre.1"

Aucune modification de Cargo.toml n'est effectuée.

Fichier modifié

docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md

Le header documentaire du plan passe de version: 1 à version: 2.

Fichier ajouté

deltas/0.2.4/pre.001-fix.001.md

Fichiers volontairement inchangés

Cargo.toml
CHANGELOG.md
ROADMAP.md
deltas/0.2.4/pre.001.md
crates/ksp-onchain-transport-lib/src/**
crates/ksp-onchain-transport-lib/unit_tests/**
crates/ksp-onchain-transport-lib/tests/**

Les structures/fonctions Rust requises par l'audit sont planifiées pour les tranches fonctionnelles de 0.2.4; elles ne sont pas introduites artificiellement dans ce fix documentaire d'ouverture.

Validations exécutées

  • réaudit primaire du repository SIMD courant et de la baseline Agave stable v4.2.1 ;
  • confirmation de SIMD-0118 Activated et de son lien avec numRewardPartitions ;
  • confirmation dans Agave v4.2.1 du champ UiConfirmedBlock.num_reward_partitions ;
  • confirmation dans Agave v4.2.1 de Reward.commission_bps et RpcInflationReward.commission_bps ;
  • confirmation que RpcVoteAccountInfo.inflation_rewards_commission_bps est déjà couvert dans KSP 0.2.2 ;
  • confirmation que SolanaTransactionVersion::Number(u8) et les payloads transaction/meta lossless de 0.2.3 n'imposent pas de remédiation SIMD-0385 ;
  • confirmation que SIMD-0180 est encore Review, que les RPC leader schedule existants doivent conserver l'identité validator, et que les futurs endpoints vote-account-keyed relèvent d'une évolution d'inventaire ;
  • confirmation que SIMD-0186 est Accepted et que loadedAccountsDataSize est déjà couvert losslessly dans simulateTransaction ;
  • confirmation que SIMD-0298 est encore Idea, dépend du block footer de SIMD-0307 et ne justifie aucun champ bankHash spéculatif dans la baseline actuelle ;
  • confirmation que SIMD-0307 est encore Review et que ses champs footer sont absents des types stables Agave v4.2.1 ;
  • confirmation que SIMD-0490 est encore Review et que le wrapper KSP ne doit pas figer une valeur de minimum delegation ;
  • confirmation que SIMD-0550 est encore Review et déclare une évolution de valeurs inflation sans changement d'API ;
  • confirmation que SIMD-0553 est encore Draft et n'impose pas actuellement de nouvelle forme JSON ;
  • contrôle des deux matrices : quatre colonnes et exactement cinq délimiteurs | par ligne ;
  • contrôle que le delta pre.001.md historique reste inchangé.

Validations Cargo

Aucune source Rust, configuration runtime, dépendance ou version Cargo n'est modifiée par ce fix. Les validations Cargo de pre.001 restent celles à effectuer par l'opérateur avant commit ; ce fix n'en revendique aucune nouvelle.

Commit attendu

Après application et validation documentaire :

v0.2.4-pre.001-fix.001

Suite

0.2.4-pre.002 peut démarrer les primitives/configs/results communs en intégrant dès leur conception les exigences SIMD-0118 et SIMD-0291 fixées ci-dessus, avec les watchpoints SIMD explicitement reportés aux tranches concernées.