以太坊工具集合,解決你的入門困難
如果你是一名區(qū)塊鏈或以太坊新手,一開始接觸以太坊生態(tài)系統(tǒng)中的工具和技術(shù)時很可能會像我一樣一頭霧水。為了讓大家對以太坊的技術(shù)生態(tài)有一個整體的了解,并熟悉各部分的組合,本篇文章就將對以太坊學(xué)習(xí)中經(jīng)常會遇到的各種技術(shù)或工具組件進行簡要的介紹。
作者 | Mahesh Murthy
編譯 | reason_W
以太坊
以太坊( http://ethereum.org/ )是一個智能合約區(qū)塊鏈,用戶可以在這個區(qū)塊鏈平臺上構(gòu)建去中心化的應(yīng)用程序(即智能合約)。
如果你是技術(shù)控,可以看一下這份白皮書: https://github.com/ethereum/wiki/wiki/White-Paper 詳細了解以太坊的技術(shù)原理 。
如果你之前已經(jīng)有Web應(yīng)用程序的開發(fā)經(jīng)驗,還可以參考我之前寫的一篇比較以太坊區(qū)塊鏈和Web應(yīng)用程序架構(gòu)的文章 https://medium.com/@mvmurthy/ethereum-for-web-developers-890be23d1d0c#.8wo4bi611 ,這可能有助于你更深入地了解以太坊。
Geth
Geth( https://github.com/ethereum/go-ethereum )是一款由以太坊基金會提供的官方客戶端軟件。它用Go語言編寫而成, 主要由以下幾部分組成:
1.客戶端守護進程
當(dāng)你啟動這個客戶端守護進程時,它會自動連接到網(wǎng)絡(luò)中的其他客戶端(也稱為節(jié)點)并下載區(qū)塊鏈的副本,并通過不斷與其他節(jié)點通信,保持區(qū)塊鏈副本更新。它可以挖掘區(qū)塊,將交易添加到區(qū)塊鏈中,驗證區(qū)塊中的交易并執(zhí)行交易。 它還可以開放API接口成為可通過遠程過程調(diào)用(RPC)連接的服務(wù)器。
2.Geth控制臺
Geth控制臺( https://github.com/ethereum/go-ethereum/wiki/geth )是一個命令行工具,可讓你連接到正在運行的節(jié)點并執(zhí)行各種操作,如創(chuàng)建和管理帳戶,查詢區(qū)塊鏈,簽名并提交交易到區(qū)塊鏈等。
3.Mist瀏覽器
這是一個用來與你的節(jié)點通信的桌面應(yīng)用程序。任何可以用Geth控制臺執(zhí)行的操作都可以通過這個GUI完成。
Parity
Parity( https://github.com/paritytech/parity )是另一個以太坊協(xié)議的實現(xiàn),由Rust語言編寫而成。 這是一個由一家名為Parity Inc.( https://parity.io/ )的公司維護的非官方客戶端。任何人都可以配置這款客戶端軟件并加入以太坊網(wǎng)絡(luò)。你可以按照這個黃皮書( https://ethereum.github.io/yellowpaper/paper.pdf )中的說明來配置你自己的客戶端。
Web3.js
就像你可以通過Geth,Mist瀏覽器等工具與以太坊節(jié)點進行通信一樣,還有一個名為Web3.js的Java庫( https://github.com/ethereum/web3.js/ ),也可以用于與節(jié)點進行交互。由于它是一個Java庫,因此可以用它來構(gòu)建基于Web的去中心化應(yīng)用(DApps)。
Solidity
Solidity( https://solidity.readthedocs.io/en/develop/ )是在編寫智能合約(在以太坊區(qū)塊鏈上運行)時最流行的編程語言。它是一種高級語言,通過編譯轉(zhuǎn)換為EVM(以太坊虛擬機)字節(jié)碼。 這與Java的設(shè)計機制非常相似,諸如Scala,Groovy,Clojure,JRuby這些JVM語言編譯生成的字節(jié)碼都在JVM(Java虛擬機)中運行。你也可以創(chuàng)建一個像Solidity這樣的語言,當(dāng)然前提是你遵循規(guī)范,并且你的語言可以編譯成有效的EVM字節(jié)代碼。
關(guān)于這種語言,還有一個基于瀏覽器的IDE,設(shè)計的非常漂亮。你可以在這里編寫合約,編譯并部署到區(qū)塊鏈:
http://remix.ethereum.org/
Truffle/Embark
就像我們在開發(fā)Web應(yīng)用程序時會想到Ruby on Rails,Python / Django等開發(fā)框架一樣,DApps開發(fā)也有兩個最流行的框架:Truffle( http://truffleframework.com/ )和Embark( https://github.com/iurimatias/embark-framework )。它們把區(qū)塊鏈上編譯和部署合約時會碰到的很多復(fù)雜的東西都抽象出來了。
如果你沒有以太坊Dapps開發(fā)的經(jīng)驗,可以參考我寫的一個指導(dǎo)教程:
(一)( https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2 )
(二) ( https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-2-30b3d335aa1f )
(三)( https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-3-331c2712c9df )
MetaMask
如果你已經(jīng)進入了Ethereum社區(qū)一段時間,肯定會知道MetaMask(一款以太坊輕錢包, https://metamask.io/ )。在我們發(fā)布這篇文章的時候,它的形式還只是一個用于與以太坊節(jié)點進行交互的Chrome插件。讓每一位用戶都先完成繁重復(fù)雜的配置再運行節(jié)點來和區(qū)塊鏈進行交互是不現(xiàn)實的。 所以,開發(fā)MetaMask的那幫家伙主動維護了大量的節(jié)點,從而把其他用戶從繁雜的同步過程中解放了出來。你只需安裝MetaMask,它就可以自動連接到它們的節(jié)點上。
ENS
以太坊域名系統(tǒng)(ENS, http://ens.domains/ )是以太坊世界里的DNS。就像互聯(lián)網(wǎng)世界里的IP地址可以被映射為方便人們讀取的名稱一樣,任何以太坊合約或錢包的地址也可以被映射成易讀的名稱。
例如:146.115.22.177→google.com。你不必在瀏覽器中輸入IP地址,而是輸入google.com即可,它會解析為該這個IP地址。
同樣地:0x80C013d980aB049471c88E1603b8b4a60E03295C是我的錢包地址。如果你需要給我轉(zhuǎn)一些以太幣,也同樣不必記住這個地址。在ENS發(fā)布之后,我可能會將其映射到mvmurthy.eth,你可以使用這個名字輕松把錢轉(zhuǎn)給我:)。
Swarm
區(qū)塊鏈在存儲少量數(shù)據(jù)的時候是OK的。但如果想存儲一些比如患者病歷,銷售合同或某些需要公開時間戳的大文件時該怎么辦呢?在區(qū)塊鏈中存儲這種大文件數(shù)據(jù)的內(nèi)存需求是昂貴的,并且也不能在所存儲的塊上擴展。Swarm( http://swarm-gateways.net/bzz:/theswarm.eth/ )就是用來解決這個問題的。它是一個去中心化的內(nèi)容存儲和分發(fā)服務(wù)。你可以將其視為CDN,但它并不是在一家公司的服務(wù)器上托管整個CDN,而是通過互聯(lián)網(wǎng)分布在很多計算機上。 就像連接到以太坊網(wǎng)絡(luò)需要運行一個以太坊節(jié)點一樣,你需要運行一個Swarm節(jié)點來連接到Swarm網(wǎng)絡(luò)。
當(dāng)你將一個以太坊合約部署到區(qū)塊鏈時,你將獲得ABI的部署地址和JSON接口(一種類似于API的合約接口, https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI )。當(dāng)你想要某人使用你的合約時,你必須告訴他們部署地址和ABI。未來,ABI將存儲在Swarm中,任何人都可以通過查看以太坊地址來查找ABI。
IPFS
IPFS(星際文件系統(tǒng), https://ipfs.io/ )在概念上與Swarm非常相似。它是一個去中心化的存儲系統(tǒng),雖然和以太坊并沒有直接關(guān)聯(lián),但卻可以與以太坊整合。
你可以在這里詳細了解Swarm和IPFS之間的區(qū)別:
https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM
Whisper
你可能沒怎么聽過關(guān)于Whisper( https://github.com/ethereum/wiki/wiki/Whisper )的信息。它其實是Ethereum技術(shù)生態(tài)中的一個很有趣的技術(shù)。這是Dapps彼此交互的通信協(xié)議。關(guān)于它的更詳細信息你可以在以太坊的官方文檔中進行了解:
https://github.com/ethereum/wiki/wiki/Whisper
下面這張圖是我們對上文所介紹內(nèi)容的一個整理:
希望這篇文章能讓你對以太坊生態(tài)系統(tǒng)有一個宏觀了解,并有能力對其中每一部分進行更深入的研究和理解。
責(zé)任編輯:售電衡衡