@@ -38,7 +38,7 @@ type ConwayBlock struct {
38
38
cbor.DecodeStoreCbor
39
39
Header * ConwayBlockHeader
40
40
TransactionBodies []ConwayTransactionBody
41
- TransactionWitnessSets []BabbageTransactionWitnessSet
41
+ TransactionWitnessSets []ConwayTransactionWitnessSet
42
42
TransactionMetadataSet map [uint ]* cbor.LazyValue
43
43
InvalidTransactions []uint
44
44
}
@@ -119,6 +119,57 @@ func (h *ConwayBlockHeader) Era() Era {
119
119
return eras [EraIdConway ]
120
120
}
121
121
122
+ type ConwayRedeemerKey struct {
123
+ cbor.StructAsArray
124
+ Tag uint8
125
+ Index uint32
126
+ }
127
+
128
+ type ConwayRedeemerValue struct {
129
+ cbor.StructAsArray
130
+ Data cbor.RawMessage
131
+ ExUnits RedeemerExUnits
132
+ }
133
+
134
+ type ConwayRedeemers struct {
135
+ Redeemers map [ConwayRedeemerKey ]ConwayRedeemerValue
136
+ legacy bool
137
+ }
138
+
139
+ func (r * ConwayRedeemers ) UnmarshalCBOR (cborData []byte ) error {
140
+ // Try to parse as legacy redeemer first
141
+ var tmpRedeemers []AlonzoRedeemer
142
+ if _ , err := cbor .Decode (cborData , & tmpRedeemers ); err == nil {
143
+ // Copy data from legacy redeemer type
144
+ for _ , redeemer := range tmpRedeemers {
145
+ tmpKey := ConwayRedeemerKey {
146
+ Tag : redeemer .Tag ,
147
+ Index : redeemer .Index ,
148
+ }
149
+ tmpVal := ConwayRedeemerValue {
150
+ Data : redeemer .Data ,
151
+ ExUnits : redeemer .ExUnits ,
152
+ }
153
+ r .Redeemers [tmpKey ] = tmpVal
154
+ }
155
+ r .legacy = true
156
+ } else {
157
+ _ , err := cbor .Decode (cborData , & (r .Redeemers ))
158
+ return err
159
+ }
160
+ return nil
161
+ }
162
+
163
+ type ConwayTransactionWitnessSet struct {
164
+ BabbageTransactionWitnessSet
165
+ Redeemers ConwayRedeemers `cbor:"5,keyasint,omitempty"`
166
+ PlutusV3Scripts []cbor.RawMessage `cbor:"7,keyasint,omitempty"`
167
+ }
168
+
169
+ func (t * ConwayTransactionWitnessSet ) UnmarshalCBOR (cborData []byte ) error {
170
+ return t .UnmarshalCbor (cborData , t )
171
+ }
172
+
122
173
type ConwayTransactionBody struct {
123
174
BabbageTransactionBody
124
175
TxVotingProcedures VotingProcedures `cbor:"19,keyasint,omitempty"`
@@ -336,7 +387,7 @@ type ConwayTransaction struct {
336
387
cbor.StructAsArray
337
388
cbor.DecodeStoreCbor
338
389
Body ConwayTransactionBody
339
- WitnessSet BabbageTransactionWitnessSet
390
+ WitnessSet ConwayTransactionWitnessSet
340
391
IsTxValid bool
341
392
TxMetadata * cbor.LazyValue
342
393
}
0 commit comments