如何基于區(qū)塊鏈技術開發(fā)應用
隨著區(qū)塊鏈的火熱,相信很多同學已經躍躍欲試想投入到區(qū)塊鏈開發(fā)隊伍當中來,可是又感覺無從下手,本文就基于以太坊平臺,輕松帶大家入區(qū)塊鏈技術開發(fā)應用的大門。
以太坊是什么
我們要開發(fā)一個區(qū)塊鏈應用,如果要從頭開發(fā)一個區(qū)塊鏈,是不現實的,這時我們就需要以太坊這樣的平臺。 以太坊(Ethereum)是一個建立在區(qū)塊鏈技術之上的應用平臺。它允許任何人在平臺中建立和使用通過區(qū)塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區(qū)塊鏈里的Android,它是一個開發(fā)平臺,讓我們就可以像基于Android Framework一樣基于區(qū)塊鏈技術寫應用。
在沒有以太坊之前,寫區(qū)塊鏈應用是這樣的:拷貝一份比特幣代碼,然后去改底層代碼如加密算法,共識機制,網絡協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。 以太坊平臺對底層區(qū)塊鏈技術進行了封裝,讓區(qū)塊鏈應用開發(fā)者可以直接基于以太坊平臺進行開發(fā),開發(fā)者只要專注于應用本身的開發(fā),從而大大降低了難度。
以太坊是目前最流行的區(qū)塊鏈應用平臺,圍繞以太坊已經形成了一個較為完善的開發(fā)生態(tài)圈:有眾多開發(fā)框架、工具可以選擇。
智能合約是什么
對區(qū)塊鏈稍有了解的同學,肯定約到過這個詞:智能合約,簡單來說,智能合約就是跑在區(qū)塊鏈上的一段程序。
智能合約英文是Smart Contract,和人工智能( AI:Artificial Intelligence )的智能并沒有什么關系,智能合約的概念最早是尼克薩博在95年就提出的,它的概念很簡單,就是將法律條文寫成可執(zhí)行代碼。當時并沒有區(qū)塊鏈,不過智能合約與區(qū)塊鏈幾乎是天生一對,因為區(qū)塊鏈上程序就像法律條文都是按規(guī)則運行。
那如何來編寫智能合約呢?以太坊上編寫智能合約官方推薦的語言是Solidity,這個語言大家也許沒有聽說過,不用怕的,如果你對Python 或 Java 有一點點了解,那么學習Solidity就很簡單。
先來看看一個合約Solidity文件會包含哪些內容,我用了一張思維導圖來表示:
再對照代碼看看, 有合約文件simplestorage.sol如下:
這段智能合約的作用是保存了一個變量在區(qū)塊鏈中,然后提供了兩個函數:set() 和 get() 來設置和獲取變量。
然而,這樣一段智能合約程序并不能稱之為一個應用,我們平時看到應用,如微信,微博,知乎等都至少需要有一個和用戶交互的界面以便用戶來進行使用,不管這個界面是APP、Web、還是小程序,區(qū)塊鏈應用既然是應用同樣也需要有這樣的交互UI。
區(qū)塊鏈(去中心化)應用
區(qū)塊鏈應用,由于其運行在去中心化區(qū)塊鏈網絡上,通常稱為去中心化應用程序(Decentralized App)。 去中心化應用程序雖然每個人對它的定義不一樣,通常認為如果一個應用的關鍵(核心)的數據存儲在區(qū)塊鏈網絡中(不再由一個單一的機構掌握),這樣的應用都可以認為是區(qū)塊鏈應用。
我們可以把區(qū)塊鏈理解為一個存取應用數據的不可篡改的分布式數據庫。
因此一個去中心化應用一般應該這么幾個組成部分,我用了一張思維導圖來表示:
前面我們已經了解如何編寫智能合約,而應用的UI展現部分,如編寫HTML5等,這一部分也有大量的教程,關鍵的一個部分是如何讓UI和智能合約進行交互呢?這就需要使用web3.js庫
web3.js
Web3.js是以太坊官方的Java API,可以幫助智能合約開發(fā)者使用HTTP或者IPC與本地的或者遠程的以太坊節(jié)點交互。
應用的整個通信交互過程可以抽象為下圖:
如果一個前端界面需要和上面的智能合約進行交互,核心的Java代碼如下:
交互代碼主要有下面這幾個步驟:
初始化web3設置一個調用合約的默認賬號使用合約的ABI(二進制接口信息)及合約地址 創(chuàng)建一個合約對象使用合約對象調用合約函數(如:把從合約中獲取的值顯示在界面中,用戶點擊界面調用相應的合約函數)
總結
我們來做一下總結,編寫一個完整的區(qū)塊鏈(去中心化)應用,歸納一下就是需要編寫3個部分的代碼:
1:編寫智能合約;
2: 編寫應用UI;
3: 編寫UI月合約交互代碼。
當然,在實際開發(fā)過程,我們還會需要非常多的問題,如怎么搭建開發(fā)環(huán)境,怎么進行測試,怎么部署等等。

責任編輯:售電衡衡
- 相關閱讀
- 區(qū)塊鏈
- 大數據產業(yè)園
- 大數據應用
-
5大重點任務11個重點細分 河北加快構建省級能源大數據中心
-
能源互聯網注入數字經濟新動能 電力大數據實現更多價值
2020-07-21能源互聯網,電力大數據,電力企業(yè) -
中國首個100%利用清潔能源運營的大數據產業(yè)園投運
2020-07-21清潔能源,清潔能源消納,青海
-
探索大數據 區(qū)塊鏈實現與能源互聯網良好契合
2020-06-09區(qū)塊鏈,電力行業(yè),能源互聯網 -
基于區(qū)塊鏈的含安全約束分布式電力交易方法
-
區(qū)塊鏈在能源交易與協同調度的應用前景:提升電力交易的自由度和實時響應效率
2019-11-04區(qū)塊鏈在能源交易與協同
-
5大重點任務11個重點細分 河北加快構建省級能源大數據中心
-
中國首個100%利用清潔能源運營的大數據產業(yè)園投運
2020-07-21清潔能源,清潔能源消納,青海 -
大數據產業(yè)園四處開花
2019-03-05大數據產業(yè)園
-
能源互聯網注入數字經濟新動能 電力大數據實現更多價值
2020-07-21能源互聯網,電力大數據,電力企業(yè) -
全國人大代表、貴州六盤水市市長李剛:借力大數據綜合試驗區(qū) 建設六盤水5G示范城
2020-05-27大數據,5G,電力,六盤水,物聯網 -
融媒體平臺建設及縣域融媒體平臺軟件系統
2019-04-03融媒體平臺