中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

開發NEO智能合約的流程是什么

發布時間:2022-01-11 15:54:37 來源:億速云 閱讀:129 作者:iii 欄目:互聯網科技

今天小編給大家分享一下開發NEO智能合約的流程是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

兩步流程法

傳統上來說,NEO智能合約開發有兩步開發流程:編碼和測試。這篇官方的教程提供了關于這個工作流程的詳細信息。

在編碼階段,NEO官方支持C#(示例)。我們也可以使用Java和Python開發智能合約。你可以輕松的在Google和YouTube上找到教程和示例代碼頁,以了解如何編寫NEO智能合約。

開發NEO智能合約的流程是什么

我們依賴于測試網來進行測試工作。如上圖所示,對于測試網,我們有很多選擇。

公共測試網絡

最常見的方法是使用公共的測試網絡。NEO智能經濟、CoZ和NEL分別維護了三個主要的公共測試網絡。Alex Guba的教程詳細闡述了如何在NEO和CoZ測試網絡上進行測試之前,同步區塊并申請GAS,不過NEL的測試網絡對支持本地化的中國開發者更加友好。

在大多數情況下,你可以通過NEO API(完整引用)運行RPC調用來與區塊鏈進行交互。部分APIs只有當你運行了一個具有開放錢包的NEO.CLI節點時,才可使用。但是如果NEO.Scan賦予了測試網權限,則可以在不運行節點的情況下調用類似的服務。例如,API getBalance需要一個正在運行的節點,但是你可以使用Neo-Scan提供的get_balance接口來獲得類似的功能。我建立了一個Postman集合來幫助測試這些遠程調用。你只需更改測試網絡(或Neo-Scan)的值即可使用它。

NeoCompile Eco有一個新的特殊的公共測試網絡,這激發了我們轉向四步工作流程的靈感。我們將在下一節詳細討論它。

私人測試網絡

另一個好的方法是建立你自己的私人測試網絡。與公共測試網絡相比,私人測試網絡的優勢在于你可以獲得完全的控制權。使用私人測試網絡的第一個原因是,它真的非常有用,也很鼓舞人心,因為它會讓人產生錢包中持有數百萬的NEO和GAS的錯覺。與此同時,與公共測試網絡相比,我們不需要擔心鏈再生,連接失敗,或者因為其他開發者錯誤導致的網絡擁堵。

NEO官網提供了一個在云服務器上設置私人網絡的逐步指南。不過查看了我在Azure上的賬單后,我不建議你這么做,除非你不得不和其他人共享鏈數據。Neo-privatenet-docker非常適合在本地計算機上構建私人的測試網絡,同時可以幫你節省大量配置和執行指令的時間。如果你在筆記本電腦上運行它,它還能幫助你在加拿大的冬天保持你的體溫。

兩步流程法的局限性

這個兩步工作流程法已經成熟,并且被大多數現有的項目所采用。然而,與傳統的軟件項目相比,它仍有一些局限性。主要的一點是調試的代價非常高昂,要監視變量的運行時值,最好的選擇是使用運行時通知,如以下代碼段所示:

byte[] ba0 = CallSomeFunction();
byte[] ba1 = CallAnotherFunction();

//Print out the value of ba0 and ba1 to ApplicationhLog
Runtime.Notify(ba0, ba1);

我們需要使用neon重新編譯項目,確保有足夠的GAS并進行重新部署,使用正確的格式組成適當的參數,然后調用它,并等待20-30秒的時間等待下一個區塊的出現,調用API getapplicationlog來獲取JSON格式的日志,使用pretty format格式打印響應的內容來查找日志值(查看以下示例中高亮的部分)。日志值通常表示為字節數組,因此我們需要將它們轉換為字符串或者大整數類型…總共7個步驟。

[
  {
    "jsonrpc": "2.0",
    "id": 5,
    "result": {
      "txid": "0x7e3f08a8af4290693184b413ba1d58bede8462cb565baba8ffcc380bf947e317",
      "executions": [
        {
          "trigger": "Application",
          "contract": "0x32682404d4313ecf80b70e1323ccf908a80fdfc0",
          "vmstate": "HALT, BREAK",
          "gas_consumed": "0.039",
          "stack": [],
          "notifications": [
            {
              "contract": "0xaeccdcf6d7ecf827e7e6baec3c233eca08c27ee3",
              "state": {
                "type": "Array",
                "value": [
                  {
                    "type": "ByteArray",
                    "value": "010203"
                  },
                  {
                    "type": "ByteArray",
                    "value": "04090d"
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }
]

官方文檔中有介紹單元測試的章節,但是其中的示例仍然需要提前編譯和/或部署.avm文件。

當我們在開發基于NEO的區塊鏈游戲CarryBattle時,我的團隊norchain.io強烈地感受到了這種限制。在社區的幫助下,我們開始嘗試4階段工作流程,這大大提高了開發效率。

四步流程法

這個工作流程的四個階段是:編輯、調試、私人測試以及Beta測試。主要的想法是:

  1. 利用一些新工具將編碼階段拆分成編碼階段調試階段。在調試階段,我們盡可能多地跳過或運行本地測試案例,就像傳統軟件項目那樣,而不與區塊鏈進行交互。

  2. 測試階段拆分為私人測試Beta測試,分別使用privateNet / NeoCompiler Eco進行私人測試以及公共測試網絡進行beta測試。 使用這種方法,我們以最小的代價確保最大程度上的靈活性和兼容性。

開發NEO智能合約的流程是什么

與下表相比,我們可以相應看到Neo-Debugger和Neunity.Adapter的優勢。根據我們的經驗,Neo-Debugger更適合小規模項目,因為它不消耗GAS,而Neunity.Adapter更適合較大規模或更復雜的項目,因為它更好地支持TDD,多類,斷點,變量跟蹤等。

Neunity的設計實踐了大規模軟件的項目方法學(我指的是系統邏輯的規模,并不意味著單個調用必須復雜或者昂貴的)。通過適配器層的使用邁出了縮小.Net開發者和NEO開發者之間差距的重要的一步。與此同時,Neunity還提供了一個Neunity.Tools層,它具有靈活的序列化工具(NuSD),類HTTP的通信協議(NuTP),類URI的存儲管理器(NuIO)等。我們希望能夠助力更多的NEO區塊鏈Dapps的落地。

私人測試

通過迭代編碼和調試階段完成邏輯后,我們可以轉到私人測試階段并開始與區塊鏈進行交互。我們建議使用私人測試網絡或NeoCompiler Eco進行私人測試,因為它們的環境簡單且易于交互和管理。

NeoResearch公司開發的NeoCompiler Eco公共測試網絡是新的、特殊的。它不需要使用GAS,同時提供了一整套基于Web的GUI工具,包括編譯,導入OpCode,部署,調用,交易,轉換等.NeoResearch最近還集成了gitter.im用于即時聊天,以便更好地與開發者溝通。 Igor有一個很好的教程來介紹它的基本功能。

這個測試網絡的另一個優點是,區塊生成的時間間隔是5-7秒,幾乎比正常情況快5倍。它縮短了等待時間,幾乎不會出現開發者在同一個區塊發生調用沖突的情況,這使得測試幾乎與私人測試網絡一樣簡單。這就是為什么我們建議將其視為私人測試選項的原因。

Beta測試

如果成功完成了在私人測試階段的所有功能測試,我們就可以進入最后的一個階段,之后就可上線Dapp。 公共測試網絡是最適合于Beta測試的地方,因為它類似于主網環境。 另一個好處是你還可以邀請你的朋友來幫忙測試。 你的智能合約還要能沉著地面對來自并行調用、潛在盲區或者無效輸入等的挑戰。

以上就是“開發NEO智能合約的流程是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

neo
AI

沿河| 临江市| 鞍山市| 石首市| 米易县| 安岳县| 广西| 汉源县| 徐汇区| 五峰| 屏东市| 嘉禾县| 河东区| 灵璧县| 疏附县| 宝丰县| 都江堰市| 铅山县| 上虞市| 邮箱| 玉田县| 漳平市| 巩义市| 祁连县| 正定县| 巴里| 乐业县| 明水县| 松阳县| 惠安县| 浮山县| 景谷| 阿合奇县| 廉江市| 巴彦淖尔市| 南皮县| 凯里市| 镇赉县| 城市| 寻乌县| 孝昌县|