0x02頁面功能介紹
新版的NeoRay的整體頁面如下,左邊有五個功能按鍵:檔案瀏覽、合約部署、合約呼叫、合約除錯、支援。同時提供了切回舊版NeoRay的功能。
0x03編寫或載入合約檔案
在檔案瀏覽功能模組內,一共有三種方式匯入一個合約檔案。第一種是新增本地檔案,第二種是建立新的檔案直接線上編寫,剩下的一種是透過合約hash載入別的開發者部署的合約。可以根據自己的需要合理選擇。這裡我們就使用第一種方式來做演示。如下圖我匯入了一個本地的test合約:
0x04部署合約
當合約編寫或匯入完成之後呢,我們就需要編譯釋出合約。點選左側合約部署按鈕進入到部署頁面,首先點選編譯按鈕,如果合約書寫正確下方的輸出框就會顯示合約的hash。如果合約有錯誤,就會提示編譯失敗。目前對於失敗的原因提示的不夠詳細,希望後續的更新中能完善失敗原因。
設定部署合約時的一些引數。“動態呼叫”是指該合約中是否存在呼叫可變合約的情況,例如呼叫B合約但是B合約在合約釋出時不能夠明確其hash值,那麼就需要動態呼叫的功能。“建立儲存區”是指合約使用了儲存功能。“可接受付款”是指合約是否可以接受別的地址給其轉資產。
需要注意的是不同的引數選擇會帶來不同的收費,目前來講“動態呼叫”會增加500gas的費用,“建立儲存區”會增加400gas的費用。
點選部署合約按鍵後Teemo錢包會彈出彈窗要求籤名,點選同意即可。
0x05合約呼叫
透過Teemo錢包等待部署合約的交易被確認
交易被確認後,點選NeoRay2.0左側的合約呼叫按鈕,來到合約除錯模組。接下來我就介紹一下這個模組下一些引數的意義和使用方法。
系統費:neo公鏈上呼叫合約是根據呼叫的指令收費的,雖然有10gas的免費額度,但是一些複雜操作還是可能會超出10gas的額度的。所以如果你呼叫的合約過於複雜導致費用超過了10gas,這裡就需要填寫你超出的數額。手續費價目表
網路費:最新的收費規則要求超出1024位元組的交易要額外手續一定的手續費。Teemo會自動幫加上網路費。所以這個地方直接預設0就可以了。
交易附帶Gas:如果你需要向呼叫的合約轉賬一筆gas,那麼就在這個地方填入具體的數額。
增加引數:一般合約的引數都是(string,object[])這樣的型別。所以第一個增加的引數選擇string型別,第二個選擇陣列型別。如果你的合約與眾不同,那就對應你合約的引數型別選擇合適的型別。
舉幾個簡單的例子
1. 如果你的合約是 Main(int a), 那麼引數一就是 Integer ,不需要引數二。
2. 如果你的合約是 Main(int a , int b) ,那麼引數一就是 Integer ,引數二也是Integer。
ps: Address 型別填寫的就是“AWKqEmC1HsC4uBDvaoh5JLtQ2rigMdRSwX “,NeoRay會內部轉成byte[]。如果對應引數的選擇還有不理解的可以看一下論壇中對應的帖子。http://bbs.neldev.net/thread-146
呼叫合約與試執行:呼叫合約意味著傳送交易上鍊,會改變鏈上的資料。試執行意味著模擬執行合約,並不會造成鏈上資料的更改。
接下來根據我們之前部署的合約,試執行三個例子演示一下:
第一個例子如下,引數一填寫“Hello”,得到的返回是“ByteArray”型別,轉換之後就是“World”。常用轉換工具:https://peterlinx.github.io/DataTransformationTools/
第二個例子如下,引數一填寫“return”,引數二中陣列的首位填寫數字2:
第三個例子如下,引數一填寫“add”:
接下來我們使用第三個例子的引數進行呼叫交易的傳送,Teemo錢包會彈出彈框要求籤名,交易發出後等待一會等交易被確認。
0x06合約除錯
一個呼叫合約的交易被確認後,可以點選合約除錯按鈕進行合約的除錯。這個功能主要是當合約的執行結果與預期不符時,觀察合約的執行流程來尋找合約的問題。
需要注意的是,一定要選擇正確你要除錯的合約。因為交易列表裡只會顯示當前錢包地址呼叫此合約的交易。
如果一個交易被鏈上確認了但是在這個頁面還沒有顯示對應的交易,請耐心等待幾秒或者切換一下功能模組,儘量不要重新整理頁面。
選擇一個交易之後便可以除錯,下圖是這個呼叫所執行的指令過程,透過鍵盤的上下按鈕可以觀察合約的執行過程。透過notify可以得到這個交易的返回值,以及合約丟擲的通知。必要的時候可以透過丟擲通知的方式來除錯合約,類似除錯時打log的方法。右下角的CalcStack&AltStack中可以觀察計算棧和臨時棧中儲存的資料。
透過左邊執行的指令以及右邊的合約程式碼,可以觀測合約執行到了哪一行程式碼報錯。或者執行錯了哪一些流程。方便開發者除錯。
0x07支援
支援功能模組中有一些NEL社羣的導航,以及索取gas的功能。
後言
NeoRay新版帶來的驚喜還是很大的。由於我不會Python,所以也沒有體驗Python的流程。但就C#編寫的合約進行的流程來講,還是非常完美的。除錯呼叫都非常的便捷。同時給我帶來驚喜的還有外掛錢包Teemo,有點MetaMask的感覺。有能力成為NEO上廣泛使用的外掛錢包。
最後希望NEL社羣越做越好,推出更多方便我們開發者的工具。
新版本的Neoray網址為https://neoray.nel.group