Neo智慧合約除錯比較麻煩,我們NEL在開發NNS的過程中,發現現存的工具根本無法支撐我們開發如此複雜的智慧合約。
所以我們搞了一整套自己的智慧合約除錯工具
第一步、編譯智慧合約
安裝neondebug
Git 抓取編譯:github.com/NewEconoLab…
你將得到一個嶄新的neon.exe
用他替換掉你原來用的那個neon.exe
怎麼替換呢,請參照如下步驟移除你原來neon.exe 的path,換上neondebug的
為什麼要安裝neondebug
Neondebug 多匯出了一個map.json檔案,實現avm到原始碼的對映。
同時按照hash 將 avm abi cs map.json 整理到一起
比如生成
就會直接用scripthash整理相關檔案
檢查編譯結果
用neondebuggui “ load avm from file “ 按鈕,載入剛生成的avm檔案
可以進行檢視,檢視以後,就可以用NEONDEBUGGUI的除錯交易工具除錯使用此指令碼的交易。
檢視一次即可。檔案會被copy到neondebuggui的目錄中
開源智慧合約
使用upload this to server 按鈕,可以將智慧合約程式碼上傳到伺服器,則任何人可以獲取到此合約資訊
使用 load from server 按鈕,可以根據scripthash檢視伺服器上的合約資訊。
第二步、產生一個交易
安裝neo-gui-nel
Git抓取編譯:github.com/NewEconoLab…
你將得到一個NEL定製版本的NEO-GUI
這個定製版本乍看沒有什麼東西,但是來發布一下剛才的智慧合約你就會發現一點不同
請注意neo-gui-nel 預設配置在testnet上面。
釋出合約
NEL定製版本NEO-GUI已經率先支援了釋出NEP4( dyncall)合約
第三步、除錯
呼叫合約
呼叫合約NEOGUI定製版也可以新增一個Array
試想這個智慧合約Main(string,object[] args),其中args[0] 是 一個 string[]
這就需要array裡面巢狀array,現在的neogui 是沒有辦法呼叫這樣的合約的
除錯試執行合約
當你點選試執行以後就已經可以除錯了
按照Neo-gui-nel預設的配置,你點選試執行之後,就會在這個目錄得到一個0x00檔案
使用它就可以完成NEO智慧合約除錯了。
使用NEONDEBUGGUI的Debug Transaction 選項卡
LoadFromFile button,開啟這個0x00檔案
你就得到了一個擁有智慧合約詳細執行的每一步的工具。
並且可以對應到原始碼,可以觀察執行棧細節,可以觀察每一個資料的細節的工具。
讓你可以完全瞭解到這次test是怎麼執行的
除錯交易
傳送一筆交易,等一會兒,等這筆交易被確認
你就可以在fulllog目錄找到這筆交易對應的檔案
開啟它,就能夠除錯這筆交易在鏈上的實際執行細節。
第四步、更多更方便
1. 只要有人upload過一次的智慧合約,所有人隨時都能除錯時看到原始碼
2. 我們有一個爬蟲,隨時將testnet的合約的log檔案上傳到伺服器
即使你沒有安裝NEO-GUI-NEL,你使用loadformserver按鈕也可以除錯,只要你知道交易id就行。
3. 未來我們將開發純網頁版的除錯工具
4. 未來我們也將同步主網的資料也上傳伺服器
原文轉自:mp.weixin.qq.com/s/sZQ5lLU-T…