針對.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

相關文章
相關標籤/搜索