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