IntersectMBO / IntersectMBO/evolution-sdk

bug: maxRefScriptSizePerTx limit is 200,000 bytes instead of 204,800

Ouverte
#178 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
bug
Langage dominant
TypeScript
Étoiles
22
Forks
30
Merge moyen
5 h 29 min
PR mergées (30 j)
12

Description

## Summary

`calculateReferenceScriptFee` in `TxBuilderImpl.ts` rejects transactions whose total reference script size exceeds 200,000 bytes. The correct Conway-era hard cap is **204,800 bytes** (200 × 1024 = 200 KiB).

Transactions with total reference script sizes between **200,001 and 204,800 bytes** are incorrectly rejected by the SDK but would be accepted by the node.

## Root Cause

```ts
// current (wrong)
if (totalScriptSize > 200_000) {
```

The Cardano Conway ledger hardcodes the limit as `200 * 1024`:

```haskell
ppMaxRefScriptSizePerTxG = L.to . const $ 200 * 1024 -- 204,800 bytes
```

Source: `ConwayEraPParams` instance in [`eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs`](https://github.com/IntersectMBO/cardano-ledger/blob/master/eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs). Documented in [ADR-009](https://github.com/IntersectMBO/cardano-ledger/blob/master/docs/adr/2024-08-14_009-refscripts-fee-change.md).

Note: these become proper protocol parameters in Dijkstra era (`ppMaxRefScriptSizePerTxL`).

## Fix

```ts
if (totalScriptSize > 204_800) {
// maxRefScriptSizePerTx: 200 * 1024 = 204,800 bytes (200 KiB)
// Hardcoded in Conway era, becomes a protocol parameter in Dijkstra era.
```

## Affected File

`packages/evolution/src/sdk/builders/TxBuilderImpl.ts` — `calculateReferenceScriptFee`

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Open packages/evolution/src/sdk/builders/TxBuilderImpl.ts and inspect calculateReferenceScriptFee and its current 200,000-byte comparison. Change the Conway-era cap to 204,800 bytes (200 KiB), then verify that totals through 204,800 bytes are accepted while larger totals are rejected.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
blockchain
Type d'issue
Bug
Difficulté
1/5
Temps estimé
Moins d'une heure
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
58/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.