mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 02:55:50 +00:00
This reverts commit dd5e6559dd. It has
introduced a regression causing slow close times and syncing issues.
A fix will be attempted later.
388 lines
11 KiB
Protocol Buffer
388 lines
11 KiB
Protocol Buffer
syntax = "proto2";
|
|
package protocol;
|
|
|
|
// Unused numbers in the list below may have been used previously. Please don't
|
|
// reassign them for reuse unless you are 100% certain that there won't be a
|
|
// conflict. Even if you're sure, it's probably best to assign a new type.
|
|
enum MessageType
|
|
{
|
|
mtMANIFESTS = 2;
|
|
mtPING = 3;
|
|
mtCLUSTER = 5;
|
|
mtENDPOINTS = 15;
|
|
mtTRANSACTION = 30;
|
|
mtGET_LEDGER = 31;
|
|
mtLEDGER_DATA = 32;
|
|
mtPROPOSE_LEDGER = 33;
|
|
mtSTATUS_CHANGE = 34;
|
|
mtHAVE_SET = 35;
|
|
mtVALIDATION = 41;
|
|
mtGET_OBJECTS = 42;
|
|
mtVALIDATORLIST = 54;
|
|
mtSQUELCH = 55;
|
|
mtVALIDATORLISTCOLLECTION = 56;
|
|
mtPROOF_PATH_REQ = 57;
|
|
mtPROOF_PATH_RESPONSE = 58;
|
|
mtREPLAY_DELTA_REQ = 59;
|
|
mtREPLAY_DELTA_RESPONSE = 60;
|
|
mtHAVE_TRANSACTIONS = 63;
|
|
mtTRANSACTIONS = 64;
|
|
}
|
|
|
|
// token, iterations, target, challenge = issue demand for proof of work
|
|
// token, response = give solution to proof of work
|
|
// token, result = report result of pow
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
/* Provides the current ephemeral key for a validator. */
|
|
message TMManifest
|
|
{
|
|
// A Manifest object in the Ripple serialization format.
|
|
required bytes stobject = 1;
|
|
}
|
|
|
|
message TMManifests
|
|
{
|
|
repeated TMManifest list = 1;
|
|
|
|
// The manifests sent when a peer first connects to another peer are `history`.
|
|
optional bool history = 2 [deprecated=true];
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// The status of a node in our cluster
|
|
message TMClusterNode
|
|
{
|
|
required string publicKey = 1;
|
|
required uint32 reportTime = 2;
|
|
required uint32 nodeLoad = 3;
|
|
optional string nodeName = 4;
|
|
optional string address = 5;
|
|
}
|
|
|
|
// Sources that are placing load on the server
|
|
message TMLoadSource
|
|
{
|
|
required string name = 1;
|
|
required uint32 cost = 2;
|
|
optional uint32 count = 3; // number of connections
|
|
}
|
|
|
|
// The status of all nodes in the cluster
|
|
message TMCluster
|
|
{
|
|
repeated TMClusterNode clusterNodes = 1;
|
|
repeated TMLoadSource loadSources = 2;
|
|
}
|
|
|
|
// Node public key
|
|
message TMLink
|
|
{
|
|
required bytes nodePubKey = 1 [deprecated=true]; // node public key
|
|
}
|
|
|
|
// Peer public key
|
|
message TMPublicKey
|
|
{
|
|
required bytes publicKey = 1;
|
|
}
|
|
|
|
// A transaction can have only one input and one output.
|
|
// If you want to send an amount that is greater than any single address of yours
|
|
// you must first combine coins from one address to another.
|
|
|
|
enum TransactionStatus
|
|
{
|
|
tsNEW = 1; // origin node did/could not validate
|
|
tsCURRENT = 2; // scheduled to go in this ledger
|
|
tsCOMMITED = 3; // in a closed ledger
|
|
tsREJECT_CONFLICT = 4;
|
|
tsREJECT_INVALID = 5;
|
|
tsREJECT_FUNDS = 6;
|
|
tsHELD_SEQ = 7;
|
|
tsHELD_LEDGER = 8; // held for future ledger
|
|
}
|
|
|
|
message TMTransaction
|
|
{
|
|
required bytes rawTransaction = 1;
|
|
required TransactionStatus status = 2;
|
|
optional uint64 receiveTimestamp = 3;
|
|
optional bool deferred = 4; // not applied to open ledger
|
|
}
|
|
|
|
message TMTransactions
|
|
{
|
|
repeated TMTransaction transactions = 1;
|
|
}
|
|
|
|
|
|
enum NodeStatus
|
|
{
|
|
nsCONNECTING = 1; // acquiring connections
|
|
nsCONNECTED = 2; // convinced we are connected to the real network
|
|
nsMONITORING = 3; // we know what the previous ledger is
|
|
nsVALIDATING = 4; // we have the full ledger contents
|
|
nsSHUTTING = 5; // node is shutting down
|
|
}
|
|
|
|
enum NodeEvent
|
|
{
|
|
neCLOSING_LEDGER = 1; // closing a ledger because its close time has come
|
|
neACCEPTED_LEDGER = 2; // accepting a closed ledger, we have finished computing it
|
|
neSWITCHED_LEDGER = 3; // changing due to network consensus
|
|
neLOST_SYNC = 4;
|
|
}
|
|
|
|
message TMStatusChange
|
|
{
|
|
optional NodeStatus newStatus = 1;
|
|
optional NodeEvent newEvent = 2;
|
|
optional uint32 ledgerSeq = 3;
|
|
optional bytes ledgerHash = 4;
|
|
optional bytes ledgerHashPrevious = 5;
|
|
optional uint64 networkTime = 6;
|
|
optional uint32 firstSeq = 7;
|
|
optional uint32 lastSeq = 8;
|
|
}
|
|
|
|
|
|
// Announce to the network our position on a closing ledger
|
|
message TMProposeSet
|
|
{
|
|
required uint32 proposeSeq = 1;
|
|
required bytes currentTxHash = 2; // the hash of the ledger we are proposing
|
|
required bytes nodePubKey = 3;
|
|
required uint32 closeTime = 4;
|
|
required bytes signature = 5; // signature of above fields
|
|
required bytes previousledger = 6;
|
|
repeated bytes addedTransactions = 10; // not required if number is large
|
|
repeated bytes removedTransactions = 11; // not required if number is large
|
|
|
|
// node vouches signature is correct
|
|
optional bool checkedSignature = 7 [deprecated=true];
|
|
|
|
// Number of hops traveled
|
|
optional uint32 hops = 12 [deprecated=true];
|
|
}
|
|
|
|
enum TxSetStatus
|
|
{
|
|
tsHAVE = 1; // We have this set locally
|
|
tsCAN_GET = 2; // We have a peer with this set
|
|
tsNEED = 3; // We need this set and can't get it
|
|
}
|
|
|
|
message TMHaveTransactionSet
|
|
{
|
|
required TxSetStatus status = 1;
|
|
required bytes hash = 2;
|
|
}
|
|
|
|
// Validator list (UNL)
|
|
message TMValidatorList
|
|
{
|
|
required bytes manifest = 1;
|
|
required bytes blob = 2;
|
|
required bytes signature = 3;
|
|
required uint32 version = 4;
|
|
}
|
|
|
|
// Validator List v2
|
|
message ValidatorBlobInfo
|
|
{
|
|
optional bytes manifest = 1;
|
|
required bytes blob = 2;
|
|
required bytes signature = 3;
|
|
}
|
|
|
|
// Collection of Validator List v2 (UNL)
|
|
message TMValidatorListCollection
|
|
{
|
|
required uint32 version = 1;
|
|
required bytes manifest = 2;
|
|
repeated ValidatorBlobInfo blobs = 3;
|
|
}
|
|
|
|
// Used to sign a final closed ledger after reprocessing
|
|
message TMValidation
|
|
{
|
|
// The serialized validation
|
|
required bytes validation = 1;
|
|
|
|
// node vouches signature is correct
|
|
optional bool checkedSignature = 2 [deprecated = true];
|
|
|
|
// Number of hops traveled
|
|
optional uint32 hops = 3 [deprecated = true];
|
|
}
|
|
|
|
// An array of Endpoint messages
|
|
message TMEndpoints
|
|
{
|
|
// Previously used - don't reuse.
|
|
reserved 2;
|
|
|
|
// This field is used to allow the TMEndpoints message format to be
|
|
// modified as necessary in the future.
|
|
required uint32 version = 1;
|
|
|
|
// An update to the Endpoint type that uses a string
|
|
// to represent endpoints, thus allowing ipv6 or ipv4 addresses
|
|
message TMEndpointv2
|
|
{
|
|
required string endpoint = 1;
|
|
required uint32 hops = 2;
|
|
}
|
|
repeated TMEndpointv2 endpoints_v2 = 3;
|
|
};
|
|
|
|
message TMIndexedObject
|
|
{
|
|
optional bytes hash = 1;
|
|
optional bytes nodeID = 2;
|
|
optional bytes index = 3;
|
|
optional bytes data = 4;
|
|
optional uint32 ledgerSeq = 5;
|
|
}
|
|
|
|
message TMGetObjectByHash
|
|
{
|
|
enum ObjectType {
|
|
otUNKNOWN = 0;
|
|
otLEDGER = 1;
|
|
otTRANSACTION = 2;
|
|
otTRANSACTION_NODE = 3;
|
|
otSTATE_NODE = 4;
|
|
otCAS_OBJECT = 5;
|
|
otFETCH_PACK = 6;
|
|
otTRANSACTIONS = 7;
|
|
}
|
|
|
|
required ObjectType type = 1;
|
|
required bool query = 2; // is this a query or a reply?
|
|
optional uint32 seq = 3; // used to match replies to queries
|
|
optional bytes ledgerHash = 4; // the hash of the ledger these queries are for
|
|
optional bool fat = 5; // return related nodes
|
|
repeated TMIndexedObject objects = 6; // the specific objects requested
|
|
}
|
|
|
|
|
|
message TMLedgerNode
|
|
{
|
|
required bytes nodedata = 1;
|
|
optional bytes nodeid = 2; // missing for ledger base data
|
|
}
|
|
|
|
enum TMLedgerInfoType
|
|
{
|
|
liBASE = 0; // basic ledger info
|
|
liTX_NODE = 1; // transaction node
|
|
liAS_NODE = 2; // account state node
|
|
liTS_CANDIDATE = 3; // candidate transaction set
|
|
}
|
|
|
|
enum TMLedgerType
|
|
{
|
|
ltACCEPTED = 0;
|
|
ltCURRENT = 1; // no longer supported
|
|
ltCLOSED = 2;
|
|
}
|
|
|
|
enum TMQueryType
|
|
{
|
|
qtINDIRECT = 0;
|
|
}
|
|
|
|
message TMGetLedger
|
|
{
|
|
required TMLedgerInfoType itype = 1;
|
|
optional TMLedgerType ltype = 2;
|
|
optional bytes ledgerHash = 3; // Can also be the transaction set hash if liTS_CANDIDATE
|
|
optional uint32 ledgerSeq = 4;
|
|
repeated bytes nodeIDs = 5;
|
|
optional uint64 requestCookie = 6;
|
|
optional TMQueryType queryType = 7;
|
|
optional uint32 queryDepth = 8; // How deep to go, number of extra levels
|
|
}
|
|
|
|
enum TMReplyError
|
|
{
|
|
reNO_LEDGER = 1; // We don't have the ledger you are asking about
|
|
reNO_NODE = 2; // We don't have any of the nodes you are asking for
|
|
reBAD_REQUEST = 3; // The request is wrong, e.g. wrong format
|
|
}
|
|
|
|
message TMLedgerData
|
|
{
|
|
required bytes ledgerHash = 1;
|
|
required uint32 ledgerSeq = 2;
|
|
required TMLedgerInfoType type = 3;
|
|
repeated TMLedgerNode nodes = 4;
|
|
optional uint32 requestCookie = 5;
|
|
optional TMReplyError error = 6;
|
|
}
|
|
|
|
message TMPing
|
|
{
|
|
enum pingType {
|
|
ptPING = 0; // we want a reply
|
|
ptPONG = 1; // this is a reply
|
|
}
|
|
required pingType type = 1;
|
|
optional uint32 seq = 2; // detect stale replies, ensure other side is reading
|
|
optional uint64 pingTime = 3; // know when we think we sent the ping
|
|
optional uint64 netTime = 4;
|
|
}
|
|
|
|
message TMSquelch
|
|
{
|
|
required bool squelch = 1; // squelch if true, otherwise unsquelch
|
|
required bytes validatorPubKey = 2; // validator's public key
|
|
optional uint32 squelchDuration = 3; // squelch duration in seconds
|
|
}
|
|
|
|
enum TMLedgerMapType
|
|
{
|
|
lmTRANASCTION = 1; // transaction map
|
|
lmACCOUNT_STATE = 2; // account state map
|
|
}
|
|
|
|
message TMProofPathRequest
|
|
{
|
|
required bytes key = 1;
|
|
required bytes ledgerHash = 2;
|
|
required TMLedgerMapType type = 3;
|
|
}
|
|
|
|
message TMProofPathResponse
|
|
{
|
|
required bytes key = 1;
|
|
required bytes ledgerHash = 2;
|
|
required TMLedgerMapType type = 3;
|
|
optional bytes ledgerHeader = 4;
|
|
repeated bytes path = 5;
|
|
optional TMReplyError error = 6;
|
|
}
|
|
|
|
message TMReplayDeltaRequest
|
|
{
|
|
required bytes ledgerHash = 1;
|
|
}
|
|
|
|
message TMReplayDeltaResponse
|
|
{
|
|
required bytes ledgerHash = 1;
|
|
optional bytes ledgerHeader = 2;
|
|
repeated bytes transaction = 3;
|
|
optional TMReplyError error = 4;
|
|
}
|
|
|
|
message TMHaveTransactions
|
|
{
|
|
repeated bytes hashes = 1;
|
|
}
|
|
|