1. 程式人生 > >以太坊生態系統中工具、類庫和開發技術

以太坊生態系統中工具、類庫和開發技術

如果你是以太坊區塊鏈的新手,那麼你可能會不知所措(至少我是),並試圖瞭解以太坊生態系統中的所有工具和技術。因此,我決定在開始學習以太坊時簡要描述下你經常遇到的各種元件。希望這將有助於你全面瞭解以太坊生態系統以及所有部分如何組合在一起。

1.以太坊

以太坊是一個智慧合約區塊鏈,你可以在其上構建去中心化的應用程式(稱為智慧合約)。如果你是技術專家,本白皮書值得一讀:https://github.com/ethereum/wiki/wiki/White-Paper

如果你之前已經構建了Web應用程式,我寫了一篇文章,比較以太坊區塊鏈和Web應用程式架構,這可能有助於在更高層次上理解以太坊。

2.Geth

Geth是以太坊基金會提供的官方客戶端軟體。它是用Go程式語言編寫的。該軟體包含一些值得理解的元件:

  • 客戶端守護程式

當你啟動此客戶端守護程式時,它將連線到網路中的其他客戶端(也稱為節點)並下載區塊鏈的副本。它將不斷與其他節點通訊,以使其區塊鏈的副本保持最新。它還能夠挖掘塊並向區塊鏈新增交易,驗證塊中的交易並執行交易。它還通過公開可以通過RPC與之互動的API充當伺服器。

  • geth控制檯

這是一個命令列工具,可讓你連線到正在執行的節點,並執行各種操作,如建立和管理帳戶,查詢區塊鏈,簽署並向區塊鏈提交交易等。

  • mist瀏覽器

這是用於與節點通訊的桌面應用程式。你使用geth控制檯執行的任何操作都可以通過此圖形使用者介面完成。

3.Parity

Parity是以太坊協議的另一個很好的實現,用Rust程式語言編寫。它是一個非官方的客戶端,由一家名為Parity Inc.的公司維護。任何人都可以實現客戶端軟體並加入以太坊網路。你可以按照本黃皮書中的規範來實施你自己的客戶端!

4.Web3.js

就像你有geth,mist瀏覽器等與ethereum節點進行通訊一樣,還有一個名為Web3.js的javascript庫,可以用來與節點進行互動。由於它是一個javascript庫,你可以使用它來構建基於Web的dapps。

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開發的新手,我寫了一系列的指導教程,可以在123開始。

7.Metamask

如果你在以太坊社群閒逛超過一週,你將不可避免地遇到Metamask。在撰寫本文時,它是一個用於與以太坊節點互動的chrome外掛。對於世界上每個人來說,執行節點與區塊鏈進行互動是不現實的。因此,Metamask的人員擁有許多節點,因此你不必這樣做。你所要做的就是安裝Metamask,它會自動連線到他們的節點。

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

下面是嘗試將所有部分組合在一起:

======================================================================

分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:

  • java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
  • EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裡是原文以太坊生態系統中的工具和技術