NeoRay 2.0的使用體驗

買賣虛擬貨幣
NeoRay是NEL社羣推出的一個方便NEO開發者開發合約的工具。自這個工具推出以來,受到很多開發者的好評,極大的便捷了廣大的NEO合約開發者。我也一直使用這個工具進行NEO合約的開發和除錯。最近NEL推出了新版的NeoRay,增加了python語言的合約開發,人性化了一些操作流程。作為一名NEO合約開發愛好者,迫不及待的嚐了個鮮。體驗下來還是不錯的,頁面看起來更加簡單明瞭,合約呼叫部分也更加人性化。由於新版較舊版來說,改動還是很大的,頁面和流程都大不相同。作為一個嚐鮮者還是很有必要記錄一下嚐鮮過程和心得的,方便後來者體驗。0x01 登入NeoRay2.0不再直接使用私鑰或者nep6錢包登入來進行合約的部署與呼叫,改而使用了NEL社羣之前推出的產品TEEMO外掛錢包。在使用NeoRay2.0之前需要安裝好外掛錢包。不然會出現以下提示:

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

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;