NEO智慧合約除錯流程說明

NEO技術飯發表於2018-12-26

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…


相關文章