diff --git a/ledger/alonzo.go b/ledger/alonzo.go index dc2a7f27..d86502fa 100644 --- a/ledger/alonzo.go +++ b/ledger/alonzo.go @@ -245,10 +245,27 @@ func (o AlonzoTransactionOutput) Datum() *cbor.LazyValue { } func (o AlonzoTransactionOutput) Utxorpc() *utxorpc.TxOutput { + var assets []*utxorpc.Multiasset + if o.Assets() != nil { + for policyId, policyData := range o.Assets().data { + var ma = &utxorpc.Multiasset{ + PolicyId: policyId.Bytes(), + } + for assetName, amount := range policyData { + asset := &utxorpc.Asset{ + Name: assetName.Bytes(), + OutputCoin: amount, + } + ma.Assets = append(ma.Assets, asset) + } + assets = append(assets, ma) + } + } + return &utxorpc.TxOutput{ Address: o.OutputAddress.Bytes(), Coin: o.Amount(), - // Assets: o.Assets, + Assets: assets, Datum: &utxorpc.Datum{ Hash: o.TxOutputDatumHash.Bytes(), }, diff --git a/ledger/babbage.go b/ledger/babbage.go index 8e9ab40c..d712aa55 100644 --- a/ledger/babbage.go +++ b/ledger/babbage.go @@ -418,6 +418,23 @@ func (o BabbageTransactionOutput) Utxorpc() *utxorpc.TxOutput { address = o.OutputAddress.Bytes() } + var assets []*utxorpc.Multiasset + if o.Assets() != nil { + for policyId, policyData := range o.Assets().data { + var ma = &utxorpc.Multiasset{ + PolicyId: policyId.Bytes(), + } + for assetName, amount := range policyData { + asset := &utxorpc.Asset{ + Name: assetName.Bytes(), + OutputCoin: amount, + } + ma.Assets = append(ma.Assets, asset) + } + assets = append(assets, ma) + } + } + var datumHash []byte if o.DatumHash() == nil { datumHash = []byte{} @@ -428,7 +445,7 @@ func (o BabbageTransactionOutput) Utxorpc() *utxorpc.TxOutput { return &utxorpc.TxOutput{ Address: address, Coin: o.Amount(), - // Assets: o.Assets(), + Assets: assets, Datum: &utxorpc.Datum{ Hash: datumHash, // OriginalCbor: o.Datum().Cbor(),