From 518aa6b351c2d827166d216c2479d7a6a31defba Mon Sep 17 00:00:00 2001 From: D-Stacks Date: Sat, 2 Jul 2022 19:01:03 +0200 Subject: [PATCH] addresses as string --- .../get_mempool_entries_by_addresses.go | 24 +++++++++----- domain/miningmanager/mempool/mempool.go | 9 +++-- domain/miningmanager/mempool/orphan_pool.go | 32 +++++++++--------- .../mempool/transactions_pool.go | 33 ++++++++++--------- domain/miningmanager/miningmanager.go | 17 +++++----- .../miningmanager/model/interface_mempool.go | 9 +++-- 6 files changed, 65 insertions(+), 59 deletions(-) diff --git a/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go b/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go index 5e73cee78..531c21bef 100644 --- a/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go +++ b/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go @@ -34,7 +34,7 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R return nil, err } - if transaction, found := sendingInMempool[address]; found { + if transaction, found := sendingInMempool[address.String()]; found { rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction) err := context.PopulateTransactionWithVerboseData(rpcTransaction, nil) if err != nil { @@ -44,10 +44,12 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R sending = append(sending, &appmessage.MempoolEntry{ Fee: transaction.Fee, Transaction: rpcTransaction, - IsOrphan: false}) + IsOrphan: false, + }, + ) } - if transaction, found := receivingInMempool[address]; found { + if transaction, found := receivingInMempool[address.String()]; found { rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction) err := context.PopulateTransactionWithVerboseData(rpcTransaction, nil) if err != nil { @@ -57,7 +59,9 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R receiving = append(receiving, &appmessage.MempoolEntry{ Fee: transaction.Fee, Transaction: rpcTransaction, - IsOrphan: false}) + IsOrphan: false, + }, + ) } } if getMempoolEntriesByAddressesRequest.IncludeOrphanPool { @@ -67,7 +71,7 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R return nil, err } - if transaction, found := sendingInOrphanPool[address]; found { + if transaction, found := sendingInOrphanPool[address.String()]; found { rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction) err := context.PopulateTransactionWithVerboseData(rpcTransaction, nil) if err != nil { @@ -77,10 +81,12 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R sending = append(sending, &appmessage.MempoolEntry{ Fee: transaction.Fee, Transaction: rpcTransaction, - IsOrphan: true}) + IsOrphan: true, + }, + ) } - if transaction, found := receivingInOrphanPool[address]; found { + if transaction, found := receivingInOrphanPool[address.String()]; found { rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction) err := context.PopulateTransactionWithVerboseData(rpcTransaction, nil) if err != nil { @@ -90,7 +96,9 @@ func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.R receiving = append(receiving, &appmessage.MempoolEntry{ Fee: transaction.Fee, Transaction: rpcTransaction, - IsOrphan: true}) + IsOrphan: true, + }, + ) } } diff --git a/domain/miningmanager/mempool/mempool.go b/domain/miningmanager/mempool/mempool.go index 70e47a773..5ecb81d86 100644 --- a/domain/miningmanager/mempool/mempool.go +++ b/domain/miningmanager/mempool/mempool.go @@ -5,7 +5,6 @@ import ( "github.com/kaspanet/kaspad/domain/consensusreference" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" miningmanagermodel "github.com/kaspanet/kaspad/domain/miningmanager/model" @@ -55,8 +54,8 @@ func (mp *mempool) GetTransaction(transactionID *externalapi.DomainTransactionID } func (mp *mempool) GetTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error, ) { mp.mtx.RLock() @@ -80,8 +79,8 @@ func (mp *mempool) GetOrphanTransaction(transactionID *externalapi.DomainTransac } func (mp *mempool) GetOrphanTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error, ) { mp.mtx.RLock() diff --git a/domain/miningmanager/mempool/orphan_pool.go b/domain/miningmanager/mempool/orphan_pool.go index f96ca549d..fe6cf8c7c 100644 --- a/domain/miningmanager/mempool/orphan_pool.go +++ b/domain/miningmanager/mempool/orphan_pool.go @@ -5,7 +5,6 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/utils/constants" "github.com/kaspanet/kaspad/domain/consensus/utils/txscript" - "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/domain/consensus/ruleerrors" @@ -346,11 +345,11 @@ func (op *orphansPool) getOrphanTransaction(transactionID *externalapi.DomainTra } func (op *orphansPool) getOrphanTransactionsByAddresses(clone bool) ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) { - sending = make(map[util.Address]*externalapi.DomainTransaction) - receiving = make(map[util.Address]*externalapi.DomainTransaction) + sending = make(map[string]*externalapi.DomainTransaction) + receiving = make(map[string]*externalapi.DomainTransaction) var transaction *externalapi.DomainTransaction for _, mempoolTransaction := range op.allOrphans { if clone { @@ -369,21 +368,20 @@ func (op *orphansPool) getOrphanTransactionsByAddresses(clone bool) ( if address == nil { //none standard tx continue } - sending[address] = transaction - for _, output := range transaction.Outputs { - _, address, err := txscript.ExtractScriptPubKeyAddress(output.ScriptPublicKey, op.mempool.params) - if err != nil { - return nil, nil, err - } - if address == nil { //none standard tx - continue - } - receiving[address] = transaction - + sending[address.String()] = transaction + } + for _, output := range transaction.Outputs { + _, address, err := txscript.ExtractScriptPubKeyAddress(output.ScriptPublicKey, op.mempool.params) + if err != nil { + return nil, nil, err } + if address == nil { //none standard tx + continue + } + receiving[address.String()] = transaction + } } - return sending, receiving, nil } diff --git a/domain/miningmanager/mempool/transactions_pool.go b/domain/miningmanager/mempool/transactions_pool.go index bfc0af311..ba2905aea 100644 --- a/domain/miningmanager/mempool/transactions_pool.go +++ b/domain/miningmanager/mempool/transactions_pool.go @@ -8,7 +8,6 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/utils/txscript" "github.com/kaspanet/kaspad/domain/miningmanager/mempool/model" - "github.com/kaspanet/kaspad/util" ) type transactionsPool struct { @@ -221,11 +220,11 @@ func (tp *transactionsPool) getTransaction(transactionID *externalapi.DomainTran } func (tp *transactionsPool) getTransactionsByAddresses(clone bool) ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) { - sending = make(map[util.Address]*externalapi.DomainTransaction) - receiving = make(map[util.Address]*externalapi.DomainTransaction) + sending = make(map[string]*externalapi.DomainTransaction) + receiving = make(map[string]*externalapi.DomainTransaction) var transaction *externalapi.DomainTransaction for _, mempoolTransaction := range tp.allTransactions { if clone { @@ -234,6 +233,9 @@ func (tp *transactionsPool) getTransactionsByAddresses(clone bool) ( transaction = mempoolTransaction.Transaction() } for _, input := range transaction.Inputs { + if input.UTXOEntry == nil { //this should be fixed + return nil, nil, err + } _, address, err := txscript.ExtractScriptPubKeyAddress(input.UTXOEntry.ScriptPublicKey(), tp.mempool.params) if err != nil { return nil, nil, err @@ -241,19 +243,20 @@ func (tp *transactionsPool) getTransactionsByAddresses(clone bool) ( if address == nil { //ignore none-standard script continue } - sending[address] = transaction - for _, output := range transaction.Outputs { - _, address, err := txscript.ExtractScriptPubKeyAddress(output.ScriptPublicKey, tp.mempool.params) - if err != nil { - return nil, nil, err - } - if address == nil { //ignore none-standard script - continue - } - receiving[address] = transaction + sending[address.String()] = transaction + } + for _, output := range transaction.Outputs { + _, address, err := txscript.ExtractScriptPubKeyAddress(output.ScriptPublicKey, tp.mempool.params) + if err != nil { + return nil, nil, err } + if address == nil { //ignore none-standard script + continue + } + receiving[address.String()] = transaction } } + return sending, receiving, nil } diff --git a/domain/miningmanager/miningmanager.go b/domain/miningmanager/miningmanager.go index fc29dd59e..e1919bef8 100644 --- a/domain/miningmanager/miningmanager.go +++ b/domain/miningmanager/miningmanager.go @@ -7,7 +7,6 @@ import ( "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensusreference" miningmanagermodel "github.com/kaspanet/kaspad/domain/miningmanager/model" - "github.com/kaspanet/kaspad/util" ) // MiningManager creates block templates for mining as well as maintaining @@ -18,14 +17,14 @@ type MiningManager interface { GetBlockTemplateBuilder() miningmanagermodel.BlockTemplateBuilder GetTransaction(transactionID *externalapi.DomainTransactionID) (*externalapi.DomainTransaction, bool) GetTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) AllTransactions() []*externalapi.DomainTransaction GetOrphanTransaction(transactionID *externalapi.DomainTransactionID) (*externalapi.DomainTransaction, bool) GetOrphanTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) AllOrphanTransactions() []*externalapi.DomainTransaction TransactionCount() int @@ -128,8 +127,8 @@ func (mm *miningManager) AllTransactions() []*externalapi.DomainTransaction { } func (mm *miningManager) GetTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) { return mm.mempool.GetTransactionsByAddresses() } @@ -141,8 +140,8 @@ func (mm *miningManager) GetOrphanTransaction( } func (mm *miningManager) GetOrphanTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) { return mm.mempool.GetTransactionsByAddresses() } diff --git a/domain/miningmanager/model/interface_mempool.go b/domain/miningmanager/model/interface_mempool.go index 419ea6402..2796be181 100644 --- a/domain/miningmanager/model/interface_mempool.go +++ b/domain/miningmanager/model/interface_mempool.go @@ -2,7 +2,6 @@ package model import ( "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" - "github.com/kaspanet/kaspad/util" ) // Mempool maintains a set of known transactions that @@ -15,14 +14,14 @@ type Mempool interface { RemoveTransactions(txs []*externalapi.DomainTransaction, removeRedeemers bool) error GetTransaction(transactionID *externalapi.DomainTransactionID) (*externalapi.DomainTransaction, bool) GetTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) AllTransactions() []*externalapi.DomainTransaction GetOrphanTransaction(transactionID *externalapi.DomainTransactionID) (*externalapi.DomainTransaction, bool) GetOrphanTransactionsByAddresses() ( - sending map[util.Address]*externalapi.DomainTransaction, - receiving map[util.Address]*externalapi.DomainTransaction, + sending map[string]*externalapi.DomainTransaction, + receiving map[string]*externalapi.DomainTransaction, err error) AllOrphanTransactions() []*externalapi.DomainTransaction TransactionCount() int