erigon-pulse/interfaces/p2psentry/sentry.proto
ledgerwatch 6e56097056
Bring in refactored p2p sentry interface and adjust downloader for it (#1497)
* Initial commit

* Add sentry gRPC interface

* p2psentry directory

* Update README.md

* Update README.md

* Update README.md

* Add go package

* Correct syntax

* add external downloader interface (#2)

* Add txpool (#3)

* Add private API (#4)

* Invert control.proto, add PeerMinBlock, Separare incoming Tx message into a separate stream (#5)

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>

* Use new p2psentry interface

* Remove

* Fix lint

* Fix lint

* Separate upload messages into its own stream (#6)

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>

* Add header upload

* Remove

* Add upload of block headers

* Add block bodies upload

* Fix lint

* Bugfix for blockBodies

* Fix for body upload logging

* Print peerId for GetBlockHeaders

* Invoke block hashes stage to enable block body upload

* Fix test

* Fix stuck bodies download

Co-authored-by: Artem Vorotnikov <artem@vorotnikov.me>
Co-authored-by: b00ris <b00ris@mail.ru>
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2021-02-15 18:54:45 +00:00

80 lines
1.9 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/empty.proto";
package sentry;
option go_package = "./sentry;sentry";
enum MessageId {
GetBlockHeaders = 0; GetBlockBodies = 1; GetNodeData = 2;
NewBlockHashes = 3; BlockHeaders = 4; BlockBodies = 5; NewBlock = 6;
NodeData = 7;
}
message OutboundMessageData {
MessageId id = 1;
bytes data = 2;
}
message SendMessageByMinBlockRequest {
OutboundMessageData data = 1;
uint64 min_block = 2;
}
message SendMessageByIdRequest {
OutboundMessageData data = 1;
bytes peer_id = 2;
}
message SendMessageToRandomPeersRequest {
OutboundMessageData data = 1;
uint64 max_peers = 2;
}
message SentPeers { repeated bytes peers = 1; }
enum PenaltyKind { Kick = 0; }
message PenalizePeerRequest {
bytes peer_id = 1;
PenaltyKind penalty = 2;
}
message PeerMinBlockRequest {
bytes peer_id = 1;
uint64 min_block = 2;
}
message InboundMessage {
MessageId id = 1;
bytes data = 2;
bytes peer_id = 3;
}
message Forks {
bytes genesis = 1;
repeated uint64 forks = 2;
}
message StatusData {
uint64 network_id = 1;
bytes total_difficulty = 2;
bytes best_hash = 3;
Forks fork_data = 4;
}
service Sentry {
rpc PenalizePeer(PenalizePeerRequest) returns(google.protobuf.Empty);
rpc PeerMinBlock(PeerMinBlockRequest) returns(google.protobuf.Empty);
rpc SendMessageByMinBlock(SendMessageByMinBlockRequest) returns(SentPeers);
rpc SendMessageById(SendMessageByIdRequest) returns(SentPeers);
rpc SendMessageToRandomPeers(SendMessageToRandomPeersRequest)
returns(SentPeers);
rpc SendMessageToAll(OutboundMessageData) returns(SentPeers);
rpc SetStatus(StatusData) returns (google.protobuf.Empty);
rpc ReceiveMessages(google.protobuf.Empty) returns (stream InboundMessage);
rpc ReceiveUploadMessages(google.protobuf.Empty) returns (stream InboundMessage);
rpc ReceiveTxMessages(google.protobuf.Empty) returns (stream InboundMessage);
}