MAP Protocol技术概述 区块链节点通用通信协议
区块链节点常规通信现有区块链中的大多数基本节点发现和数据传输算法不可互操作。例如,比特币节点无法通过P2P协议直接找到以太坊节点,因此必须建立TCP连接才能实现。但是,MAP Protocol要求所有区块链P2P网络相互通信。因此,我们需要一个统一和标准化的P2P通信协议。协议实验室的LibP2P协议完全可以满足我们的需求。LibP2P是为P2P网络构建的基本模块。它高度抽象了主流传输协议,因此应用层无需担心特定的底层实现,从而实现了跨环境和跨协议的P2P节点通信。当前,以太坊2.0,Polkadot和其他项目已经宣布,他们将使用LibP2P作为其底层节点
通信算法。MAP还选择了LibP2P算法作为我们的节点通信算法。
LibP2P
过去,在开发Internet应用程序时,只需要关注应用程序的上层逻辑,而无需重新实现底层的通信协议(TCP / IP)。LibP2P设计的初衷是支持未来的分散网络协议。其目的是允许开发人员开发分散的应用程序,而不必注意底层的特定实现。最后,实现了跨环境和跨协议的节点通信。
在分布式对等网络中,节点之间的关系不再是传统的服务器-客户端模型,它要求每个节点都可以充当服务器的角色来处理响应,但也要充当客户端的角色来发送请求。在这种复杂的情况下,我们需要一个通用的通信协议,该协议可以支持多种通信协议,以支持任意节点之间的相互通信。
通信协议需要支持传统的未加密TCP / IP通信以及诸如TLS之类的加密通信协议。该协议需要包括节点发现和长短连接的建立,以及一系列功能,例如加密的数据传输。LibP2P是满足上述所有要求的通用协议。在基于MAP协议的多链互操作性生态系统中,将涉及不同链中的节点发现和通信。因此,必须在所有链节点之间支持通用通信协议,其中所有节点都在大型P2P网络中。同时,用于不同链的特定节点需要位于不同的子网结构下。因此,网络结构应为多层结构化的网络拓扑。LibP2P支持结构化,非结构化,混合和集中式网络拓扑,这也恰好满足了我们的需求。
一般的ChainID规格
在MAP的监管下,必须制定一套统一的ChainID规则来识别不同的区块链。每个链将被分配一个唯一的ChainID。此ChainID的功能类似于今天的IP地址和端口,以便在MAP生态系统中定位和标识一条链。在传输需要签名的信息时,需要在签名数据中包含ChainID,以防止重复传输攻击。还需要在基础公共链上实时更新ChainID的分发信息,以便其他链可以获得相关信息。当前的解决方案是部署一个智能脚本来管理MarcoPolo标准链上ChainID的分发信息,并且将有一个委员会来管理该智能脚本。委员会需要审查适用于加入该生态系统的公共链项目,并且通过审查的公共链将被分配一个标准化的ChainID并更新到脚本中。该脚本仅具有分配标准化ChainID的功能,而没有其他集中管理功能。同时,未分配标准化ChainID的公共链也可以与协议中的其他公共链进行通信,但是,不能保证其安全性。在这种情况下,我们不建议与没有标准化ChainID的公共链进行互操作。
ChainID的规格
在MAP的监管下,必须制定一套统一的ChainID规则来识别不同的区块链。每个链将被分配一个唯一的ChainID。此ChainID的功能类似于今天的IP地址和端口,以便在MAP生态系统中定位和标识一条链。在传输需要签名的信息时,需要在签名数据中包含ChainID,以防止重复传输攻击。还需要在基础公共链上实时更新ChainID的分发信息,以便其他链可以获得相关信息。当前的解决方案是部署一个智能脚本来管理MarcoPolo标准链上ChainID的分发信息,并且将有一个委员会来管理该智能脚本。委员会需要审查适用于加入该生态系统的公共链项目,并且通过审查的公共链将被分配一个标准化的ChainID并更新到脚本中。该脚本仅具有分配标准化ChainID的功能,而没有其他集中管理功能。同时,未分配标准化ChainID的公共链也可以与协议中的其他公共链进行通信,但是,不能保证其安全性。在这种情况下,我们不建议与没有标准化ChainID的公共链进行互操作。