教程网

您现在的位置是: 首页 > 独家

Neo网络节点是什么?从程序员视角看Neo共识机制

Neo网络节点是什么?从程序员视角看Neo共识机制
Neo网络节点是什么?Neo网络节点分为两种,一种为共识节点,另一种为普通节点。相对于普通节点,共识节点将参与共识过程并且有机会成为议长主持新区块的生成。接下来,我将通过源码

Neo网络节点是什么?Neo网络节点分为两种,一种为共识节点,另一种为普通节点。相对于普通节点,共识节点将参与共识过程并且有机会成为议长主持新区块的生成。

接下来,我将通过源码分析来介绍如何通过Neo的服务器注册议员。源码中,每轮共识开始时会调用ConsensusContext.cs中的Reset方法,在重置共识时会调用Blockchain.Default.GetValidators()来获取议员列表,跟进去这个GetValidators()源码:

源码位置:

neo/Implementations/BlockChains/LevelDB/LevelDBBlockChain.cs

发现这里调用了内部的GetValidators(IEnumerable others)方法。再看这个内部的GetValidators方法:

源码位置:

neo/Core/BlockChain.cs

我把第一个foreach循环中的代码都删了,因为明显传进来的others参数为0.所以循环体里的代码根本不会有执行的机会。这个方法的返回值是result,它值的数据有两个来源。第一个是pubkeys,pubkeys来自于本地缓存中的议员信息,这个信息是在同步区块链时保存的,即只要共识节点开始接入区块链网络进行区块同步,就会获得议员信息。而如果没有缓存议员信息或者缓存的议员信息丢失,就会使用内置的默认议员列表进行共识,之后再在共识过程中缓存议员信息。第二种的使用内置默认议员列表是直接将配置文件protocol.json中的数据读取到StandbyValidators字段中。

接下来主要介绍第一种途径。GetValidators方法的第二行调用了GetStates,并且传入类的类型是ValidatorState,这个方法位于LevelDBBlockChain.cs文件中,完整代码如下:

源码位置:

neo/Implementations/BlockChains/LevelDB/LevelDBBlockChain.cs

可以看到这里是直接从leveldb的数据库中读取的议员数据。即在读取数据之前,需要先创建/打开数据库,这部分的操作可以参考neo-cli项目,这个项目就在MainService类的OnStart方法中传入了数据库地址。当然这只是从数据库中获取议员信息,向数据库中存入议员信息的工作主要由LevelDBBlockChain.cs文件中的Persist(Block block) 方法负责,这个方法接收一个区块类型作为参数,主要工作是将同步到的区块信息解析保存。涉及到议员信息的关键代码如下:

源码位置:

neo/Implementations/BlockChains/LevelDB/LevelDBBlockChain.cs/Persist

通过调用GetAndChange方法将获取到的议员账户添加到数据库缓存中。

确定议长

共识节点通过调用ConsensusService类中的Start方法开始参与共识。在Start方法中,先注册消息接收、数据保存等事件通知,然后调用InitializeConsensus开启共识,接收一个名为「视图编号」的整形参数。当传入的视图编号为0时,即一轮新共识需要重置共识状态。重置共识状态的代码如下:

源码位置:

neo/Consenus/ConsensusContext.cs

在代码中我添加了详尽的注释,确定议长的算法是当前区块高度+1 再减去当前的视图编号,结果mod上当前的议员人数,结果就是议长的下标。议员自己的编号则是自己在议员列表中的位置,因为这个位置的排序是根据每个议员的权重,所以理论上每个议员的编号在所有的共识节点都是一致的。在共识节点中,除了在共识重置时会确定议长外,每次更新本地视图时也会重新确定议长:

源码位置:

neo/Consensus/ConsensusContex.cs

议长发起共识

议长在更新完视图编号后,如果当前时间距离上次写入新区块的时间超过了预定的每轮共识的间隔时间(15s)则立即开始新一轮的共识,否则等到间隔时间后再发起共识,时间控制代码如下:

源码位置:

neo/Consensus/ConsencusService.cs/InitializeConsensus

议长进行共识的函数是OnTimeout,由定时器定时执行。下面是议长发起共识的核心代码:

源码位置:

neo/Consencus/ConsensusService.cs/OnTimeOut

议长将本地的交易生成新的Header并签名,然后将这个Header发送PrepareRequest广播给网络中的议员。

议员参与共识

议员在收到PrepareRequest广播之后会触发OnPrepareReceived方法:

源码位置:

neo/Consensus/ConsensusService.cs

议员在收到议长共识请求后,首先使用议长的公钥验证收到的共识信息,验证通过后将议长的签名添加到签名列表中。然后从内存中缓存,将议长Header交易哈希列表中的交易添加到context里。

这里需要讲一下从内存中添加交易信息到context中的方法 AddTransaction。这个方法在每次添加交易之后都会比较当前context中的交易笔数是否和从议长那里获取的交易哈希数相同,如果相同而且记账人合约地址验证通过,则广播自己的签名到网络中,这部分核心代码如下:

源码位置:

neo/Consensus/ConsensusService.cs/AddTransaction

所有的议员都需要同步各个共识节点的签名,所以议员节点也需要监听网络中其他节点对议长共识信息的响应并记录签名信息。在每次监听到共识响应并记录了收到的签名信息之后,节点需要调用CheckSignatures方法对当前收到的签名信息是否合法进行判断,CheckSignatures代码如下:

源码位置:

neo/Consensus/ConsensusService.cs

CheckSignatures方法里首先是对当前签名数的合法性判断。也就是以获取的合法签名数量需要不小于M。M这个值的获取在ConsensusContext类中:

这个值的获取涉及到Neo共识算法的容错能力,公式是

数字货币neo币交易平台,neo小蚁股官网价格:neo币,原名小蚁股、小蚁币;NEO是基于区块链技术的资产数字化系统,是利用区块链技术和数字身份进行资产数字化,利用智能合约对数字资产进行自动化管理,实现“智能经济”的一种分布式网络。在2016年4月NEO提出了一种改进的拜占庭容错算法dBFT(delegated  BFT),这最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。

neo小蚁股百科介绍

中文名:小蚁股

英文名:NEO

英文简称:NEO

研发者:达鸿飞

核心算法:SHA256和SM3

区块时间:15-20 秒

货币总量:100,000,000

现存流通量:50,000,000

发布日期:2014-06-01

neo官网地址:

https://neo.org/

neo币钱包下载:

https://neo.org/download

小蚁股neo币交易平台

https://www.kucoin.com/?(库币网海外版,注册以后,进入交易中心查看)

https://www.binance.com/(注册以后,进入交易中心查看;币安10月27日开通了国内注册通道,真乃币界的福音!)

NEO小蚁技术特点

NEO系统还将使用 DBFT、NeoX、NeoFS、NeoQS等多项原创技术,成为未来智能经济的基础架构。

NEO区块链通过将点对点网络、拜占庭容错、数字证书、智能合约、超导交易、跨链互操作协议等一系列技术相结合,让你快速、高效、安全、合法地管理你的智能资产。NEO相信,科技是这个时代变迁的原动力,在这股动力的推动下,我们将迈入新的“智能经济”时代。

NEO愿景-打造一个透明且公平的世界

智能经济时代下,我们将实现从“信息互联网”到“价值互联网”再到“秩序互联网”的跨越。实体经济和数字经济无缝连接,一切资产都可以无摩擦的自由流动。人与人之间可以以免信任的方式实现任意的价值交换和经济活动。社会和组织的治理规则公开透明,规则的执行公正公平。这会是一个美丽的新世界。

NEOG/NEO GOLD基本信息

币种名称:NEOG/NEO GOLD

币种概念:基础链

团队规模:----

上线时间:2017-11-12

所在国家:海外

官方网址:https://neo-gold.com/

区块查询:https://etherscan.io

白皮书:查看白皮书

项目介绍

NEO GOLD 是一种创新的智能合同支付平台,以先进的区块链技术为基础,NeoGold 将通过引入新 NeoGold 移动钱包实现这一目标。用户可以在这个任何地方进行常规交易,保护隐私、快速确认并且手续费很低。持有 NEOG 的用户之后还将会得到 PETROL 奖励,这也是一种 ERC 20 令牌,每星期产生一次,它将按照他们所持有的 NEOG 数量以恒定的速度分发给我们所有的令牌持有人。PETROL 在2018年1月1日开始分发,分发的时候按照1:1分发,之后可以按 250 PETROL = 1 NEOG 的比例将 PETROL 兑换成 NEOG.

交易平台

Mercatox

市场上行,众星捧月,所有人都为你鼓掌,所谓的缺点被无限掩盖,所谓的优点无限放大。而当市场下行,之前赞美你的人,纷纷调转枪口。而了解区块链项目需要的是独立思考。今天小编就要来给大家介绍介绍NEO是一个什么项目?

NEO是一个非盈利的社区化的区块链项目,是利用区块链技术和数字身份进行资产数字化,利用智能合约对数字资产进行自动化管理,实现“智能经济”的一种分布式网络。 NEO于2014年正式立项,2015年6月在Github上实时开源,自成立以来,NEO团队亲历了区块链行业的高潮与低谷,数字货币市场的狂热与冷却。我们相信,科技是这个时代变迁的原动力,在这股动力的推动下,我们将迈入新的“智能经济”时代。

NEO底层支持多种数字资产,用户可在NEO上自行注册分发资产,自由交易和流转。支持数字证书,解决公有链信任问题,利用数字证书可以合法合规地在区块链上发行资产并且享受法律保护。

超导交易机制,可以实现去信任的数字资产交易所,在无需充值的情况下对各类数字资产进行撮合。图灵完备的智能合约,在NeoVM中执行并且拥有确定性、可终止性、资源控制、并发、分片与无限扩展等众多优点。

NEO智能支持用C#、Java、Go等编程语言来开发,开发者无需学习新语言即可快速开发基于NEO区块链的智能合约。

NeoVM:NEO轻量级基于堆栈的虚拟机,拥有快速的启动时间和较高的执行效率,配合“确定性调用树”技术,可以实现理论上无限的扩展性。

独创的dBFT共识机制,共识节点之间通过拜占庭容错算法来达成共识保障交易最终性,并且可以保障小于三分之一的节点出现拜占庭故障时系统仍然拥有最终性和可用性。

跨链互操作协议,包含跨链资产交换协议和跨链分布式事务协议,可以实现多个区块链之间的原子级资产交换,还可以在多个区块链上共同执行智能合约并保证事务一致性。

引入基于Lattice(格密码学)的签名与加密技术,将加解密问题规约到量子计算机尚无法解决的SVP(最短向量)问题,从而预防“量子危机”。

NEO将如何勾勒未来?

数字资产是以电子数据的形式存在的可编程控制的资产。用区块链技术实现资产数字化有去中心、去中介、免信任、可追溯、高度透明等特点。NEO 在底层支持多数字资产,用户可在 NEO 上自行注册登记资产,自由交易和流转,并且通过数字身份解决与实体资产的映射关系。用户通过合规的数字身份所注册登记的资产受到法律的保护。

数字身份是指以电子数据形式存在的个人、组织、事物的身份信息。目前较为成熟的数字身份体系是基于 PKI的 X.509 标准。在 NEO 中,我们将实现一套兼容 X.509 的数字身份标准。这套数字身份标准,除了兼容 X.509 的层级式的证书签发模式,还将支持 Web Of Trust 式的点对点的证书签发模式。

NeoContract 智能合约体系的最大特点是无缝对接现有的开发者生态。开发者无需学习新的编程语言,就能用 C#、Java 等主流编程语言在熟悉的 IDE 环境(Visual Studio、Eclipse 等)中进行智能合约的开发、调试、编译。NEO 的通用轻量级虚拟机 NeoVM 具有高确定性、高并发性、高扩展性等优点。NeoContract 智能合约体系让全球百万级的开发者能够快速进行智能合约的开发。NeoContract 将有独立的白皮书描述实现细节。

小蚁币在哪交易?交易平台

币安网:https://www.binance.com/

Bitfinex:https://www.bitfinex.com

B网:https://bittrex.com

P网:https://poloniex.com

HitBTC:https://hitbtc.com

OKEX:https://www.okex.com/

所以说,在区块链高速发展的洪流中,不管是作为一个参与者还是一个旁观者,认识程度决定了达到的高度。NEO的社区化策略、对待代码既开放又严谨的态度、积极发展生态的诉求,都是值得去给予信任的。

在NEO采用dBFT机制实现共识节点之间的“拜占庭容错”,并在NEO白皮书中描述恶意共识节点小于1/3的时候,该共识机制能够保证系统的安全性和可用性。我们经过研究发现,目前NEO的dBFT机制仅能保证诚实的共识节点之间达成共识。但共识节点之间不存在分叉,并不意味着全网不会存在分叉。NEO目前对dBFT共识机制的实现还不满足的拜占庭容错性质。

NEO dBFT共识机制简介

NEO区块链是一个分布式的智能合约平台。NEO实现了一种委托的拜占庭容错共识算法,它借鉴了一些 PoS 的特点(NEO持有人需要对共识节点进行投票) 利用最小的资源来保障网络免受拜占庭故障的影响,同时也弥补了 PoS 的一些问题。dBFT对由n个共识节点组成的共识系统,提供的容错能力,这种容错能力同时包含安全性和可用性,并适用于任何网络环境。

NEO dBFT共识机制可以详细见NEO官方共识机制白皮书:

http://docs.neo.org/zh-cn/basic/consensus/whitepaper.html(中文版)

http://docs.neo.org/en-us/basic/consensus/whitepaper.html(英文版)

 1/4    1 2 3 4 下一页 尾页