Redeemers: toScriptDataHash ignores the codec options when encoding datums
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
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- blockchain
Piste de recherche
Commencez dans packages/evolution/src/Redeemers.ts, en vous concentrant sur encodeDatumsTaggedSet et les deux branches de toScriptDataHash. Ajoutez une couverture de régression pour les options canoniques avec et sans redeemers, ainsi que pour le contrôle des options par défaut ; les tests sont terminés lorsque le hash canonique correspond au node oracle et que le hash par défaut existant reste inchangé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
Redeemers.toScriptDataHash(redeemers, costModels, datums, options) applies options to the redeemers but always encodes the datums with CML_DATA_DEFAULT_OPTIONS. Asked for a canonical hash, it returns the hash over indefinite-length datums:
const d = Data.fromCBORHex("d8799f019f02ffff")
Data.toCBORHex(d, CBOR.CANONICAL_OPTIONS) // d87982018102, the bytes in the witness set
Redeemers.toScriptDataHash(empty, costModels, [d], CBOR.CANONICAL_OPTIONS)
// 80dbaeaf…, the hash over d8799f019f02ffff; expected ac4817df…
The ledger hashes the datums exactly as they appear in the witness set: cardano-ledger Alonzo/Tx.hs L318-321 builds the script integrity bytes from originalBytes of the redeemers and datums. A transaction whose witness set carries canonical datums therefore needs the hash over canonical datums.
Affected
packages/evolution/src/Redeemers.ts
encodeDatumsTaggedSet(L548-555) defaults toCML_DATA_DEFAULT_OPTIONStoScriptDataHashcalls it withoutoptionsin both branches: datums with no redeemers (L600) and redeemers with datums (L612)
The builder is not affected today: it computes the hash with default options and does not add witness datums.
Fix
Pass the caller's options through to encodeDatumsTaggedSet when the caller gives them. When options is left at its default, keep encoding datums with CML_DATA_DEFAULT_OPTIONS, so today's default hashes do not change.
Regression test
Oracle is the node.
- given: datum
d8799f019f02ffff, no redeemers,CANONICAL_OPTIONS - before fix:
80dbaeaf… - after fix:
ac4817df…, blake2b-256 ofa0 d9010281 d87982018102 a0 - same check for the branch with redeemers and datums
- control: with default options the hash is unchanged
Devnet, raw submission through Ogmios. The witness set carries d87982018102, and the output holds its datum hash:
- script data hash from
toScriptDataHash(..., CANONICAL_OPTIONS): rejected with 3113, provided80dbaeaf…, computedac4817df… - script data hash
ac4817df…: accepted
Must FAIL on main today and PASS after the fix.
- Langage dominant
- TypeScript
- Étoiles
- 22
- Forks
- 31
- Merge moyen
- 4 j 6 h
- PR mergées (30 j)
- 27
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
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
lichess-org/api#678 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
PostHog/posthog.com#20628 ·
Les mainteneurs répondent en général sous 1 jour
-
bug status:Needs Triage
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
jupyterlab/jupyterlab#19964 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
agentscope-ai/QwenPaw#8064 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area: notebooks-jupyter bug theme: new notebook frontend
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
posit-dev/positron#16347 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour