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 :
- les matrices Blocks/Economics du plan utilisaient des caractères
|à l'intérieur de cellules Markdown, notamment dans des unions telles queobject | null; certains renderers les interprètent comme des séparateurs de colonnes même lorsqu'ils sont placés dans du code inline ; - l'apparition de
commissionBpslié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 parKSP-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.1exposeUiConfirmedBlock.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 fixturespresent/omitted.
SIMD-0291 — Commission Rate in Basis Points
- statut actuel du document SIMD :
Review; - Agave stable
v4.2.1expose néanmoins déjà les champs RPC de compatibilité en basis points ; getVoteAccounts.inflationRewardsCommissionBpsest déjà implémenté et testé par la surface0.2.2: aucune remédiation des 37 wrappers acquis ;getBlock.rewards[].commissionBpsdoit être conservé dans un reward wire de bloc dédié ;getInflationReward[].commissionBpsdoit être conservé dans le DTO d'inflation reward ;commissionreste nullable etcommissionBpsreste optionnel/omis ; KSP ne dérive pas l'un depuis l'autre ;getTransaction.metade0.2.3est déjà lossless enserde_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
Activatedet de son lien avecnumRewardPartitions; - confirmation dans Agave
v4.2.1du champUiConfirmedBlock.num_reward_partitions; - confirmation dans Agave
v4.2.1deReward.commission_bpsetRpcInflationReward.commission_bps; - confirmation que
RpcVoteAccountInfo.inflation_rewards_commission_bpsest déjà couvert dans KSP0.2.2; - confirmation que
SolanaTransactionVersion::Number(u8)et les payloads transaction/meta lossless de0.2.3n'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
Acceptedet queloadedAccountsDataSizeest déjà couvert losslessly danssimulateTransaction; - confirmation que SIMD-0298 est encore
Idea, dépend du block footer de SIMD-0307 et ne justifie aucun champbankHashspéculatif dans la baseline actuelle ; - confirmation que SIMD-0307 est encore
Reviewet que ses champs footer sont absents des types stables Agavev4.2.1; - confirmation que SIMD-0490 est encore
Reviewet que le wrapper KSP ne doit pas figer une valeur de minimum delegation ; - confirmation que SIMD-0550 est encore
Reviewet déclare une évolution de valeurs inflation sans changement d'API ; - confirmation que SIMD-0553 est encore
Draftet 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.mdhistorique 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.