mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-09-13 13:00:10 +00:00

* [NOD-1357] Implement getMempoolEntry. * [NOD-1357] Fix a nil point reference. * [NOD-1357] Add a comment above BuildTransactionVerboseData.
36 lines
1.3 KiB
Go
36 lines
1.3 KiB
Go
package rpchandlers
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/app/appmessage"
|
|
"github.com/kaspanet/kaspad/app/rpc/rpccontext"
|
|
"github.com/kaspanet/kaspad/infrastructure/network/netadapter/router"
|
|
"github.com/kaspanet/kaspad/util/daghash"
|
|
)
|
|
|
|
// HandleGetMempoolEntry handles the respectively named RPC command
|
|
func HandleGetMempoolEntry(context *rpccontext.Context, _ *router.Router, request appmessage.Message) (appmessage.Message, error) {
|
|
getMempoolEntryRequest := request.(*appmessage.GetMempoolEntryRequestMessage)
|
|
txID, err := daghash.NewTxIDFromStr(getMempoolEntryRequest.TxID)
|
|
if err != nil {
|
|
errorMessage := &appmessage.GetMempoolEntryResponseMessage{}
|
|
errorMessage.Error = appmessage.RPCErrorf("Could not parse txId: %s", err)
|
|
return errorMessage, nil
|
|
}
|
|
|
|
txDesc, ok := context.Mempool.FetchTxDesc(txID)
|
|
if !ok {
|
|
errorMessage := &appmessage.GetMempoolEntryResponseMessage{}
|
|
errorMessage.Error = appmessage.RPCErrorf("transaction is not in the pool")
|
|
return errorMessage, nil
|
|
}
|
|
|
|
transactionVerboseData, err := context.BuildTransactionVerboseData(txDesc.Tx.MsgTx(), txID.String(),
|
|
nil, "", nil, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
response := appmessage.NewGetMempoolEntryResponseMessage(txDesc.Fee, transactionVerboseData)
|
|
return response, nil
|
|
}
|