以太坊是備受關注的區塊鍊,它基于密碼學技術和P2P通信技術建構了一個去中心化的平台,所有的交易同步儲存在每個節點中,通過将區塊單向級聯成鍊,以太坊有效的保證了交易的不可篡改:

智能合約平台
以太坊是第一個實作了虛拟機的區塊鍊,是以為智能合約 - Smart Contract - 的運作提供了良好的支援環境。也正因為這個原因,以太坊被稱為區塊鍊2.0,以差別于比特币代表的以數字加密貨币為核心特征的區塊鍊1.0。
可以将智能合約了解為機器之間的合同約定,在滿足一定條件時自動執行約定好的邏輯,例如在保險理賠流程中,如果理賠條件滿足就自動将賠償金釋放給出險人,這個流程就可以使用智能合約來實作。
有多種語言可以開發以太坊智能合約,但目前最常用的是類似于JavaScript的Solidity語言。本課程中将采用Solidity講解智能合約的開發。
JSON RPC
如果我們希望構造一個去中心化應用(
DApp
),除了智能合約的開發,通常還需要使用其他開發語言為使用者提供操作智能合約的使用者接口,例如開發一個網頁、一個手機App或者一個桌面應用。這些代碼都需要與以太坊進行互動。
以太坊規定了每個節點需要實作的
JSON RPC API應用開發接口,該接口是傳輸無關的,應用程式可以通過HTTP、websocket或IPC等多種通信機制來使用該接口協定操作以太坊節點:
理論上你可以使用任何語言基于JSON RPC接口開發出以太坊之上的去中心化應用,不過為了提高開發效率,更好的辦法是使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協定細節,
有助于開發人員聚焦在業務邏輯的實作上。
雖然以太坊的官方用戶端geth就是采用Go語言開發的,但是直接使用geth提供的接口對于DApp開發來講過于重量級和碎片化了,更好的辦法是最DApp開發增加一層抽象,屏蔽掉不必要的細節,比如利用課程提供的 ethtool 開發包。
課程内容概述
本課程的目的是幫助Go開發工程師快速掌握開發以太坊應用的技能,同時穿插講解以太坊的一些基本概念,例如:賬戶、交易和智能合約的開發等。
第二章 Hi,以太坊
這一章将通過一個簡單的Go應用的開發來講解使用Go語言進行以太坊應用開發的最簡流程,通過這一部分的學習,你就可以在自己的Go應用中引入基本的以太坊支援了。
第三章 賬戶管理
這一章将詳細介紹以太坊的賬戶管理接口。如果你對開發中心化錢包應用感興趣,或者需要在自己的網站中動态建立賬戶(例如,你希望為網站增加對以太坊支付的支援),那麼這部分内容會有很大的幫助。
第四章 了解狀态與交易
這一章主要講解以太坊的交易操作接口,同時也介紹一些重要的概念,例如狀态、裸交易、gas等。這部分内容将幫助你理清Go應用與以太坊互動的大多數問題。
第五章 智能合約的開發、部署與互動
這一章将通過一個ERC20代币合約的開發、編譯、代碼生成、部署與互動的完整流程,講解使用Go語言操作solitiy合約的方法。如果你希望為自己的網站增加代币支援,這一部分的内容是必須的。
第六章 過濾器、釋出訂閱與事件
這一章主要講解以太坊的通知機制以及如何在Go應用中使用過濾器和釋出訂閱機制來監視塊和交易的生成以及合約事件的觸發。
課程為每個知識點都提供了相應的預置代碼,你可以在實驗環境的
~/repo
目錄下檢視。
課程連接配接:
Go以太坊開發詳解 — 彙智網