IntersectMBO / IntersectMBO/evolution-sdk
bug: maxRefScriptSizePerTx limit is 200,000 bytes instead of 204,800
- 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