【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开元网站
最新资讯文章
- 1050开元网站:财险及再保险公司迎来属
- “1050开元网站”乌鲁木齐商务系统已启
- 十张罚单同日来袭!贵阳银行粉饰不良遭围观
- 南水北调中线工程将全线通水曾因资金短缺推
- “城饰”让生活更美好:1050开元网站
- ‘1050开元网站’奥地利电子艺术节将于
- ‘1050开元网站’空气炸锅版烤羊排的做
- 1050开元网站_一饭店老板为逃避执法检
- 1050开元网站|顾客的一句差评,却意外
- 【1050开元网站】发现欧切斯之旅:奢侈
- ‘1050开元网站’斑点猫四大黑科技揭秘
- 脸书正在研发新技术 希望能终结密码时代_
- ‘1050开元网站’养老FOF持仓动向:
- 【1050开元网站】嗨学网:涉事成都子公
- 1050开元网站|杨德龙:单边上涨转为震
- 2016西班牙AndreuWorld国际
- 1050开元网站|登上福布斯富豪榜的餐饮
- 旅游局暗访高星酒店服务质量 湖北省内14
- 1050开元网站-飞行、潜水和游泳?新型
- 对话高通:专设XR产品线,我们为什么要押