From e43b8f9d4449d39795ccc0577216f34684999e3f Mon Sep 17 00:00:00 2001 From: Aurora Gaffney Date: Sun, 13 Apr 2025 22:03:43 -0400 Subject: [PATCH] refactor: remove embedding in TX witness set types Signed-off-by: Aurora Gaffney --- ledger/alonzo/alonzo.go | 33 ++++++++++++++++++++++++---- ledger/babbage/babbage.go | 39 ++++++++++++++++++++++++++++++++-- ledger/babbage/babbage_test.go | 14 ++++-------- ledger/babbage/rules_test.go | 24 ++++++++------------- ledger/conway/conway.go | 36 ++++++++++++++++++++++++++++--- 5 files changed, 112 insertions(+), 34 deletions(-) diff --git a/ledger/alonzo/alonzo.go b/ledger/alonzo/alonzo.go index ea1ca6ae..91cd1b07 100644 --- a/ledger/alonzo/alonzo.go +++ b/ledger/alonzo/alonzo.go @@ -381,20 +381,45 @@ func (r AlonzoRedeemers) Value( } type AlonzoTransactionWitnessSet struct { - shelley.ShelleyTransactionWitnessSet - WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"` - WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"` - WsRedeemers AlonzoRedeemers `cbor:"5,keyasint,omitempty"` + cbor.DecodeStoreCbor + VkeyWitnesses []common.VkeyWitness `cbor:"0,keyasint,omitempty"` + WsNativeScripts []common.NativeScript `cbor:"1,keyasint,omitempty"` + BootstrapWitnesses []common.BootstrapWitness `cbor:"2,keyasint,omitempty"` + WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"` + WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"` + WsRedeemers AlonzoRedeemers `cbor:"5,keyasint,omitempty"` } func (w *AlonzoTransactionWitnessSet) UnmarshalCBOR(cborData []byte) error { return w.UnmarshalCbor(cborData, w) } +func (w AlonzoTransactionWitnessSet) Vkey() []common.VkeyWitness { + return w.VkeyWitnesses +} + +func (w AlonzoTransactionWitnessSet) Bootstrap() []common.BootstrapWitness { + return w.BootstrapWitnesses +} + +func (w AlonzoTransactionWitnessSet) NativeScripts() []common.NativeScript { + return w.WsNativeScripts +} + func (w AlonzoTransactionWitnessSet) PlutusV1Scripts() [][]byte { return w.WsPlutusV1Scripts } +func (w AlonzoTransactionWitnessSet) PlutusV2Scripts() [][]byte { + // No plutus v2 scripts in Alonzo + return nil +} + +func (w AlonzoTransactionWitnessSet) PlutusV3Scripts() [][]byte { + // No plutus v3 scripts in Alonzo + return nil +} + func (w AlonzoTransactionWitnessSet) PlutusData() []cbor.Value { return w.WsPlutusData } diff --git a/ledger/babbage/babbage.go b/ledger/babbage/babbage.go index 6035c1bf..7ec876ea 100644 --- a/ledger/babbage/babbage.go +++ b/ledger/babbage/babbage.go @@ -526,18 +526,53 @@ func (o BabbageTransactionOutput) Utxorpc() *utxorpc.TxOutput { } type BabbageTransactionWitnessSet struct { - alonzo.AlonzoTransactionWitnessSet - WsPlutusV2Scripts [][]byte `cbor:"6,keyasint,omitempty"` + cbor.DecodeStoreCbor + VkeyWitnesses []common.VkeyWitness `cbor:"0,keyasint,omitempty"` + WsNativeScripts []common.NativeScript `cbor:"1,keyasint,omitempty"` + BootstrapWitnesses []common.BootstrapWitness `cbor:"2,keyasint,omitempty"` + WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"` + WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"` + WsRedeemers alonzo.AlonzoRedeemers `cbor:"5,keyasint,omitempty"` + WsPlutusV2Scripts [][]byte `cbor:"6,keyasint,omitempty"` } func (w *BabbageTransactionWitnessSet) UnmarshalCBOR(cborData []byte) error { return w.UnmarshalCbor(cborData, w) } +func (w BabbageTransactionWitnessSet) Vkey() []common.VkeyWitness { + return w.VkeyWitnesses +} + +func (w BabbageTransactionWitnessSet) Bootstrap() []common.BootstrapWitness { + return w.BootstrapWitnesses +} + +func (w BabbageTransactionWitnessSet) NativeScripts() []common.NativeScript { + return w.WsNativeScripts +} + +func (w BabbageTransactionWitnessSet) PlutusV1Scripts() [][]byte { + return w.WsPlutusV1Scripts +} + func (w BabbageTransactionWitnessSet) PlutusV2Scripts() [][]byte { return w.WsPlutusV2Scripts } +func (w BabbageTransactionWitnessSet) PlutusV3Scripts() [][]byte { + // No plutus v3 scripts in Babbage + return nil +} + +func (w BabbageTransactionWitnessSet) PlutusData() []cbor.Value { + return w.WsPlutusData +} + +func (w BabbageTransactionWitnessSet) Redeemers() common.TransactionWitnessRedeemers { + return w.WsRedeemers +} + type BabbageTransaction struct { cbor.StructAsArray cbor.DecodeStoreCbor diff --git a/ledger/babbage/babbage_test.go b/ledger/babbage/babbage_test.go index d59d3d7d..29d992a4 100644 --- a/ledger/babbage/babbage_test.go +++ b/ledger/babbage/babbage_test.go @@ -17,10 +17,8 @@ package babbage import ( "testing" - "github.com/blinklabs-io/gouroboros/ledger/alonzo" "github.com/blinklabs-io/gouroboros/ledger/common" "github.com/blinklabs-io/gouroboros/ledger/mary" - "github.com/blinklabs-io/gouroboros/ledger/shelley" "github.com/stretchr/testify/assert" ) @@ -45,14 +43,10 @@ func TestBabbageBlockTransactions(t *testing.T) { TxTotalCollateral: 1 << i, } b.TransactionWitnessSets[i] = BabbageTransactionWitnessSet{ - AlonzoTransactionWitnessSet: alonzo.AlonzoTransactionWitnessSet{ - ShelleyTransactionWitnessSet: shelley.ShelleyTransactionWitnessSet{ - VkeyWitnesses: []common.VkeyWitness{ - { - Vkey: append(make([]byte, 31), 1<