最近在做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
(www.nuget.org/packages/ne…),
將neo種公私鑰計算、各種格式轉換、指令碼構造、交易構造等核心方法單獨實現了出來,不依賴區塊同步。這是乙個非常有用的工具,本文所說的專案也依賴它。但是這距離快速開始除錯合約還是很遠。構造交易必不可少的utxo資訊還是缺少,如何使用neo_sdk_thin的交易類構造交易對於初學者還是困難,發布交易後的結果檢視仍然不太方便。
構造nelapihelper類,方便使用nel系列實用api(僅合約呼叫相關部分)
構造neohelper類,在neo_sdk_thin基礎上擴充套件了一些功能
構造contractoperate類,為快速合約呼叫的基礎類
乙個簡單方便的整合黑盒合約測試介面框架(可能比較醜)
其實可以看出,只要替換合約功能區,就可以快速為任何合約提供黑盒測試工具。檢視專案**可以看出,其實合約功能區的**非常少。
獲取合約資訊類方法,如nep5 balanceof(只需invokescript不需要傳送交易)
執行合約功能類方法,如nep5 transfer(需要傳送到鏈上)
這些方法,自己寫的部分都只需2-3行**即可完成,而構造乙個合約入參也就是乙個編輯json的過程而已。
當然這個還不是最終版,後期還會增加:
最後送上**位址(一開始是為nns測試開發的,不要在意名字):github.com/neweconolab…
ps:如果你只是想要在專案中使用nns相關合約方法,可以直接用nuget www.nuget.org/packages/nn…
原文**nel新經濟實驗室:mp.weixin.qq.com/s/ffzlitja9…
編寫智慧型合約
1.安裝node.js 2.安裝truffle npm install g truffle 3.啟動testrpc以太坊環境 testrpc 4.另開終端視窗新建專案 mkdir demo cd demo 5.初始化專案目錄 truffle init 6.建立合約檔案 truffle create ...
積分智慧型合約
pragma solidity 0.4.22 title safemath dev math operations with safety checks that throw on error library safemath function div uint256 a,uint256 b int...
部署智慧型合約
合約部署需要挖礦才能成功,我們新開乙個視窗用與挖礦,新開乙個控制台,輸入命令 geth attach 連線到控制台,執行miner.start 1 開始挖礦。合約demo如下 pragma solidity 0.4.0 contract infocontract function getinfo p...