IntersectMBO / IntersectMBO/evolution-sdk

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

Abierto
#178 0 comentarios 1 reacción 0 asignados Ver en GitHub
bug
Lenguaje dominante
TypeScript
Estrellas
22
Forks
30
Merge medio
5 h 29 min
PR fusionados (30 d)
12

Descripción

## 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`

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.