protos/mempool.proto in libra_client-0.1.7 vs protos/mempool.proto in libra_client-0.2.1
- old
+ new
@@ -1,18 +1,105 @@
// Copyright (c) The Libra Core Contributors
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
-package network;
+package mempool;
import "transaction.proto";
+import "mempool_status.proto";
-/* MempoolSyncMsg represents the messages exchanging between validators to keep
- * transactions in sync. The proto definition provides the spec on the wire so
- * that others can implement their mempool service in various languages.
- * Mempool service is responsible for sending and receiving MempoolSyncMsg
- * across validators. */
-message MempoolSyncMsg {
- bytes peer_id = 1;
- repeated types.SignedTransaction transactions = 2;
+// -----------------------------------------------------------------------------
+// ---------------- Mempool Service Definition
+// -----------------------------------------------------------------------------
+service Mempool {
+ // Adds a new transaction to the mempool with validation against existing
+ // transactions in the mempool. Note that this function performs additional
+ // validation that AC is unable to perform. (because AC knows only about a
+ // single transaction, but mempool potentially knows about multiple pending
+ // transactions)
+ rpc AddTransactionWithValidation(AddTransactionWithValidationRequest)
+ returns (AddTransactionWithValidationResponse) {}
+
+ // Fetch ordered block of transactions
+ rpc GetBlock(GetBlockRequest) returns (GetBlockResponse) {}
+
+ // Remove committed transactions from Mempool
+ rpc CommitTransactions(CommitTransactionsRequest)
+ returns (CommitTransactionsResponse) {}
+
+ // Check the health of mempool
+ rpc HealthCheck(HealthCheckRequest)
+ returns (HealthCheckResponse) {}
+}
+
+// -----------------------------------------------------------------------------
+// ---------------- AddTransactionWithValidation
+// -----------------------------------------------------------------------------
+
+message AddTransactionWithValidationRequest {
+ // Transaction from a wallet
+ types.SignedTransaction signed_txn = 1;
+ // Max amount of gas required to execute the transaction
+ // Without running the program, it is very difficult to determine this number,
+ // so we use the max gas specified by the signed transaction.
+ // This field is still included separately from the signed transaction so that
+ // if we have a better methodology in the future, we can more accurately
+ // specify the max gas.
+ uint64 max_gas_cost = 2;
+ // Latest sequence number of the involved account from state db.
+ uint64 latest_sequence_number = 3;
+ // Latest account balance of the involved account from state db.
+ uint64 account_balance = 4;
+}
+
+message AddTransactionWithValidationResponse {
+ // The ledger version at the time of the transaction submitted. The submitted
+ // transaction will have version bigger than this 'current_version'
+ uint64 current_version = 1;
+ // The result of the transaction submission
+ MempoolAddTransactionStatus status = 2;
+}
+
+// -----------------------------------------------------------------------------
+// ---------------- GetBlock
+// -----------------------------------------------------------------------------
+message GetBlockRequest {
+ uint64 max_block_size = 1;
+ repeated TransactionExclusion transactions = 2;
+}
+
+message GetBlockResponse { types.SignedTransactionsBlock block = 1; }
+
+message TransactionExclusion {
+ bytes sender = 1;
+ uint64 sequence_number = 2;
+}
+
+// -----------------------------------------------------------------------------
+// ---------------- CommitTransactions
+// -----------------------------------------------------------------------------
+message CommitTransactionsRequest {
+ repeated CommittedTransaction transactions = 1;
+ // agreed monotonic timestamp microseconds since the epoch for a committed block
+ // used by Mempool to GC expired transactions
+ uint64 block_timestamp_usecs = 2;
+}
+
+message CommitTransactionsResponse {}
+
+message CommittedTransaction {
+ bytes sender = 1;
+ uint64 sequence_number = 2;
+ bool is_rejected = 3;
+}
+
+// -----------------------------------------------------------------------------
+// ---------------- HealthCheck
+// -----------------------------------------------------------------------------
+message HealthCheckRequest {
+}
+
+message HealthCheckResponse {
+ // Indicate whether Mempool is in healthy condition.
+ bool is_healthy = 1;
}