公开课地址:https://www.coursera.org/learn/cryptocurrency/home/welcome
3.5 比特币网络
bitcoin p2p network
- ad-hoc协议(TCP 8333)
- ad-hoc网络,随机拓扑
- 节点对等
- 新节点随时加入
- 3小时遗忘失去连接的节点
如何加入网络?详细讲解
seed node
transaction propogation (flooding)
详细讲解如何传播交易
gossip protocol
一个节点判断是否要relay一个交易消息的标准:
1- txn is valid with current blockchain
2- script matches whitelist(避免异常交易)
3- 之前没见过(避免死循环)
4- 不能与其他交易冲突(避免双花)
2~4都只是sanity checks,也就是说,节点并不一定都会执行这些规则。
不同节点的txn pool可能不一致。 txn pool / block may differ!
race condition:
- 默认行为:接受首先听到的消息
- 网络位置有关
- 矿工可能实现其他逻辑!
block propogation
- block达成hash计算目标
- block具有所有有效交易(运行所有脚本,即使不relay)
- block建立在最长链上(避免分叉)
block传播的时间统计分析
75%分位点超过30秒钟
网络有多大?
- 无法度量
- 1M IP/month
- only 5-10k full nodes(持久连接 & 完全验证)
完全验证节点
- 持久连接
- 包含完整交易记录数据
- 收听和传播所有的节点和交易
比特币完整区块链大小统计图线
UTXO多少,多大,可以完全放在内存里(提高速度)
Thin/SPV节点
- trust full validating nodes
1000x cost savings!