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

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

宗旨

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

目标

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

原则

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

驱动因素

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

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

如果您来自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开发者环境的关键组成部分。

标记名字描述
AHelloWorld.cs智能合约资源(例子)
Bcsc.exeC#编译器
CHelloWorld.dll智能合约编译程序集 (MSIL)
Dneon.exeNEO转译器 (调试器版本)
EHelloWorld.avm虚拟机脚本文件 (字节代码脚本)
Fneo-gui (开发者)智能合约部署和测试工具
VVisual StudioMicrosoft .NET/C# IDE
Wneo-调试器交互式源代码和字节代码级调试器

 表1. NEO开发者环境

NEO虚拟机

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

图4. NEO虚拟机机构

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

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

 NEO .NET命名空间

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

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

参考

其它好资源

原文转自NEL新经济实验室:https://mp.weixin.qq.com/s/yxrGe2elmdS_r-svR8qXIQ

发表评论

Top