erigon-pulse/interfaces/txpool/txpool.proto
Alex Sharov 625c9f5385
Typed sender (#435)
* save

* Squashed 'interfaces/' content from commit 477d121a

git-subtree-dir: interfaces
git-subtree-split: 477d121aafa9566e1f2f7d478852d800d3822bc5

* save
2022-04-28 15:35:08 +07:00

93 lines
2.5 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/empty.proto";
import "types/types.proto";
package txpool;
option go_package = "./txpool;txpool";
message TxHashes { repeated types.H256 hashes = 1; }
message AddRequest { repeated bytes rlpTxs = 1; }
enum ImportResult {
SUCCESS = 0;
ALREADY_EXISTS = 1;
FEE_TOO_LOW = 2;
STALE = 3;
INVALID = 4;
INTERNAL_ERROR = 5;
}
message AddReply { repeated ImportResult imported = 1; repeated string errors = 2; }
message TransactionsRequest { repeated types.H256 hashes = 1; }
message TransactionsReply { repeated bytes rlpTxs = 1; }
message OnAddRequest {}
message OnAddReply {
repeated bytes rplTxs = 1;
}
message AllRequest {}
message AllReply {
enum TxnType {
PENDING = 0; // All currently processable transactions
QUEUED = 1; // Queued but non-processable transactions
BASE_FEE = 2; // BaseFee not enough baseFee non-processable transactions
}
message Tx {
TxnType txnType = 1;
types.H160 sender = 2;
bytes rlpTx = 3;
}
repeated Tx txs = 1;
}
message PendingReply {
message Tx {
types.H160 sender = 1;
bytes rlpTx = 2;
bool isLocal = 3;
}
repeated Tx txs = 1;
}
message StatusRequest {}
message StatusReply {
uint32 pendingCount = 1;
uint32 queuedCount = 2;
uint32 baseFeeCount = 3;
}
message NonceRequest {
types.H160 address = 1;
}
message NonceReply {
bool found = 1;
uint64 nonce = 2;
}
service Txpool {
// Version returns the service version number
rpc Version(google.protobuf.Empty) returns (types.VersionReply);
// preserves incoming order, changes amount, unknown hashes will be omitted
rpc FindUnknown(TxHashes) returns (TxHashes);
// Expecting signed transactions. Preserves incoming order and amount
// Adding txs as local (use P2P to add remote txs)
rpc Add(AddRequest) returns (AddReply);
// preserves incoming order and amount, if some transaction doesn't exists in pool - returns nil in this slot
rpc Transactions(TransactionsRequest) returns (TransactionsReply);
// returns all transactions from tx pool
rpc All(AllRequest) returns (AllReply);
// Returns all pending (processable) transactions, in ready-for-mining order
rpc Pending(google.protobuf.Empty) returns (PendingReply);
// subscribe to new transactions add event
rpc OnAdd(OnAddRequest) returns (stream OnAddReply);
// returns high level status
rpc Status(StatusRequest) returns (StatusReply);
// returns nonce for given account
rpc Nonce(NonceRequest) returns (NonceReply);
}