From 6e72fca1de9223caf6201d19640546d0d9b39ada Mon Sep 17 00:00:00 2001 From: Ales Verbic Date: Fri, 12 Sep 2025 17:21:59 -0400 Subject: [PATCH] fix: prevent nil panic when Redeemers() returns nil Signed-off-by: Ales Verbic --- ledger/common/script/context.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ledger/common/script/context.go b/ledger/common/script/context.go index 4e0fbdfd..356e3852 100644 --- a/ledger/common/script/context.go +++ b/ledger/common/script/context.go @@ -310,6 +310,9 @@ func collapseOutputs(outputs []lcommon.Utxo) []lcommon.TransactionOutput { func sortedRedeemerKeys( redeemers lcommon.TransactionWitnessRedeemers, ) []lcommon.RedeemerKey { + if redeemers == nil { + return []lcommon.RedeemerKey{} + } tags := []lcommon.RedeemerTag{ lcommon.RedeemerTagSpend, lcommon.RedeemerTagMint, @@ -411,9 +414,12 @@ func redeemersInfo( witnessSet lcommon.TransactionWitnessSet, toScriptPurpose toScriptPurposeFunc, ) KeyValuePairs[ScriptPurpose, Redeemer] { - var ret KeyValuePairs[ScriptPurpose, Redeemer] redeemers := witnessSet.Redeemers() + if redeemers == nil { + return KeyValuePairs[ScriptPurpose, Redeemer]{} + } redeemerKeys := sortedRedeemerKeys(redeemers) + ret := make(KeyValuePairs[ScriptPurpose, Redeemer], 0, len(redeemerKeys)) for _, key := range redeemerKeys { redeemerValue := redeemers.Value(uint(key.Index), key.Tag) purpose := toScriptPurpose(key)