v0.2.3-pre.002
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan `0.2.3` — HTTP Transactions
|
||||
|
||||
@@ -314,13 +314,18 @@ Cette API legacy doit être nommée/annotée de manière à ne pas sembler être
|
||||
Le résultat confirmé garde un top-level typé :
|
||||
|
||||
```text
|
||||
slot u64
|
||||
blockTime Option<i64>
|
||||
transaction EncodedTransaction
|
||||
meta Option<transaction-meta wire>
|
||||
version legacy | number
|
||||
slot u64
|
||||
blockTime Option<i64>
|
||||
transaction EncodedTransaction
|
||||
meta absent | null | transaction-meta wire
|
||||
version absent | null | legacy | number
|
||||
transactionIndex absent | null | u32
|
||||
```
|
||||
|
||||
Le recoupement d'implémentation `pre.002` avec `transaction-status-client-types` Agave `v4.2.1` a confirmé que
|
||||
`EncodedConfirmedTransactionWithStatusMeta` expose également `transactionIndex: Option<u32>` au top-level de `getTransaction`. Cette extension
|
||||
optionnelle est donc préservée comme celle de `getSignaturesForAddress`, sans être rendue obligatoire pour les providers plus anciens.
|
||||
|
||||
`EncodedTransaction` doit préserver les différentes formes réellement sérialisées :
|
||||
|
||||
```text
|
||||
@@ -335,6 +340,10 @@ sont riches, évolutives ou dépendantes de `jsonParsed` peuvent rester lossless
|
||||
Le meta doit au minimum respecter la distinction **absent/null/présent** imposée par le wire et ne jamais inventer des listes ou zéros lorsque le
|
||||
provider omet une donnée optionnelle.
|
||||
|
||||
`pre.002` matérialise cette distinction avec une primitive générique `SolanaWireField<T>` limitée au wire Transport : `Omitted`, `Null`, `Value(T)`.
|
||||
Elle est utilisée pour les champs Transaction/Simulation où l'omission et `null` doivent rester distinguables ; elle ne transforme pas ce mécanisme
|
||||
en modèle métier et ne remplace pas `Option<T>` lorsque les deux états ont le même sens contractuel.
|
||||
|
||||
### `getRecentPrioritizationFees`
|
||||
|
||||
Le paramètre optionnel est un tableau d'adresses. La documentation actuelle fixe un maximum de **128** et précise que, lorsqu'il est fourni, les
|
||||
@@ -634,3 +643,18 @@ Aucune commande n'est déclarée réussie sans exécution réelle ou preuve opé
|
||||
- découpage `pre.002`–`pre.008` défini.
|
||||
|
||||
La tranche suivante peut commencer par les primitives wire communes sans réouvrir le scope de release.
|
||||
|
||||
## Résultat de `pre.002`
|
||||
|
||||
`pre.002` installe les primitives/configurations/résultats partagés sans déclarer un wrapper Transaction comme terminé :
|
||||
|
||||
- encodings Transaction séparés entre entrées binaires `base58/base64` et surface `getTransaction` incluant les formes JSON/legacy ;
|
||||
- configs modernes de `getTransaction`, pagination signatures, statuses, airdrop, send et simulation ;
|
||||
- DTOs `latestBlockhash`, prioritization fee, signature info/status, transaction encodée/versionnée et résultat de simulation ;
|
||||
- primitive `SolanaWireField<T>` pour préserver explicitement `omitted/null/value` ;
|
||||
- `transactionIndex` préservé sur `getSignaturesForAddress` et sur le top-level `getTransaction` courant ;
|
||||
- transaction/meta/return data/inner instructions/token balances riches conservés losslessly aux frontières prévues sans décodage Program ;
|
||||
- fixtures communes déterministes pour les variantes legacy/binary/JSON, version/meta/index et simulation riche ;
|
||||
- aucune nouvelle dépendance Cargo et aucun wrapper `0.2.3` activé prématurément.
|
||||
|
||||
La tranche suivante reste `pre.003` : `getFeeForMessage`, `getLatestBlockhash`, `getTransactionCount` et `isBlockhashValid`.
|
||||
|
||||
Reference in New Issue
Block a user