针对.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開發者環境的關鍵組成部分。
| 標記 | 名字 | 描述 |
| 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名稱空間)
參考
- [NEONAMESPACE] NEO Project, NEO Namespace from docs.neo.org/en-us/sc/ap…
- [NEOSCAPI] NEO Project, Smart Contract API Reference from docs.neo.org/en-us/sc/ap…
- [NEONODEINTRO] NEO Project, NEO node introduction from docs.neo.org/en-us/node/…
- [NEOBUGGER] Relfos, Relfos/neo-debugger-tools from github.com/Relfos/neo-…
其它好資源
- [NEORPCSHARPCLIENT] City of Zion, Neo-RPC-SharpClient from github.com/CityOfZion/…
原文轉自NEL新經濟實驗室:mp.weixin.qq.com/s/yxrGe2elm…
進群交流:795681763
總結
以上是生活随笔為你收集整理的针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scp传输文件,自动填充密码
- 下一篇: 设计模式之装饰者模式(一)