网络
用户将交易发布到比特币网络上,节点收到交易后打包到区块中,然后将区块发布到比特币网络上。
那么新发布的交易和区块在比特币网络上是如何传播的?
一、网络结构
比特币工作于网络应用层,其底层(网络层)是一个 P2P(Peer-to-Peer) Overlay network
(P2P 覆盖网络)。 比特币系统中所有节点完全平等,不像一些其他网络存在超级节点(super node
)。
1.1 结构组成
- 网络节点(Node):比特币网络中的节点是参与网络通信和数据共享的基本单位,节点可以是全节点或轻节点。
- 网络拓扑(
Network Topology
):比特币网络是一个对等网络(Peer-to-Peer Network),节点之间直接相互通信。网络拓扑结构通常是一个全连接图,每个节点都与其他所有节点相连。 - 网络协议(Network Protocol):比特币网络使用
TCP/IP
协议进行通信。节点之间的通信采用了TCP
协议,便于穿透防火墙。当节点离开时,只需要自行退出即可,其他节点在一定时间后仍然没有收到该节点消息,便会将其删掉。
1.2 设计原则
简单、鲁棒(最坏情况下能达到最优状况,即健壮性)而非高效
某个节点在收到一条消息会将其发送给所有邻居节点并标记,下次再收到便不会再发送该消息。邻居节点选取随机,未考虑网络底层拓扑结构,也与现实世界物理地址无关。该网络具有极强鲁棒性,但牺牲了网络效率。
1.3 交易传播过程
- 比特币系统中,每个节点要维护一个等待上链的交易集合。
- 第一次收到交易,若是合法交易,则将其加入该交易集合并转发给邻居节点,以后再收到该交易就不再转发(避免网络上交易无线传输)。
- 假如网络中存在两个冲突交易,如交易 1:A->B,交易 2:A->C(假设花费的同一笔钱)。具体接收哪个取决于节点先接收到哪个交易,之后收到另一个交易会将其放弃。
- 假如某个节点先听到 A->B,但又听到 A->C 已经上链,则此时 A->B 为非法交易,所以要再等待上链交易集合中删除 A->B
- 新发布区块在网络中传播方式与新发布交易传播方式类似,每个节点除检查该区块内容是否合法,还要检查是否位于最长合法链上。区块越大,则网络上传输越慢。BTC 协议对于- 区块大小限制为不大于 1M 大小。
二、闪电网络
比特币的交易网络最为人诟病的一点便是交易性能:全网每秒 7 笔左右的交易速度,远低于传统的金融交易系统;同时,等待 6 个块的可信确认将导致约 1 个小时的最终确认时间。
为了提升性能,社区提出了闪电网络等创新的设计。
闪电网络的主要思路十分简单——将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。
比特币的区块链机制自身已经提供了很好的可信保障,但是相对较慢;另一方面考虑,对于大量的小额交易来说,是否真需要这么高的可信性?
闪电网络主要通过引入智能合约的思想来完善链下的交易渠道。核心的概念主要有两个:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。前者解决了链下交易的确认问题,后者解决了支付通道的问题。