開發(fā)NEO智能合約的流程是什么

今天小編給大家分享一下開發(fā)NEO智能合約的流程是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

站在用戶的角度思考問題,與客戶深入溝通,找到靜樂網(wǎng)站設(shè)計(jì)與靜樂網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋靜樂地區(qū)。

兩步流程法

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

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

開發(fā)NEO智能合約的流程是什么

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

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

最常見的方法是使用公共的測(cè)試網(wǎng)絡(luò)。NEO智能經(jīng)濟(jì)、CoZ和NEL分別維護(hù)了三個(gè)主要的公共測(cè)試網(wǎng)絡(luò)。Alex Guba的教程詳細(xì)闡述了如何在NEO和CoZ測(cè)試網(wǎng)絡(luò)上進(jìn)行測(cè)試之前,同步區(qū)塊并申請(qǐng)GAS,不過NEL的測(cè)試網(wǎng)絡(luò)對(duì)支持本地化的中國開發(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賦予了測(cè)試網(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集合來幫助測(cè)試這些遠(yuǎn)程調(diào)用。你只需更改測(cè)試網(wǎng)絡(luò)(或Neo-Scan)的值即可使用它。

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

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

另一個(gè)好的方法是建立你自己的私人測(cè)試網(wǎng)絡(luò)。與公共測(cè)試網(wǎng)絡(luò)相比,私人測(cè)試網(wǎng)絡(luò)的優(yōu)勢(shì)在于你可以獲得完全的控制權(quán)。使用私人測(cè)試網(wǎng)絡(luò)的第一個(gè)原因是,它真的非常有用,也很鼓舞人心,因?yàn)樗鼤?huì)讓人產(chǎn)生錢包中持有數(shù)百萬的NEO和GAS的錯(cuò)覺。與此同時(shí),與公共測(cè)試網(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)建私人的測(cè)試網(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"
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }
]

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

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

四步流程法

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

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

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

開發(fā)NEO智能合約的流程是什么

與下表相比,我們可以相應(yīng)看到Neo-Debugger和Neunity.Adapter的優(yōu)勢(shì)。根據(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的落地。

私人測(cè)試

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

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

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

Beta測(cè)試

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

以上就是“開發(fā)NEO智能合約的流程是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:開發(fā)NEO智能合約的流程是什么
URL鏈接:http://bm7419.com/article12/iidedc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版企業(yè)網(wǎng)站制作、域名注冊(cè)、網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化