那些从事P2P网络调试工作的人都会明白, 区块链广播图实际上就是指节点与节点在转发交易过程中所形成的那个拓扑路径图。从一笔交易被矿工进行打包开始,直到全网完成确认为止, 在这一段时间周期里面, 它所经历过的每一个中转节点, 以及每一条消息链路, 全部都可以在这个广播图中实现追踪和观察。

需要特别指出的是, 它并不是一个处于静止不动状态的固定图形, 而是会随着节点的上线操作或者下线操作, 以及连接的建立过程或者断开情况, 而发生实时的、动态的变化。

区块链广播图怎么跑

交易的广播机制采取的是洪泛与随机化混合的一种策略。当一笔新的交易进入到某一个节点内部以后, 这个节点马上就要把它转发给所有已经连接好的对等节点。不过在转发的过程中, 是不包括刚刚接收到这笔交易的那个方向节点的。每一笔交易里面都自己携带着一种叫做nonce的值。

下游的节点如果在接收过程中发现nonce是重复的, 那么就会直接把它丢弃掉。系统就是依靠这样一个机制来避免交易出现无限循环的情况。把程序真正运行起来以后, 你会发现交易在3到5跳这个范围内部, 基本上能够覆盖掉百分之九十九的在线节点。

至于速度的具体情况, 完全取决于整体网络的直径有多大, 还有各个节点的出度是多少。

区块链广播图怎么看

我通常会借助Grafana这个工具来获取相关指标, 具体做法是把各个节点接收到的消息的时间戳以及来源节点的IP地址绘制成时序散点图, 同时再叠加P2P连接关系线。

区块链广播图是什么原理,节点间一笔交易怎么扩散到全网

颜色是为了区分不同的交易类型, 普通转账、合约调用以及跨链消息会分别使用不同色带加以标示。我的侧重点在于观察中位延迟和P99延迟这两项数据, 如果发现某条边突然变成红色, 这基本就意味着该方向出现了丢包现象或者节点正在进行限流操作。

此外还需要关注广播图里面的孤岛节点, 这些节点有可能是刚刚上线但还没有完成全部同步操作, 所以数据是不完整的, 大家看到它们的延迟变高了不用惊慌失措, 只需要等待它们把同步工作全部结束之后就会恢复正常了。

你通过不断地进行调试工作以后就会逐渐地发现一个事实, 那就是广播图在表面看起来虽然显得比较复杂, 但是它在底层的运行逻辑其实就仅仅包含三个部分, 也就是连接功能、转发功能以及去重功能这 连接、转发、去重 , 当你把这些内容都真正地理顺并且搞清楚之后, 那么这张图上出现的任何一条异常路径都能够被精准地定位到它具体的故障环节上面。