中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

程序員如何切入?yún)^(qū)塊鏈去中心化應用開發(fā)

2020-01-02    來源:多智時代

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

前段時間一個以太坊游戲應用: Fomo3D 異;鸨,在短短的幾天內(nèi)就吸引了幾萬的以太幣投入游戲,第一輪游戲一個黑客用了一個非常巧妙的利用以太坊規(guī)則成為了最終贏家,拿走了1萬多以太幣獎金。

區(qū)塊鏈應用的價值由這個游戲反映的淋漓盡致,F(xiàn)omo3D游戲能夠成功核心所依賴的是以太坊提供的一個可信、不可篡改平臺。當游戲的規(guī)則確定之后,一切都按規(guī)則運行,無人可干預。今天這篇就來介紹一下程序員如何切入去中心化應用開發(fā)。

中心化應用


作為對比,先來看看中心化應用,其實就是現(xiàn)有的互聯(lián)網(wǎng)應用,為什么它是中心化應用,看看它的架構(gòu)圖:

程序員如何切入?yún)^(qū)塊鏈去中心化應用開發(fā)

平時我們接觸的是應用的前端(或稱客戶端),前端可以是HTML5的web頁面、 小程序、APP, 在前端展現(xiàn)的內(nèi)容通常發(fā)送一個請求到服務器,服務器返回相應的內(nèi)容給前端。在前端的動作同樣也會轉(zhuǎn)化請求發(fā)送到服務器,服務器處理之后返回數(shù)據(jù)到前端。也就是說我們所有看到的內(nèi)容或者操作都是中心化的服務器控制,因此說是中心化應用。

去中心化應用DAPP


而去中心化應用有什么不同呢? 看看它的架構(gòu)圖:

程序員如何切入?yún)^(qū)塊鏈去中心化應用開發(fā)

前端的表現(xiàn)上是一樣的, 還是H5頁面、 小程序、APP,DAPP和傳統(tǒng)App關鍵是后端部分不同,是后端不再是一個中心化的服務器,而是分布式網(wǎng)絡上任意節(jié)點,注意可以是 任意一個節(jié)點,在應用中給節(jié)點發(fā)送的請求通常稱為 交易 ,交易和中心化下的請求有幾個很大的不同是:交易的數(shù)據(jù)經(jīng)過用戶個人簽名之后發(fā)送到節(jié)點,節(jié)點收到交易請求之后,會把 請求廣播到整個網(wǎng)絡 ,交易在網(wǎng)絡達成共識之后,才算是真正的執(zhí)行(真正其作用的執(zhí)行不一是連接的后端節(jié)點,盡管后端也會執(zhí)行)。以及中心化下的請求大多數(shù)都是同步的(及時拿到結(jié)果), 而交易大多數(shù)是異步的,這也是在開發(fā)去中心應用時需要注意的地方,

從節(jié)點上獲得數(shù)據(jù)狀態(tài)(比如交易的結(jié)果),一般是通過事件回調(diào)來獲得。

如何開發(fā)

在開發(fā)中心化應用最重要兩部分是 客戶端UI表現(xiàn) 和 后端服務程序 , UI表現(xiàn)通過HTTP請求連接到后端服務程序,后端服務程序運行在服務器上,比如Nginx Apached等等。

開發(fā)一個去中心化應用最重要也是兩部分: 客戶端UI表現(xiàn) 及 智能合約 ,智能合約的作用就像后端服務程序,智能合約是運行在節(jié)點的EVM上, 客戶端調(diào)用智能合約,是通過向節(jié)點發(fā)起RPC請求完成。

下面是一個對比:

客戶端UI <=> 客戶端UI           HTTP <=> RPC    后端服務程序 <=> 智能合約  Nginx/Apache <=> 節(jié)點

因此對于去中心化應用來說,程序員可以從兩個方面切入:

一個是 去中心化應用的客戶端開發(fā) , 熟悉已經(jīng)熟悉客戶端軟件(如Web\APP等)開發(fā)的同學,只需要了解一下客戶端跟區(qū)塊鏈節(jié)點通信的API接口,如果是在當前應用最廣泛的區(qū)塊鏈平臺以太坊上開發(fā)去中心化應用,那么需要了解Web3

這個庫,Web3對節(jié)點暴露出來的JSON-RPC接口進行了封裝,比如Web3提供的功能有:獲取節(jié)點狀態(tài),獲取賬號信息,調(diào)用合約、監(jiān)聽合約事件等等。

目前的主流語言都有Web3的實現(xiàn),列舉一些實現(xiàn)給大家參考:

  • JavaScript Web3.js

  • Python Web3.py

  • Haskell hs-web3

  • Java web3j

  • Scala web3j-scala

  • Purescript purescript-web3

  • PHP web3.php

  • PHP ethereum-php

另一個切入點是 智能合約的開發(fā) ,在以太坊現(xiàn)在推薦的語言是Solidity,有一些同學對新學一門語言有一些畏懼,Solidity的語法其實很簡潔,有過一兩門其他語言基礎(開發(fā)經(jīng)驗)的同學三五天就可以學會。

下面用一個Hello合約,體會下Solidity的語法:

contract Hello {        function hello() public returns(string) {             return "Hello World";         }  }

如果把上面的contract關鍵字更改為class,就和其他語言定義一個類一樣。

有興趣的同學可以進一步學習一下這個DApp開發(fā)案例 Web3與智能合約交互實戰(zhàn) ,

在DAPP的開發(fā)過程中,一些開發(fā)工具可以幫助我們事半功倍,如:Truffle開發(fā)框架以及Ganache工具來模擬節(jié)點等,這篇文章 一步步教你開發(fā)、部署第一個去中心化應用

補充

對于想切入到去中心化應用開發(fā)的同學,對區(qū)塊鏈運行的原理了解肯定會是加分項,尤其是各類共識機制(POW,POS,DPOS等)的理解,P2P網(wǎng)絡的理解,以及各類加密和Hash算法的運用。有一些同學想做區(qū)塊鏈底層開發(fā),對區(qū)塊鏈運行的原理則是必須項。

標簽: 區(qū) 

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:區(qū)塊鏈技術破局租房市場迷陣

下一篇:區(qū)塊鏈最偉大的一點不是去中心化!