Ori Newman 1e9ddc42d0
Add fee estimation to wallet (#2291)
* Add fee estimation to wallet

* Add fee rate to kaspawallet parse

* Update go version

* Get rid of golint

* Add RBF support to wallet

* Fix bump_fee UTXO lookup and fix wrong change address

* impl storage mass as per KIP9

* Use CalculateTransactionOverallMass where needed

* Some fixes

* Minor typos

* Fix test

* update version

* BroadcastRBF -> BroadcastReplacement

* rc3

* align proto files to only use camel case (fixed on RK as well)

* Rename to FeePolicy and add MaxFee option + todo

* apply max fee constrains

* increase minChangeTarget to 10kas

* fmt

* Some fixes

* fix description: maximum -> minimum

* put min feerate check in the correct location

* Fix calculateFeeLimits nil handling

* Add validations to CLI flags

* Change to rc6

* Add checkTransactionFeeRate

* Add failed broadcast transactions on send error`

* Fix estimateFee change value

* Estimate fee correctly for --send-all

* On estimateFee always assume that the recipient has ECDSA address

* remove patch version

---------

Co-authored-by: Michael Sutton <msutton@cs.huji.ac.il>
2024-10-22 12:34:54 +03:00

996 lines
29 KiB
Go

package protowire
import (
"github.com/kaspanet/kaspad/app/appmessage"
"github.com/pkg/errors"
)
type converter interface {
toAppMessage() (appmessage.Message, error)
}
// ToAppMessage converts a KaspadMessage to its appmessage.Message representation
func (x *KaspadMessage) ToAppMessage() (appmessage.Message, error) {
if x == nil {
return nil, errors.Wrapf(errorNil, "KaspadMessage is nil")
}
converter, ok := x.Payload.(converter)
if !ok {
return nil, errors.Errorf("received invalid message")
}
appMessage, err := converter.toAppMessage()
if err != nil {
return nil, err
}
return appMessage, nil
}
// FromAppMessage creates a KaspadMessage from a appmessage.Message
func FromAppMessage(message appmessage.Message) (*KaspadMessage, error) {
payload, err := toPayload(message)
if err != nil {
return nil, err
}
return &KaspadMessage{
Payload: payload,
}, nil
}
func toPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
p2pPayload, err := toP2PPayload(message)
if err != nil {
return nil, err
}
if p2pPayload != nil {
return p2pPayload, nil
}
rpcPayload, err := toRPCPayload(message)
if err != nil {
return nil, err
}
if rpcPayload != nil {
return rpcPayload, nil
}
return nil, errors.Errorf("unknown message type %T", message)
}
func toP2PPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
switch message := message.(type) {
case *appmessage.MsgAddresses:
payload := new(KaspadMessage_Addresses)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgBlock:
payload := new(KaspadMessage_Block)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestBlockLocator:
payload := new(KaspadMessage_RequestBlockLocator)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgBlockLocator:
payload := new(KaspadMessage_BlockLocator)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestAddresses:
payload := new(KaspadMessage_RequestAddresses)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestIBDBlocks:
payload := new(KaspadMessage_RequestIBDBlocks)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestNextHeaders:
payload := new(KaspadMessage_RequestNextHeaders)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgDoneHeaders:
payload := new(KaspadMessage_DoneHeaders)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestRelayBlocks:
payload := new(KaspadMessage_RequestRelayBlocks)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestTransactions:
payload := new(KaspadMessage_RequestTransactions)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgTransactionNotFound:
payload := new(KaspadMessage_TransactionNotFound)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgInvRelayBlock:
payload := new(KaspadMessage_InvRelayBlock)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgInvTransaction:
payload := new(KaspadMessage_InvTransactions)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgPing:
payload := new(KaspadMessage_Ping)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgPong:
payload := new(KaspadMessage_Pong)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgTx:
payload := new(KaspadMessage_Transaction)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgVerAck:
payload := new(KaspadMessage_Verack)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgVersion:
payload := new(KaspadMessage_Version)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgReject:
payload := new(KaspadMessage_Reject)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestPruningPointUTXOSet:
payload := new(KaspadMessage_RequestPruningPointUTXOSet)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgPruningPointUTXOSetChunk:
payload := new(KaspadMessage_PruningPointUtxoSetChunk)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgUnexpectedPruningPoint:
payload := new(KaspadMessage_UnexpectedPruningPoint)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgIBDBlockLocator:
payload := new(KaspadMessage_IbdBlockLocator)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgIBDBlockLocatorHighestHash:
payload := new(KaspadMessage_IbdBlockLocatorHighestHash)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgIBDBlockLocatorHighestHashNotFound:
payload := new(KaspadMessage_IbdBlockLocatorHighestHashNotFound)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.BlockHeadersMessage:
payload := new(KaspadMessage_BlockHeaders)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestNextPruningPointUTXOSetChunk:
payload := new(KaspadMessage_RequestNextPruningPointUtxoSetChunk)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgDonePruningPointUTXOSetChunks:
payload := new(KaspadMessage_DonePruningPointUtxoSetChunks)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgBlockWithTrustedData:
payload := new(KaspadMessage_BlockWithTrustedData)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestPruningPointAndItsAnticone:
payload := new(KaspadMessage_RequestPruningPointAndItsAnticone)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgDoneBlocksWithTrustedData:
payload := new(KaspadMessage_DoneBlocksWithTrustedData)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgIBDBlock:
payload := new(KaspadMessage_IbdBlock)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestHeaders:
payload := new(KaspadMessage_RequestHeaders)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgPruningPoints:
payload := new(KaspadMessage_PruningPoints)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestPruningPointProof:
payload := new(KaspadMessage_RequestPruningPointProof)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgPruningPointProof:
payload := new(KaspadMessage_PruningPointProof)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgReady:
payload := new(KaspadMessage_Ready)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgTrustedData:
payload := new(KaspadMessage_TrustedData)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgBlockWithTrustedDataV4:
payload := new(KaspadMessage_BlockWithTrustedDataV4)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestNextPruningPointAndItsAnticoneBlocks:
payload := new(KaspadMessage_RequestNextPruningPointAndItsAnticoneBlocks)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestIBDChainBlockLocator:
payload := new(KaspadMessage_RequestIBDChainBlockLocator)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgIBDChainBlockLocator:
payload := new(KaspadMessage_IbdChainBlockLocator)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.MsgRequestAnticone:
payload := new(KaspadMessage_RequestAnticone)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
default:
return nil, nil
}
}
func toRPCPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
switch message := message.(type) {
case *appmessage.GetCurrentNetworkRequestMessage:
payload := new(KaspadMessage_GetCurrentNetworkRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetCurrentNetworkResponseMessage:
payload := new(KaspadMessage_GetCurrentNetworkResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitBlockRequestMessage:
payload := new(KaspadMessage_SubmitBlockRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitBlockResponseMessage:
payload := new(KaspadMessage_SubmitBlockResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockTemplateRequestMessage:
payload := new(KaspadMessage_GetBlockTemplateRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockTemplateResponseMessage:
payload := new(KaspadMessage_GetBlockTemplateResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyBlockAddedRequestMessage:
payload := new(KaspadMessage_NotifyBlockAddedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyBlockAddedResponseMessage:
payload := new(KaspadMessage_NotifyBlockAddedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.BlockAddedNotificationMessage:
payload := new(KaspadMessage_BlockAddedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetPeerAddressesRequestMessage:
payload := new(KaspadMessage_GetPeerAddressesRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetPeerAddressesResponseMessage:
payload := new(KaspadMessage_GetPeerAddressesResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetSelectedTipHashRequestMessage:
payload := new(KaspadMessage_GetSelectedTipHashRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetSelectedTipHashResponseMessage:
payload := new(KaspadMessage_GetSelectedTipHashResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntryRequestMessage:
payload := new(KaspadMessage_GetMempoolEntryRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntryResponseMessage:
payload := new(KaspadMessage_GetMempoolEntryResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetConnectedPeerInfoRequestMessage:
payload := new(KaspadMessage_GetConnectedPeerInfoRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetConnectedPeerInfoResponseMessage:
payload := new(KaspadMessage_GetConnectedPeerInfoResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.AddPeerRequestMessage:
payload := new(KaspadMessage_AddPeerRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.AddPeerResponseMessage:
payload := new(KaspadMessage_AddPeerResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitTransactionRequestMessage:
payload := new(KaspadMessage_SubmitTransactionRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitTransactionResponseMessage:
payload := new(KaspadMessage_SubmitTransactionResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualSelectedParentChainChangedRequestMessage:
payload := new(KaspadMessage_NotifyVirtualSelectedParentChainChangedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualSelectedParentChainChangedResponseMessage:
payload := new(KaspadMessage_NotifyVirtualSelectedParentChainChangedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.VirtualSelectedParentChainChangedNotificationMessage:
payload := new(KaspadMessage_VirtualSelectedParentChainChangedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockRequestMessage:
payload := new(KaspadMessage_GetBlockRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockResponseMessage:
payload := new(KaspadMessage_GetBlockResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetSubnetworkRequestMessage:
payload := new(KaspadMessage_GetSubnetworkRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetSubnetworkResponseMessage:
payload := new(KaspadMessage_GetSubnetworkResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetVirtualSelectedParentChainFromBlockRequestMessage:
payload := new(KaspadMessage_GetVirtualSelectedParentChainFromBlockRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetVirtualSelectedParentChainFromBlockResponseMessage:
payload := new(KaspadMessage_GetVirtualSelectedParentChainFromBlockResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlocksRequestMessage:
payload := new(KaspadMessage_GetBlocksRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlocksResponseMessage:
payload := new(KaspadMessage_GetBlocksResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockCountRequestMessage:
payload := new(KaspadMessage_GetBlockCountRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockCountResponseMessage:
payload := new(KaspadMessage_GetBlockCountResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockDAGInfoRequestMessage:
payload := new(KaspadMessage_GetBlockDagInfoRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBlockDAGInfoResponseMessage:
payload := new(KaspadMessage_GetBlockDagInfoResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.ResolveFinalityConflictRequestMessage:
payload := new(KaspadMessage_ResolveFinalityConflictRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.ResolveFinalityConflictResponseMessage:
payload := new(KaspadMessage_ResolveFinalityConflictResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyFinalityConflictsRequestMessage:
payload := new(KaspadMessage_NotifyFinalityConflictsRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyFinalityConflictsResponseMessage:
payload := new(KaspadMessage_NotifyFinalityConflictsResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.FinalityConflictNotificationMessage:
payload := new(KaspadMessage_FinalityConflictNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.FinalityConflictResolvedNotificationMessage:
payload := new(KaspadMessage_FinalityConflictResolvedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntriesRequestMessage:
payload := new(KaspadMessage_GetMempoolEntriesRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntriesResponseMessage:
payload := new(KaspadMessage_GetMempoolEntriesResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.ShutDownRequestMessage:
payload := new(KaspadMessage_ShutDownRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.ShutDownResponseMessage:
payload := new(KaspadMessage_ShutDownResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetHeadersRequestMessage:
payload := new(KaspadMessage_GetHeadersRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetHeadersResponseMessage:
payload := new(KaspadMessage_GetHeadersResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyUTXOsChangedRequestMessage:
payload := new(KaspadMessage_NotifyUtxosChangedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyUTXOsChangedResponseMessage:
payload := new(KaspadMessage_NotifyUtxosChangedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.UTXOsChangedNotificationMessage:
payload := new(KaspadMessage_UtxosChangedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.StopNotifyingUTXOsChangedRequestMessage:
payload := new(KaspadMessage_StopNotifyingUtxosChangedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.StopNotifyingUTXOsChangedResponseMessage:
payload := new(KaspadMessage_StopNotifyingUtxosChangedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetUTXOsByAddressesRequestMessage:
payload := new(KaspadMessage_GetUtxosByAddressesRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetUTXOsByAddressesResponseMessage:
payload := new(KaspadMessage_GetUtxosByAddressesResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBalanceByAddressRequestMessage:
payload := new(KaspadMessage_GetBalanceByAddressRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBalanceByAddressResponseMessage:
payload := new(KaspadMessage_GetBalanceByAddressResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetVirtualSelectedParentBlueScoreRequestMessage:
payload := new(KaspadMessage_GetVirtualSelectedParentBlueScoreRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetVirtualSelectedParentBlueScoreResponseMessage:
payload := new(KaspadMessage_GetVirtualSelectedParentBlueScoreResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage:
payload := new(KaspadMessage_NotifyVirtualSelectedParentBlueScoreChangedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage:
payload := new(KaspadMessage_NotifyVirtualSelectedParentBlueScoreChangedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.VirtualSelectedParentBlueScoreChangedNotificationMessage:
payload := new(KaspadMessage_VirtualSelectedParentBlueScoreChangedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.BanRequestMessage:
payload := new(KaspadMessage_BanRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.BanResponseMessage:
payload := new(KaspadMessage_BanResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.UnbanRequestMessage:
payload := new(KaspadMessage_UnbanRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.UnbanResponseMessage:
payload := new(KaspadMessage_UnbanResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetInfoRequestMessage:
payload := new(KaspadMessage_GetInfoRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetInfoResponseMessage:
payload := new(KaspadMessage_GetInfoResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyPruningPointUTXOSetOverrideRequestMessage:
payload := new(KaspadMessage_NotifyPruningPointUTXOSetOverrideRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyPruningPointUTXOSetOverrideResponseMessage:
payload := new(KaspadMessage_NotifyPruningPointUTXOSetOverrideResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.PruningPointUTXOSetOverrideNotificationMessage:
payload := new(KaspadMessage_PruningPointUTXOSetOverrideNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.StopNotifyingPruningPointUTXOSetOverrideRequestMessage:
payload := new(KaspadMessage_StopNotifyingPruningPointUTXOSetOverrideRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.EstimateNetworkHashesPerSecondRequestMessage:
payload := new(KaspadMessage_EstimateNetworkHashesPerSecondRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.EstimateNetworkHashesPerSecondResponseMessage:
payload := new(KaspadMessage_EstimateNetworkHashesPerSecondResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualDaaScoreChangedRequestMessage:
payload := new(KaspadMessage_NotifyVirtualDaaScoreChangedRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyVirtualDaaScoreChangedResponseMessage:
payload := new(KaspadMessage_NotifyVirtualDaaScoreChangedResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.VirtualDaaScoreChangedNotificationMessage:
payload := new(KaspadMessage_VirtualDaaScoreChangedNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBalancesByAddressesRequestMessage:
payload := new(KaspadMessage_GetBalancesByAddressesRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetBalancesByAddressesResponseMessage:
payload := new(KaspadMessage_GetBalancesByAddressesResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyNewBlockTemplateRequestMessage:
payload := new(KaspadMessage_NotifyNewBlockTemplateRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NotifyNewBlockTemplateResponseMessage:
payload := new(KaspadMessage_NotifyNewBlockTemplateResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.NewBlockTemplateNotificationMessage:
payload := new(KaspadMessage_NewBlockTemplateNotification)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntriesByAddressesRequestMessage:
payload := new(KaspadMessage_GetMempoolEntriesByAddressesRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetMempoolEntriesByAddressesResponseMessage:
payload := new(KaspadMessage_GetMempoolEntriesByAddressesResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetCoinSupplyRequestMessage:
payload := new(KaspadMessage_GetCoinSupplyRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetCoinSupplyResponseMessage:
payload := new(KaspadMessage_GetCoinSupplyResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.GetFeeEstimateRequestMessage:
payload := new(KaspadMessage_GetFeeEstimateRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitTransactionReplacementRequestMessage:
payload := new(KaspadMessage_SubmitTransactionReplacementRequest)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
case *appmessage.SubmitTransactionReplacementResponseMessage:
payload := new(KaspadMessage_SubmitTransactionReplacementResponse)
err := payload.fromAppMessage(message)
if err != nil {
return nil, err
}
return payload, nil
default:
return nil, nil
}
}