From faf860c471f386a614a6d0456206ed3b27b4252e Mon Sep 17 00:00:00 2001 From: ohmhong Date: Mon, 2 Sep 2024 21:19:15 +0800 Subject: [PATCH] Add network note. --- BTC/network.md | 31 +++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 BTC/network.md diff --git a/BTC/network.md b/BTC/network.md new file mode 100644 index 0000000..a3376f6 --- /dev/null +++ b/BTC/network.md @@ -0,0 +1,31 @@ +# basic layer + +Application Layer: BitCoin Block chain + +network layer: P2P Overlay network + +# basic process + +1. If app want to join the BitCoin Network, it should have a seed node address firstly. +2. After the app have connected the seed node, and seed node would send the other nodes address that it has as response. The protocol used between nodes is TCP that contribute to go through the firewall. +3. If app quits, more work don't need to do, and other app would remove it after a period of timeout. + +# Design Principle + +Simple, robust, but not efficient. + +Nodes maintain the set of neighbour nodes. The method of the message transport is flooding. + +Node maintain a set of trade that wait to write into blockchain, the node add the trade to the set that recieved at first time, then send it to the neighbour nodes. The trade should be valid, it means legal signature and so on. + +## race condition + +confict trade, A->B or A->C. Either A->B prior to A->C or A->C prior to A->B is possible. If the trade have writed to blockchian, the trade would remove from the set. If the conficted trade have writed to blockchian, The trae would also remove from the set. + +## max block size + +Bandwidth is bottlebeck. Max block size is limited up to 1MB. + +## best effort + +Not all nodes recieve the trade, and the order of trade that they recieved is not same. The latency maybe very long at some times. Some nodes don't abide the rule of BitCoin protocol, they may not send the trade, and may send the illegal trade. diff --git a/README.md b/README.md index 35a5e90..263132a 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ This course focuses on the fundamental concepts and implementation principles of 3. **Data Structures** 4. **Consensus Protocols** 5. **Implementation** -6. **Network** +6. **[Network](./BTC/network.md)** 7. **Mining Difficulty** 8. **Mining** 9. **Scripting**