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