平行链与跨链设计

  1. 如何要支持群组,需要在xuper链部署一个系统合约:GroupChain(一个网络有且仅有一个)

    这样是为了保证兼容性,如果没有部署这个GroupChain合约,那么行为和旧版本一致。

    <平行链名字,IP> → Address

    为什么把IP放在Key中,是为了方便做过滤的时候查找更快,直接Get。

    平行链名字作为前缀,方便列出这条链的所有合法成员节点。

    备注:此处IP是代指一个TCP协议定位符,可以是libp2p风格的URL。

  2. 查询特定的链是否具备群组关系

    Case1: 部分链希望有群组特性,即只有特定的节点才能同步账本数据;

    Case2: 剩下的链还是期望所有节点都参与同步、验证区块;

    基于以上两种场景,需要增加一层映射,即<平行链,是否支持群组>

    如果每次转发都Lookup数据库过滤IP,性能有影响,可以考虑在p2p中维护一个Cache;

  3. 通过这个智能合约接口,可以修改(address, IP)的映射关系

    合约的Owner(GroupChain这个合约的Owner)可以添加或删除address

    节点也可以后期自己修改IP(节点有权更换自己的IP),合约里面会判断Initiator()字段和address是否一致,确保每个address只能修改自己的IP

  4. 平行链中转消息的时候,必须确保目的IP在智能合约的映射表中存在

    如果每次转发都Lookup数据库过滤IP,性能有影响,可以考虑在p2p中维护一个Cache;