针对.NET开发者的NEO区块链文档html
宗旨node
本文档旨在记录NEO 区块链平台的(软件)体系架构参考模型,以使.NET开发人员可以更快速,更轻松地了解NEO平台。git
目标github
原则编程
驱动因素api
针对以太坊智能合约开发者的旁注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