區(qū)塊鏈技術(shù)如今是非?;馃?,不僅讓金融家和創(chuàng)投家趨之若鶩,如今已經(jīng)在多個領(lǐng)域遍地播種。作為擁有銳利觸角的創(chuàng)業(yè)家們,是否也想將區(qū)塊鏈集成到你們現(xiàn)有的應(yīng)用中去,而作為IT技術(shù)工程師的你,是否也是躍躍欲試,想基于區(qū)塊鏈來練一下手,以免日后被新技術(shù)淘汰?不過,區(qū)塊鏈涉及如密碼學和P2P等多種技術(shù),區(qū)塊鏈的技術(shù)門派眾多,新鮮概念層出不窮;而另一方面,區(qū)塊鏈技術(shù)的發(fā)展在全球范圍內(nèi)還都尚處在早期階段,各種技術(shù)方案和應(yīng)用場景等還需要進一步地探索和完善,導致很多人想運用區(qū)塊鏈,都找不到突破口,應(yīng)該學習哪些知識和技術(shù)呢,應(yīng)該用什么樣的區(qū)塊鏈呢?
就區(qū)塊鏈技術(shù)而言,武林技術(shù)小編只能算是新司機,但我仍然嘗試從開發(fā)工程師的角度,給區(qū)塊鏈有興趣的工程師分享一下區(qū)塊鏈應(yīng)用開發(fā)入門的經(jīng)驗。
我們大多數(shù)人的使用和開發(fā)區(qū)塊鏈的目標來說,并不是要真的自己重新創(chuàng)建一套區(qū)塊鏈,只是希望基于現(xiàn)有的區(qū)塊鏈底層或技術(shù)框架去開發(fā)自己的應(yīng)用。因此,對于類似加密算法、 P2P技術(shù)、共識算法等我們只需要有個基本了解就可以了,暫時不需要深入研究。而我們?nèi)腴T區(qū)塊鏈應(yīng)用開發(fā)的首要目標,是尋找一個相對成熟的區(qū)塊鏈底層去做我們的應(yīng)用開發(fā)的基礎(chǔ),其次,這個區(qū)塊鏈底層需要配套強大易用的開發(fā)接口或開發(fā)框架,此外,這個區(qū)塊鏈底層如果要考慮以后真正商用,還需要符合一些區(qū)塊鏈的技術(shù)指標,如擴展性、燃料費用、交易頻率等等。
就這兩點目標,Elwin走遍天涯海角,最終挑選出認為符合要求的幾個區(qū)塊鏈底層平臺給大家參考:
一、比特幣
最早的區(qū)塊鏈開發(fā)便是基于比特幣的區(qū)塊鏈網(wǎng)絡(luò)進行開發(fā)了,由于比特幣是全球最廣泛使用和真正意義的去中心化,就區(qū)塊鏈應(yīng)用來說,比特幣就是世上最強大的錨,擁有最大的權(quán)威性。因此,圍繞比特幣的各種區(qū)塊鏈技術(shù)非常多,這里不一一描述,只針對入門級別開發(fā)的介紹。
基于比特幣的區(qū)塊鏈網(wǎng)絡(luò)開發(fā)介紹兩種方式,一種相對比較簡單,基于Blockchain.info的API進行開發(fā)。Blockchain.info是比特幣的最流行的比特幣錢包和區(qū)塊查詢網(wǎng)站,同時也提供的比特幣及其區(qū)塊相關(guān)API。 Blockchain.info 提供了多種主流語言的API庫,包括了比特幣的錢包、支付、區(qū)塊、交易數(shù)據(jù)、市場數(shù)據(jù)等多方面的API。
?安裝和使用Blockchain.info的API比較簡單,首先你的機器需要有Node環(huán)境,在Blockchain.info的申請接口授權(quán)碼,安裝Blockchain Wallet API服務(wù)程序,就可以開始配置和測試Blockchain Wallet API服務(wù)程序了,要進一步開發(fā),可以根據(jù)你的開發(fā)語言選擇安裝API的客戶端支持庫。
進一步的探索,可以采用Docker容器來快速安裝和配置私有節(jié)點的比特幣測試網(wǎng)絡(luò)(bitcoin-testnet)作為開發(fā)試驗環(huán)境,這樣可以更深入了解、調(diào)試和使用比特幣區(qū)塊鏈網(wǎng)絡(luò)。在Bitcoin的wiki網(wǎng)頁上面,提供很多種語言都可以調(diào)用Bitcoin的RPC,大家選擇適合自己的語言具體去試驗,當然,Elwin仍然推薦你使用NodeJS。
具體流程是下載比特幣測試網(wǎng)絡(luò)的Docker鏡像,運行Docker鏡像并啟動比特幣測試網(wǎng)絡(luò),初始化和測試區(qū)塊鏈數(shù)據(jù),當然為了測試少不了要先挖礦儲備一下。然后安裝相關(guān)開發(fā)語言的RPC支持庫后,就可以調(diào)試你的區(qū)塊鏈程序了。
二、以太坊
可以說除了比特幣外,以太坊目前在區(qū)塊鏈平臺是最吸引眼球的。 以太坊是一個圖靈完備的區(qū)塊鏈一站式開發(fā)平臺,采用多種編程語言實現(xiàn)協(xié)議,采用Go語言寫的客戶端作為默認客戶端(即與以太坊網(wǎng)絡(luò)交互的方法, 支持其他多種語言的客戶端)。
基于以太坊平臺之上的應(yīng)用是智能合約,這是以太坊的核心。每個智能合約有一個唯一的以太幣地址,當用戶向合約的地址里發(fā)送一筆交易后(這個時候就要消耗燃料費用,也就是手續(xù)費用),該合約就被激活,然后根據(jù)交易中的額外信息,合約會運行自身的代碼,最后返回一個結(jié)果。以太坊社區(qū)把基于智能合約的應(yīng)用稱為去中心化的應(yīng)用程序(Decentralized App),相對于冷冰冰的智能合約代碼,DApp擁有一個友好的界面和外加一些額外的東西,配合上圖靈完備的語言,可以讓用戶基于合約搭建各種千變?nèi)f化的DApp應(yīng)用,實際上,在以太坊APP展區(qū),已經(jīng)有大大小小280個的DApp應(yīng)用在展示(雖然只有一部分應(yīng)用在真正運行)。
要寫以太坊的智能合約有好幾種語言可選,有類Javascript的Solidity,Python接近的Serpent,還有類Lisp的LLL,目前比較主流的是Solidity,推薦大家使用。當Solidity合約編譯好并且發(fā)送到網(wǎng)絡(luò)上之后,你可以通過以太坊的Mist客戶端對智能合約進行測試和使用,也可以使用以太坊的web3.js JavaScript API來調(diào)用它,構(gòu)建能與之交互的web應(yīng)用。
由于以太坊的知名度,所以很多社區(qū)大牛創(chuàng)造更加便捷的DApp開發(fā)框架和工具,包括Truffle、Embark、Meteor、BlockApps.net APIs,使得你可以快速開發(fā)你的Dapp。我的另外一篇文章《微軟的那些區(qū)塊鏈云服務(wù)》有提及,Embark和BlockApps.net兩個區(qū)塊鏈工具已經(jīng)給整合到微軟Azure BAAS服務(wù)中了。這幾個框架和工具中,Elwin更推薦Embark,使用起來非常簡單。
通過以太坊,你既可以搭建基于屬于自己私鏈,也可以和合作伙伴一起搭建聯(lián)盟鏈,又或者直接將應(yīng)用部署在以太坊的公共網(wǎng)絡(luò)中,Elwin要吐槽的是,使用以太坊Gas費用越來越高了,對于互聯(lián)網(wǎng)的應(yīng)用,是自己搭建以太區(qū)塊鏈,還是使用以太公共網(wǎng)絡(luò),真是兩難境地(以太坊宣稱,以太幣Ether價格上升時,那以太坊燃料的價格應(yīng)該按比例下降,但好像并不是這樣阿)。
幾個主要入門步驟給大家簡單介紹一下,首先你可以安裝以太坊錢包客戶端Ethereum Wallet,體驗一下以太坊的錢包和智能合約,當中可以選擇公共網(wǎng)絡(luò)或測試網(wǎng)絡(luò)(如果你沒有或不想花費以太幣)。如果你已經(jīng)很熟悉這些了,那好,直接進入正題,準備好Geth和Node的環(huán)境,同時安裝以太坊Mist客戶端(這個是為測試你的智能合約和Dapp準備),配置和啟動Geth(Geth和eth相關(guān)參數(shù)文章,請參考官網(wǎng)文檔),通常我會先用Geth搭建自己的私鏈來測試,Geth啟動后,你可以先在Mist客戶端中熟悉智能合約和Solidity語言(記得在Geth console先挖礦,否則沒有以太幣來測試),然后根據(jù)官網(wǎng)的幾個例子來試煉你的第一個Dapp。上手后,可以嘗試使用web3.js來調(diào)用,或直接安裝Truffle或Embark來開發(fā)自己真正的Dapp應(yīng)用。
三、IBM HyperLedger
IBM HyperLedger 又叫 fabric,他的目標是打造成一個由全社會來共同維護的一個超級賬本,fabric源于IBM,初衷為了服務(wù)于工業(yè)生產(chǎn),IBM將44,000行代碼開源,是了不起的貢獻,讓我們可以有機會如此近的去探究區(qū)別于比特幣的區(qū)塊鏈的原理。目前就Elwin所知,fabric還未進入真正的商用階段,更多是試驗和探索,不過相對于很多其他區(qū)塊鏈,從技術(shù)底蘊他又是比較可信和靠譜的。
要基于HyperLedger進行區(qū)塊鏈開發(fā)比想像中簡單,有兩種途徑,一種是基于超能云(IBM中國研究院開發(fā)的超能云平臺提供了各種云服務(wù)),他給區(qū)塊鏈愛好者、開發(fā)者的區(qū)塊鏈開發(fā)測試環(huán)境,通過超能云平臺,用戶能夠免費、超快速創(chuàng)建基于Hyperledger Fabric的多節(jié)點區(qū)塊鏈、并在自己的鏈上調(diào)試智能合約。Hyperledger Fabric的合約是基于Go語言的,上手比較簡單。
?根據(jù)Elwin嘗試,似乎超能云的區(qū)塊鏈只適用于科研測試,要真正運營,還是建議自己搭建Fabric的區(qū)塊鏈網(wǎng)絡(luò)。安裝和運行Hyperledge fabric的運行有幾種方式,比較推薦是下載Fabric區(qū)塊鏈網(wǎng)絡(luò)的Docker鏡像,運行Docker鏡像并啟動Fabric區(qū)塊鏈網(wǎng)絡(luò),但相對于比特幣和以太坊,F(xiàn)abric網(wǎng)絡(luò)的架構(gòu)和安裝相對復雜,除了區(qū)塊鏈服務(wù)外,還需要另外安裝運行validating peer和Certificate Authority (CA) 服務(wù)。搞定后要真正使用,還需要先用戶注冊和登記授權(quán),然后才可以通過CLI 或REST API進行調(diào)試和使用。其中里面智能合約的編寫,跟在超能云的區(qū)塊鏈云服務(wù)的是一樣的。此外,除了CLI或REST API,IBM還提供了gRPC API和 SDK的方式進行應(yīng)用的開發(fā)。
四、Lisk
LISK是新一代的區(qū)塊鏈平臺,允許JavaScript(又是Javascript技術(shù),工程師們注意了)的開發(fā)和基于分布的分散的應(yīng)用程序使用一個易于使用的,功能齊全的生態(tài)區(qū)塊鏈系統(tǒng)。
Elwin覺得LISK相對于前面說的幾個區(qū)塊鏈底層,他的應(yīng)用優(yōu)勢不僅僅在于他是第一個完全寫在Javascript里的去中心化的應(yīng)用解決方案,還在于他把每個應(yīng)用加到LISK的單獨側(cè)鏈上。用過比特幣和以太坊的朋友都知道,由于比特幣和以太坊只有一條主鏈,所有功能和數(shù)據(jù)都加入這條主鏈導致區(qū)塊快速膨脹,超大的區(qū)塊體積,超長的同步時間,這個一個很痛苦的經(jīng)歷。Lisk的側(cè)鏈模式給在處理高交易量下如何解決網(wǎng)絡(luò)擁堵的問題提供了一種方法,用戶只有用到相關(guān)的應(yīng)用時才需要下載對應(yīng)的側(cè)鏈,大大減小了無效的同步數(shù)據(jù),保持了整個Lisk網(wǎng)絡(luò)的高效運行,而且,Lisk網(wǎng)絡(luò)的速度隨著時間的推移會繼續(xù)加快,越顯示他的特別優(yōu)勢。
其次,相對以太坊和Hyperledge fabric以智能合約為核心的區(qū)塊鏈不同, Lisk區(qū)塊鏈建立的目的并不是為了創(chuàng)建智能合約,而是使用Lisk APP SDK框架來開發(fā)不同的應(yīng)用程序和功能。
Lisk APP的主要開發(fā)語言是NodeJS,Web開發(fā)者既能夠開發(fā)應(yīng)用程序的后端,也可以開發(fā)前端。通過使用Lisk APP SDK包,Web開發(fā)者可以輕松創(chuàng)建區(qū)塊鏈應(yīng)用。Lisk APP的開發(fā)也比較簡單,跟你之前其他的NodeJS應(yīng)用的開發(fā)是類似的。然而,跟比特幣和以太坊的一樣,Lisk的使用也是要消耗燃料費用的,還好,跟其他區(qū)塊鏈底層網(wǎng)絡(luò)一樣,Lisk 也是有testnet模式的。
五、布比網(wǎng)絡(luò)
布比,是國內(nèi)區(qū)塊鏈技術(shù)特別是底層技術(shù)領(lǐng)先者之一,已擁有多項核心技術(shù),并已經(jīng)成熟的應(yīng)用在了商業(yè)積分、游戲幣、游戲道具、預付卡、電子券、保險卡單、證券化資產(chǎn)、互助保險等行業(yè)和領(lǐng)域。
布比區(qū)塊鏈平臺分為基礎(chǔ)框架層(BubiChain)和應(yīng)用適配層(Bubi Application Adaptors)。底層基礎(chǔ)框架層提供區(qū)塊鏈的基礎(chǔ)服務(wù),應(yīng)用適配層提供上層應(yīng)用所需的功能組件,為具體的應(yīng)用系統(tǒng)開發(fā)提供接口和SDK,降低由于區(qū)塊鏈自身復雜的邏輯所帶來的應(yīng)用開發(fā)的難度。
?對于一般開發(fā)的應(yīng)用適配層,布比提供布萌區(qū)塊鏈應(yīng)用開發(fā)平臺,該平臺基于布比區(qū)塊鏈技術(shù),將上層應(yīng)用所需要的功能組件進行封裝,開發(fā)者想實現(xiàn)對應(yīng)的功能,只需要注冊成為布萌開發(fā)者即可獲得接口使用權(quán)限。同時,平臺提供開發(fā)者運維所需要的可視化管理工具。
就Elwin體驗來說,布萌區(qū)塊鏈的接入應(yīng)該是幾大區(qū)塊鏈底層中最容易的,因為他不僅提供標準REST API,并提供JAVA等主流語言的SDK接入,同時,基于布萌區(qū)塊鏈平臺專注數(shù)字資產(chǎn)應(yīng)用場景,跟其他大部分區(qū)塊鏈接口純技術(shù)和面向廣泛應(yīng)用的方式而言,布萌提供的接口更貼近業(yè)務(wù)場景的,更便于相關(guān)數(shù)字資產(chǎn)的應(yīng)用接入到區(qū)塊鏈。相對以太坊著重區(qū)塊技術(shù)和智能合約的區(qū)塊鏈不同,布比區(qū)塊鏈的接入更務(wù)實和落地,你只需要關(guān)注你實際的業(yè)務(wù),而不需要過多考慮區(qū)塊鏈的技術(shù)細節(jié)。
新聞熱點
疑難解答
圖片精選