diff --git a/README.md b/README.md index 398ccfb6..822df3e0 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ TenderMint - proof of concept + +* **[peer](https://github.com/tendermint/tendermint/blob/master/peer):** P2P networking stack. Designed to be extensible. +* **[merkle](https://github.com/tendermint/tendermint/blob/master/merkle):** Immutable Persistent Merkle-ized AVL+ Tree, used primarily for keeping track of mutable state like account balances. +* **[crypto](https://github.com/tendermint/tendermint/blob/master/crypto):** Includes cgo bindings of ed25519. + +### Status + +* Still implementing peer/* +* Ed25519 bindings *complete* +* merkle/* *complete* diff --git a/peer/README.md b/peer/README.md index 766b5c5c..ee6da167 100644 --- a/peer/README.md +++ b/peer/README.md @@ -1,38 +1,116 @@ -## Channel "" +## Channels -Filter: None +Each peer connection is multiplexed into channels. Each channel can optionally have an associated filter which determines whether the peer already knows of the message. The system is designed to be easily extensible for various applications. +
Channel | +"" | +
Filter | +None Messages in this channel is not filtered. |
+
Messages | +
+
|
+
Channel | +"block" | +
Filter | +
+ Custom + 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 this filter 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'. + |
+
Messages | +
+
|
+
Channel | +"mempool" | +
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 + |
+
Messages | +
+
|
+
Channel | +"consensus" | +
Filter | +
+ Bitarray filter + Each validator has a predetermined index in teh bitarray + Refreshes every new consensus round + |
+
Messages | +
+
|
+