本文將對區(qū)塊鏈開發(fā)使用的技術(shù)、工具、語言、平臺做一次全景掃描,并對其應(yīng)用狀況進(jìn)行分類。
新工具不僅提升效率,還可為前人所不能。作為活躍開發(fā)領(lǐng)域之一,區(qū)塊鏈新技術(shù)、工具、平臺、語言與框架層出不窮,然而面對紛繁復(fù)雜的選擇,開發(fā)者難以面面俱到。
區(qū)塊鏈開發(fā)——工具與框架篇
Ethers.js是針對以太坊錢包功能完整實現(xiàn)的工具包,其API文檔十分詳盡。
Truffle用于開發(fā)合約工程的框架,是一套本地集成開發(fā)環(huán)境和編譯測試調(diào)試工具。在Truffle提供的開發(fā)環(huán)境里,整合了前端實例化合約的方法,可以很便捷的調(diào)用合約功能。另外還有各種box支持開箱即用,整合了前端應(yīng)用調(diào)用合約工程的途徑。
Geth是一個以太坊客戶端,用Go語言編寫,它是目前最常用的以太坊客戶端,有著豐富的API,不過沒有可視化操作界面??梢耘cMist配合來進(jìn)行以太坊智能合約的開發(fā)調(diào)試。
Solc是以太坊官方提供的Solidity編譯工具。
OpenZeppelin是已實現(xiàn)的一系列經(jīng)安全驗證的合約工具和ERC標(biāo)準(zhǔn)合約庫,開發(fā)者可以通過繼承這些合約和libray方便的進(jìn)行合約開發(fā)。
Mist是以太坊PC錢包,可以選擇連接不同的網(wǎng)絡(luò)。包含賬戶管理、交易、調(diào)用合約、部署合約以及部分DApp功能的調(diào)用。針對以上功能所提供的界面化操作極大的方便了普通用戶發(fā)送交易和調(diào)用合約。
使用Mist可以輕松連接以太坊測試網(wǎng)絡(luò),并支持開發(fā)、部署、調(diào)試智能合約。對開發(fā)者非常友好。
Remix是一個集成的編寫部署調(diào)試合約的瀏覽器IDE,可以在remix提供的瀏覽器頁面快速編寫部署合約,支持正式和測試網(wǎng)絡(luò)連接、靜態(tài)檢查、本地調(diào)試、交易記錄、事件和日志查詢等功能。另外結(jié)合Remixd提供的ws服務(wù)可以連接本地文件進(jìn)行開發(fā)。對兼容以太坊智能合約的鏈平臺來說,Remix是非常好用的合約編輯、測試、部署工具,用戶眾多,已經(jīng)比較成熟。
Docker在區(qū)塊鏈中有多種用途,包括用于 BaaS 服務(wù)中作為實現(xiàn)動態(tài)節(jié)點管理的基礎(chǔ)組件,在Fabric作為智能合約的運行容器等。
RocksDB是一種NoSQL數(shù)據(jù)庫,具有高性能和使用簡單的特點,許多區(qū)塊鏈項目都以 RocksDB 作為底層的存儲數(shù)據(jù)庫。
MyEtherWallet是一個很受歡迎的網(wǎng)頁版以太坊在線錢包,具有豐富的資產(chǎn)管理,賬戶備份功能。對于不想在本地安裝錢包客戶端,存儲全量區(qū)塊信息的用戶來說,是一個不錯的選擇。曾經(jīng)因為DNS劫持的問題,導(dǎo)致一些用戶訪問了釣魚網(wǎng)站,損失了大量以太幣資產(chǎn)。MyEtherWallet代碼開源,它不會存儲用戶的錢包信息賬號,就算有一天MyEtherWallet網(wǎng)站不能使用,你也可以通過錢包的私鑰和密碼在其他錢包上找回你的錢包賬號,可放心使用。
MetaMask是一款在谷歌瀏覽器Chrome上使用的插件類型的以太坊錢包,該錢包不需要下載,只需要在谷歌瀏覽器添加對應(yīng)的擴(kuò)展程序即可,非常輕量級,使用起來也非常方便,不需要下載全量區(qū)塊信息,也能讓小白用戶管理自己的數(shù)字資產(chǎn)。對于以太坊Dapp的普及和傳播起到了非常大的作用。當(dāng)年的以太貓游戲的火爆,Metamask功不可沒。
Embark目前集成了 EVM 區(qū)塊鏈(以太坊)、去中心化存儲(IPFS) 和去中心化通信平臺(Whisper 和 Orbit),部署支持 Swarm,方便開發(fā)者搭建自己的區(qū)塊鏈應(yīng)用。
Ganache是Truffle官方推薦使用的客戶端之一(另一個是Truffle內(nèi)置的Truffle Develop)。
以太坊聯(lián)合創(chuàng)始人Gavin Wood認(rèn)為,所有人都從頭構(gòu)建網(wǎng)絡(luò)和共識代碼,非常浪費精力。使用Substrate來構(gòu)建新項目,開發(fā)者所要做的,就是在代碼調(diào)用少量函數(shù),就能獲得各種密碼學(xué)模板,以及定制、搭建和發(fā)布新區(qū)塊鏈所需要的方方面面,“Substrate為區(qū)塊鏈開發(fā)者提供最大限度的自由,花費最少的精力”。
關(guān)系數(shù)據(jù),如MySQL在一些區(qū)塊鏈系統(tǒng)中用作記錄系統(tǒng)對象的關(guān)聯(lián)關(guān)系,以便提供比NoSQL更豐富的查詢能力。但關(guān)系數(shù)據(jù)庫的靈活性、伸縮性不好,并不太適合區(qū)塊鏈這類數(shù)據(jù)單調(diào)遞增的場景,在數(shù)據(jù)量增長上來之后對關(guān)系數(shù)據(jù)庫的運維管理復(fù)雜,因此不推薦使用,建議考慮其它的替代方案。
曾經(jīng)廣泛使用的EtherScripter已被淘汰,Embark、Truffle是其替代者。
區(qū)塊鏈開發(fā)——技術(shù)篇
GOSSIP是一種消息通訊算法,廣泛用于面向公鏈的區(qū)塊鏈系統(tǒng)中,包括比特幣、以太坊等,用于實現(xiàn)點對點通信。
POW是目前面向公鏈的眾多共識算法中唯一具有安全性證明的算法,在中本聰?shù)恼撐囊颜撟C,并且得到比特幣系統(tǒng)的運行所證明。缺點是需要消耗算力。
PBFT是一種拜占庭容錯的共識算法,適合用于面向聯(lián)盟鏈的場景,在許多區(qū)塊鏈項目上都采用了 PBFT 算法及其變種算法;但原始的 PBFT 算法本身不支持節(jié)點的動態(tài)增加,在實際應(yīng)用時需要注意。
區(qū)塊鏈開發(fā)——語言篇
Java作為一項成熟的通用語言,掌握開發(fā)人員多,生態(tài)全面,被廣泛運用于各類企業(yè)級系統(tǒng)、中間件的開發(fā),在區(qū)塊鏈中也被一些項目用做系統(tǒng)開發(fā)語言和合約開發(fā)語言。
Go是高效快速的應(yīng)用邏輯開發(fā)語言,編譯速度優(yōu)越,已經(jīng)有較為強大的基礎(chǔ)庫,屬于新興語言,很被大家看好。作為一項通用語言,具有內(nèi)存安全、性能優(yōu)異的特點,使用用作區(qū)塊鏈底層系統(tǒng)的開發(fā)語言。由于Go簡潔易用的語言特性、功能豐富的代碼庫以及優(yōu)異的性能表現(xiàn),很多區(qū)塊鏈底層是用Go語言實現(xiàn)的,Hyperledger Fabric等項目也主推用Go編寫智能合約或DApp,可說Go語言在區(qū)塊的應(yīng)用中已經(jīng)非常成熟。
Go的高性能,預(yù)編譯與語言學(xué)習(xí)的易上手性,使得它非常適合被用來編寫區(qū)塊鏈項目。目前,大量的新的區(qū)塊鏈項目都是用Go來編寫。
JavaScript開發(fā)方便,很多區(qū)塊鏈項目支持。Lisk支持使用JavaScript來開發(fā)智能合約,這使得智能合約的開發(fā)對于Web開發(fā)者來說,變得更加的簡單。
Solidity是以太坊EVM虛擬機上編寫智能合約的圖靈完備語言,也是當(dāng)前智能合約最實用和使用最廣泛的語言,語法類似JavaScript,適用于以太坊及其擴(kuò)展實現(xiàn),只能由 EVM 加載執(zhí)行。但受制于EVM包括以太坊本身的擴(kuò)展性不夠等設(shè)計缺陷,在開發(fā)效率和運行速度上有一定的限制。不過Solidity還在不斷的發(fā)展和更新,可以期待未來更優(yōu)的使用體驗,但如果用于正式的重要的業(yè)務(wù)中,需要謹(jǐn)慎考慮。
Rust作為一項通用語言,具有內(nèi)存安全、性能優(yōu)異的特點,使用用作區(qū)塊鏈底層系統(tǒng)的開發(fā)語言。已經(jīng)有一些區(qū)塊鏈項目采用了該語言作為開發(fā)語言。但開發(fā)人群還相對較少,選擇該語言還需要考慮開發(fā)生態(tài)的成熟度。Rust在不影響性能的前提下提供的安全特性非常有吸引力,這些安全特性也很適用于區(qū)塊鏈開發(fā)。如steem等區(qū)塊鏈項目用Rust開發(fā),經(jīng)過適當(dāng)?shù)南拗坪笠策m用于智能合約開發(fā)。Rust可以被C及其它多種語言輕松調(diào)用,且由于其高性能特性,非常適合被用來編寫區(qū)塊鏈相關(guān)組件,比如可插拔密碼庫和共識機制。
作為一項有歷史的成熟的經(jīng)典語言,C++通常用于開發(fā)偏底層的系統(tǒng),且不斷迭代升級,引入新特性新思想,性能一直較好,但由于語言特性復(fù)雜,容易產(chǎn)生內(nèi)存安全的問題,對開發(fā)者要求高,在有其它內(nèi)存安全的語言可選擇的情況下,C++不是進(jìn)行區(qū)塊系統(tǒng)開發(fā)的最優(yōu)選擇。EOS等項目是用C++開發(fā)的,但由于其復(fù)雜性,使用時需要非常小心。
另外,學(xué)習(xí)曲線較陡,使得越來越多的新的區(qū)塊鏈項目不再使用C++語言來進(jìn)行編寫。但是C++高性能和編譯特性,使得它仍然會在一些區(qū)塊鏈項目的底層開發(fā)中發(fā)揮作用。
Vyper是新的以太坊語言,它為開發(fā)者提供了Solidity的一種替代選擇。
已有項目采用Clojure編寫合約解釋器,但學(xué)習(xí)曲線較為陡峭,現(xiàn)有開發(fā)者中,熟練掌握的人相當(dāng)少,可能會面對缺人或維護(hù)困難的窘境。
Red擁有出色的表達(dá)及DSL能力,但項目仍在開發(fā)中,基礎(chǔ)尚不完備。
區(qū)塊鏈開發(fā)——平臺篇
迅雷鏈平臺(Thunder Chain)是高性能、高可靠性、開發(fā)方便、技術(shù)支持完善的主鏈平臺。
EVM是以太坊上的智能合約引擎,用于執(zhí)行 Solidity 的智能合約,它是一個棧式虛擬機,其安全性是還需要完善,眾多針對以太坊的攻擊方法都是由 EVM 本身的缺陷帶來的,雖然爆出的缺陷已經(jīng)大部分修復(fù),但畢竟EVM出現(xiàn)的時間相對還很短,所以還需更多時間來觀察其進(jìn)展。
和普通節(jié)點相比,Azure BaaS節(jié)點好處主要是,能讓開發(fā)者快速建立自己所需的開發(fā)環(huán)境,能幫助更快地驗證自己的概念和模型,工具性更強,便于創(chuàng)建、部署、運行和監(jiān)控區(qū)塊鏈服務(wù)。但其實用性還有待驗證。
Blockchain Testnet可用于測試和體驗操作。允許DApp開發(fā)者使用測試網(wǎng)絡(luò)方便的進(jìn)行開發(fā)和調(diào)試,而不必?fù)?dān)心在主鏈上測試導(dǎo)致的費用問題。
Coinbase’s API的提供者Coinbase是全球用戶最多的交易所之一。
Tierion是將區(qū)塊鏈用于驗證任何數(shù)據(jù)、文件或過程的平臺,應(yīng)用場景包括文件存在性證明、審計跟蹤等,應(yīng)用場景有限,決定使用這個平臺之前請先評估是否跟自己的實際業(yè)務(wù)場景相匹配。
評論
查看更多