1. 定义

  • 非结构化p2p网络
  • 结构化p2p网络:结构化p2p最普遍的实现方案是使用分布式哈希表(DHT),eg. 以太坊网络。

1.1 NAT技术

通过将局域网内的主机地址映射为互联网上的有效ip地址,实现了网络地址的复用。

目前主要有两种途径

  • 打洞,即UDP Punch技术;
  • 利用NAT设备的管理接口,称为UPnP技术

2. p2p消息

消息采用Protobuf定义,整个消息包括2部分,分别是消息头 MessageHeader 和消息体 MessageData ,具体如下所示:

其proto消息定义如下:

 // XuperMessage is the message of Xuper p2p servermessage XuperMessage {// MessageHeader is the message header of Xuper p2p servermessage MessageHeader {string version = 1;// dataCheckSum is the message data checksum, //it can be used check where the message have been receivedstring logid = 2;string from = 3;string bcname = 4;MessageType type = 5;uint32 dataCheckSum = 6;ErrorType errorType = 7;}// MessageData is the message data of Xuper p2p servermessage MessageData {// msgInfo is the message infomation, use protobuf coding stylebytes msgInfo = 3;}MessageHeader Header = 1;MessageData Data = 2;
}

3. 模块交互图

Xuper的启动流程

其中InitP2PServer的流程为启动P2P的核心流程,主要包括4个阶段,分别为:

  • InitP2pInstance:创建libp2p host实例

  • SetXuperStreamHandler:初始化p2p通信消息protocols,XuperProtocol为Xuper节点之间进行消息通信和消息处理的核心逻辑。

  • InitKadDht: 初始化libp2p KadDht,通过设置的bootstrap节点,建立自己的kad dht。

  • InitStreams: 前一步已经建立了自己的kad dht,下一步就是与这些邻近的节点之间建立通信流,通过libp2p的NewStream接口实现通信流建立。

至此,Xuper的p2p连接建立完毕。

3.1 交易消息处理流程

用户提交的交易消息在 XuperChain 网络中传输的处理流程

用户通过RPC将交易提交到网络中,交易执行成功后会通过p2p模块广播给网络中的其他节点

百度超级链XChain(2)p2p网络相关推荐

  1. 百度超级链XChain(1)系统架构

    1. 架构图 智能合约的并行执行和验证 通过自研的WASM虚拟机,做到了指令集级别的极致优化 2. 模块 模块 特性 存储 XuperChain的底层存储基于KV数据库,存储的数据包括区块数据.交易数 ...

  2. 百度超级链XChain(3)平台特点

    采用经典的UTXO记账模式,并且支持丰富的智能合约开发语言,交易处理支持并发执行,拥有完善的账号与权限体系,采用DPOS作为共识算法 1. 权限系统 实现一个去中心化,区块链内置的合约账号权限系统. ...

  3. 百度超级链XChain(8)部署开发

    1. 文件夹说明 在output下,主要目录有data, logs, conf, plugins等, 二进制文件有xchain,xchain-cli 目录名 功能 output/ 节点根目录 ├─ c ...

  4. 百度超级链XChain(4)核心数据结构

    注意为"区块"."交易"."UTXO"和"读写集". 1. 区块 区块以DAG方式链接起来形成的链.因此,区块是区块链的 ...

  5. 百度超级链XChain(5)XuperBridge 智能合约接口

    1. 内核设计 应用程序可以用各种语言实现,比如go,c.类比到合约上就是各种合约的功能,如KV访问,QueryBlock, QueryTx等,这些请求都会通过跟xchain通信的方式来执行 2. 提 ...

  6. 百度超级链XChain(12)平行链与群组

    1. 定义 平行链还具备群组特性,能够一定程度上实现平行链隐私数据的隔离,只有群组内的节点才能有这个平行链的数据 ● 平行链 :相对于主链而言,运行在 XuperChain 中的用户级区块链实例,用户 ...

  7. 百度超级链XChain(7)数据模型

    1. XuperModel数据模型 是比特币utxo模型的一个演变. 每个事务读取的数据需要引用上一个事务写入的数据. 事务的输入表示在执行智能合约期间读取的数据源,即事务的输出来源. 事务的输出表示 ...

  8. 百度超级链XChain(6)XVM虚拟机

    XVM跟XuperBridge对接主要靠两个函数 call_method,这个函数向Bridge传递需要调用的方法和参数 fetch_response,这个函数向Bridge获取上次调用的结果 ext ...

  9. 百度超级链正式发布开放网络白皮书,致力于构建开放共赢区块链新生态

    阅读原文获取"白皮书" 8月4日,百度超级链开放网络白皮书线上发布会正式启动.发布会深度揭秘百度超级链的产品战略.开放网络技术理念和生态合作方案. 百度一直相信区块链是未来链接信任 ...

最新文章

  1. ADO.NET—数据提供程序(连接类)
  2. Python的numpy库中rand(),randn(),randint(),random_integers()的使用
  3. SolrJ添加商品数据
  4. python怎么分析各个时间段的数据_Python数据分析:Python对Word数据的读写
  5. 《数据结构与算法分析:C语言描述》复习——第六章“排序”——插入排序
  6. 浮点上下文中的整数除法
  7. 使用HBuilderX将H5网页打包成APP
  8. 谈谈我对Spring Bean 生命周期的理解
  9. 手把手教你做视频播放器(二)-获取视频信息
  10. FFT算法讲解——麻麻我终于会FFT了!
  11. 搜索引擎提交软件_搜索引擎排名因素有哪些?
  12. javaEE 深入理解 Session 与 Cookie
  13. 模模搭升级,场景自动同步ThingJS平台,搭建开发无缝衔接!
  14. 腾讯地图、高德地图去除logo方法
  15. oracle的路由器,如何充分使用Oracle?
  16. python决策树逻辑回归_决策树,逻辑回归,PCA-算法面试题
  17. SOI七层模型和TCP/IP五层协议:
  18. 从零开始学习linux的I2C设备驱动框架——写一个简单的SHT20驱动
  19. Git 简单使用教程
  20. 偷偷修复漏洞 苹果要求研究员噤声

热门文章

  1. 【Python】青少年蓝桥杯_每日一题_5.27_画菱形
  2. 最全的电气设备故障诊断法
  3. 6.7级地震!北海道数据中心陷最长停电危机!
  4. 数据中心液体冷却方案正在兴起的五大原因
  5. github流程图_10月份Github上最热门的JavaScript开源项目
  6. Computer:计算机测试理论(开发/测试/上线)之DEV、SIT、UAT、PRD四套环境详细介绍之详细攻略
  7. 成功解决import win32api, sys, osImportError: DLL load failed: 找不到指定的模块。
  8. ML之DS:仅需一行代码实现对某字段下的所有数值实现同一机制的改变或转换(比如全部转为str类型/全部取平方值)
  9. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66
  10. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟