You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Jae Kwon dca79ab5c1 bug fixes in binary 11 years ago
..
upnp package rename peer -> p2p 11 years ago
README.md package rename peer -> p2p 11 years ago
addrbook.go package rename peer -> p2p 11 years ago
addrbook_test.go package rename peer -> p2p 11 years ago
connection.go package rename peer -> p2p 11 years ago
listener.go PeerSet is for fast iteration of peers 11 years ago
log.go bug fixes in binary 11 years ago
msg.go package rename peer -> p2p 11 years ago
netaddress.go package rename peer -> p2p 11 years ago
peer.go PeerSet is for fast iteration of peers 11 years ago
peer_set.go fixed a bug 11 years ago
pex.go package rename peer -> p2p 11 years ago
switch.go PeerSet is for fast iteration of peers 11 years ago
switch_test.go PeerSet is for fast iteration of peers 11 years ago
util.go package rename peer -> p2p 11 years ago

README.md

Channels

Each peer connection is multiplexed into channels.


PEX channel

The PEX channel is used to exchange peer addresses.

Channel "PEX"
Messages
  • pexRequestMsg
  • pexResponseMsg

Block channel

The block channel is used to propagate block or header information to new peers or peers catching up with the blockchain.

Channel "block"
Messages
  • RequestMsg
  • BlockMsg
  • HeaderMsg
Notes Nodes should only advertise having a header or block at height 'h' if it also has all the headers or blocks less than 'h'. Thus for each peer we need only keep track of two integers -- one for the most recent header height 'h_h' and one for the most recent block height 'h_b', where 'h_b' <= 'h_h'.

Mempool channel

The mempool channel is used for broadcasting new transactions that haven't yet entered the blockchain. It uses a lossy bloom filter on either end, but with sufficient fanout and filter nonce updates every new block, all transactions will eventually reach every node.

Channel "mempool"
Messages
  • MempoolTxMsg
Notes Instead of keeping a perfect inventory of what peers have, we use a lossy filter.
Bloom filter (n:10k, p:0.02 -> k:6, m:10KB)
Each peer's filter has a random nonce that scrambles the message hashes.
The filter & nonce refreshes every new block.

Consensus channel

The consensus channel broadcasts all information used in the rounds of the Tendermint consensus mechanism.

Channel "consensus"
Messages
  • ProposalMsg
  • VoteMsg
  • NewBlockMsg
Notes How do optimize/balance propagation speed & bandwidth utilization?

Resources