diff --git a/ledger/alonzo.go b/ledger/alonzo.go index a1b5b0d6..a7100a31 100644 --- a/ledger/alonzo.go +++ b/ledger/alonzo.go @@ -134,14 +134,18 @@ func (o *AlonzoTransactionOutput) UnmarshalCBOR(cborData []byte) error { func (o AlonzoTransactionOutput) MarshalJSON() ([]byte, error) { tmpObj := struct { - Address Address `json:"address"` - Amount uint64 `json:"amount"` - Assets *MultiAsset[MultiAssetTypeOutput] `json:"assets,omitempty"` + Address Address `json:"address"` + Amount uint64 `json:"amount"` + Assets *MultiAsset[MultiAssetTypeOutput] `json:"assets,omitempty"` + DatumHash string `json:"datumHash,omitempty"` }{ Address: o.OutputAddress, Amount: o.OutputAmount.Amount, Assets: o.OutputAmount.Assets, } + if o.TxOutputDatumHash != nil { + tmpObj.DatumHash = o.TxOutputDatumHash.String() + } return json.Marshal(&tmpObj) } diff --git a/ledger/babbage.go b/ledger/babbage.go index 974ddb1c..5dae0b1c 100644 --- a/ledger/babbage.go +++ b/ledger/babbage.go @@ -237,14 +237,24 @@ func (o *BabbageTransactionOutput) UnmarshalCBOR(cborData []byte) error { func (o BabbageTransactionOutput) MarshalJSON() ([]byte, error) { tmpObj := struct { - Address Address `json:"address"` - Amount uint64 `json:"amount"` - Assets *MultiAsset[MultiAssetTypeOutput] `json:"assets,omitempty"` + Address Address `json:"address"` + Amount uint64 `json:"amount"` + Assets *MultiAsset[MultiAssetTypeOutput] `json:"assets,omitempty"` + Datum *cbor.LazyValue `json:"datum,omitempty"` + DatumHash string `json:"datumHash,omitempty"` }{ Address: o.OutputAddress, Amount: o.OutputAmount.Amount, Assets: o.OutputAmount.Assets, } + if o.DatumOption != nil { + if o.DatumOption.hash != nil { + tmpObj.DatumHash = o.DatumOption.hash.String() + } + if o.DatumOption.data != nil { + tmpObj.Datum = o.DatumOption.data + } + } return json.Marshal(&tmpObj) }