当前位置: 首页 > 工具软件 > SnarkOS > 使用案例 >

snarkOS网络通信协议

向嘉誉
2023-12-01

snarkOS网络通信协议

snarkOS 网络协议建立了一个点对点网络,通过主动交换交易和数据块来保持账本的活跃性。

发现节点

当一个节点第一次加入网络时,它需要填充网络中活动对等方的列表。为了引导对等发现,snarkOS 包括一组可选的专用“信标”节点。一旦连接,它们将提供一组初始对等点,其中包括同步提供程序的地址。同步提供程序将向节点提供 chainstate 的初始同步。为了使用户具有灵活性,snarkOS 允许用户在配置文件中配置初始节点集,或通过命令行标志作为输入。一旦一个节点连接到一个或多个节点,它可能会扫描网络以发现更多对等点。该过程首先通过 GetPeers 消息向对等方请求网络中更多连接的节点,然后尝试与每个新发现的对等方建立连接。成功后,snarkOS 将存储新的对等地址,以允许它在将来直接与该对等连接,而无需使用信标在将来启动。

连接节点

对等连接通过 XX 噪声(https://noiseprotocol.org/)握手建立。
对等连接使用乒乓协议进行维护,该协议定期中继乒乓消息以验证对等点是否仍然连接。snarkOS 将更新其对等机簿,以说明新连接的对等机和断开连接的对等机。

下载同步区块

节点必须先将自身同步到账本的最新状态,然后才能加入网络。无论节点是新连接到网络,还是仅具有过时状态,它都必须与其对等节点同步,并下载丢失的块和事务。snarkOS 使用“头优先”的方法来同步块,其中节点在并行下载相应的完整块之前下载并验证每个块头。当节点确定需要下载状态时,它会选择一个对等节点作为同步节点,并向其发送一条 GetSync 消息。GetSync 消息包含有关节点当前块状态的信息,因此同步节点能够确定哪些块头需要作为响应发送。在接收到 GetSync 消息后,同步节点通过同步消息发回最多 100 个块头。然后请求者验证这些头并通过发送 GetBlock 消息并行下载块。下载这些块后,请求者发送另一条 GetSync 消息,并重复此过程,直到其链状态完全更新。

广播交易

节点可以通过向其连接的对等方发送 Transaction 消息来向网络广播事务。接收该事务的对等方验证该事务,并通过向其连接的对等方广播该事务来进一步传播该事务。此事务将通过网络继续进行,直到它传播到网络中的每个连接的对等方。

广播区块

节点可以使用 Block 消息广播块,方式与广播事务相同。

 类似资料: