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

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

2020-12-04    來(lái)源:多智時(shí)代

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

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

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

中心化應(yīng)用


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

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

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

去中心化應(yīng)用DAPP


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

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

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

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

如何開(kāi)發(fā)

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

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

下面是一個(gè)對(duì)比:

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

因此對(duì)于去中心化應(yīng)用來(lái)說(shuō),程序員可以從兩個(gè)方面切入:

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

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

目前的主流語(yǔ)言都有Web3的實(shí)現(xiàn),列舉一些實(shí)現(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

另一個(gè)切入點(diǎn)是 智能合約的開(kāi)發(fā) ,在以太坊現(xiàn)在推薦的語(yǔ)言是Solidity,有一些同學(xué)對(duì)新學(xué)一門語(yǔ)言有一些畏懼,Solidity的語(yǔ)法其實(shí)很簡(jiǎn)潔,有過(guò)一兩門其他語(yǔ)言基礎(chǔ)(開(kāi)發(fā)經(jīng)驗(yàn))的同學(xué)三五天就可以學(xué)會(huì)。

下面用一個(gè)Hello合約,體會(huì)下Solidity的語(yǔ)法:

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

如果把上面的contract關(guān)鍵字更改為class,就和其他語(yǔ)言定義一個(gè)類一樣。

有興趣的同學(xué)可以進(jìn)一步學(xué)習(xí)一下這個(gè)DApp開(kāi)發(fā)案例 Web3與智能合約交互實(shí)戰(zhàn) ,

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

補(bǔ)充

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

標(biāo)簽: 區(qū) 

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

上一篇:區(qū)塊鏈真的能長(zhǎng)久嗎?如何才能避免成為一個(gè)口號(hào)?

下一篇:區(qū)塊鏈還未落地,難道已經(jīng)失敗了嗎?