This is the 2nd installment for the AccountsDb replication. Summary of Changes The basic google protocol buffer protocol for replicating updated slots and accounts. tonic/tokio is used for transporting the messages. The basic framework of the client and server for replicating slots and accounts -- the persisting of accounts in the replica-side will be done at the next PR -- right now -- the accounts are streamed to the replica-node and dumped. Replication for information about Bank is also not done in this PR -- to be addressed in the next PR to limit the change size. Functionality used by both the client and server side are encapsulated in the replica-lib crate. There is no impact to the existing validator by default. Tests: Observe the confirmed slots replicated to the replica-node. Observe the accounts for the confirmed slot are received at the replica-node side.
45 lines
932 B
Protocol Buffer
45 lines
932 B
Protocol Buffer
|
|
// version of prorocol buffer used
|
|
syntax = "proto3";
|
|
|
|
package accountsdb_repl;
|
|
|
|
message ReplicaSlotConfirmationRequest {
|
|
uint64 last_replicated_slot = 1;
|
|
}
|
|
|
|
message ReplicaSlotConfirmationResponse {
|
|
repeated uint64 updated_slots = 1;
|
|
}
|
|
|
|
message ReplicaAccountsRequest {
|
|
uint64 slot = 1;
|
|
}
|
|
|
|
message ReplicaAccountMeta {
|
|
bytes Pubkey = 1;
|
|
uint64 lamports = 2;
|
|
bytes owner = 3;
|
|
bool executable = 4;
|
|
uint64 rent_epoch = 5;
|
|
}
|
|
|
|
message ReplicaAccountData {
|
|
bytes data = 1;
|
|
}
|
|
|
|
message ReplicaAccountInfo {
|
|
ReplicaAccountMeta account_meta = 1;
|
|
bytes hash = 2;
|
|
ReplicaAccountData data = 3;
|
|
}
|
|
|
|
message ReplicaAccountsResponse {
|
|
repeated ReplicaAccountInfo accounts = 1;
|
|
}
|
|
|
|
service AccountsDbRepl {
|
|
rpc get_confirmed_slots(ReplicaSlotConfirmationRequest) returns (ReplicaSlotConfirmationResponse);
|
|
rpc get_slot_accounts(ReplicaAccountsRequest) returns (ReplicaAccountsResponse);
|
|
}
|