IntersectMBO / IntersectMBO/evolution-sdk
bug: maxRefScriptSizePerTx limit is 200,000 bytes instead of 204,800
- 主要言語
- TypeScript
- スター
- 22
- フォーク
- 30
- 平均マージ
- 5時間 29分
- マージ済み PR(30日)
- 12
説明
## 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`
コントリビューションガイド
評価
この issue はまだ評価されていません。