1. 程式人生 > >用對這30種祕密武器, 你也能成為區塊鏈高手!

用對這30種祕密武器, 你也能成為區塊鏈高手!

古羅馬,“乘法”是隻有御用數學家才能理解的深奧概念——而當阿拉伯數字出現,孩童亦能於紙上演算。

新工具不僅提升效率,還可為前人所不能。作為活躍開發領域之一,區塊鏈新技術、工具、平臺、語言與框架層出不窮,然而面對紛繁複雜的選擇,開發者難以面面俱到。《區塊鏈大本營 | 新工具》欄目將為開發者介紹最值得關注的新技術與工具。未來,我們還將多角度、系統地為專案選型提供指南。

本文將對區塊鏈開發使用的技術、工具、語言、平臺做一次全景掃描,並對其應用狀況進行分類。點評來自迅雷鏈總工程師來鑫,京東區塊鏈JD Chain首席架構師黃海泉,百度區塊鏈系統部資深研發工程師荊博,以及騰訊區塊鏈技術負責人張建俊。

工具與框架篇

 

Ethers.js是針對以太坊錢包功能完整實現的工具包,其API文件十分詳盡。

Truffle用於開發合約工程的框架,是一套本地整合開發環境和編譯測試除錯工具。在Truffle提供的開發環境裡,整合了前端例項化合約的方法,可以很便捷的呼叫合約功能。另外還有各種box支援開箱即用,整合了前端應用呼叫合約工程的途徑。

Geth是一個以太坊客戶端,用Go語言編寫,它是目前最常用的以太坊客戶端,有著豐富的API,不過沒有視覺化操作介面。可以與Mist配合來進行以太坊智慧合約的開發除錯。

Solc是以太坊官方提供的Solidity編譯工具。

OpenZeppelin是已實現的一系列經安全驗證的合約工具和ERC標準合約庫,開發者可以通過繼承這些合約和libray方便的進行合約開發。

Mist是以太坊PC錢包,可以選擇連線不同的網路。包含賬戶管理、交易、呼叫合約、部署合約以及部分DApp功能的呼叫。針對以上功能所提供的介面化操作極大的方便了普通使用者傳送交易和呼叫合約。

使用Mist可以輕鬆連線以太坊測試網路,並支援開發、部署、除錯智慧合約。對開發者非常友好。

Remix是一個整合的編寫部署除錯合約的瀏覽器IDE,可以在remix提供的瀏覽器頁面快速編寫部署合約,支援正式和測試網路連線、靜態檢查、本地除錯、交易記錄、事件和日誌查詢等功能。另外結合Remixd提供的ws服務可以連線本地檔案進行開發。對相容以太坊智慧合約的鏈平臺來說,Remix是非常好用的合約編輯、測試、部署工具,使用者眾多,已經比較成熟。

Docker在區塊鏈中有多種用途,包括用於 BaaS 服務中作為實現動態節點管理的基礎元件,在Fabric作為智慧合約的執行容器等。

RocksDB是一種NoSQL資料庫,具有高效能和使用簡單的特點,許多區塊鏈專案都以 RocksDB 作為底層的儲存資料庫。

MyEtherWallet是一個很受歡迎的網頁版以太坊線上錢包,具有豐富的資產管理,賬戶備份功能。對於不想在本地安裝錢包客戶端,儲存全量區塊資訊的使用者來說,是一個不錯的選擇。曾經因為DNS劫持的問題,導致一些使用者訪問了釣魚網站,損失了大量以太幣資產。MyEtherWallet程式碼開源,它不會儲存使用者的錢包資訊賬號,就算有一天MyEtherWallet網站不能使用,你也可以通過錢包的私鑰和密碼在其他錢包上找回你的錢包賬號,可放心使用。

MetaMask是一款在谷歌瀏覽器Chrome上使用的外掛型別的以太坊錢包,該錢包不需要下載,只需要在谷歌瀏覽器新增對應的擴充套件程式即可,非常輕量級,使用起來也非常方便,不需要下載全量區塊資訊,也能讓小白使用者管理自己的數字資產。對於以太坊Dapp的普及和傳播起到了非常大的作用。當年的以太貓遊戲的火爆,Metamask功不可沒。

Embark目前集成了 EVM 區塊鏈(以太坊)、去中心化儲存(IPFS) 和去中心化通訊平臺(Whisper 和 Orbit),部署支援 Swarm,方便開發者搭建自己的區塊鏈應用。

Ganache是Truffle官方推薦使用的客戶端之一(另一個是Truffle內建的Truffle Develop)。

以太坊聯合創始人Gavin Wood認為,所有人都從頭構建網路和共識程式碼,非常浪費精力。使用Substrate來構建新專案,開發者所要做的,就是在程式碼呼叫少量函式,就能獲得各種密碼學模板,以及定製、搭建和釋出新區塊鏈所需要的方方面面,“Substrate為區塊鏈開發者提供最大限度的自由,花費最少的精力”。

關係資料,如MySQL在一些區塊鏈系統中用作記錄系統物件的關聯關係,以便提供比NoSQL更豐富的查詢能力。但關係資料庫的靈活性、伸縮性不好,並不太適合區塊鏈這類資料單調遞增的場景,在資料量增長上來之後對關係資料庫的運維管理複雜,因此不推薦使用,建議考慮其它的替代方案。

曾經廣泛使用的EtherScripter已被淘汰,Embark、Truffle是其替代者。

技術篇

GOSSIP是一種訊息通訊演算法,廣泛用於面向公鏈的區塊鏈系統中,包括比特幣、以太坊等,用於實現點對點通訊。

POW是目前面向公鏈的眾多共識演算法中唯一具有安全性證明的演算法,在中本聰的論文已論證,並且得到比特幣系統的執行所證明。缺點是需要消耗算力。

PBFT是一種拜占庭容錯的共識演算法,適合用於面向聯盟鏈的場景,在許多區塊鏈專案上都採用了 PBFT 演算法及其變種演算法;但原始的 PBFT 演算法本身不支援節點的動態增加,在實際應用時需要注意。

語言篇

 

Java作為一項成熟的通用語言,掌握開發人員多,生態全面,被廣泛運用於各類企業級系統、中介軟體的開發,在區塊鏈中也被一些專案用做系統開發語言和合約開發語言。

Go是高效快速的應用邏輯開發語言,編譯速度優越,已經有較為強大的基礎庫,屬於新興語言,很被大家看好。作為一項通用語言,具有記憶體安全、效能優異的特點,使用用作區塊鏈底層系統的開發語言。由於Go簡潔易用的語言特性、功能豐富的程式碼庫以及優異的效能表現,很多區塊鏈底層是用Go語言實現的,Hyperledger Fabric等專案也主推用Go編寫智慧合約或DApp,可說Go語言在區塊的應用中已經非常成熟。

Go的高效能,預編譯與語言學習的易上手性,使得它非常適合被用來編寫區塊鏈專案。目前,大量的新的區塊鏈專案都是用Go來編寫。

JavaScript開發方便,很多區塊鏈專案支援。Lisk支援使用JavaScript來開發智慧合約,這使得智慧合約的開發對於Web開發者來說,變得更加的簡單。

Solidity是以太坊EVM虛擬機器上編寫智慧合約的圖靈完備語言,也是當前智慧合約最實用和使用最廣泛的語言,語法類似JavaScript,適用於以太坊及其擴充套件實現,只能由 EVM 載入執行。但受制於EVM包括以太坊本身的擴充套件性不夠等設計缺陷,在開發效率和執行速度上有一定的限制。不過Solidity還在不斷的發展和更新,可以期待未來更優的使用體驗,但如果用於正式的重要的業務中,需要謹慎考慮。

Rust作為一項通用語言,具有記憶體安全、效能優異的特點,使用用作區塊鏈底層系統的開發語言。已經有一些區塊鏈專案採用了該語言作為開發語言。但開發人群還相對較少,選擇該語言還需要考慮開發生態的成熟度。Rust在不影響效能的前提下提供的安全特性非常有吸引力,這些安全特性也很適用於區塊鏈開發。如steem等區塊鏈專案用Rust開發,經過適當的限制後也適用於智慧合約開發。Rust可以被C及其它多種語言輕鬆呼叫,且由於其高效能特性,非常適合被用來編寫區塊鏈相關元件,比如可插拔密碼庫和共識機制。

作為一項有歷史的成熟的經典語言,C++通常用於開發偏底層的系統,且不斷迭代升級,引入新特性新思想,效能一直較好,但由於語言特性複雜,容易產生記憶體安全的問題,對開發者要求高,在有其它記憶體安全的語言可選擇的情況下,C++不是進行區塊系統開發的最優選擇。EOS等專案是用C++開發的,但由於其複雜性,使用時需要非常小心。

另外,學習曲線較陡,使得越來越多的新的區塊鏈專案不再使用C++語言來進行編寫。但是C++高效能和編譯特性,使得它仍然會在一些區塊鏈專案的底層開發中發揮作用。

Vyper是新的以太坊語言,它為開發者提供了Solidity的一種替代選擇。

已有專案採用Clojure編寫合約直譯器,但學習曲線較為陡峭,現有開發者中,熟練掌握的人相當少,可能會面對缺人或維護困難的窘境。

Red擁有出色的表達及DSL能力,但專案仍在開發中,基礎尚不完備。

平臺篇

迅雷鏈平臺(Thunder Chain)是高效能、高可靠性、開發方便、技術支援完善的主鏈平臺。

EVM是以太坊上的智慧合約引擎,用於執行 Solidity 的智慧合約,它是一個棧式虛擬機器,其安全性是還需要完善,眾多針對以太坊的攻擊方法都是由 EVM 本身的缺陷帶來的,雖然爆出的缺陷已經大部分修復,但畢竟EVM出現的時間相對還很短,所以還需更多時間來觀察其進展。

和普通節點相比,Azure BaaS節點好處主要是,能讓開發者快速建立自己所需的開發環境,能幫助更快地驗證自己的概念和模型,工具性更強,便於建立、部署、執行和監控區塊鏈服務。但其實用性還有待驗證。

Blockchain Testnet可用於測試和體驗操作。允許DApp開發者使用測試網路方便的進行開發和除錯,而不必擔心在主鏈上測試導致的費用問題。

Coinbase’s API的提供者Coinbase是全球使用者最多的交易所之一。

Tierion是將區塊鏈用於驗證任何資料、檔案或過程的平臺,應用場景包括檔案存在性證明、審計跟蹤等,應用場景有限,決定使用這個平臺之前請先評估是否跟自己的實際業務場景相匹配。

身為開發者的你,正在使用哪些工具?請在留言中聊聊你使用的語言、工具和平臺。

 

 

推薦閱讀: