做者:青冥子
git
最近在作NNS合約測試工具,目標是簡單好用,適用非技術人員測試,同時開發快捷,實現快速。再寫完後,發現這不就是一個NEO智能合約黑盒測試框架嗎嘛,因此寫個文章分享給你們。github
選擇的代碼平臺是C#,顯示和邏輯處理分開兩部分,邏輯部分用netstandard2.0(同時支持.net framework4.6.1以上和.net core 2.0以上)寫,UI先用.net framework桌面程序作,後面有時間用.net core 2.1也作幾個簡單的示例。json
要測試智能合約,最大的難點是構造合約調用交易,這個工道別說非技術人員,就算非智能合約的開發人員也是一頭霧水的。網絡
可是,隨着NEO智能合約的複雜度(例如NNS的競拍註冊器合約)、合約內管理資產量的提高,外加開發人員自身思惟死角。合約的非技術人員規模黑盒測試快速實現工具是不可或缺的。這對矛盾,亟待解決。框架
過去,若是初入NEO的開發人員要測試合約,只能用NEO 的GUI調試合約功能或者構造RPC調用CLI,可是使用很是不便,尤爲當合約方法有數個且互相關聯的時候。工具
好在,最近NEL發佈了Neo_SDK_Thin測試
(www.nuget.org/package...),.net
將NEO種公私鑰計算、各類格式轉換、腳本構造、交易構造等核心方法單獨實現了出來,不依賴區塊同步。這是一個很是有用的工具,本文所說的項目也依賴它。可是這距離快速開始調試合約仍是很遠。構造交易必不可少的UTXO信息仍是缺乏,如何使用Neo_SDK_Thin的交易類構造交易對於初學者仍是困難,發佈交易後的結果查看仍然不太方便。設計
因此,這裏向你們推薦,這個測試框架,但願可以幫助你們更加快速、溫馨的開始智能合約調試。調試
框架要點
構造nelApiHelper類,方便使用NEL系列實用API(僅合約調用相關部分)
構造neoHelper類,在Neo_SDK_Thin基礎上擴展了一些功能
構造contractOperate類,爲快速合約調用的基礎類
一個簡單方便的集成黑盒合約測試界面框架(可能比較醜)
其實能夠看出,只要替換合約功能區,就能夠快速爲任何合約提供黑盒測試工具。查看項目代碼能夠看出,其實合約功能區的代碼很是少。
獲取合約信息類方法,如NEP5 balanceOf(只需invokeScript不須要發送交易)
執行合約功能類方法,如NEP5 transfer(須要發送到鏈上)
這些方法,本身寫的部分都只需2-3行代碼便可完成,而構造一個合約入參也就是一個編輯json的過程而已。
同時,交易發送後只要將txid丟到txid暫存區,出新快後會自動加載該交易相關的ApplicationLog,能夠一站式查看合約方法結果、消耗gas、拋出的通知等重要信息。
固然這個還不是最終版,後期還會增長:
交易構造增長網絡手續費功能
實現CGAS這類設計UTXO出入合約的複雜調用交易
將框架的通用類單獨發佈nuget,使用更加方便
xx等
最後送上代碼地址(一開始是爲NNS測試開發的,不要在乎名字):github.com/NewEconoLa.…
PS:若是你只是想要在項目中使用NNS相關合約方法,能夠直接用nuget www.nuget.org/package...