Skip to content

Commit 9f19260

Browse files
authored
refactor: remove embedding in TX witness set types (#981)
Signed-off-by: Aurora Gaffney <[email protected]>
1 parent bf2a529 commit 9f19260

File tree

5 files changed

+112
-34
lines changed

5 files changed

+112
-34
lines changed

ledger/alonzo/alonzo.go

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -381,20 +381,45 @@ func (r AlonzoRedeemers) Value(
381381
}
382382

383383
type AlonzoTransactionWitnessSet struct {
384-
shelley.ShelleyTransactionWitnessSet
385-
WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"`
386-
WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"`
387-
WsRedeemers AlonzoRedeemers `cbor:"5,keyasint,omitempty"`
384+
cbor.DecodeStoreCbor
385+
VkeyWitnesses []common.VkeyWitness `cbor:"0,keyasint,omitempty"`
386+
WsNativeScripts []common.NativeScript `cbor:"1,keyasint,omitempty"`
387+
BootstrapWitnesses []common.BootstrapWitness `cbor:"2,keyasint,omitempty"`
388+
WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"`
389+
WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"`
390+
WsRedeemers AlonzoRedeemers `cbor:"5,keyasint,omitempty"`
388391
}
389392

390393
func (w *AlonzoTransactionWitnessSet) UnmarshalCBOR(cborData []byte) error {
391394
return w.UnmarshalCbor(cborData, w)
392395
}
393396

397+
func (w AlonzoTransactionWitnessSet) Vkey() []common.VkeyWitness {
398+
return w.VkeyWitnesses
399+
}
400+
401+
func (w AlonzoTransactionWitnessSet) Bootstrap() []common.BootstrapWitness {
402+
return w.BootstrapWitnesses
403+
}
404+
405+
func (w AlonzoTransactionWitnessSet) NativeScripts() []common.NativeScript {
406+
return w.WsNativeScripts
407+
}
408+
394409
func (w AlonzoTransactionWitnessSet) PlutusV1Scripts() [][]byte {
395410
return w.WsPlutusV1Scripts
396411
}
397412

413+
func (w AlonzoTransactionWitnessSet) PlutusV2Scripts() [][]byte {
414+
// No plutus v2 scripts in Alonzo
415+
return nil
416+
}
417+
418+
func (w AlonzoTransactionWitnessSet) PlutusV3Scripts() [][]byte {
419+
// No plutus v3 scripts in Alonzo
420+
return nil
421+
}
422+
398423
func (w AlonzoTransactionWitnessSet) PlutusData() []cbor.Value {
399424
return w.WsPlutusData
400425
}

ledger/babbage/babbage.go

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,18 +526,53 @@ func (o BabbageTransactionOutput) Utxorpc() *utxorpc.TxOutput {
526526
}
527527

528528
type BabbageTransactionWitnessSet struct {
529-
alonzo.AlonzoTransactionWitnessSet
530-
WsPlutusV2Scripts [][]byte `cbor:"6,keyasint,omitempty"`
529+
cbor.DecodeStoreCbor
530+
VkeyWitnesses []common.VkeyWitness `cbor:"0,keyasint,omitempty"`
531+
WsNativeScripts []common.NativeScript `cbor:"1,keyasint,omitempty"`
532+
BootstrapWitnesses []common.BootstrapWitness `cbor:"2,keyasint,omitempty"`
533+
WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"`
534+
WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"`
535+
WsRedeemers alonzo.AlonzoRedeemers `cbor:"5,keyasint,omitempty"`
536+
WsPlutusV2Scripts [][]byte `cbor:"6,keyasint,omitempty"`
531537
}
532538

533539
func (w *BabbageTransactionWitnessSet) UnmarshalCBOR(cborData []byte) error {
534540
return w.UnmarshalCbor(cborData, w)
535541
}
536542

543+
func (w BabbageTransactionWitnessSet) Vkey() []common.VkeyWitness {
544+
return w.VkeyWitnesses
545+
}
546+
547+
func (w BabbageTransactionWitnessSet) Bootstrap() []common.BootstrapWitness {
548+
return w.BootstrapWitnesses
549+
}
550+
551+
func (w BabbageTransactionWitnessSet) NativeScripts() []common.NativeScript {
552+
return w.WsNativeScripts
553+
}
554+
555+
func (w BabbageTransactionWitnessSet) PlutusV1Scripts() [][]byte {
556+
return w.WsPlutusV1Scripts
557+
}
558+
537559
func (w BabbageTransactionWitnessSet) PlutusV2Scripts() [][]byte {
538560
return w.WsPlutusV2Scripts
539561
}
540562

563+
func (w BabbageTransactionWitnessSet) PlutusV3Scripts() [][]byte {
564+
// No plutus v3 scripts in Babbage
565+
return nil
566+
}
567+
568+
func (w BabbageTransactionWitnessSet) PlutusData() []cbor.Value {
569+
return w.WsPlutusData
570+
}
571+
572+
func (w BabbageTransactionWitnessSet) Redeemers() common.TransactionWitnessRedeemers {
573+
return w.WsRedeemers
574+
}
575+
541576
type BabbageTransaction struct {
542577
cbor.StructAsArray
543578
cbor.DecodeStoreCbor

ledger/babbage/babbage_test.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ package babbage
1717
import (
1818
"testing"
1919

20-
"github.com/blinklabs-io/gouroboros/ledger/alonzo"
2120
"github.com/blinklabs-io/gouroboros/ledger/common"
2221
"github.com/blinklabs-io/gouroboros/ledger/mary"
23-
"github.com/blinklabs-io/gouroboros/ledger/shelley"
2422
"github.com/stretchr/testify/assert"
2523
)
2624

@@ -45,14 +43,10 @@ func TestBabbageBlockTransactions(t *testing.T) {
4543
TxTotalCollateral: 1 << i,
4644
}
4745
b.TransactionWitnessSets[i] = BabbageTransactionWitnessSet{
48-
AlonzoTransactionWitnessSet: alonzo.AlonzoTransactionWitnessSet{
49-
ShelleyTransactionWitnessSet: shelley.ShelleyTransactionWitnessSet{
50-
VkeyWitnesses: []common.VkeyWitness{
51-
{
52-
Vkey: append(make([]byte, 31), 1<<i)[:],
53-
Signature: append(make([]byte, 63), 1<<i)[:],
54-
},
55-
},
46+
VkeyWitnesses: []common.VkeyWitness{
47+
{
48+
Vkey: append(make([]byte, 31), 1<<i)[:],
49+
Signature: append(make([]byte, 63), 1<<i)[:],
5650
},
5751
},
5852
}

ledger/babbage/rules_test.go

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -968,11 +968,9 @@ func TestUtxoValidateInsufficientCollateral(t *testing.T) {
968968
TxFee: testFee,
969969
},
970970
WitnessSet: babbage.BabbageTransactionWitnessSet{
971-
AlonzoTransactionWitnessSet: alonzo.AlonzoTransactionWitnessSet{
972-
WsRedeemers: []alonzo.AlonzoRedeemer{
973-
// Placeholder entry
974-
{},
975-
},
971+
WsRedeemers: []alonzo.AlonzoRedeemer{
972+
// Placeholder entry
973+
{},
976974
},
977975
},
978976
}
@@ -1058,11 +1056,9 @@ func TestUtxoValidateCollateralContainsNonAda(t *testing.T) {
10581056
TxTotalCollateral: testCollateralAmount,
10591057
},
10601058
WitnessSet: babbage.BabbageTransactionWitnessSet{
1061-
AlonzoTransactionWitnessSet: alonzo.AlonzoTransactionWitnessSet{
1062-
WsRedeemers: []alonzo.AlonzoRedeemer{
1063-
// Placeholder entry
1064-
{},
1065-
},
1059+
WsRedeemers: []alonzo.AlonzoRedeemer{
1060+
// Placeholder entry
1061+
{},
10661062
},
10671063
},
10681064
}
@@ -1224,11 +1220,9 @@ func TestUtxoValidateNoCollateralInputs(t *testing.T) {
12241220
testTx := &babbage.BabbageTransaction{
12251221
Body: babbage.BabbageTransactionBody{},
12261222
WitnessSet: babbage.BabbageTransactionWitnessSet{
1227-
AlonzoTransactionWitnessSet: alonzo.AlonzoTransactionWitnessSet{
1228-
WsRedeemers: []alonzo.AlonzoRedeemer{
1229-
// Placeholder entry
1230-
{},
1231-
},
1223+
WsRedeemers: []alonzo.AlonzoRedeemer{
1224+
// Placeholder entry
1225+
{},
12321226
},
12331227
},
12341228
}

ledger/conway/conway.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,19 +210,49 @@ func (r ConwayRedeemers) Value(
210210
}
211211

212212
type ConwayTransactionWitnessSet struct {
213-
babbage.BabbageTransactionWitnessSet
214-
WsRedeemers ConwayRedeemers `cbor:"5,keyasint,omitempty"`
215-
WsPlutusV3Scripts [][]byte `cbor:"7,keyasint,omitempty"`
213+
cbor.DecodeStoreCbor
214+
VkeyWitnesses []common.VkeyWitness `cbor:"0,keyasint,omitempty"`
215+
WsNativeScripts []common.NativeScript `cbor:"1,keyasint,omitempty"`
216+
BootstrapWitnesses []common.BootstrapWitness `cbor:"2,keyasint,omitempty"`
217+
WsPlutusV1Scripts [][]byte `cbor:"3,keyasint,omitempty"`
218+
WsPlutusData []cbor.Value `cbor:"4,keyasint,omitempty"`
219+
WsRedeemers ConwayRedeemers `cbor:"5,keyasint,omitempty"`
220+
WsPlutusV2Scripts [][]byte `cbor:"6,keyasint,omitempty"`
221+
WsPlutusV3Scripts [][]byte `cbor:"7,keyasint,omitempty"`
216222
}
217223

218224
func (w *ConwayTransactionWitnessSet) UnmarshalCBOR(cborData []byte) error {
219225
return w.UnmarshalCbor(cborData, w)
220226
}
221227

228+
func (w ConwayTransactionWitnessSet) Vkey() []common.VkeyWitness {
229+
return w.VkeyWitnesses
230+
}
231+
232+
func (w ConwayTransactionWitnessSet) Bootstrap() []common.BootstrapWitness {
233+
return w.BootstrapWitnesses
234+
}
235+
236+
func (w ConwayTransactionWitnessSet) NativeScripts() []common.NativeScript {
237+
return w.WsNativeScripts
238+
}
239+
240+
func (w ConwayTransactionWitnessSet) PlutusV1Scripts() [][]byte {
241+
return w.WsPlutusV1Scripts
242+
}
243+
244+
func (w ConwayTransactionWitnessSet) PlutusV2Scripts() [][]byte {
245+
return w.WsPlutusV2Scripts
246+
}
247+
222248
func (w ConwayTransactionWitnessSet) PlutusV3Scripts() [][]byte {
223249
return w.WsPlutusV3Scripts
224250
}
225251

252+
func (w ConwayTransactionWitnessSet) PlutusData() []cbor.Value {
253+
return w.WsPlutusData
254+
}
255+
226256
func (w ConwayTransactionWitnessSet) Redeemers() common.TransactionWitnessRedeemers {
227257
return w.WsRedeemers
228258
}

0 commit comments

Comments
 (0)