针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型

针对.NET开发者的NEO区块链文档html

宗旨node

本文档旨在记录NEO 区块链平台的(软件)体系架构参考模型,以使.NET开发人员可以更快速,更轻松地了解NEO平台。git

目标github

  • 记录NEO区块链平台的(软件)体系架构参考模型
  • 使.NET开发人员可以更快速,更快速轻松地了解更多有关NEO平台的知识。

原则编程

  • 提供可靠的文件:及时,准确,直观和完整
  • 尽量节省一我的的时间

驱动因素api

  • NEO .NET开发者社区须要具备简明易懂的文档,以便人们可以在尽量短的时间内加快开发NEO智能合约。

针对以太坊智能合约开发者的旁注bash

若是您来自ETH开发背景,那么你会习惯于将智能合约(在将其部署到区块链以后)像C ++ / C#类的实例同样考虑,而且您能够调用任何合约的公共方法和字段。架构

在NEO智能合约开发中,大多数人遵循经过公共Main()函数调用智能合约的模式。使用这种模式,NEO智能合约更像.NET / C#控制台应用程序,操做环境调用函数Main并将参数传递给函数(打比方说像命令行参数)。这将会演化,但目前这是一种常见模式。下面是一个来自neo-project/examples-csharp项目的例子:分布式

publicstaticobject Main(string operation, params object[] args)函数

{

switch (operation)

{

case”query”:

return Query((string)args[0]);

case”register”:

return Register((string)args[0], (byte[])args[1]);

case”transfer”:

return Transfer((string)args[0], (byte[])args[1]);

case”delete”:

return Delete((string)args[0]);

default:

returnfalse;

}

}

注意:在NEO智能合约中,一个类中的公共字段不会自动可见/可调用,除非您专门编写了本身的一些访问器代码。

注:当心使用NEO智能合约中的C#开关语句[TODO]。

动机

当你正在学习编写NEO智能合约时,你真的在学习如何编程NEO虚拟机来作你想作的事情;例如,

  • 进行计算
  • 从区块链中读取持久数据(状态)
  • 将新数据(状态)添加到区块链
  • 验证某人的身份(反过来,肯定他们对于您的智能合约的目的和目标拥有哪些角色和权限)
  • 等等。

做为一个类比,学习编程NEO虚拟机就像学习飞行一个飞行模拟器。

图1.苏霍伊超音速喷气式飞机全飞行模拟器[图片来源:Wikipedia]
复制代码

在飞行模拟器驾驶舱中,飞行员正在操纵控制器(脚踏板,开关和旋钮以及控制柱),模拟器反过来接收这些刺激并致使多个子系统响应并产生您正在控制一架先进的飞机的幻觉。负责制造这些幻想的子系统包括视觉显示器,音频提示和音效,液压执行器,刻度盘和其余仪器。

在NEO虚拟机中运行的NEO智能合约就像飞行模拟器控制的飞行员。智能合约执行各类计算并调用各类虚拟机API来完成智能合约的目的和目标。为了响应这些API调用,虚拟机正在与其各个子系统进行交互(就像飞行模拟器同样)。在NEO虚拟机的状况下,这些子系统包括:

  • 账户管理
  • 资产管理
  • 区块管理
  • 区块链管理
  • 合约管理
  • 区块头管理
  • 运行时间管理
  • 存储管理
  • 交易管理
  • 属性管理
  • 输入管理
  • 输出管理
  • 验证管理

…除了基本的执行引擎功能,如:

  • 流量控制
  • 堆栈操做(包括参数传递)
  • 位操做
  • 算术运算
  • 逻辑运算
  • 数据类型转换
  • 密码操做
  • 等等

做为智能合约开发人员,你有责任了解和理解每一个虚拟机子系统的用途和目标,他们支持的用例以及开发一流智能合约时使用的最佳实践和编程模式。

NEO区块链架构参考模式(ARM

下图描述了NEO区块链的架构参考模型(ARM)。它由两个主要组成部分组成:

•NEO开发者环境

•NEO虚拟机

图2. NEO区块链架构参考模型

NEO开发者环境

下图说明了从开发者角度来看NEO环境的架构。该图受到了Relfos / neo-debugger-tools项目的启发。

图3 NEO开发者环境

下面表格描述了NEO开发者环境的关键组成部分。

标记 名字 描述
A HelloWorld.cs 智能合约资源(例子)
B csc.exe C#编译器
C HelloWorld.dll 智能合约编译程序集 (MSIL)
D neon.exe NEO转译器 (调试器版本)
E HelloWorld.avm 虚拟机脚本文件 (字节代码脚本)
F neo-gui (开发者) 智能合约部署和测试工具
V Visual Studio Microsoft .NET/C# IDE
W neo-调试器 交互式源代码和字节代码级调试器

表1. NEO开发者环境

NEO虚拟机

NEO虚拟机(NEO VM)的架构以下图所示。

图4. NEO虚拟机机构

下列图标描述了NEO虚拟机的关键组成部分

标记
名字 描述
NEO虚拟机 虚拟机主要部件和服务
执行引擎 执行引擎部件
当前语境 执行引擎当前语境
指令指针 执行引擎当前指令指针
脚本 当前智能合约脚本正在执行
执行堆栈 执行引擎数据堆栈
虚拟机状态 虚拟机档期状态(暂停,故障,中断)
脚本表 可调用脚本的虚拟机脚本表
互操做服务 互操做服务层用于不是基本执行引擎功能之一的全部内容(请参阅上文)
帐户服务 帐户服务
资产服务 资产服务
区块服务 区块服务
区块链服务,区块头服务 区块链服务,区块头服务
合约服务 合约服务
运行时间服务 运行时间服务
存储服务 存储服务
验证器服务 验证器服务
区块链状态 分布式帐本

NEO .NET命名空间

NEO .NET名称空间以下所示。

图5. NEO区块链架构参考模型(.NET名称空间)

参考

其它好资源

原文转自NEL新经济实验室:mp.weixin.qq.com/s/yxrGe2elm…

进群交流:795681763

相关文章
相关标签/搜索