Data: constructors with an index above 127 write the tag 102 pair with the wrong header
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- blockchain, typescript
- Domaine
- backend
Piste de recherche
Localisez l'encodeur de données Plutus (Constr) dans le SDK TypeScript et les options de data preset introduites dans #598, puis trouvez où la paire tag-102 [index, fields] est encodée. Selon encodeData dans PlutusCore/Data.hs, la paire doit être un tableau défini de 2 éléments, tandis que seuls les champs utilisent les options de liste. Ajoutez des tests de régression vérifiant les octets de nœud d866 82 1880 9f01ff / d866 82 1903e8 9f01ff et leurs hachages blake2b-256 pour Constr 128 [1] et Constr 1000 [1], ainsi qu'une vérification que les constructeurs 0-127 sont inchangés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
For a constructor index above 127, Plutus data is written as tag 102 wrapping a pair [index, fields]. The node writes that pair as a definite 2-element array and the fields as a list. The SDK writes the pair with the list options, so every data preset that uses indefinite lists gets the wrong header, and no preset produces the node's bytes. The datum hash differs from cardano-cli and from what a validator computes with serialise_data.
| Value | Node (cardano-cli 10.5.1, Aiken v1.1.24) | SDK default and CML_DATA_DEFAULT_OPTIONS |
CARDANO_NODE_DATA_OPTIONS |
|---|---|---|---|
Constr 128 [1] |
d866 82 1880 9f01ff, hash fd05a09e… |
d866 9f 1880 9f01ff ff, hash e964637c… |
d866 82 1880 8101, hash 1bd42101… |
Constr 1000 [1] |
d866 82 1903e8 9f01ff, hash ba07c752… |
d866 9f 1903e8 9f01ff ff, hash 1f014ffb… |
d866 82 1903e8 8101, hash c8b3c9a8… |
The node hashes come from cardano-cli conway transaction hash-script-data; Aiken's serialiseData returns the same bytes, and their blake2b-256 equals those hashes.
Haskell source: PlutusCore/Data.hs encodeData writes CBOR.encodeTag 102 <> CBOR.encodeListLen 2 <> tagEncoding <> encode ds. The pair is always definite; only the fields follow the list encoding.
Affected
The Plutus data encoder for constructors with an index above 127 (tag 102), under every data preset.
Fix
Always write the tag 102 pair as a definite 2-element array, and write the fields with the list options. Decoding already accepts both forms; keep that.
Regression test
Constr 128 [1]andConstr 1000 [1]with the node-layout preset from #598 give the node bytes above, and their blake2b-256 equals the cardano-cli hashes.- An Aiken validator that compares
blake2b_256(serialise_data(datum))with its redeemer accepts the SDK hash. - Constructors 0 to 127 are unchanged.
Must FAIL on main today and PASS after the fix.
- Langage dominant
- TypeScript
- Étoiles
- 22
- Forks
- 33
- Merge moyen
- 2 j 7 h
- PR mergées (30 j)
- 39
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de IntersectMBO/evolution-sdk
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
IntersectMBO/evolution-sdk#559 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
IntersectMBO/evolution-sdk#557 ·
Les mainteneurs répondent en général sous 1 jour
-
dependencies good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 93/100
IntersectMBO/evolution-sdk#541 ·
Les mainteneurs répondent en général sous 1 jour
-
bug external-review
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
IntersectMBO/evolution-sdk#530 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
IntersectMBO/evolution-sdk#518 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de IntersectMBO/evolution-sdk
Issues similaires
-
bug(sight): the dashboard's text truncations split surrogate pairs and show broken charactersOuvertecomponent:sight
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
agentic-os-org/ANOLISA#6738 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug Durable Agents Observability (AI Telemetry) status: needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
mastra-ai/mastra#26470 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
paperclipai/paperclip#15630 ·
Les mainteneurs répondent en général sous 1 jour
-
[good first issue, hacktoberfest] ⛩️ Add new Theme: Sakura Latte (good-first-issue)Peut-être pris @PGrayCS l’a pris aujourd’hui. Ouvertecommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
lingdojo/kana-dojo#31937 · 1 commentaire · 5 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
feature/cohorts feature/feature-flags team/feature-flags
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour