如果你是以太坊區塊鍊的新手,那麼你可能會不知所措(至少我是),并試圖了解以太坊生态系統中的所有工具和技術。是以,我決定在開始學習以太坊時簡要描述下你經常遇到的各種元件。希望這将有助于你全面了解以太坊生态系統以及所有部分如何組合在一起。
1.以太坊
以太坊是一個智能合約區塊鍊,你可以在其上建構去中心化的應用程式(稱為智能合約)。如果你是技術專家,本白皮書值得一讀:https://github.com/ethereum/wiki/wiki/White-Paper。
如果你之前已經建構了Web應用程式,我寫了一篇文章,比較以太坊區塊鍊和Web應用程式架構,這可能有助于在更高層次上了解以太坊。
2.Geth
Geth是以太坊基金會提供的官方用戶端軟體。它是用Go程式設計語言編寫的。該軟體包含一些值得了解的元件:
- 用戶端守護程式
當你啟動此用戶端守護程式時,它将連接配接到網絡中的其他用戶端(也稱為節點)并下載下傳區塊鍊的副本。它将不斷與其他節點通信,以使其區塊鍊的副本保持最新。它還能夠挖掘塊并向區塊鍊添加交易,驗證塊中的交易并執行交易。它還通過公開可以通過RPC與之互動的API充當伺服器。
image
- geth控制台
這是一個指令行工具,可讓你連接配接到正在運作的節點,并執行各種操作,如建立和管理帳戶,查詢區塊鍊,簽署并向區塊鍊送出交易等。
- mist浏覽器
這是用于與節點通信的桌面應用程式。你使用geth控制台執行的任何操作都可以通過此圖形使用者界面完成。
3.Parity
Parity是以太坊協定的另一個很好的實作,用Rust程式設計語言編寫。它是一個非官方的用戶端,由一家名為Parity Inc.的公司維護。任何人都可以實作用戶端軟體并加入以太坊網絡。你可以按照本黃皮書中的規範來實施你自己的用戶端!
image
4.Web3.js
就像你有geth,mist浏覽器等與ethereum節點進行通信一樣,還有一個名為Web3.js的javascript庫,可以用來與節點進行互動。由于它是一個javascript庫,你可以使用它來建構基于Web的dapps。
image
5.solidity
Solidity是用于編寫智能合約以便在以太坊區塊鍊上運作的最流行的程式設計語言。它是一種進階語言,在編譯時會轉換為EVM(以太坊虛拟機)位元組代碼。這與Java世界非常相似,其中有Scora,Groovy,Clojure,JRuby等JVM語言。編譯時所有這些都生成在JVM(Java虛拟機)中運作的位元組代碼。你可以建立像Solidity這樣的語言,隻要你遵循規範并且你的語言編譯為有效的EVM位元組代碼就行!
還有一個非常好的基于浏覽器的IDE,你可以在這裡編寫合約,編譯和部署到區塊鍊:http://remix.ethereum.org/
6.Truffle/Embark
就像你有Web應用程式開發的架構,如Ruby on Rails,Python/Django等,Truffle和Embark是用于開發dapps的兩個最流行的架構。它們消除了在區塊鍊上編譯和部署合同的許多複雜性。
如果你是Ethereum dapp開發的新手,我寫了一系列的指導教程,可以在1,2和3開始。
7.Metamask
如果你在以太坊社群閑逛超過一周,你将不可避免地遇到Metamask。在撰寫本文時,它是一個用于與以太坊節點互動的chrome插件。對于世界上每個人來說,運作節點與區塊鍊進行互動是不現實的。是以,Metamask的人員擁有許多節點,是以你不必這樣做。你所要做的就是安裝Metamask,它會自動連接配接到他們的節點。
image
8.ENS
以太坊命名系統是以太坊世界的DNS。就像你将IP位址映射到人類可讀的名稱一樣,你可以将任何以太坊合約或錢包位址映射到人類可讀的名稱。
例如:
146.115.22.177→google.com
。你可以輸入解析為該IP位址的google.com,而不是在浏覽器中鍵入IP位址。
例如:
0x80C013d980aB049471c88E1603b8b4a60E03295C
是我的錢包位址。如果你有心情給我發送一些以太币,你不必記住這個位址。一旦ENS啟動,我可能會将它映射到
mvmurthy.eth
,你可以用它來輕松地給我錢:)。
9.Swarm
區塊鍊可以存儲少量資料。如果你想存儲患者記錄,銷售合同或某些需要公開時間戳的大型檔案,該怎麼辦?在區塊鍊中存儲blob既昂貴又無法擴充。Swarm用于解決這個問題。Swarm是一種分散的内容存儲和分發服務。你可以将其視為CDN,而不是在一家公司的伺服器上托管的整個CDN,它通過網際網路分布在計算機上。就像運作以太坊節點一樣,你運作一個swarm節點來連接配接到群網絡。
當你将以太坊合約部署到區塊鍊時,你将獲得ABI的部署位址和JSON接口(合同接口類似于API)。當你希望某人使用你的合約時,你必須向他們提供已部署的位址和ABI。将來,ABI将存儲在Swarm上,是以任何人都可以通過檢視以太坊位址來查找ABI。
10.IPFS
IPFS(星際檔案系統)在概念上與Swarm完全相似。它是一個分散的存儲系統。它與以太坊直接無關,但可以與以太坊內建。
你可以在這裡閱讀Swarm和IPFS之間的差別:https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM
11.Whisper
你沒有聽到很多關于Whisper的資訊,但在以太坊生态系統中卻是一項有趣的技術。它是Dapps彼此互動的通信協定。你可以在這裡閱讀更多相關資訊:https://github.com/ethereum/wiki/wiki/Whisper
下面是嘗試将所有部分組合在一起:
image
======================================================================
分享一些以太坊、EOS、比特币等區塊鍊相關的互動式線上程式設計實戰教程:
- tendermint區塊鍊開發詳解,本課程适合希望使用tendermint進行區塊鍊開發的工程師,課程内容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀态庫等,也包括代币發行等豐富的實操代碼,是go語言工程師快速入門區塊鍊開發的最佳選擇。
- EOS教程,本課程幫助你快速入門EOS區塊鍊去中心化應用的開發,内容涵蓋EOS工具鍊、賬戶與錢包、發行代币、智能合約開發與部署、使用代碼與智能合約互動等核心知識點,最後綜合運用各知識點完成一個便簽DApp的開發。
- java以太坊開發教程,主要是針對java和android程式員進行區塊鍊以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鍊以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智能合約開發互動,進行賬号建立、交易、轉賬、代币開發以及過濾器和交易等内容。
- 以太坊入門教程,主要介紹智能合約與dapp應用開發,适合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鍊、ipfs實作去中心化電商DApp實戰,适合進階。
- C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀态與交易、智能合約開發與互動、過濾器和交易等。
- java比特币開發教程,本課程面向初學者,内容即涵蓋比特币的核心概念,例如區塊鍊存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中內建比特币支援功能,例如建立位址、管理錢包、構造裸交易等,是Java工程師不可多得的比特币開發學習課程。
- php比特币開發教程,本課程面向初學者,内容即涵蓋比特币的核心概念,例如區塊鍊存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中內建比特币支援功能,例如建立位址、管理錢包、構造裸交易等,是Php工程師不可多得的比特币開發學習課程。
彙智網原創翻譯,轉載請标明出處。這裡是原文以太坊生态系統中的工具和技術