mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-05-31 11:41:21 +00:00
* Implement ConnectionReuse correctly * Add some tests and fixes * Remove useless boolean in active_connections * Correctly run tests * Optimize the processing * Next incoming is now in two steps * Remove log * Fix dialing a node even if we already have a connection * Add a proper PeerId to Peerstore * Turn identify into a transport layer * Expose the dialed multiaddress * Add identified nodes to the peerstore * Allow configuring the TTL of the addresses * Split identify in two modules * Some comments and tweaks * Run rustfmt * Add test and bugfix * Fix wrong address reported when dialing * Switch to futures-mutex of paritytech (#113) * Remove public key system from peerstore (#118) * Remove public key system from peerstore * Add comment about PartialOrd on PeerInfo * Add a nat_traversal() method to Transport (#110) * Add a nat_traversal() method to Transport * Fix compilation * Implement floodsub * Work on a floodsub example * Finish example * More work * More work * More work * More work * More work * Rustfmt * Some style improvements * Store the whole Topic instead of just the hash * Add a bunch of TODOs * Fix introduced warning * Fix style * Fix concerns * Only store the hash of the values in the received messages * Fix style * Improve comments
48 lines
1.2 KiB
Protocol Buffer
48 lines
1.2 KiB
Protocol Buffer
package floodsub.pb;
|
|
|
|
message RPC {
|
|
repeated SubOpts subscriptions = 1;
|
|
repeated Message publish = 2;
|
|
|
|
message SubOpts {
|
|
optional bool subscribe = 1; // subscribe or unsubcribe
|
|
optional string topicid = 2;
|
|
}
|
|
}
|
|
|
|
message Message {
|
|
optional bytes from = 1;
|
|
optional bytes data = 2;
|
|
optional bytes seqno = 3;
|
|
repeated string topicIDs = 4;
|
|
}
|
|
|
|
// topicID = hash(topicDescriptor); (not the topic.name)
|
|
message TopicDescriptor {
|
|
optional string name = 1;
|
|
optional AuthOpts auth = 2;
|
|
optional EncOpts enc = 3;
|
|
|
|
message AuthOpts {
|
|
optional AuthMode mode = 1;
|
|
repeated bytes keys = 2; // root keys to trust
|
|
|
|
enum AuthMode {
|
|
NONE = 0; // no authentication, anyone can publish
|
|
KEY = 1; // only messages signed by keys in the topic descriptor are accepted
|
|
WOT = 2; // web of trust, certificates can allow publisher set to grow
|
|
}
|
|
}
|
|
|
|
message EncOpts {
|
|
optional EncMode mode = 1;
|
|
repeated bytes keyHashes = 2; // the hashes of the shared keys used (salted)
|
|
|
|
enum EncMode {
|
|
NONE = 0; // no encryption, anyone can read
|
|
SHAREDKEY = 1; // messages are encrypted with shared key
|
|
WOT = 2; // web of trust, certificates can allow publisher set to grow
|
|
}
|
|
}
|
|
}
|