NEO智能合約黑盒測試框架

最近在做NNS合約測試工具,目標是簡單好用,適用非技術人員測試,同時開發快捷,實現快速。再寫完後,發現這不就是一個NEO智能合約黑盒測試框架嗎嘛,所以寫個文章分享給大家。

選擇的代碼平臺是C#,顯示和邏輯處理分開兩部分,邏輯部分用netstandard2.0(同時支持.net framework4.6.1以上和.net core 2.0以上)寫,UI先用.net framework桌面程序做,後面有時間用.net core 2.1也做幾個簡單的示例。

要測試智能合約,最大的難點是構造合約調用交易,這個工作別說非技術人員,就算非智能合約的開發人員也是一頭霧水的。

但是,隨着NEO智能合約的複雜度(例如NNS的競拍註冊器合約)、合約內管理資產量的提升,外加開發人員自身思維死角。合約的非技術人員規模黑盒測試快速實現工具是不可或缺的。這對矛盾,亟待解決。

過去,如果初入NEO的開發人員要測試合約,只能用NEO 的GUI調試合約功能或者構造RPC調用CLI,但是使用非常不便,尤其當合約方法有數個且互相關聯的時候。

好在,最近NEL發佈了Neo_SDK_Thin

https://www.nuget.org/package...),

將NEO種公私鑰計算、各種格式轉換、腳本構造、交易構造等核心方法單獨實現了出來,不依賴區塊同步。這是一個非常有用的工具,本文所說的項目也依賴它。但是這距離快速開始調試合約還是很遠。構造交易必不可少的UTXO信息還是缺少,如何使用Neo_SDK_Thin的交易類構造交易對於初學者還是困難,發佈交易後的結果查看仍然不太方便。

所以,這裏向大家推薦,這個測試框架,希望能夠幫助大家更加快速、舒適的開始智能合約調試。

框架要點

構造nelApiHelper類,方便使用NEL系列實用API(僅合約調用相關部分)
構造neoHelper類,在Neo_SDK_Thin基礎上擴展了一些功能

  • HexStr轉Str、HexStr翻轉、HexStr轉數值、大整數精度調整等方法
  • Jarray2script方法,構造Jarray形式的合約入參,一鍵輸出合約調用腳本
  • neoAddress類,輸入WIF,就能自動構造出地址、公鑰、私鑰
  • neoTranstion類,目前實現了普通轉賬交易和合約調用交易,一鍵構造、簽名、發送

構造contractOperate類,爲快速合約調用的基礎類

一個簡單方便的集成黑盒合約測試界面框架(可能比較醜)

圖片描述

其實可以看出,只要替換合約功能區,就可以快速爲任何合約提供黑盒測試工具。查看項目代碼可以看出,其實合約功能區的代碼非常少。

獲取合約信息類方法,如NEP5 balanceOf(只需invokeScript不需要發送交易)

圖片描述

執行合約功能類方法,如NEP5 transfer(需要發送到鏈上)

圖片描述

這些方法,自己寫的部分都只需2-3行代碼即可完成,而構造一個合約入參也就是一個編輯json的過程而已。

同時,交易發送後只要將txid丟到txid暫存區,出新快後會自動加載該交易相關的ApplicationLog,可以一站式查看合約方法結果、消耗gas、拋出的通知等重要信息。

當然這個還不是最終版,後期還會增加:

交易構造增加網絡手續費功能
實現CGAS這類設計UTXO出入合約的複雜調用交易
將框架的通用類單獨發佈nuget,使用更加方便
xx等
最後送上代碼地址(一開始是爲NNS測試開發的,不要在意名字):https://github.com/NewEconoLa...

PS:如果你只是想要在項目中使用NNS相關合約方法,可以直接用nuget https://www.nuget.org/package...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章