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