NeoRay 2.0的使用是怎樣的,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)公司提供高防主機(jī)、云服務(wù)器、香港服務(wù)器、達(dá)州主機(jī)托管等
NeoRay是NEL社區(qū)推出的一個(gè)方便NEO開發(fā)者開發(fā)合約的工具。自這個(gè)工具推出以來(lái),受到很多開發(fā)者的好評(píng),極大的便捷了廣大的NEO合約開發(fā)者。我也一直使用這個(gè)工具進(jìn)行NEO合約的開發(fā)和調(diào)試。
最近NEL推出了新版的NeoRay,增加了python語(yǔ)言的合約開發(fā),人性化了一些操作流程。作為一名NEO合約開發(fā)愛好者,迫不及待的嘗了個(gè)鮮。體驗(yàn)下來(lái)還是不錯(cuò)的,頁(yè)面看起來(lái)更加簡(jiǎn)單明了,合約調(diào)用部分也更加人性化。
由于新版較舊版來(lái)說(shuō),改動(dòng)還是很大的,頁(yè)面和流程都大不相同。作為一個(gè)嘗鮮者還是很有必要記錄一下嘗鮮過(guò)程和心得的,方便后來(lái)者體驗(yàn)。
NeoRay2.0不再直接使用私鑰或者nep6錢包登錄來(lái)進(jìn)行合約的部署與調(diào)用,改而使用了NEL社區(qū)之前推出的產(chǎn)品TEEMO插件錢包。在使用NeoRay2.0之前需要安裝好插件錢包。不然會(huì)出現(xiàn)以下提示:
這里附上Teemo插件錢包的介紹:傳送門
新版的NeoRay的整體頁(yè)面如下,左邊有五個(gè)功能按鍵:文件瀏覽、合約部署、合約調(diào)用、合約調(diào)試、支持。同時(shí)提供了切回舊版NeoRay的功能。
在文件瀏覽功能模塊內(nèi),一共有三種方式導(dǎo)入一個(gè)合約文件。第一種是添加本地文件,第二種是創(chuàng)建新的文件直接在線編寫,剩下的一種是通過(guò)合約hash載入別的開發(fā)者部署的合約??梢愿鶕?jù)自己的需要合理選擇。這里我們就使用第一種方式來(lái)做演示。如下圖我導(dǎo)入了一個(gè)本地的test合約:
當(dāng)合約編寫或?qū)胪瓿芍竽?,我們就需要編譯發(fā)布合約。點(diǎn)擊左側(cè)合約部署按鈕進(jìn)入到部署頁(yè)面,首先點(diǎn)擊編譯按鈕,如果合約書寫正確下方的輸出框就會(huì)顯示合約的hash。如果合約有錯(cuò)誤,就會(huì)提示編譯失敗。目前對(duì)于失敗的原因提示的不夠詳細(xì),希望后續(xù)的更新中能完善失敗原因。
設(shè)置部署合約時(shí)的一些參數(shù)?!皠?dòng)態(tài)調(diào)用”是指該合約中是否存在調(diào)用可變合約的情況,例如調(diào)用B合約但是B合約在合約發(fā)布時(shí)不能夠明確其hash值,那么就需要?jiǎng)討B(tài)調(diào)用的功能?!皠?chuàng)建存儲(chǔ)區(qū)”是指合約使用了存儲(chǔ)功能?!翱山邮芨犊睢笔侵负霞s是否可以接受別的地址給其轉(zhuǎn)資產(chǎn)。
需要注意的是不同的參數(shù)選擇會(huì)帶來(lái)不同的收費(fèi),目前來(lái)講“動(dòng)態(tài)調(diào)用”會(huì)增加500gas的費(fèi)用,“創(chuàng)建存儲(chǔ)區(qū)”會(huì)增加400gas的費(fèi)用。
點(diǎn)擊部署合約按鍵后Teemo錢包會(huì)彈出彈窗要求簽名,點(diǎn)擊同意即可。
通過(guò)Teemo錢包等待部署合約的交易被確認(rèn)
交易被確認(rèn)后,點(diǎn)擊NeoRay2.0左側(cè)的合約調(diào)用按鈕,來(lái)到合約調(diào)試模塊。接下來(lái)我就介紹一下這個(gè)模塊下一些參數(shù)的意義和使用方法。
系統(tǒng)費(fèi):neo公鏈上調(diào)用合約是根據(jù)調(diào)用的指令收費(fèi)的,雖然有10gas的免費(fèi)額度,但是一些復(fù)雜操作還是可能會(huì)超出10gas的額度的。所以如果你調(diào)用的合約過(guò)于復(fù)雜導(dǎo)致費(fèi)用超過(guò)了10gas,這里就需要填寫你超出的數(shù)額。手續(xù)費(fèi)價(jià)目表
網(wǎng)絡(luò)費(fèi):最新的收費(fèi)規(guī)則要求超出1024字節(jié)的交易要額外手續(xù)一定的手續(xù)費(fèi)。Teemo會(huì)自動(dòng)幫加上網(wǎng)絡(luò)費(fèi)。所以這個(gè)地方直接默認(rèn)0就可以了。
交易附帶Gas:如果你需要向調(diào)用的合約轉(zhuǎn)賬一筆gas,那么就在這個(gè)地方填入具體的數(shù)額。
增加參數(shù):一般合約的參數(shù)都是(string,object[])這樣的類型。所以第一個(gè)增加的參數(shù)選擇string類型,第二個(gè)選擇數(shù)組類型。如果你的合約與眾不同,那就對(duì)應(yīng)你合約的參數(shù)類型選擇合適的類型。
舉幾個(gè)簡(jiǎn)單的例子
1. 如果你的合約是 Main(int a) ,那么參數(shù)一就是 Integer ,不需要參數(shù)二。
2. 如果你的合約是 Main(int a , int b) ,那么參數(shù)一就是 Integer ,參數(shù)二也是Integer。
ps : Address 類型填寫的就是“AWKqEmC1HsC4uBDvaoh6JLtQ2rigMdRSwX “,NeoRay會(huì)內(nèi)部轉(zhuǎn)成byte[]。如果對(duì)應(yīng)參數(shù)的選擇還有不理解的可以看一下論壇中對(duì)應(yīng)的帖子。傳送門
調(diào)用合約與試運(yùn)行:調(diào)用合約意味著發(fā)送交易上鏈,會(huì)改變鏈上的數(shù)據(jù)。試運(yùn)行意味著模擬執(zhí)行合約,并不會(huì)造成鏈上數(shù)據(jù)的更改。
接下來(lái)根據(jù)我們之前部署的合約,試運(yùn)行三個(gè)例子演示一下:
第一個(gè)例子如下,參數(shù)一填寫“Hello”,得到的返回是“ByteArray”類型,轉(zhuǎn)換之后就是“World”。常用轉(zhuǎn)換工具:傳送門
第二個(gè)例子如下,參數(shù)一填寫“return”,參數(shù)二中數(shù)組的首位填寫數(shù)字2:
第三個(gè)例子如下,參數(shù)一填寫“add”:
接下來(lái)我們使用第三個(gè)例子的參數(shù)進(jìn)行調(diào)用交易的發(fā)送,Teemo錢包會(huì)彈出彈框要求簽名,交易發(fā)出后等待一會(huì)等交易被確認(rèn)。
一個(gè)調(diào)用合約的交易被確認(rèn)后,可以點(diǎn)擊合約調(diào)試按鈕進(jìn)行合約的調(diào)試。這個(gè)功能主要是當(dāng)合約的執(zhí)行結(jié)果與預(yù)期不符時(shí),觀察合約的執(zhí)行流程來(lái)尋找合約的問(wèn)題。
需要注意的是,一定要選擇正確你要調(diào)試的合約。因?yàn)榻灰琢斜砝镏粫?huì)顯示當(dāng)前錢包地址調(diào)用此合約的交易。
如果一個(gè)交易被鏈上確認(rèn)了但是在這個(gè)頁(yè)面還沒有顯示對(duì)應(yīng)的交易,請(qǐng)耐心等待幾秒或者切換一下功能模塊,盡量不要刷新頁(yè)面。
選擇一個(gè)交易之后便可以調(diào)試,下圖是這個(gè)調(diào)用所執(zhí)行的指令過(guò)程,通過(guò)鍵盤的上下按鈕可以觀察合約的執(zhí)行過(guò)程。通過(guò)notify可以得到這個(gè)交易的返回值,以及合約拋出的通知。必要的時(shí)候可以通過(guò)拋出通知的方式來(lái)調(diào)試合約,類似調(diào)試時(shí)打log的方法。右下角的CalcStack&AltStack中可以觀察計(jì)算棧和臨時(shí)棧中保存的數(shù)據(jù)。
通過(guò)左邊執(zhí)行的指令以及右邊的合約代碼,可以觀測(cè)合約執(zhí)行到了哪一行代碼報(bào)錯(cuò)。或者執(zhí)行錯(cuò)了哪一些流程。方便開發(fā)者調(diào)試。
支持功能模塊中有一些NEL社區(qū)的導(dǎo)航,以及索取gas的功能。
看完上述內(nèi)容,你們掌握NeoRay 2.0的使用是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!