package libkaspawallet import ( "encoding/hex" "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/utils/transactionid" "github.com/kaspanet/kaspad/domain/consensus/utils/utxo" ) // KaspawalletdUTXOsTolibkaspawalletUTXOs converts a []*pb.UtxosByAddressesEntry to a []*libkaspawallet.UTXO func KaspawalletdUTXOsTolibkaspawalletUTXOs(kaspawalletdUtxoEntires []*pb.UtxosByAddressesEntry) ([]*UTXO, error) { UTXOs := make([]*UTXO, len(kaspawalletdUtxoEntires)) for i, entry := range kaspawalletdUtxoEntires { script, err := hex.DecodeString(entry.UtxoEntry.ScriptPublicKey.ScriptPublicKey) if err != nil { return nil, err } transactionID, err := transactionid.FromString(entry.Outpoint.TransactionId) if err != nil { return nil, err } UTXOs[i] = &UTXO{ UTXOEntry: utxo.NewUTXOEntry( entry.UtxoEntry.Amount, &externalapi.ScriptPublicKey{ Script: script, Version: uint16(entry.UtxoEntry.ScriptPublicKey.Version), }, entry.UtxoEntry.IsCoinbase, entry.UtxoEntry.BlockDaaScore, ), Outpoint: &externalapi.DomainOutpoint{ TransactionID: *transactionID, Index: entry.Outpoint.Index, }, } } return UTXOs, nil } // AppMessageUTXOToKaspawalletdUTXO converts an appmessage.UTXOsByAddressesEntry to a pb.UtxosByAddressesEntry func AppMessageUTXOToKaspawalletdUTXO(appUTXOsByAddressesEntry *appmessage.UTXOsByAddressesEntry) *pb.UtxosByAddressesEntry { return &pb.UtxosByAddressesEntry{ Outpoint: &pb.Outpoint{ TransactionId: appUTXOsByAddressesEntry.Outpoint.TransactionID, Index: appUTXOsByAddressesEntry.Outpoint.Index, }, UtxoEntry: &pb.UtxoEntry{ Amount: appUTXOsByAddressesEntry.UTXOEntry.Amount, ScriptPublicKey: &pb.ScriptPublicKey{ Version: uint32(appUTXOsByAddressesEntry.UTXOEntry.ScriptPublicKey.Version), ScriptPublicKey: appUTXOsByAddressesEntry.UTXOEntry.ScriptPublicKey.Script, }, BlockDaaScore: appUTXOsByAddressesEntry.UTXOEntry.BlockDAAScore, IsCoinbase: appUTXOsByAddressesEntry.UTXOEntry.IsCoinbase, }, } }