2020-05-20 12:11:23 +02:00
|
|
|
/*
|
|
|
|
|
* This file is part of the Flowee project
|
2021-02-07 20:41:53 +01:00
|
|
|
* Copyright (C) 2016-2021 Tom Zander <tom@flowee.org>
|
2020-05-20 12:11:23 +02:00
|
|
|
*
|
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
* (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
#ifndef APIPROTOCOL_H
|
|
|
|
|
#define APIPROTOCOL_H
|
|
|
|
|
|
|
|
|
|
namespace Api {
|
|
|
|
|
enum ServiceIds {
|
|
|
|
|
APIService,
|
|
|
|
|
BlockChainService,
|
|
|
|
|
LiveTransactionService,
|
|
|
|
|
UtilService,
|
|
|
|
|
RegTestService,
|
2021-03-25 23:49:34 +01:00
|
|
|
MiningService,
|
2020-05-20 12:11:23 +02:00
|
|
|
|
|
|
|
|
/* service IDs under 16 are reserved to be handled by the APIServer
|
|
|
|
|
it will generate errors for any in this region it doesn't understand.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/// Hub control service.
|
|
|
|
|
HubControlService = 16,
|
|
|
|
|
// hub stopping, networking settings. Logging.
|
|
|
|
|
|
|
|
|
|
/// Connections can subscribe to bitcoin-address usage notifications
|
|
|
|
|
AddressMonitorService = 17,
|
|
|
|
|
BlockNotificationService,
|
|
|
|
|
|
2021-03-18 12:31:27 +01:00
|
|
|
/// The service ID for the Flowee Indexer. Runs as a stand-alone cloud-server.
|
2020-05-20 12:11:23 +02:00
|
|
|
IndexerService,
|
2021-03-18 12:31:27 +01:00
|
|
|
// waits for specific TxIds (part of the Hub again)
|
2020-05-20 12:11:23 +02:00
|
|
|
TransactionMonitorService,
|
2021-03-18 12:31:27 +01:00
|
|
|
DoubleSpendNotificationService,
|
2020-05-20 12:11:23 +02:00
|
|
|
|
|
|
|
|
// <-- new services go here -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LegacyP2P = 0x1000
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum ApiTags {
|
|
|
|
|
// various common tags
|
|
|
|
|
Separator = 0,
|
|
|
|
|
GenericByteData,
|
|
|
|
|
BitcoinP2PKHAddress, ///< A bytearray: the raw 160 bit hash.
|
|
|
|
|
PrivateKey,
|
|
|
|
|
TxId,
|
|
|
|
|
BlockHash,
|
|
|
|
|
Amount,
|
|
|
|
|
BlockHeight,
|
|
|
|
|
OffsetInBlock,
|
|
|
|
|
BitcoinScriptHashed, ///< a (single) sha256 hash of a script (typically output) used as a unique ID for the payment 'address'.
|
|
|
|
|
|
2020-11-17 21:53:04 +01:00
|
|
|
ASyncRequest = 10, ///< Use only in headers.
|
2020-12-16 22:14:15 +01:00
|
|
|
RequestId, ///< Use only in headers.
|
|
|
|
|
UserTag1,
|
|
|
|
|
UserTag2,
|
|
|
|
|
UserTag3
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// API (owned by APIServer)
|
|
|
|
|
namespace Meta {
|
|
|
|
|
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
Version,
|
|
|
|
|
VersionReply,
|
|
|
|
|
CommandFailed,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
|
|
|
|
|
FailedReason = 20,
|
|
|
|
|
FailedCommandServiceId,
|
|
|
|
|
FailedCommandId,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Utils service (owned by APIServer)
|
|
|
|
|
namespace Util {
|
|
|
|
|
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
CreateAddress,
|
|
|
|
|
CreateAddressReply,
|
|
|
|
|
// createmultisig nrequired ["key",...]
|
|
|
|
|
// estimatefee nblocks
|
|
|
|
|
// estimatepriority nblocks
|
|
|
|
|
// estimatesmartfee nblocks
|
|
|
|
|
// estimatesmartpriority nblocks
|
|
|
|
|
ValidateAddress,
|
|
|
|
|
ValidateAddressReply,
|
|
|
|
|
// verifymessage "bitcoinaddress" "signature" "message"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
BitcoinP2PKHAddress = Api::BitcoinP2PKHAddress,
|
|
|
|
|
PrivateKey = Api::PrivateKey,
|
|
|
|
|
|
|
|
|
|
ScriptPubKey = 20,
|
|
|
|
|
IsValid,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace Mining { // Mining Service
|
|
|
|
|
enum MessageIds {
|
2021-03-25 23:49:34 +01:00
|
|
|
SubmitBlock,
|
|
|
|
|
SubmitBlockReply
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = 0,
|
2021-03-25 23:49:34 +01:00
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
BlockHash = Api::BlockHash
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace LiveTransactions {
|
|
|
|
|
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
GetTransaction,
|
|
|
|
|
GetTransactionReply,
|
|
|
|
|
SendTransaction,
|
|
|
|
|
SendTransactionReply,
|
|
|
|
|
IsUnspent,
|
|
|
|
|
IsUnspentReply,
|
|
|
|
|
GetUnspentOutput,
|
2020-09-19 23:53:39 +02:00
|
|
|
GetUnspentOutputReply,
|
2020-05-20 12:11:23 +02:00
|
|
|
|
2020-09-19 23:53:39 +02:00
|
|
|
SearchMempool,
|
|
|
|
|
SearchMempoolReply,
|
2021-01-05 23:07:07 +01:00
|
|
|
|
|
|
|
|
GetMempoolInfo,
|
|
|
|
|
GetMempoolInfoReply,
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
2020-09-19 23:53:39 +02:00
|
|
|
Tx_Out_Address = Api::BitcoinP2PKHAddress, ///< a ripe160 based P2PKH address.
|
2020-05-20 12:11:23 +02:00
|
|
|
TxId = Api::TxId, // bytearray
|
|
|
|
|
Amount = Api::Amount, // value in satoshis
|
|
|
|
|
BlockHeight = Api::BlockHeight,
|
|
|
|
|
OffsetInBlock = Api::OffsetInBlock,
|
2020-09-19 23:53:39 +02:00
|
|
|
BitcoinScriptHashed = Api::BitcoinScriptHashed,
|
2020-05-20 12:11:23 +02:00
|
|
|
|
2020-09-19 23:53:39 +02:00
|
|
|
Tx_IN_TxId = 20,
|
2020-05-20 12:11:23 +02:00
|
|
|
OutIndex,
|
2020-09-19 23:53:39 +02:00
|
|
|
Tx_InputScript,
|
|
|
|
|
OutputScript,
|
|
|
|
|
Tx_Out_Index,
|
|
|
|
|
|
|
|
|
|
Transaction,
|
|
|
|
|
UnspentState, // bool, when true the utxo is unspent
|
|
|
|
|
DSProofId,
|
|
|
|
|
FirstSeenTime, // long-int with seconds since epoch (UTC)
|
|
|
|
|
MatchingOutIndex, // int. Output index that matches the requested search.
|
2021-03-18 12:31:27 +01:00
|
|
|
ValidateOnly, // bool, if true then we stop after validation finished.
|
2020-09-19 23:53:39 +02:00
|
|
|
|
|
|
|
|
// for individual transaction you can select how they should be returned.
|
|
|
|
|
Include_TxId = 43, ///< bool.
|
|
|
|
|
FullTransactionData = 45, ///< bool. When true, return full tx data even when interpeted data is sent.
|
|
|
|
|
Include_Inputs, ///< bool. Return all inputs for selected tx.
|
|
|
|
|
Include_OutputAmounts, ///< bool. Return the amounts field for selected transactions.
|
|
|
|
|
Include_OutputScripts, ///< bool. Return full output Scripts.
|
|
|
|
|
Include_Outputs, ///< bool. Return all parts of outputs, overriding the previous 2 options.
|
|
|
|
|
Include_OutputAddresses,///< bool. If the output is a p2pkh, return the hash160 of the address paid to.
|
|
|
|
|
Include_OutputScriptHash,///< bool. Include Tx_Out_ScriptHash
|
|
|
|
|
FilterOutputIndex, ///< integer of output. This filters to only return data for those.
|
2021-01-05 23:07:07 +01:00
|
|
|
|
|
|
|
|
// GetMempoolInfo
|
|
|
|
|
MempoolSize = 60, ///< long-int. Current tx count
|
|
|
|
|
MempoolBytes, ///< long-int. Sum of all tx sizes (bytes)
|
|
|
|
|
MempoolUsage, ///< long-int. Total memory usage for the mempool (bytes)
|
|
|
|
|
MaxMempool, ///< long-int. Maximum memory usage for the mempool (bytes)
|
|
|
|
|
MempoolMinFee, ///< double. Minimum fee for tx to be accepted (Satoshi-per-1000-bytes)
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace BlockChain {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
GetBlockChainInfo,
|
|
|
|
|
GetBlockChainInfoReply,
|
|
|
|
|
GetBestBlockHash,
|
|
|
|
|
GetBestBlockHashReply,
|
|
|
|
|
GetBlock,
|
|
|
|
|
GetBlockReply,
|
|
|
|
|
GetBlockVerbose,
|
|
|
|
|
GetBlockVerboseReply,
|
|
|
|
|
GetBlockHeader,
|
|
|
|
|
GetBlockHeaderReply,
|
|
|
|
|
GetBlockCount,
|
|
|
|
|
GetBlockCountReply,
|
|
|
|
|
GetTransaction,
|
|
|
|
|
GetTransactionReply,
|
|
|
|
|
// getchaintips
|
|
|
|
|
// getdifficulty
|
|
|
|
|
// gettxout "txid" n ( includemempool )
|
|
|
|
|
// verifychain ( checklevel numblocks )
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// BlockChain-tags
|
|
|
|
|
enum Tags {
|
|
|
|
|
// GetBlockReply / GetTransactionReply tags
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
TxId = Api::TxId,
|
|
|
|
|
BlockHash = Api::BlockHash,
|
|
|
|
|
Tx_Out_Amount = Api::Amount,
|
|
|
|
|
BlockHeight = Api::BlockHeight,
|
|
|
|
|
Tx_Out_Address = Api::BitcoinP2PKHAddress, ///< a ripe160 based P2PKH address.
|
|
|
|
|
Tx_OffsetInBlock = Api::OffsetInBlock,
|
|
|
|
|
Tx_Out_ScriptHash = Api::BitcoinScriptHashed, ///< A sha256 over the contents of the script-out.
|
|
|
|
|
|
|
|
|
|
Tx_IN_TxId = 20,
|
|
|
|
|
Tx_IN_OutIndex,
|
|
|
|
|
Tx_InputScript,
|
|
|
|
|
Tx_OutputScript,
|
|
|
|
|
Tx_Out_Index,
|
2021-03-25 23:49:34 +01:00
|
|
|
Tx_Fees, ///< The fees (in satoshis) that the transaction paid.
|
2020-05-20 12:11:23 +02:00
|
|
|
|
|
|
|
|
// GetBlock-Request-tags
|
2021-03-25 23:49:34 +01:00
|
|
|
FilterOnScriptType = 39, ///< Filter on script-type. Takes an int (OR-ed enum values of Api::ScriptTag)
|
2020-05-20 12:11:23 +02:00
|
|
|
// GetBlock can filter a block to only return transactions that match a bitcoin-address filter
|
|
|
|
|
// (list of addresses).
|
|
|
|
|
ReuseAddressFilter = 40, ///< A getBlock call resuses a previously created address filter. bool
|
|
|
|
|
SetFilterScriptHash, ///< Followed with one bytearray script-hash. Clears entire filter and and sets one script-hash in filter.
|
|
|
|
|
AddFilterScriptHash, ///< Add one bytearray script-hash.
|
|
|
|
|
|
|
|
|
|
// for individual transaction you can select how they should be returned.
|
|
|
|
|
Include_TxId, ///< bool.
|
|
|
|
|
Include_OffsetInBlock, ///< bool.
|
|
|
|
|
FullTransactionData, ///< bool. When true, return full tx data even when interpeted data is sent.
|
|
|
|
|
Include_Inputs, ///< bool. Return all inputs for selected tx.
|
|
|
|
|
Include_OutputAmounts, ///< bool. Return the amounts field for selected transactions.
|
|
|
|
|
Include_OutputScripts, ///< bool. Return full output Scripts.
|
|
|
|
|
Include_Outputs, ///< bool. Return all parts of outputs, overriding the previous 2 options.
|
|
|
|
|
Include_OutputAddresses,///< bool. If the output is a p2pkh, return the hash160 of the address paid to.
|
|
|
|
|
Include_OutputScriptHash,///< bool. Include Tx_Out_ScriptHash
|
2020-09-19 23:53:39 +02:00
|
|
|
FilterOutputIndex, ///< integer of output. This filters to only return data for those.
|
2021-03-18 12:31:27 +01:00
|
|
|
Include_TxFee, ///< Include the fee paid for the transaction.
|
2020-05-20 12:11:23 +02:00
|
|
|
|
|
|
|
|
Verbose = 60, // bool
|
|
|
|
|
Size, // int
|
|
|
|
|
Version, // int
|
|
|
|
|
Time, // in seconds since epoch (int)
|
|
|
|
|
Difficulty, // double
|
|
|
|
|
MedianTime, // in seconds since epoch (int)
|
|
|
|
|
ChainWork, // a sha256
|
2020-11-17 21:53:04 +01:00
|
|
|
Chain, // string. "main", "testnet", "testnet4", "scalenet", "regtest"
|
2020-05-20 12:11:23 +02:00
|
|
|
Blocks, // number of blocks (int)
|
|
|
|
|
Headers, // number of headers (int)
|
|
|
|
|
BestBlockHash, // sha256
|
|
|
|
|
VerificationProgress, // double
|
|
|
|
|
|
|
|
|
|
// GetBlockVerbose-tags
|
|
|
|
|
Confirmations, // int
|
|
|
|
|
MerkleRoot, // sha256
|
|
|
|
|
Nonce, // int
|
|
|
|
|
Bits, // int
|
|
|
|
|
PrevBlockHash, // sha256
|
|
|
|
|
NextBlockHash // sha256
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hub Control Service
|
|
|
|
|
namespace Hub {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
// == Network ==
|
|
|
|
|
// addnode "node" "add|remove|onetry"
|
|
|
|
|
// clearbanned
|
|
|
|
|
// disconnectnode "node"
|
|
|
|
|
// getaddednodeinfo dns ( "node" )
|
|
|
|
|
// getconnectioncount
|
|
|
|
|
// getnettotals
|
|
|
|
|
// getnetworkinfo
|
|
|
|
|
// getpeerinfo
|
|
|
|
|
// listbanned
|
|
|
|
|
// setban "ip(/netmask)" "add|remove" (bantime) (absolute)
|
|
|
|
|
// == blockchain ==
|
|
|
|
|
// getmempoolinfo
|
|
|
|
|
// getrawmempool ( verbose )
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace RegTest {
|
|
|
|
|
|
|
|
|
|
// RegTest Service
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
GenerateBlock,
|
|
|
|
|
GenerateBlockReply
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
Separator = Api::Separator,
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
BitcoinP2PKHAddress = Api::BitcoinP2PKHAddress,
|
|
|
|
|
BlockHash = Api::BlockHash,
|
|
|
|
|
Amount = Api::Amount
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace AddressMonitor {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
/// Client sents a message to the hub to subscribe to a BitcoinAddress
|
|
|
|
|
Subscribe,
|
|
|
|
|
/// reply with Result and maybe ErrorMessage
|
|
|
|
|
SubscribeReply,
|
|
|
|
|
/// Client sents a message to the hub to unsubscribe a BitcoinAddress
|
|
|
|
|
Unsubscribe,
|
|
|
|
|
/**
|
|
|
|
|
* When the Hub finds a match, it sends this message to the client.
|
|
|
|
|
* We send BitcoinAddress, TransactionId, Amount and ConfirmationCount.
|
|
|
|
|
*/
|
|
|
|
|
TransactionFound,
|
|
|
|
|
/**
|
|
|
|
|
* Notify of a douple spend on one of the subscribed addresses.
|
|
|
|
|
*/
|
|
|
|
|
DoubleSpendFound
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
/// A bytearray for a full sha256 txid
|
|
|
|
|
TxId = Api::TxId,
|
|
|
|
|
/// An unsigned 64 bit number for the amount of satshi you received
|
|
|
|
|
Amount = Api::Amount,
|
|
|
|
|
BlockHeight = Api::BlockHeight,
|
|
|
|
|
/// If a transaction is added in a block, this is the offset-in-block
|
|
|
|
|
OffsetInBlock = Api::OffsetInBlock,
|
|
|
|
|
BitcoinScriptHashed = Api::BitcoinScriptHashed,
|
|
|
|
|
|
|
|
|
|
/// A string giving a human (or, at least, developer) readable error message
|
|
|
|
|
ErrorMessage = 20,
|
|
|
|
|
|
|
|
|
|
/// positive-number. the amount of addresses found in the subscribe/unsubscribe message
|
|
|
|
|
Result,
|
|
|
|
|
/// A bytearray with a double-spend-proof object
|
|
|
|
|
DoubleSpendProofData,
|
|
|
|
|
/// A bytearray with a Transaction
|
|
|
|
|
TransactionData
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace TransactionMonitor {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
/// Client sents a message to the hub to subscribe to a BitcoinAddress
|
|
|
|
|
Subscribe,
|
|
|
|
|
/// reply with Result and maybe ErrorMessage
|
|
|
|
|
SubscribeReply,
|
|
|
|
|
/// Client sents a message to the hub to unsubscribe a BitcoinAddress
|
|
|
|
|
Unsubscribe,
|
|
|
|
|
/**
|
|
|
|
|
* When the Hub finds a match, it sends this message to the client.
|
|
|
|
|
* We send only the txid and the OffsetInBlock/BlockHeight if mined.
|
|
|
|
|
*/
|
|
|
|
|
TransactionFound,
|
|
|
|
|
/**
|
|
|
|
|
* Notify of a douple spend on one of the subscribed transactions.
|
|
|
|
|
*/
|
|
|
|
|
DoubleSpendFound
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
GenericByteData = Api::GenericByteData,
|
|
|
|
|
/// A bytearray for a full sha256 txid
|
|
|
|
|
TxId = Api::TxId,
|
|
|
|
|
BlockHeight = Api::BlockHeight,
|
|
|
|
|
/// If a transaction is added in a block, this is the offset-in-block
|
|
|
|
|
OffsetInBlock = Api::OffsetInBlock,
|
|
|
|
|
|
|
|
|
|
/// A string giving a human (or, at least, developer) readable error message
|
|
|
|
|
ErrorMessage = 20,
|
|
|
|
|
|
|
|
|
|
/// positive-number. the amount of TxIds found in the subscribe/unsubscribe message
|
|
|
|
|
Result,
|
|
|
|
|
/// A bytearray with a double-spend-proof object
|
|
|
|
|
DoubleSpendProofData,
|
|
|
|
|
/// A bytearray with a Transaction
|
|
|
|
|
TransactionData
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace BlockNotification {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
Subscribe,
|
|
|
|
|
Unsubscribe = 2,
|
|
|
|
|
NewBlockOnChain = 4,
|
2021-02-19 18:04:09 +01:00
|
|
|
BlocksRemoved = 6
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
BlockHash = Api::BlockHash,
|
|
|
|
|
BlockHeight = Api::BlockHeight
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace Indexer {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
GetAvailableIndexers,
|
|
|
|
|
GetAvailableIndexersReply,
|
|
|
|
|
FindTransaction,
|
|
|
|
|
FindTransactionReply,
|
|
|
|
|
FindAddress,
|
|
|
|
|
FindAddressReply,
|
|
|
|
|
FindSpentOutput,
|
|
|
|
|
FindSpentOutputReply,
|
|
|
|
|
GetIndexerLastBlock,
|
2020-08-12 22:23:16 +02:00
|
|
|
GetIndexerLastBlockReply,
|
|
|
|
|
Version,
|
|
|
|
|
VersionReply
|
2020-05-20 12:11:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
2020-08-12 22:23:16 +02:00
|
|
|
GenericByteData = Api::GenericByteData,
|
2020-05-20 12:11:23 +02:00
|
|
|
Separator = Api::Separator,
|
|
|
|
|
BitcoinP2PKHAddress = Api::BitcoinP2PKHAddress,
|
|
|
|
|
TxId = Api::TxId,
|
|
|
|
|
BlockHeight = Api::BlockHeight,
|
|
|
|
|
OffsetInBlock = Api::OffsetInBlock,
|
|
|
|
|
BitcoinScriptHashed = Api::BitcoinScriptHashed,
|
|
|
|
|
|
|
|
|
|
OutIndex = 20,
|
|
|
|
|
AddressIndexer,
|
|
|
|
|
TxIdIndexer,
|
|
|
|
|
SpentOutputIndexer
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace P2P {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
Version = 1,
|
|
|
|
|
VersionAck,
|
|
|
|
|
GetAddr,
|
|
|
|
|
Addresses, // addr
|
|
|
|
|
|
|
|
|
|
PreferHeaders, // sendheaders
|
|
|
|
|
GetBlocks,
|
|
|
|
|
GetHeaders,
|
|
|
|
|
Headers,
|
|
|
|
|
|
|
|
|
|
Inventory, // inv
|
|
|
|
|
GetData,
|
|
|
|
|
Data_MerkleBlock,
|
|
|
|
|
Data_Transaction,
|
|
|
|
|
Data_Block,
|
|
|
|
|
Data_NotFound,
|
|
|
|
|
Data_DSProof,
|
|
|
|
|
|
|
|
|
|
RejectData,
|
|
|
|
|
|
|
|
|
|
GetXThin,
|
|
|
|
|
Data_ThinBlock,
|
|
|
|
|
Data_XThinBlock,
|
|
|
|
|
Get_XBlockTx,
|
|
|
|
|
Data_XBlockTx,
|
|
|
|
|
|
2021-02-07 20:41:53 +01:00
|
|
|
Mempool, // fetches INVs for stuff in other node's mempool (filters apply)
|
2020-05-20 12:11:23 +02:00
|
|
|
|
|
|
|
|
Ping,
|
|
|
|
|
Pong,
|
|
|
|
|
|
|
|
|
|
FilterLoad,
|
|
|
|
|
FilterAdd,
|
|
|
|
|
FilterClear
|
|
|
|
|
};
|
|
|
|
|
}
|
2021-03-18 12:31:27 +01:00
|
|
|
|
|
|
|
|
namespace DSP {
|
|
|
|
|
enum MessageIds {
|
|
|
|
|
Subscribe,
|
|
|
|
|
Unsubscribe = 2,
|
|
|
|
|
NewDoubleSpend = 4
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum Tags {
|
|
|
|
|
// GenericByteData = Api::GenericByteData,
|
|
|
|
|
TxId = Api::TxId, // bytearray
|
|
|
|
|
/// A bytearray with a double-spend-proof object
|
|
|
|
|
DoubleSpendProofData = 22,
|
|
|
|
|
/// A bytearray with the double spending transaction
|
2021-03-25 23:49:34 +01:00
|
|
|
Transaction = 23
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Script opcodes tags, as flags.
|
|
|
|
|
namespace ScriptTag {
|
|
|
|
|
enum ScriptTag {
|
|
|
|
|
OpReturn = 1,
|
|
|
|
|
OpChecksig = 2, // including the verify version
|
|
|
|
|
OpCheckmultisig = 4, // including the verify version
|
|
|
|
|
OpCheckLockTimeverify = 8,
|
|
|
|
|
OpCheckDataSig = 0x10, // including the verify version
|
|
|
|
|
P2SH = 0x20
|
2021-03-18 12:31:27 +01:00
|
|
|
};
|
|
|
|
|
}
|
2020-05-20 12:11:23 +02:00
|
|
|
}
|
|
|
|
|
#endif
|