1. 程式人生 > >區塊鏈應用:NAS星雲鏈 入門之從零開發第一個DAPP

區塊鏈應用:NAS星雲鏈 入門之從零開發第一個DAPP

前言

無論你是否想了解NAS,只要你想了解區塊鏈或者DAPP都可以看這篇文章,因為很多概念是一樣的。

應該有很多小夥伴和我一樣,一直想去入手學習區塊鏈,但是總無從下手,有些概念感覺理解了,有感覺沒理解。其實這都是“沒實踐”的鍋。

所謂看十遍不如想一遍,想一遍不如做一遍。這不最近星雲鏈nebulas正有開發者激勵計劃,每提交一個應用都可以獲得獎勵,所以正好藉此機會,開發第一個DAPP,並且理解所謂的DAPP到底是一個什麼樣的東西。

這篇文章幾乎是DAPP開發零基礎的踩坑經歷,記錄下來,勉強對零基礎的同學可以成為教程~

如果你看了本篇教程並且開發了你自己的DAPP,可以

點選這裡註冊NAS
用我的推廣連結提交,這樣你提交的時候我會得到另外一部分獎勵,作為對我寫作的激勵~

在開始開發之前,需要進行一系列的準備操作。包括錢包的製備,環境的搭建等等。這裡對各種概念,我儘量以通俗易懂的話來描述,因為我也是小白,可能會因此描述的不夠準確,所以歡迎大家拍磚討論。

註冊錢包

作為開發的第一步,首先肯定是需要申請一個錢包。

這裡的錢包你可以想象成你顯示世界的錢包。裡面存放著你的大洋。現實生活中,你的錢包在你手裡,所以別人拿不走,再數字生活中,你需要有一個密碼來解鎖你的錢包,當你的密碼丟失的時候,就等於你的錢包丟失,無法找回,並且造成財產丟失。

其次開啟index.html檔案

這樣你就打開了web版的錢包,輸入你想要的密碼(一定不能忘記的),點選新建錢包,其次點選下載密碼庫檔案,將錢包檔案儲存在本地(一定不能丟失),此時生成了一個以n1開頭的檔案:

這個檔案的名稱就是你的錢包地址。 任何人有了你的錢包地址,就可以與你發生 交易,意思就是別人可以向你的錢包裡面轉賬。

此時點選錢包資訊,上傳你的錢包並且解鎖,可以看到你的賬戶的當前資訊。期中包括你的餘額等資料。

此時你已經註冊了你的一個錢包,完成了第一部準備。

接下來進行下一步準備,那就是領取測試網的測試幣。在https://testnet.nebulas.io/claim/每天可以領取1NAS的測試幣,注意這個幣領取是在測試網,與主網沒有任何關係。 主網和測試網的意思你可以理解為兩個不同的鏈,事實上區塊鏈本身就是資料庫,其實就是主網和測試網是兩個不同的資料庫的資料,測試網的資料只用來測試不產生實際價值。

領取完畢之後,再開啟錢包,在錢包右上角可以切換主網和測試網,這時切換到測試網。

查詢錢包餘額,發現已經領取完畢(如果沒有顯示成功,請耐心等待,區塊確認有延遲,意思是把資料寫入區塊鏈裡,需要等待各個區塊確認該資料有效安全,才可以將資料寫入區塊鏈,所以會有延遲)

你已經成功領取了第一個NAS,接下來你將會用測試的NAS來部署測試你的智慧合約。

編寫部署智慧合約

在開始這部分之前,先來解釋一些如何理解智慧合約,或者說如何理解一個DAPP的運作原理。

智慧合約簡單的白話來講,就是一段儲存在區塊鏈上,執行在區塊鏈程式碼執行引擎的一個程式碼片。這部分的程式碼,提供給DAPP前端一些必要的介面,用來儲存或者查詢資料。你可以理解為:智慧合約就是後端,提供介面的。他所用的資料庫就是區塊鏈本身。

智慧合約貌似理解了,那麼區塊鏈本身是資料庫如何理解呢?

區塊鏈(block-chain),顧名思義,是以區塊形成的連結串列,所有資料儲存在稱為“區塊”的東西上,每個區塊的大小有限,所有用連結串列把他們串聯起來,如圖:

這樣就應該很好理解了,那麼說完了後端和資料庫,是不是就差前端了?

一個DAPP的前端,可以是任何形式的,比如WEB版,比如Android版,比如iOS版,但是因為市面上大多數區塊鏈開發都屬於前期,官方只提供了WEB版的sdk來接入區塊鏈,所以目前一般的DAPP是以WEB版為主,畢竟跨平臺。

那麼接下來,我們來開始編輯我們的智慧合約,也就是所謂的後臺。此部分參考官方dictionary的demo進行修改。

這裡假設我們要做一個名為“小小公開信”的DAPP,主要的功能是任何區塊鏈上的使用者都可以發表一篇標題不重複的公開信,如果標題被佔用,就只能檢視這篇公開信。

首先新建一個js檔案,編寫我們所需要的實體,比如一公開信,他應該有標題,內容,以及作者。


其次,我們應該可以有許可權訪問我們自己智慧合約的儲存空間,所以根據官方的API來建立儲存空間:

這裡的資料是以kep-value形式儲存的。相信大家很容易理解。

接下來,只需要再編寫兩個函式,一個是儲存公開信,一個是查詢公開信,邏輯比較簡單,直接貼程式碼:

這樣,我們就完成了一個簡單的智慧合約。

部署智慧合約

還記得你剛才領取的測試網的1枚NAS嗎,他開始派上用場了。要知道,把我們的程式碼部署到鏈上可不是免費的,要不然白白浪費資源誰都不願意幹啊,所以我們需要支付一定量的GAS,只要是交易,或者理解為向區塊鏈這個資料庫寫入資料,就需要支付GAS,GAS是NAS的一個計量單位(當然首創在ETH中)。為什麼需要GAS呢,其中除了為了保證執行的程式碼不是無價值的,還有一個原因是要防止有人惡意釋出程式碼,比如寫一個死迴圈。

現在,開啟你的錢包,點選合約,再點選部署,把你剛才的智慧合約程式碼複製到合約程式碼裡面,之後解鎖錢包,點選測試,發現沒有返回錯誤,就可以點選提交部署:


部署成功之後,會告訴你交易的hash以及合約地址,一定要好好儲存起來,否則目前會丟失(好像官方錢包還沒提供查詢歷史交易的功能)

這裡合約地址就是你剛才部署程式碼的地址,每個智慧合約都有一個合約地址,通過合約地址以及支付一些GAS,就可以呼叫合約的程式碼。

測試智慧合約

點選錢包的執行,此時我們測試一下寫入一封公開信,這裡函式寫合約定義的

save()
引數傳入:
[“給初學者的一封公開信”,”大家持之以恆不斷努力,終會成功”]
目的地址寫剛才的合約地址如圖:

點選測試,發現沒有錯誤,則提交。
等待區塊確認之後,我們再來查詢一下,剛才的資料有沒有提交成功:

點選測試,可以看到結果:

成功把我們的公開信返回了。至此合約部署完畢。

開發前端頁面

既然我們的智慧合約部署好了,就說明我們擁有一個數據庫為區塊鏈的後臺伺服器了。現在只需要編寫一個前端,展示給使用者使用就可以了。

首先把專案clone下來:

git clone https://github.com/nebulasio/neb.js.git

然後,需要用到一個打包工具叫做gulp

所以使用npm安裝:

npm install -g gulp

安裝完畢後,執行glup打包

打包完畢後,會在專案資料夾下生成一個/dist的資料夾,把這個資料夾複製到我們的工作目錄,作為檔案依賴使用。

因為筆者沒有接觸過前端開發,所以這裡前端選擇bootstrap+jQuery,因為他們對新手很友好,零基礎即可快速上手。

首先在html檔案裡,引入需要的依賴檔案:


    <script type="text/javascript" src="./dist/nebulas.js"></script>
    <script type="text/javascript" src="./jquery-3.3.1.min.js"></script>
    <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

然後編寫前端樣式,這裡的前端比較簡單,提供一個搜尋框,一個展示框,一個錄入框:

當用戶輸入信件名稱的時候,呼叫neb的介面,來獲取資料,根據回撥來展示資料:

比如,此時我搜索一篇文章,名為《給初學者的一封公開信》,反饋如下:

這樣代表,已經查詢到了內容。接下來來完成提交內容的部分。

此時根據nebpay的api,可以呼叫起chrome錢包外掛進行支付:

其中nebPay是根據官方示例拷貝下來的檔案。


    <script type="text/javascript" src="./dist/nebPay.js"></script>

這個時候,編輯一封公開信,點選提交,即可彈出錢包頁面進行GAS支付:

等提交完畢,即可查詢到你寫的公開信的內容。

如此一來遍大功告成!

因為是靜態網頁,所以直接部署到你的伺服器上,讓其他使用者訪問即可。

當你開發部署完畢,即可去官網提交DAPP獲取激勵大獎~~

如果本文對你有幫助,請點選喜歡並且擴散~~

本文中DAPP已提交,並且部署以及開源

歡迎star,如果你想來交流區塊鏈技術,可以加qq群:615075629

相關推薦

區塊應用NAS星雲 入門開發一個DAPP

前言 無論你是否想了解NAS,只要你想了解區塊鏈或者DAPP都可以看這篇文章,因為很多概念是一樣的。 應該有很多小夥伴和我一樣,一直想去入手學習區塊鏈,但是總無從下手,有些概念感覺理解了,有感覺沒理解。其實這都是“沒實踐”的鍋。 所謂看十遍不如

區塊應用NAS星雲DAPP開發寵物養成遊戲

在上一篇文章中,我們開發了自己第一個demo級別的DAPP,並且獲得了NAS官方的獎勵。現在提交隨著提交的應用越來越多,稽核力度也在加大,所以demo級的應用已經很難以通過了。 於是和小夥伴一起開發一個區塊鏈遊戲,來幫助自己更好的學習區塊鏈。 這次的想法

Elasticsearch入門開始安裝ik分詞器

gpo article terms n) rm -rf 從零開始 系列 pack 默認 起因 需要在ES中使用聚合進行統計分析,但是聚合字段值為中文,ES的默認分詞器對於中文支持非常不友好:會把完整的中文詞語拆分為一系列獨立的漢字進行聚合,顯然這並不是我的初衷。我們來看個

《逐夢旅程Windows遊戲編程開始》學習筆記GDI框架

register 開發 操作 程序 turn use 繪制 cal 完整 1 //===========================================【程序說明】=================================== 2 //

Android Things入門---(二)開發一個Android Things程式

上一節介紹了開發環境的搭建,如果使用樹莓派的朋友可以先參考其他文章配置完之後再參考本節。 開發Android Things 的工具即為Android Studio。請自己下載安裝即可。 開啟Android Studio,原始介面如下。點選start a new Android Studio

5分鐘構建一個 Apache Flink 應用

在本文中,我們將從零開始,教您如何構建第一個Apache Flink (以下簡稱Flink)應用程式。 開發環境準備 Fli

Blockathon(北京)分享基於星雲開發區塊垂直教育平臺SuperxSchool 贏得區塊鬆大賽亞軍

2018年5月25-27日,由HiBlock區塊鏈社群與bitfwd所舉辦的區塊鬆在中關村e世界聯合創業辦公社隆重舉行,經過三天時間的激烈角逐,由我所帶領的 SuperxSchool 區塊鏈垂直教育平臺在本次大賽中榮獲亞軍,在這個過程中,從選手的角度和組織者

星雲智能合約開發(四)星雲上發送交易

星雲鏈智能合約開發 在星雲鏈上發送交易 準備賬戶 在星雲鏈上,每個地址表示一個唯一的賬戶,一一對應。 在發送交易前,我們需要準備兩個賬戶:一個賬戶用來發送代幣 (稱為"from") 和另一個賬戶來接受代幣 (稱為"to"). 發送者賬戶 在這裏,我們將會使用配置

區塊安全實現公雙花攻擊的多種方法

針對 EOS、NEO 等大公鏈平臺的多個雙花攻擊漏洞的案例,360 區塊鏈實驗室總結出了多種造成數字貨幣雙花攻擊的多種原因,並提出了一種通用的安全減緩措施。各種大公鏈專案實際上都產生過能夠產生雙花攻擊之類的嚴重安全問題,盜取加密貨幣對黑客來講不是難事。 而在幾個月的區塊鏈安全研究中

互融雲采購招標供應系統為供應行業創造良好環境

情況 綜合 環境 term mark 采購流程 RoCE 中標 運營商 隨著全球分工日益精細化,企業的供應鏈正變得越發復雜。面對這種變化,傳統的采購方式變得越來越低效,企業采購線上化成為新趨勢。企業不再局限於傳統采購模式的轉變和采購管理體系的優化再造,而是戰略戰術體系的系統

佇列---佇列佇列的式儲存結構

一、鏈佇列的基本結構 佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,我們把它簡稱為鏈佇列。 為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點。鏈佇列示意圖: 當佇列為空時,front和rear都指向頭結點。 二、鏈

棧的式儲存結構

轉至:http://www.nowamagic.net/librarys/veda/detail/2290 前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是連結串列的頭指標。單鏈表有頭指標,而棧頂指

1分鐘圈 | 全球公有技術評估,星雲位列全球三!以太坊擴充套件解決方案Raiden釋出新測試網路...

Hi,艾瑞巴蒂!這裡是 7 月 20 日的每日1句話新聞晚報,只需1分鐘,看看全球最熱、最新的區

eos原始碼賞析(九)EOS智慧合約入門區塊打包和廣播機制

首先感謝群裡的大佬中山狼、linx、阿泥豆等各位給予的指導。 在上篇文章中我們寫到了eos中區塊產生的呼叫流程,其主要過程是從外掛中的producer_pligin去產生區塊,而實際產生區塊的過程卻是在chain中的controller.cpp中實現的。通過以前的文章我們知

區塊開始寫一個區塊遊戲--水果機

機器環境 win10 nodev8.9.4 npm install -g truffle npm install -g ganache-cli Github地址 效果 初始化專

eos原始碼賞析(十)EOS智慧合約入門區塊上鍊

或許我們還都記得美國隊長的勇敢、神武,為了捍衛自由和保衛人民而擁有的堅不可摧的盾牌,但我們還記得那個瘦弱到不堪一擊的史蒂夫.羅傑斯麼?血清的注射讓他變成了很多人心目中的英雄。那麼我們又可曾想過,美國隊長還會變成以前的那個因瘦弱的身軀而一直被人嘲笑的史蒂夫.羅傑斯麼,或許真的已

Vue.js 入門開始做一個極簡 To-Do 應用

Vue.js 入門:從零開始做一個極簡 To-Do 應用 寫作時間:2019-12-10版本資訊:Vue.js 2.6.10官網文件:https://cn.vuejs.org/ 前言  學習 Vue 的最佳方式之一是「請立刻查閱 Vue.js 的官方文件」,簡單看一下「基礎」部分,配合本文食用更佳

docker入門3:Dockerfile部署的一個java應用

3.docker build -t jpress:latest . 報錯:Step 2 : COPY jpress-web-newest.war /usr/local/tomcat/webappsstat /var/lib/docker/devicemapper/mnt/71f885e6c5a228807aa

SpringBoot 入門教程例項詳解(一) 開發一個SpringBoot應用程式例項

構建你的第一個Spring Boot應用程式 更多精彩請閱讀 東陸之滇的csdn部落格:http://blog.csdn.net/zixiao217 此教程提供一個入門應用程式例子,來展示Spring Boot是如何幫助快速、敏捷開發新一代應用的。你還可以通

【electron】electron入門 教你如何建立一個electron應用 並進行打包【超詳細】

前言 electron 是一個可以讓我們使用js建立桌面應用程式的框架,並且可以很簡單的實現跨平臺,讓我們可以更輕鬆的書寫業務邏輯,而不用擔心跨平臺的問題。事實上,electron可以被看做一個精簡版的Chrome,內部的V8直譯器固然很強大,但是對比