Proto commits in libp2p/go-libp2p-pubsub

These 53 commits are when the Protocol Buffers files have changed:

Commit:16e3a05
Author:Marco Munizaga
Committer:GitHub

Migrate to Google's protobuf library (#706)

Commit:60c536b
Author:Marco Munizaga
Committer:Marco Munizaga

Migrate to google.golang.org/protobuf

Commit:5cde33c
Author:Marco Munizaga
Committer:Marco Munizaga

rename {Add/Remove}Peer to On{New/Closed}OutboundStream Makes the name reflect the thing that this lifecycle is attached to. AddPeer/RemovePeer makes it sound as if the lifecycle is attached to the underlying peer connection. That's not the case. The lifecycle here is only attached to the outbound stream.

Commit:a918def
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add `supportsPartial` field in SubOpts

Commit:70c3bf9
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:14b2b23
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add `supportsPartial` field in SubOpts

Commit:11ac6f5
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add `supportsPartial` field in SubOpts

Commit:01f88a7
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:e56f00e
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add partial flag to SubOpt

Commit:195c009
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add partial flag to SubOpt

Commit:7fb78ba
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add partial flag to SubOpt

Commit:a510839
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:ca48a07
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add partial flag to SubOpt

Commit:ad0194e
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:e9138bf
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:5dc92f5
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add extensions protobufs

The documentation is generated from this commit.

Commit:a9397d2
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:dfa978d
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add extensions protobufs

The documentation is generated from this commit.

Commit:9fb8393
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:5c907ae
Author:Marco Munizaga
Committer:Marco Munizaga

pb: add extensions protobufs

The documentation is generated from this commit.

Commit:a5f3b48
Author:Marco Munizaga
Committer:Marco Munizaga

update protobufs for partial messages

Commit:4677463
Author:Marco Munizaga

pb: add extensions protobufs

The documentation is generated from this commit.

Commit:1527275
Author:Marco Munizaga
Committer:Marco Munizaga

feat: PartialMessages implementation

Commit:17ace34
Author:Marco Munizaga
Committer:Marco Munizaga

Add PartialMessage protobufs

Commit:6a872d8
Author:Marco Munizaga
Committer:Marco Munizaga

Implement TestExtension

Commit:11ddef2
Author:Marco Munizaga
Committer:Marco Munizaga

Implement Extensions Control Message

Commit:b9a9656
Author:Marco Munizaga

Add RPC receive time measurement

Commit:05e8ec8
Author:Marco Munizaga

Add message size field to trace message meta The commit adds a new `messageSize` field to capture message payload size in bytes for RPC trace events.

Commit:d6644dc
Author:Marco Munizaga

Update proto and generated file

Commit:b421b3a
Author:Pop Chunhapanya
Committer:GitHub

GossipSub v1.2: IDONTWANT control message and priority queue. (#553) ## GossipSub v1.2 implementation Specification: libp2p/specs#548 ### Work Summary Sending IDONTWANT Implement a smart queue Add priorities to the smart queue Put IDONTWANT packets into the smart priority queue as soon as the node gets the packets Handling IDONTWANT Use a map to remember the message ids whose IDONTWANT packets have been received Implement max_idontwant_messages (ignore the IDONWANT packets if the max is reached) Clear the message IDs from the cache after 3 heartbeats Hash the message IDs before putting them into the cache. More requested features Add a feature test to not send IDONTWANT if the other side doesnt support it ### Commit Summary * Replace sending channel with the smart rpcQueue Since we want to implement a priority queue later, we need to replace the normal sending channels with the new smart structures first. * Implement UrgentPush in the smart rpcQueue UrgentPush allows you to push an rpc packet to the front of the queue so that it will be popped out fast. * Add IDONTWANT to rpc.proto and trace.proto * Send IDONTWANT right before validation step Most importantly, this commit adds a new method called PreValidation to the interface PubSubRouter, which will be called right before validating the gossipsub message. In GossipSubRouter, PreValidation will send the IDONTWANT controll messages to all the mesh peers of the topics of the received messages. * Test GossipSub IDONWANT sending * Send IDONWANT only for large messages * Handle IDONTWANT control messages When receiving IDONTWANTs, the host should remember the message ids contained in IDONTWANTs using a hash map. When receiving messages with those ids, it shouldn't forward them to the peers who already sent the IDONTWANTs. When the maximum number of IDONTWANTs is reached for any particular peer, the host should ignore any excessive IDONTWANTs from that peer. * Clear expired message IDs from the IDONTWANT cache If the messages IDs received from IDONTWANTs are older than 3 heartbeats, they should be removed from the IDONTWANT cache. * Keep the hashes of IDONTWANT message ids instead Rather than keeping the raw message ids, keep their hashes instead to save memory and protect again memory DoS attacks. * Increase GossipSubMaxIHaveMessages to 1000 * fixup! Clear expired message IDs from the IDONTWANT cache * Not send IDONTWANT if the receiver doesn't support * fixup! Replace sending channel with the smart rpcQueue * Not use pointers in rpcQueue * Simply rcpQueue by using only one mutex * Check ctx error in rpc sending worker Co-authored-by: Steven Allen <steven@stebalien.com> * fixup! Simply rcpQueue by using only one mutex * fixup! Keep the hashes of IDONTWANT message ids instead * Use AfterFunc instead implementing our own * Fix misc lint errors * fixup! Fix misc lint errors * Revert "Increase GossipSubMaxIHaveMessages to 1000" This reverts commit 6fabcdd068a5f5238c5280a3460af9c3998418ec. * Increase GossipSubMaxIDontWantMessages to 1000 * fixup! Handle IDONTWANT control messages * Skip TestGossipsubConnTagMessageDeliveries * Skip FuzzAppendOrMergeRPC * Revert "Skip FuzzAppendOrMergeRPC" This reverts commit f141e13234de0960d139339acb636a1afea9e219. * fixup! Send IDONWANT only for large messages * fixup! fixup! Keep the hashes of IDONTWANT message ids instead * fixup! Implement UrgentPush in the smart rpcQueue * fixup! Use AfterFunc instead implementing our own --------- Co-authored-by: Steven Allen <steven@stebalien.com>

Commit:6195a09
Author:Steven Allen
Committer:GitHub

fix: remove deprecated and never used topic descriptors (#423) fixes #264

Commit:4f972a1
Author:vyzo
Committer:vyzo

add receivedFrom field in delivery trace

Commit:d6c20b5
Author:vyzo
Committer:vyzo

remove multi-topic message support

Commit:fa4d16e
Author:vyzo
Committer:vyzo

add topics to Reject/Duplicate/Deliver events

Commit:4ccb638
Author:RĂ¼diger Klaehn
Committer:David Dias

Add warning about messageIDs See https://github.com/libp2p/specs/pull/285 and https://github.com/libp2p/go-libp2p-pubsub/issues/361

Commit:dd06979
Author:vyzo
Committer:vyzo

add backoff to PRUNE messages

Commit:919d81f
Author:Yusef Napora
Committer:vyzo

track changes to peer records in -core

Commit:2e7cdeb
Author:vyzo
Committer:vyzo

trace peer exchange

Commit:abab666
Author:vyzo
Committer:vyzo

extend ControlPrune with peer exchange information

Commit:db8e219
Author:vyzo

remove CompressedTraceEventBatch from trace protobuf

Commit:3f30acd
Author:vyzo
Committer:vyzo

track topics in message tracing

Commit:0a25f24
Author:vyzo
Committer:vyzo

trace event protobuf

Commit:040cabe
Author:vyzo
Committer:vyzo

some minor fixes in trace pb

Commit:57ea27e
Author:vyzo
Committer:vyzo

remote tracer

Commit:bd1a463
Author:Steven Allen
Committer:Steven Allen

move to go-libp2p-pubsub Updates for move from go-floodsub to go-libp2p-pubsub. fixes https://github.com/libp2p/go-libp2p-pubsub/issues/4

Commit:a456e56
Author:James Ray
Committer:GitHub

Remove // topicID = hash(topicDescriptor); (not the topic.name)

Commit:d2f7a66
Author:vyzo
Committer:vyzo

add signature and key fields to Message

Commit:7869425
Author:Steven Allen

fix indent in protobuf

Commit:b565e59
Author:Preston Van Loon
Committer:GitHub

Use proto2 syntax

Commit:dd50a31
Author:vyzo
Committer:Steven Allen

add gossipsub control messages

Commit:25ef943
Author:Jeromy

change from field to bytes to avoid json marshalling corruption

Commit:f3f2cb2
Author:Jeromy

use timecache

Commit:6ed3d54
Author:Jeromy

switch over to protobuf rpc