@@ -167,27 +167,14 @@ type ConwayRedeemerValue struct {
167
167
}
168
168
169
169
type ConwayRedeemers struct {
170
- Redeemers map [ConwayRedeemerKey ]ConwayRedeemerValue
171
- legacy bool
170
+ Redeemers map [ConwayRedeemerKey ]ConwayRedeemerValue
171
+ legacyRedeemers alonzo.AlonzoRedeemers
172
+ legacy bool
172
173
}
173
174
174
175
func (r * ConwayRedeemers ) UnmarshalCBOR (cborData []byte ) error {
175
176
// Try to parse as legacy redeemer first
176
- var tmpRedeemers []alonzo.AlonzoRedeemer
177
- if _ , err := cbor .Decode (cborData , & tmpRedeemers ); err == nil {
178
- // Copy data from legacy redeemer type
179
- r .Redeemers = make (map [ConwayRedeemerKey ]ConwayRedeemerValue )
180
- for _ , redeemer := range tmpRedeemers {
181
- tmpKey := ConwayRedeemerKey {
182
- Tag : redeemer .Tag ,
183
- Index : redeemer .Index ,
184
- }
185
- tmpVal := ConwayRedeemerValue {
186
- Data : redeemer .Data ,
187
- ExUnits : redeemer .ExUnits ,
188
- }
189
- r .Redeemers [tmpKey ] = tmpVal
190
- }
177
+ if _ , err := cbor .Decode (cborData , & (r .legacyRedeemers )); err == nil {
191
178
r .legacy = true
192
179
} else {
193
180
_ , err := cbor .Decode (cborData , & (r .Redeemers ))
@@ -197,6 +184,9 @@ func (r *ConwayRedeemers) UnmarshalCBOR(cborData []byte) error {
197
184
}
198
185
199
186
func (r ConwayRedeemers ) Indexes (tag common.RedeemerTag ) []uint {
187
+ if r .legacy {
188
+ return r .legacyRedeemers .Indexes (tag )
189
+ }
200
190
ret := []uint {}
201
191
for key := range r .Redeemers {
202
192
if key .Tag == tag {
@@ -210,6 +200,9 @@ func (r ConwayRedeemers) Value(
210
200
index uint ,
211
201
tag common.RedeemerTag ,
212
202
) (cbor.LazyValue , common.ExUnits ) {
203
+ if r .legacy {
204
+ return r .legacyRedeemers .Value (index , tag )
205
+ }
213
206
redeemer , ok := r .Redeemers [ConwayRedeemerKey {
214
207
Tag : tag ,
215
208
Index : uint32 (index ), // #nosec G115
0 commit comments