@@ -150,7 +150,8 @@ func (b *BabbageTransactionBody) UnmarshalCBOR(cborData []byte) error {
150150func (b * BabbageTransactionBody ) Outputs () []TransactionOutput {
151151 ret := []TransactionOutput {}
152152 for _ , output := range b .TxOutputs {
153- ret = append (ret , output )
153+ output := output
154+ ret = append (ret , & output )
154155 }
155156 return ret
156157}
@@ -214,6 +215,7 @@ func (d *BabbageTransactionOutputDatumOption) MarshalCBOR() ([]byte, error) {
214215}
215216
216217type BabbageTransactionOutput struct {
218+ cborData []byte
217219 OutputAddress Address `cbor:"0,keyasint,omitempty"`
218220 OutputAmount MaryTransactionOutputValue `cbor:"1,keyasint,omitempty"`
219221 DatumOption * BabbageTransactionOutputDatumOption `cbor:"2,keyasint,omitempty"`
@@ -222,6 +224,8 @@ type BabbageTransactionOutput struct {
222224}
223225
224226func (o * BabbageTransactionOutput ) UnmarshalCBOR (cborData []byte ) error {
227+ // Save original CBOR
228+ o .cborData = cborData [:]
225229 // Try to parse as legacy output first
226230 var tmpOutput AlonzoTransactionOutput
227231 if _ , err := cbor .Decode (cborData , & tmpOutput ); err == nil {
@@ -258,6 +262,10 @@ func (o BabbageTransactionOutput) MarshalJSON() ([]byte, error) {
258262 return json .Marshal (& tmpObj )
259263}
260264
265+ func (o * BabbageTransactionOutput ) Cbor () []byte {
266+ return o .cborData
267+ }
268+
261269func (o BabbageTransactionOutput ) Address () Address {
262270 return o .OutputAddress
263271}
0 commit comments