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

責(zé)任編輯:售電衡衡
- 相關(guān)閱讀
- 區(qū)塊鏈
- 大數(shù)據(jù)產(chǎn)業(yè)園
- 大數(shù)據(jù)應(yīng)用
-
5大重點(diǎn)任務(wù)11個(gè)重點(diǎn)細(xì)分 河北加快構(gòu)建省級(jí)能源大數(shù)據(jù)中心
-
能源互聯(lián)網(wǎng)注入數(shù)字經(jīng)濟(jì)新動(dòng)能 電力大數(shù)據(jù)實(shí)現(xiàn)更多價(jià)值
-
中國首個(gè)100%利用清潔能源運(yùn)營的大數(shù)據(jù)產(chǎn)業(yè)園投運(yùn)
2020-07-21清潔能源,清潔能源消納,青海
-
探索大數(shù)據(jù) 區(qū)塊鏈實(shí)現(xiàn)與能源互聯(lián)網(wǎng)良好契合
2020-06-09區(qū)塊鏈,電力行業(yè),能源互聯(lián)網(wǎng) -
基于區(qū)塊鏈的含安全約束分布式電力交易方法
-
區(qū)塊鏈在能源交易與協(xié)同調(diào)度的應(yīng)用前景:提升電力交易的自由度和實(shí)時(shí)響應(yīng)效率
2019-11-04區(qū)塊鏈在能源交易與協(xié)同