Technology Overview (2) — Blockchain Node General Communication Protocol
MarcoPolo Protocol chooses LibP2P algorithm as our node communication algorithm and design General ChainID Specifications for the protocol.
Most of the existing blockchain underlying node discovery and data transmission algorithms are not interoperable. For example, Bitcoin nodes cannot directly find Ethereum nodes through the P2P protocol and they have to establish a TCP connection to realize it. However, MarcoPolo Protocol requires all blockchain P2P networks to communicate with each other. Therefore, we need a unified and standardized P2P communication protocol. The Protocol Lab’s LibP2P protocol just meets our needs. LibP2P is a basic module built for P2P networks. It highly abstracts the mainstream transmission protocol, so that the application layer does not need to worry about the specific bottom layer implementation, in which it has achieved the cross-environment and cross-protocol P2P node communication. Currently, Ethereum 2.0, Polkadot, and other projects have announced that they will use LibP2P as their underlying node communication algorithm. MAP also chose the LibP2P algorithm as our node communication algorithm.
In the past, when developing internet applications, it was only necessary to focus on the upper layer logic of the application without reimplementing the underlying communication protocol (TCP/IP). The original intention of the LibP2P design is to support the future decentralized network protocol. The purpose of it is to allow developers to develop decentralized applications without having to pay attention to the specific implementation of the underlying layer. Finally, cross-environment and cross-protocol node communication are realized.
In a distributed peer-to-peer network, the relationship between nodes is no longer the traditional server-client model, which requires that each node can perform the role of the server to process responses but also act the role of the client to send requests. In this complex situation, we need a common communication protocol that can support multiple communication protocols to support the inter-communication between arbitrary nodes.
The communication protocol needs to support traditional unencrypted TCP/IP communication as well as encrypted communication protocols such as TLS. The protocol needs to include both node discovery and the establishment of long and short connections, as well as a series of functions such as encrypted data transmission. LibP2P is a general protocol that meets all the above requirements. In an ecosystem of multi-chain interoperability based on the MAP protocol, node discovery and communication in different chains will be involved. Therefore, a common communication protocol must be supported between all chain nodes, in which all nodes are in a large P2P network. At the same time, the particular nodes for different chains require to be under different subnet structures. Therefore, the network structure should be a multi-level, structured network topology. And LibP2P supports structured, unstructured, mixed, and centralized network topology, which also happens to meet our needs.
General ChainID Specifications
Under the regulation of MAP, a unified set of ChainID rules must be formulated to identify different blockchains. Each chain will be assigned a unique ChainID. The function of this ChainID is similar to today’s IP address and port in order to locate and identify a chain in the MAP ecosystem. When transmitting information that requires signatures, ChainID needs to be included in the signature data to prevent repeated transmission attacks. The distribution information of ChainID also needs to be updated in real-time on an underlying public chain so that other chains can obtain relevant information. The current solution is to deploy a smart script that manages the distribution information of ChainID on the MarcoPolo standard chain, and there will be a committee managing this smart script. The committee needs to review the public chain projects that apply to join this ecosystem, and the public chain that passes the review will be assigned a standardized ChainID and updated into the script. The script only has the function of assigning standardized ChainID, and does not have other centralized management functions. At the same time, public chains that are not assigned standardized ChainID can also communicate with other public chains within the protocol, however, their security cannot be guaranteed. In this case, we do not recommend interoperating with public chains that do not have standardized ChainID.
Technology Overview (1)-Characteristics and Three Core Sub-modules
· MarcoPolo Protocol Medium (For the latest articles)
· MarcoPolo Protocol GitHub (For the complete codes)
For more information, visit marcopolo.link