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

作者:Michael Herman

原文链接:https://mp.weixin.qq.com/s/yxrGe2elmdS_r-svR8qXIQ

翻译:NEL新经济实验室


针对.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开发者环境的关键组成部分。

 

标记

名字

描述

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虚拟机的关键组成部分

 

 标记

名字

描述

命名空间/智能合约可调用的API


NEO虚拟机

虚拟机主要部件和服务

-


执行引擎

执行引擎部件

NEO智能合约框架服务系统执行引擎类


当前语境

执行引擎当前语境

-


指令指针

执行引擎当前指令指针

-


脚本

当前智能合约脚本正在执行

 NEO智能合约框架智能合约类


执行堆栈

执行引擎数据堆栈

-


虚拟机状态

虚拟机档期状态(暂停,故障,中断)

-


脚本表

可调用脚本的虚拟机脚本表

-


互操作服务

互操作服务层用于不是基本执行引擎功能之一的所有内容(请参阅上文)

-


账户服务

账户服务

NEO智能合约框架服务NEO账户类


资产服务

资产服务

NEO智能合约框架服务NEO资产类


区块服务

区块服务

NEO智能合约框架服务NEO区块类


区块链服务,区块头服务

区块链服务,区块头服务

NEO智能合约框架服务NEO区块链

NEO智能合约框架服务NEO区块头类


合约服务

合约服务

 

NEO智能合约框架服务NEO合约类


运行时间服务

运行时间服务

NEO智能合约框架服务NEO运行时间类


存储服务

存储服务

NEO智能合约框架服务NEO存储类


验证器服务

验证器服务

 

NEO智能合约框架服务NEO验证器类


区块链状态

分布式账本

-

 NEO .NET命名空间


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

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

参考

  • [NEONAMESPACE] NEO Project, NEO Namespace from http://docs.neo.org/en-us/sc/api/neo.html

  • [NEOSCAPI] NEO Project, Smart Contract API Reference     from http://docs.neo.org/en-us/sc/api.html

  • [NEONODEINTRO] NEO Project, NEO node     introduction from http://docs.neo.org/en-us/node/introduction.html

  • [NEOBUGGER] Relfos, Relfos/neo-debugger-tools     from https://github.com/Relfos/neo-debugger-tools

其它好资源

  • [NEORPCSHARPCLIENT] City of Zion, Neo-RPC-SharpClient     from https://github.com/CityOfZion/Neo-RPC-SharpClient/blob/master/README.md


猜你喜欢

转载自blog.csdn.net/hellojc866/article/details/79932701