NEO 是一个区块链系统,他包括一揽子子项目。 区块链系统首先是一个P2P网络,不同于CS网络,P2P网络没有客户端服务器之分。 都称为节点。
NEO系统可以大致划分为 节点、客户端、编译器 三个部分。
围绕NEO系统还有一些很有用的设施: 浏览器、轻钱包、交易所、等等。
所有与NEO有关的系统都可统称为NEO生态。
NEO节点的功能可大致分为
P2P组网的基础设施,NEO基于Socket TCP协议组网。
因为P2P组网需要节点间实现互联,而当一些节点在网关之后时入站连接无法接通。
为此NEO网络通讯层支持uPnp协议,如果网关允许,可自动与网关协商端口映射,增加P2P联通率。
NEO采用独创的DBFT共识机制,该机制主要特征为:
1.可提供 f=⌊(n-1)/3⌋ 的容错能力。
2.具有良好的最终性,一个确认即最终确认。
3.区块无法被分叉,交易也不会发生撤销或回滚
*NEOGUI 没有共识功能
NEO节点本地区块数据和状态数据保存采用开源数据库LevelDB
levelDB 是一个高性能单机数据库,KeyValue形式存取,拥有很稳定的写入能力。
NEO是一个完全智能合约化的系统,每一笔交易的验证都是智能合约,如果是智能合约交易还有独立的合约存储区可以存放数据。
NEO的智能合约运行在NEO自己开发的NEOVM之上。
NEOVM是一个专用的虚拟机,所有的外部扩展全部通过syscall实现,同时提供可缩放的特性和容易控制的安全性。
NEO节点可以打开钱包文件,进行相应操作
因为节点含有数据库,并且需要持续开机同步区块数据。大部分应用场景下,节点是作为CS结构的S存在,另外给用户提供图形化更友好连接到节点不自己同步区块的GUI。
所以节点提供RPC接口,供远程访问
NEO节点的RPC协议 符合JSONRPC 2.0 标准
特指 NEOGUI ,这是一个演示性质的客户端,供开发者了解如何NEO的图形界面如何工作,以及演示新的功能如何实现。
NEO智能合约采用用先存流行语言编译为NEOVM 字节码的机制(简称AVM)
推荐使用C# Compiler 进行开发测试。
我们这个系列的例子将主要采用C# compiler