摘要:在社區開發的一些最新工具集的幫助下,出現了四步流程法,從而進一步加快了開發效率。兩步流程法傳統上來說,智能合約開發有兩步開發流程編碼和測試。四步工作流程法開發智能合約對于編輯和調試階段,我建議使用兩種方法和。
摘要:開發NEO智能合約的典型開發流程有兩個實際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網上部署、調用、檢查結果)。這個工作流需要編譯和部署來調試任何代碼的變更。在NEO社區開發的一些最新工具集的幫助下,出現了四步流程法,從而進一步加快了開發效率。
在本教程中,我們將首先簡要地討論一下標準的兩步流程法,并提供一些有用的參考資料,然后介紹四步流程法以及相關的新開發的工具。除非另有說明,否則討論時使用C#作為智能合約開發語言。
在本教程中,我很有可能會犯錯誤或者遺漏一些要點,非常感謝您的評論。
兩步流程法傳統上來說,NEO智能合約開發有兩步開發流程:編碼和測試。這篇官方的教程提供了關于這個工作流程的詳細信息。
在編碼階段,NEO官方支持C#(示例)。我們也可以使用Java和Python開發智能合約。你可以輕松的在Google和YouTube上找到教程和示例代碼頁,以了解如何編寫NEO智能合約。
我們依賴于測試網來進行測試工作。如上圖所示,對于測試網,我們有很多選擇。
公共測試網絡
最常見的方法是使用公共的測試網絡。NEO智能經濟、CoZ和NEL分別維護了三個主要的公共測試網絡。Alex Guba的教程詳細闡述了如何在NEO和CoZ測試網絡上進行測試之前,同步區塊并申請GAS,不過NEL的測試網絡對支持本地化的中國開發者更加友好。
在大多數情況下,你可以通過NEO API(完整引用)運行RPC調用來與區塊鏈進行交互。部分APIs只有當你運行了一個具有開放錢包的NEO.CLI節點時,才可使用。但是如果NEO.Scan賦予了測試網權限,則可以在不運行節點的情況下調用類似的服務。例如,API getBalance需要一個正在運行的節點,但是你可以使用Neo-Scan提供的get_balance接口來獲得類似的功能。我建立了一個Postman集合來幫助測試這些遠程調用。你只需更改測試網絡(或Neo-Scan)的值即可使用它。
NeoCompile Eco有一個新的特殊的公共測試網絡,這激發了我們轉向四步工作流程的靈感。我們將在下一節詳細討論它。
私人測試網絡
另一個好的方法是建立你自己的私人測試網絡。與公共測試網絡相比,私人測試網絡的優勢在于你可以獲得完全的控制權。使用私人測試網絡的第一個原因是,它真的非常有用,也很鼓舞人心,因為它會讓人產生錢包中持有數百萬的NEO和GAS的錯覺。與此同時,與公共測試網絡相比,我們不需要擔心鏈再生,連接失敗,或者因為其他開發者錯誤導致的網絡擁堵。
NEO官網提供了一個在云服務器上設置私人網絡的逐步指南。不過查看了我在Azure上的賬單后,我不建議你這么做,除非你不得不和其他人共享鏈數據。Neo-privatenet-docker非常適合在本地計算機上構建私人的測試網絡,同時可以幫你節省大量配置和執行指令的時間。如果你在筆記本電腦上運行它,它還能幫助你在加拿大的冬天保持你的體溫。
兩步流程法的局限性
這個兩步工作流程法已經成熟,并且被大多數現有的項目所采用。然而,與傳統的軟件項目相比,它仍有一些局限性。主要的一點是調試的代價非常高昂,要監視變量的運行時值,最好的選擇是使用運行時通知,如以下代碼段所示:
byte[] ba0 = CallSomeFunction(); byte[] ba1 = CallAnotherFunction(); //Print out the value of ba0 and ba1 to ApplicationhLog Runtime.Notify(ba0, ba1);
我們需要使用neon重新編譯項目,確保有足夠的GAS并進行重新部署,使用正確的格式組成適當的參數,然后調用它,并等待20-30秒的時間等待下一個區塊的出現,調用API getapplicationlog來獲取JSON格式的日志,使用pretty format格式打印響應的內容來查找日志值(查看以下示例中高亮的部分)。日志值通常表示為字節數組,因此我們需要將它們轉換為字符串或者大整數類型…總共7個步驟。
[ { "jsonrpc": "2.0", "id": 5, "result": { "txid": "0x7e3f08a8af4290693184b413ba1d58bede8462cb565baba8ffcc380bf947e317", "executions": [ { "trigger": "Application", "contract": "0x32682404d4313ecf80b70e1323ccf908a80fdfc0", "vmstate": "HALT, BREAK", "gas_consumed": "0.039", "stack": [], "notifications": [ { "contract": "0xaeccdcf6d7ecf827e7e6baec3c233eca08c27ee3", "state": { "type": "Array", "value": [ { "type": "ByteArray", "value": "010203" }, { "type": "ByteArray", "value": "04090d" } ] } } ] } ] } } ]
官方文檔中有介紹單元測試的章節,但是其中的示例仍然需要提前編譯和/或部署.avm文件。
當我們在開發基于NEO的區塊鏈游戲CarryBattle時,我的團隊norchain.io強烈地感受到了這種限制。在社區的幫助下,我們開始嘗試4階段工作流程,這大大提高了開發效率。
四步流程法這個工作流程的四個階段是:編輯、調試、私人測試以及Beta測試。主要的想法是:
利用一些新工具將編碼階段拆分成編碼階段和調試階段。在調試階段,我們盡可能多地跳過或運行本地測試案例,就像傳統軟件項目那樣,而不與區塊鏈進行交互。
將測試階段拆分為私人測試和Beta測試,分別使用privateNet / NeoCompiler
Eco進行私人測試以及公共測試網絡進行beta測試。 使用這種方法,我們以最小的代價確保最大程度上的靈活性和兼容性。
四步工作流程法開發NEO智能合約(C#)
對于編輯和調試階段,我建議使用兩種方法:Neo-Debugger和Neunity。
Neo-Debugger
Neo-Debugger的項目是由Relfos公司開發的。使用特殊版本的Neon和調試json文件,你可以編寫調用級別的測試用例,并在IDE中逐步運行源代碼,跟蹤GAS使用情況和應用程序日志,而無需與區塊鏈交互。Neo-Debugger的另一個不錯的功能是,它可以在檢查堆棧時跳過OpCode(操作碼)。Nikolaj- k制作過一個針對Neo-Debugger的視頻教程。
Fabio也用類似的想法做了一個不錯的項目SCTracker,但是當他知道Neo-Debugger的存在的時候,他決定跳過這個項目。但還是要感謝他的貢獻。
Neunity.Adapter
Neo-Debugger在NeoVM級別的調試方面做得很好,但是它仍然有一些局限性。例如,它還不支持變量監視、斷點或功能級別的測試用例。
由Norchain.io創建的框架Neunity的Adapter層正在采用了不同的本地調試方式。 Neunity.Adapter的思路是:
引入適配器層來隔離NeoVM和普通.Net項目之間的差異。
我們有兩個適配器Neunity.Adapter.NEO和Neunity.Adapter.Unity,它們具有相同的方法簽名的集合,同時具有不同的命名空間和實現。
它們分別用于NEO智能合約和Unity項目(實際上也適用于許多其他.Net項目)。
這些方法大多數都與類型轉換,運算符或系統調用模擬有關。
然后我們可以在適配器層上編寫應用層邏輯。 顯然,通過簡單地更改命名空間,這個應用層邏輯可以被智能合約或普通的.Net項目使用。
現在我們可以使用功能級別測試驅動開發(TDD),甚至可以與C#Dapp客戶端共享邏輯。
我制作了一個視頻教程來演示如何使用Neunity.Adapter來執行功能級別的TDD,執行測試步驟,同時監視變量和調用堆棧。
與下表相比,我們可以相應看到Neo-Debugger和Neunity.Adapter的優勢。根據我們的經驗,Neo-Debugger更適合小規模項目,因為它不消耗GAS,而Neunity.Adapter更適合較大規模或更復雜的項目,因為它更好地支持TDD,多類,斷點,變量跟蹤等。
Neunity的設計實踐了大規模軟件的項目方法學(我指的是系統邏輯的規模,并不意味著單個調用必須復雜或者昂貴的)。通過適配器層的使用邁出了縮小.Net開發者和NEO開發者之間差距的重要的一步。與此同時,Neunity還提供了一個Neunity.Tools層,它具有靈活的序列化工具(NuSD),類HTTP的通信協議(NuTP),類URI的存儲管理器(NuIO)等。我們希望能夠助力更多的NEO區塊鏈Dapps的落地。
私人測試
通過迭代編碼和調試階段完成邏輯后,我們可以轉到私人測試階段并開始與區塊鏈進行交互。我們建議使用私人測試網絡或NeoCompiler Eco進行私人測試,因為它們的環境簡單且易于交互和管理。
NeoResearch公司開發的NeoCompiler Eco公共測試網絡是新的、特殊的。它不需要使用GAS,同時提供了一整套基于Web的GUI工具,包括編譯,導入OpCode,部署,調用,交易,轉換等.NeoResearch最近還集成了gitter.im用于即時聊天,以便更好地與開發者溝通。 Igor有一個很好的教程來介紹它的基本功能。
這個測試網絡的另一個優點是,區塊生成的時間間隔是5-7秒,幾乎比正常情況快5倍。它縮短了等待時間,幾乎不會出現開發者在同一個區塊發生調用沖突的情況,這使得測試幾乎與私人測試網絡一樣簡單。這就是為什么我們建議將其視為私人測試選項的原因。
Beta測試
如果成功完成了在私人測試階段的所有功能測試,我們就可以進入最后的一個階段,之后就可上線Dapp。 公共測試網絡是最適合于Beta測試的地方,因為它類似于主網環境。 另一個好處是你還可以邀請你的朋友來幫忙測試。 你的智能合約還要能沉著地面對來自并行調用、潛在盲區或者無效輸入等的挑戰。
總結與許多其他公有鏈項目相比,NEO具有許多優勢:諸如高交易速度,相對友好的開發語言(C#,Python),國際化且活躍的社區氛圍。
改進開發工作流程有助于提高NEO的語言優勢,同時可以將出色的想法與有生命力的項目相結合,而無需花費太多時間來解決瑣碎的問題。
本人知識有限,希望本教程可以給大家提供些許幫助。感謝Fabio和Relfos對本教程提供的幫助。 歡迎任何建議和意見。
NEOFANS:neofans.org
NEOFANS 微博:https://www.weibo.com/neofans...
NEOFANS telegram群:https://t.me/NEOfansCN
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72108.html
摘要:在社區開發的一些最新工具集的幫助下,出現了四步流程法,從而進一步加快了開發效率。兩步流程法傳統上來說,智能合約開發有兩步開發流程編碼和測試。四步工作流程法開發智能合約對于編輯和調試階段,我建議使用兩種方法和。 摘要:開發NEO智能合約的典型開發流程有兩個實際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網上部署、調用、檢查結果)。這個工作流需要編譯和部署來調試任...
摘要:編譯器介紹編譯器可將文件編譯為格式,在虛擬機中運行。編譯器支持語言子集語言子集與的關系類似于蟒蛇與蟒屬的關系。 showImg(https://segmentfault.com/img/bVbkVe2?w=800&h=480); neo-boa編譯器介紹 neo-boa編譯器可將Python文件編譯為.avm格式,在Neo虛擬機中運行。NEO虛擬機可在Neo區塊鏈上執行合約。 編譯器支...
摘要:轉賬手續費為的情況下,礦工怎么獲得收益呢礦工這一概念,存在于共識算法中,共識算法中是沒有礦工的存在的。也減少了作惡節點對整個區塊鏈造成影響的可能性。隨后由被選出的記賬人團體通過算法,來達成共識并生成新的區塊。 近期,我們收到很多來自NEO社區愛好者對于如何獲得GAS的疑問,為此我們采訪了NEO的高級研發經理Malcolm。showImg(https://segmentfault.com...
摘要:首先,和擁有一對密鑰,接著,和互換公鑰,與互換公鑰互換公鑰后便可使用一種稱為橢圓曲線密鑰交換體制見維基百科的常見技術創建雙方的共享密鑰。上文僅是的基本介紹,下文將講解怎樣使用為區塊鏈上的信息加密。 你或許已經知道,區塊鏈上的交易大多都是透明公開的,用戶既可以直接通過RPC查詢NEO節點,也可以使用NEOTracker或NEOScan等方便好用的區塊鏈瀏覽器瀏覽交易記錄、余額、智能合約或...
摘要:截至目前,布洛克城用戶數量已經突破萬,吸引了眾多區塊鏈應用入駐,包括預言家幣得利德,以及萬利馬鏈與飛車等游戲應用。 以謎戀貓為起點,區塊鏈游戲這趟列車已經風馳電掣地跑了滿一年。回顧去年同期,整個數字貨幣市場都陷入了非理性的狂熱中,天價貓不斷刷新著記錄,以太坊網絡也一度擁堵到被業內外大肆嘲笑,看,它竟然被一只貓給搞癱瘓了。時隔一年,盡管養貓游戲熱度已降,但是新玩法的興起還是吸引了越來越多...
閱讀 3606·2021-11-15 11:38
閱讀 2801·2021-11-11 16:55
閱讀 2551·2021-11-08 13:22
閱讀 2628·2021-11-02 14:45
閱讀 1304·2021-09-28 09:35
閱讀 2568·2021-09-10 10:50
閱讀 463·2019-08-30 15:44
閱讀 2775·2019-08-29 17:06