主流的公链种网络构建和数据分发过程。
名称定义
共识节点:参与共识并生成新区块后扩展区块链的节点,又称之为验证节点。
全节点:不参与共识,但是会跟踪和验证账本数据并存储完整区块链数据的节点。
Aptos
Near
SUI
节点发现以及入网过程
节点启动时有一个配置文件 fullnode.yaml 文件,该文件中指定节点进入 Testnet 还是 Mainnet。配置文件中还指定了种子节点的信息。例如如果进入主网时种子节点的信息为:
1 | p2p-config: |
SUI 中全节点入网时,每个从 seed 节点处获取网络中的节点,然后从中随机选择一些节点建立连接,基于这种方式进入网络。
数据同步
文件源码位置:sui/crates/sui-network/src/state_sync/mod.rs at main · MystenLabs/sui · GitHub
数据类型:checkpoint 、transactions。
当共识层的 validator 产生一个 checkpoint 之后,调用 send_checkpoint 方法将最新状态发送给其他节点。
其他节点收到新的 checkpoint 之后,存储该信息后调用 spawn_notify_peers_of_checkpoint 函数将该信息通知给其他节点。通知的内容为 PeerStateSyncInfo,其结构如下。可以发现其中只包含 checkpoint 的摘要,最低的区块高度和最高的区块高度,但是并不包含 checkpoint 本身。
1 |
|
当一个节点收到其他节点最新 checkpoint 的消息时,检查其高度是否高于自身,如果高于自身高度,则开启状态同步过程。
此外,每个节点定期与邻居同步最新的 checkpoint 消息,如果发现自身落后,则请求区块。