成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

開發(fā)NEO智能合約的步驟流程

I_Am / 2725人閱讀

摘要:在社區(qū)開發(fā)的一些最新工具集的幫助下,出現(xiàn)了四步流程法,從而進(jìn)一步加快了開發(fā)效率。兩步流程法傳統(tǒng)上來說,智能合約開發(fā)有兩步開發(fā)流程編碼和測試。四步工作流程法開發(fā)智能合約對于編輯和調(diào)試階段,我建議使用兩種方法和。

摘要:開發(fā)NEO智能合約的典型開發(fā)流程有兩個(gè)實(shí)際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網(wǎng)上部署、調(diào)用、檢查結(jié)果)。這個(gè)工作流需要編譯和部署來調(diào)試任何代碼的變更。在NEO社區(qū)開發(fā)的一些最新工具集的幫助下,出現(xiàn)了四步流程法,從而進(jìn)一步加快了開發(fā)效率。

在本教程中,我們將首先簡要地討論一下標(biāo)準(zhǔn)的兩步流程法,并提供一些有用的參考資料,然后介紹四步流程法以及相關(guān)的新開發(fā)的工具。除非另有說明,否則討論時(shí)使用C#作為智能合約開發(fā)語言。

在本教程中,我很有可能會(huì)犯錯(cuò)誤或者遺漏一些要點(diǎn),非常感謝您的評論。

兩步流程法

傳統(tǒng)上來說,NEO智能合約開發(fā)有兩步開發(fā)流程:編碼和測試。這篇官方的教程提供了關(guān)于這個(gè)工作流程的詳細(xì)信息。

在編碼階段,NEO官方支持C#(示例)。我們也可以使用Java和Python開發(fā)智能合約。你可以輕松的在Google和YouTube上找到教程和示例代碼頁,以了解如何編寫NEO智能合約。

我們依賴于測試網(wǎng)來進(jìn)行測試工作。如上圖所示,對于測試網(wǎng),我們有很多選擇。

公共測試網(wǎng)絡(luò)

最常見的方法是使用公共的測試網(wǎng)絡(luò)。NEO智能經(jīng)濟(jì)、CoZ和NEL分別維護(hù)了三個(gè)主要的公共測試網(wǎng)絡(luò)。Alex Guba的教程詳細(xì)闡述了如何在NEO和CoZ測試網(wǎng)絡(luò)上進(jìn)行測試之前,同步區(qū)塊并申請GAS,不過NEL的測試網(wǎng)絡(luò)對支持本地化的中國開發(fā)者更加友好。

在大多數(shù)情況下,你可以通過NEO API(完整引用)運(yùn)行RPC調(diào)用來與區(qū)塊鏈進(jìn)行交互。部分APIs只有當(dāng)你運(yùn)行了一個(gè)具有開放錢包的NEO.CLI節(jié)點(diǎn)時(shí),才可使用。但是如果NEO.Scan賦予了測試網(wǎng)權(quán)限,則可以在不運(yùn)行節(jié)點(diǎn)的情況下調(diào)用類似的服務(wù)。例如,API getBalance需要一個(gè)正在運(yùn)行的節(jié)點(diǎn),但是你可以使用Neo-Scan提供的get_balance接口來獲得類似的功能。我建立了一個(gè)Postman集合來幫助測試這些遠(yuǎn)程調(diào)用。你只需更改測試網(wǎng)絡(luò)(或Neo-Scan)的值即可使用它。

NeoCompile Eco有一個(gè)新的特殊的公共測試網(wǎng)絡(luò),這激發(fā)了我們轉(zhuǎn)向四步工作流程的靈感。我們將在下一節(jié)詳細(xì)討論它。

私人測試網(wǎng)絡(luò)

另一個(gè)好的方法是建立你自己的私人測試網(wǎng)絡(luò)。與公共測試網(wǎng)絡(luò)相比,私人測試網(wǎng)絡(luò)的優(yōu)勢在于你可以獲得完全的控制權(quán)。使用私人測試網(wǎng)絡(luò)的第一個(gè)原因是,它真的非常有用,也很鼓舞人心,因?yàn)樗鼤?huì)讓人產(chǎn)生錢包中持有數(shù)百萬的NEO和GAS的錯(cuò)覺。與此同時(shí),與公共測試網(wǎng)絡(luò)相比,我們不需要擔(dān)心鏈再生,連接失敗,或者因?yàn)槠渌_發(fā)者錯(cuò)誤導(dǎo)致的網(wǎng)絡(luò)擁堵。

NEO官網(wǎng)提供了一個(gè)在云服務(wù)器上設(shè)置私人網(wǎng)絡(luò)的逐步指南。不過查看了我在Azure上的賬單后,我不建議你這么做,除非你不得不和其他人共享鏈數(shù)據(jù)。Neo-privatenet-docker非常適合在本地計(jì)算機(jī)上構(gòu)建私人的測試網(wǎng)絡(luò),同時(shí)可以幫你節(jié)省大量配置和執(zhí)行指令的時(shí)間。如果你在筆記本電腦上運(yùn)行它,它還能幫助你在加拿大的冬天保持你的體溫。

兩步流程法的局限性

這個(gè)兩步工作流程法已經(jīng)成熟,并且被大多數(shù)現(xiàn)有的項(xiàng)目所采用。然而,與傳統(tǒng)的軟件項(xiàng)目相比,它仍有一些局限性。主要的一點(diǎn)是調(diào)試的代價(jià)非常高昂,要監(jiān)視變量的運(yùn)行時(shí)值,最好的選擇是使用運(yùn)行時(shí)通知,如以下代碼段所示:

byte[] ba0 = CallSomeFunction();
byte[] ba1 = CallAnotherFunction();

//Print out the value of ba0 and ba1 to ApplicationhLog
Runtime.Notify(ba0, ba1);

我們需要使用neon重新編譯項(xiàng)目,確保有足夠的GAS并進(jìn)行重新部署,使用正確的格式組成適當(dāng)?shù)膮?shù),然后調(diào)用它,并等待20-30秒的時(shí)間等待下一個(gè)區(qū)塊的出現(xiàn),調(diào)用API getapplicationlog來獲取JSON格式的日志,使用pretty format格式打印響應(yīng)的內(nèi)容來查找日志值(查看以下示例中高亮的部分)。日志值通常表示為字節(jié)數(shù)組,因此我們需要將它們轉(zhuǎn)換為字符串或者大整數(shù)類型…總共7個(gè)步驟。

[
  {
    "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"
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }
]

官方文檔中有介紹單元測試的章節(jié),但是其中的示例仍然需要提前編譯和/或部署.avm文件。

當(dāng)我們在開發(fā)基于NEO的區(qū)塊鏈游戲CarryBattle時(shí),我的團(tuán)隊(duì)norchain.io強(qiáng)烈地感受到了這種限制。在社區(qū)的幫助下,我們開始嘗試4階段工作流程,這大大提高了開發(fā)效率。

四步流程法

這個(gè)工作流程的四個(gè)階段是:編輯、調(diào)試、私人測試以及Beta測試。主要的想法是:

利用一些新工具將編碼階段拆分成編碼階段和調(diào)試階段。在調(diào)試階段,我們盡可能多地跳過或運(yùn)行本地測試案例,就像傳統(tǒng)軟件項(xiàng)目那樣,而不與區(qū)塊鏈進(jìn)行交互。

將測試階段拆分為私人測試和Beta測試,分別使用privateNet / NeoCompiler
Eco進(jìn)行私人測試以及公共測試網(wǎng)絡(luò)進(jìn)行beta測試。 使用這種方法,我們以最小的代價(jià)確保最大程度上的靈活性和兼容性。

四步工作流程法開發(fā)NEO智能合約(C#)
對于編輯和調(diào)試階段,我建議使用兩種方法:Neo-Debugger和Neunity。

Neo-Debugger

Neo-Debugger的項(xiàng)目是由Relfos公司開發(fā)的。使用特殊版本的Neon和調(diào)試json文件,你可以編寫調(diào)用級別的測試用例,并在IDE中逐步運(yùn)行源代碼,跟蹤GAS使用情況和應(yīng)用程序日志,而無需與區(qū)塊鏈交互。Neo-Debugger的另一個(gè)不錯(cuò)的功能是,它可以在檢查堆棧時(shí)跳過OpCode(操作碼)。Nikolaj- k制作過一個(gè)針對Neo-Debugger的視頻教程。

Fabio也用類似的想法做了一個(gè)不錯(cuò)的項(xiàng)目SCTracker,但是當(dāng)他知道Neo-Debugger的存在的時(shí)候,他決定跳過這個(gè)項(xiàng)目。但還是要感謝他的貢獻(xiàn)。

Neunity.Adapter

Neo-Debugger在NeoVM級別的調(diào)試方面做得很好,但是它仍然有一些局限性。例如,它還不支持變量監(jiān)視、斷點(diǎn)或功能級別的測試用例。

由Norchain.io創(chuàng)建的框架Neunity的Adapter層正在采用了不同的本地調(diào)試方式。 Neunity.Adapter的思路是:

引入適配器層來隔離NeoVM和普通.Net項(xiàng)目之間的差異。
我們有兩個(gè)適配器Neunity.Adapter.NEO和Neunity.Adapter.Unity,它們具有相同的方法簽名的集合,同時(shí)具有不同的命名空間和實(shí)現(xiàn)。
它們分別用于NEO智能合約和Unity項(xiàng)目(實(shí)際上也適用于許多其他.Net項(xiàng)目)。
這些方法大多數(shù)都與類型轉(zhuǎn)換,運(yùn)算符或系統(tǒng)調(diào)用模擬有關(guān)。

然后我們可以在適配器層上編寫應(yīng)用層邏輯。 顯然,通過簡單地更改命名空間,這個(gè)應(yīng)用層邏輯可以被智能合約或普通的.Net項(xiàng)目使用。

現(xiàn)在我們可以使用功能級別測試驅(qū)動(dòng)開發(fā)(TDD),甚至可以與C#Dapp客戶端共享邏輯。

我制作了一個(gè)視頻教程來演示如何使用Neunity.Adapter來執(zhí)行功能級別的TDD,執(zhí)行測試步驟,同時(shí)監(jiān)視變量和調(diào)用堆棧。

與下表相比,我們可以相應(yīng)看到Neo-Debugger和Neunity.Adapter的優(yōu)勢。根據(jù)我們的經(jīng)驗(yàn),Neo-Debugger更適合小規(guī)模項(xiàng)目,因?yàn)樗幌腉AS,而Neunity.Adapter更適合較大規(guī)?;蚋鼜?fù)雜的項(xiàng)目,因?yàn)樗玫刂С諸DD,多類,斷點(diǎn),變量跟蹤等。

Neunity的設(shè)計(jì)實(shí)踐了大規(guī)模軟件的項(xiàng)目方法學(xué)(我指的是系統(tǒng)邏輯的規(guī)模,并不意味著單個(gè)調(diào)用必須復(fù)雜或者昂貴的)。通過適配器層的使用邁出了縮小.Net開發(fā)者和NEO開發(fā)者之間差距的重要的一步。與此同時(shí),Neunity還提供了一個(gè)Neunity.Tools層,它具有靈活的序列化工具(NuSD),類HTTP的通信協(xié)議(NuTP),類URI的存儲(chǔ)管理器(NuIO)等。我們希望能夠助力更多的NEO區(qū)塊鏈Dapps的落地。

私人測試

通過迭代編碼和調(diào)試階段完成邏輯后,我們可以轉(zhuǎn)到私人測試階段并開始與區(qū)塊鏈進(jìn)行交互。我們建議使用私人測試網(wǎng)絡(luò)或NeoCompiler Eco進(jìn)行私人測試,因?yàn)樗鼈兊沫h(huán)境簡單且易于交互和管理。

NeoResearch公司開發(fā)的NeoCompiler Eco公共測試網(wǎng)絡(luò)是新的、特殊的。它不需要使用GAS,同時(shí)提供了一整套基于Web的GUI工具,包括編譯,導(dǎo)入OpCode,部署,調(diào)用,交易,轉(zhuǎn)換等.NeoResearch最近還集成了gitter.im用于即時(shí)聊天,以便更好地與開發(fā)者溝通。 Igor有一個(gè)很好的教程來介紹它的基本功能。

這個(gè)測試網(wǎng)絡(luò)的另一個(gè)優(yōu)點(diǎn)是,區(qū)塊生成的時(shí)間間隔是5-7秒,幾乎比正常情況快5倍。它縮短了等待時(shí)間,幾乎不會(huì)出現(xiàn)開發(fā)者在同一個(gè)區(qū)塊發(fā)生調(diào)用沖突的情況,這使得測試幾乎與私人測試網(wǎng)絡(luò)一樣簡單。這就是為什么我們建議將其視為私人測試選項(xiàng)的原因。

Beta測試

如果成功完成了在私人測試階段的所有功能測試,我們就可以進(jìn)入最后的一個(gè)階段,之后就可上線Dapp。 公共測試網(wǎng)絡(luò)是最適合于Beta測試的地方,因?yàn)樗愃朴谥骶W(wǎng)環(huán)境。 另一個(gè)好處是你還可以邀請你的朋友來幫忙測試。 你的智能合約還要能沉著地面對來自并行調(diào)用、潛在盲區(qū)或者無效輸入等的挑戰(zhàn)。

總結(jié)

與許多其他公有鏈項(xiàng)目相比,NEO具有許多優(yōu)勢:諸如高交易速度,相對友好的開發(fā)語言(C#,Python),國際化且活躍的社區(qū)氛圍。

改進(jìn)開發(fā)工作流程有助于提高NEO的語言優(yōu)勢,同時(shí)可以將出色的想法與有生命力的項(xiàng)目相結(jié)合,而無需花費(fèi)太多時(shí)間來解決瑣碎的問題。

本人知識有限,希望本教程可以給大家提供些許幫助。感謝Fabio和Relfos對本教程提供的幫助。 歡迎任何建議和意見。

NEOFANS:neofans.org
NEOFANS 微博:https://www.weibo.com/neofans...
NEOFANS telegram群:https://t.me/NEOfansCN

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72108.html

相關(guān)文章

  • 開發(fā)NEO智能合約步驟流程

    摘要:在社區(qū)開發(fā)的一些最新工具集的幫助下,出現(xiàn)了四步流程法,從而進(jìn)一步加快了開發(fā)效率。兩步流程法傳統(tǒng)上來說,智能合約開發(fā)有兩步開發(fā)流程編碼和測試。四步工作流程法開發(fā)智能合約對于編輯和調(diào)試階段,我建議使用兩種方法和。 摘要:開發(fā)NEO智能合約的典型開發(fā)流程有兩個(gè)實(shí)際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網(wǎng)上部署、調(diào)用、檢查結(jié)果)。這個(gè)工作流需要編譯和部署來調(diào)試任...

    zhou_you 評論0 收藏0
  • NEO Python編譯器介紹

    摘要:編譯器介紹編譯器可將文件編譯為格式,在虛擬機(jī)中運(yùn)行。編譯器支持語言子集語言子集與的關(guān)系類似于蟒蛇與蟒屬的關(guān)系。 showImg(https://segmentfault.com/img/bVbkVe2?w=800&h=480); neo-boa編譯器介紹 neo-boa編譯器可將Python文件編譯為.avm格式,在Neo虛擬機(jī)中運(yùn)行。NEO虛擬機(jī)可在Neo區(qū)塊鏈上執(zhí)行合約。 編譯器支...

    Vicky 評論0 收藏0
  • 對話 | 淺析NEOdBFT共識算法

    摘要:轉(zhuǎn)賬手續(xù)費(fèi)為的情況下,礦工怎么獲得收益呢礦工這一概念,存在于共識算法中,共識算法中是沒有礦工的存在的。也減少了作惡節(jié)點(diǎn)對整個(gè)區(qū)塊鏈造成影響的可能性。隨后由被選出的記賬人團(tuán)體通過算法,來達(dá)成共識并生成新的區(qū)塊。 近期,我們收到很多來自NEO社區(qū)愛好者對于如何獲得GAS的疑問,為此我們采訪了NEO的高級研發(fā)經(jīng)理Malcolm。showImg(https://segmentfault.com...

    hersion 評論0 收藏0
  • 如何在NEO區(qū)塊鏈上實(shí)現(xiàn)信息加密

    摘要:首先,和擁有一對密鑰,接著,和互換公鑰,與互換公鑰互換公鑰后便可使用一種稱為橢圓曲線密鑰交換體制見維基百科的常見技術(shù)創(chuàng)建雙方的共享密鑰。上文僅是的基本介紹,下文將講解怎樣使用為區(qū)塊鏈上的信息加密。 你或許已經(jīng)知道,區(qū)塊鏈上的交易大多都是透明公開的,用戶既可以直接通過RPC查詢NEO節(jié)點(diǎn),也可以使用NEOTracker或NEOScan等方便好用的區(qū)塊鏈瀏覽器瀏覽交易記錄、余額、智能合約或...

    darcrand 評論0 收藏0
  • 鏈游成公鏈新寵,風(fēng)口之下究竟哪家稱王?

    摘要:截至目前,布洛克城用戶數(shù)量已經(jīng)突破萬,吸引了眾多區(qū)塊鏈應(yīng)用入駐,包括預(yù)言家?guī)诺美拢约叭f利馬鏈與飛車等游戲應(yīng)用。 以謎戀貓為起點(diǎn),區(qū)塊鏈游戲這趟列車已經(jīng)風(fēng)馳電掣地跑了滿一年。回顧去年同期,整個(gè)數(shù)字貨幣市場都陷入了非理性的狂熱中,天價(jià)貓不斷刷新著記錄,以太坊網(wǎng)絡(luò)也一度擁堵到被業(yè)內(nèi)外大肆嘲笑,看,它竟然被一只貓給搞癱瘓了。時(shí)隔一年,盡管養(yǎng)貓游戲熱度已降,但是新玩法的興起還是吸引了越來越多...

    chenatu 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<