【1050开元网站】从源码层面分析Neo的网络通信
前言Neo反对C#和java研发,在全球社区的共同努力下现把SDK扩展到了js,python等编程环境,所以展开Neo研发是没过于大的语言障碍的。比特币在解决问题拜占庭错误这个问题时除了引进了区块链这个最重要的概念之外,还引进了工作量证明(PoW)这个落后的解决方案,通过数学意义上的难题来确保每个区块创立都必须代价计算出来量。然而实践中已证明,通过计算出来来获取工作量证明,觉得是过于浪费了:全世界所有的几乎节点都展开某种程度的计算出来,然而只有一个节点计算出来出有的结果不会被加到到区块链中,其余节点计算出来消耗的电力都白白浪费了。
特别是在,工作量证明不存在一个51%的有可能反击方案,即只要有人掌控了世界上多达50%的算力,他就能对比特币系统展开反击,重置区块链。中本俊先生发明者这个算力工作量证明方法时,大约没预料到不会有人专门为了挖矿而研发ASIC矿机。
Neo在解决问题这些问题时明确提出了一个新的共识机制概念dBFT( Delegated Byzantine Fault Tolerant),将节点分成两种,一种为不参予共识的普通节点,即不展开证书交易亲笔签名区块的过程。另一种为共识节点,即可以参予共识的节点,这部分基础概念可以参照官方文档。接下来,我将从源码层面分析Neo网络通信协议。
源码概览本文分析的源码地址:https://github.com/neo-project/neo通过git命令iTunes到本地:git clone https://github.com/neo-project/neo.git我用的编译器是VS2017社区版。关上Neo项目后可以看见项目根目录文件结构:- Consensus 共识节点间共识协议- Core Neo 核心- Cryptography 加密方法- Implementations 数据存储以及钱包的构建- IO Neo 的io类- Network 用作p2p网络通信的方法- SmartContract Neo 智能合约的涉及类整个项目代码量远比相当大,特别是在是项目本身是C#高级语言撰写,所以代码很更容易背诵。消息在Neo网络中,所有的消息都以Message为单位展开传输,Message的定义在Message.cs文件中,其结构如下:Magic 字段用来确认当前节点是运营在月网络还是在测试网络,如果是0x00746e41则为月网,如果是0x74746e41则为测试网。_Command_命令的内容是必要用于的字符串,所以没展开严苛定义,在所有用于到的地方都是必要用于的字符串。
我指出倚赖比较严重,应先定义好命令再行在别的地方调用。虽然没说明都有哪些命令,但是在消息路由的代码里,我们可以寻找所有用于到的命令。源码方位:neo/Network/RemoteNode.cs/OnMessageReceived以上源码中关于命令的处置部分不是本小节辩论的重点。
通过分析代码可以告诉,消息种类大体有22种。消息的具体内容在序列化之后不存在在Message里的payload字段中。
在所有的消息类型中有一类消息十分类似,与账本涉及的三种消息:账目消息(Block)、共识消息(Consensus)以及交易消息(Transaction)。这三中消息分别对应系统中的三个类:- neo/Core/Block- neo/Core/Transaction- neo/Network.Payloads/ConsensusPayload这三个类都构建了模块IInventory,我把inventory翻译成为账本,把构建了IInventory模块的类沦为账本类,消息称作账本消息。IInventory接口定义了消息的哈希值Hash用来存放在亲笔签名、账本消息类型InventoryType用来留存消息类型以及一个检验函数verify用来对消息展开检验,也就是说所有的账本消息都必须包括亲笔签名,并且必须检验。账本消息的类型定义在InventoryType.cs文件中:源码方位:neo/Network/InventoryType.cs每个RemoteNode内部都有两个消息队列,一个低优先级队列和一个低优先级队列,低优先级队列主要负责管理:- "alert"- "consensus"- "filteradd"- "filterclear"- "filterload"- "getaddr"- "mempool"这几个命令,其余的命令都由低优先级队列负责管理。
发送到命令的任务由StartSendLoop方法负责管理,在这个方法中有一个while循环,在每一轮循环中都会首先检测低优先级队列否为空,如果不为空则再行发送到低优先命令,否则发送到低优先级任务,循环中的核心源码如下:源码方位:neo/Netwotk/RemoteNode.。
本文关键词:1050开元网站
本文来源:1050开元网站-www.9023.com.cn
同类文章排行
- 云南城镇化建设导致湿地破碎化-1050开
- 苹果Siri侵权案拉锯8年5次判决 业内
- 1050开元网站_中国互联网数字有无水分
- “设计界奥斯卡”2017德国红点奖颁奖,
- 荷兰 Spar 超市个性环境设计‘105
- 【1050开元网站】新冠确诊数世界"第一
- 智慧城市行业对话:城市智能化,一部身边的
- 【1050开元网站】深度:常见锂离子电池
- 餐饮加盟开店注意事项_1050开元网站
- 一周智慧城市丨工信部约谈“ZAO”;华为
最新资讯文章
- 韩国警方成立专案组调查朴元淳案件 阻止销
- 1050开元网站-新型城镇化建设应摒弃工
- 1050开元网站_陈幼坚谈设计观...听
- 一张图教您如何选择logo的最佳配色【1
- 扬州炒饭来杭州解码文化基因“1050开元
- 华丽制服的背后 其实很穷_1050开元网
- 制造执行管理系统(MES)的应用‘105
- 从磁悬浮滑板到会飞的汽车 这家创业公司在
- ‘1050开元网站’广发证券投行业务暂停
- 台积电断供华为,中芯国际能顶得上吗?-1
- 【1050开元网站】内蒙古经济持续复苏,
- “1050开元网站”琉璃厂或艺术汇品牌和
- 本土酒店五强 经济型占四席‘1050开元
- 智能时代黄埔,铸剑者百度“1050开元网
- 外汇局:上半年境外投资者净增持境内债券和
- 北京卫健委建议:接种疫苗要避开人流高峰、
- 永宁:要建银川城南森林公园:1050开元
- 阿里巴巴无人超市品牌形象设计揭秘“105
- IDAC彦翔设计|酒店设计的多样化:10
- 1050开元网站-高端旅游格局风生水起