以太坊有不少工具,隨着時間的推移有些會過期,但早期的網絡文章會有介紹,從而與目前的工具形成時差上的迷惑,有些工具是隨着工程化的須要逐漸流行起來的。有必要梳理如下:前端
一、go-ethereum:以太坊Go語言版本的源碼(也叫Client,注意區塊鏈網絡裏沒有服務端)。 二、Geth:go-ethereum的命令行終端,能調用go-ethereum的API。能夠經過多種方式得到,好比用homebrew安裝、下載可執行二進制文件、經過go install/make geth go-ethereum源碼等方式獲得geth。 三、Ethereum Wallet:可視化的Geth(以太坊錢包),能夠管理帳戶、發佈合約。 四、Mist:以太坊瀏覽器,由於它鏈接的是以太坊區塊鏈網絡,能夠經過mist訪問DApp,固然也能訪問管理Ethereum Wallet。 五、Solidity:開發智能合約的編程語言,運行在EVM。 六、Remix:開發智能合約的IDE,基於瀏覽器。適合新手(版本控制、存儲等不便)。(Mix中止更新,browser-solidity也中止更新,都使用Remix了) 七、Truffle和Embark是開發DApps的兩個經常使用框架,能夠寫代碼-編譯-部署-測試-打包DApp(注意不只僅能夠開發智能合約)。 八、web3:以太坊基金會爲DApp開發的標準RPC訪問接口,也就是以太坊區塊鏈網絡與鏈外網絡的鏈接橋樑。
經過一個Dapp開發例子來理解。webpack
一、安裝truffle(音:車否)web
npm i -g truffle
二、安裝Ganache(音:擱那師),Ganache是用於以太坊開發的僅爲我的使用的區塊鏈,下載可視化安裝包。
http://truffleframework.com/g...npm
三、新建Dapp項目。首先新建一個空目錄如dapp,而後進入空目錄。編程
一般能夠用truffle初始化工程:json
truffle init
也能夠從truffle在線應用裏拆箱即用一個模板如webpack:瀏覽器
truffle unbox webpack
咱們用第二種方式進行下文演示。服務器
四、我使用的IDE是GoLand(intellij idea系列的IDE均可以),安裝插件Intellij-Solidity。打開工程後就能夠友好地編寫智能合約和DApp了。網絡
dapp目錄下的幾個文件說明:app
truffle.js:默認配置了一個網絡,這個網絡啓動ganache後就自動啓用了(每次啓動都是全新的初始網絡,以前的應用數據會丟失),智能合約就是被部署到這個網絡裏的。
migrations目錄:這裏面是合約的部署腳本,注意命名以數字加下劃線開頭,合約部署時按這個數字序號順序執行。
五、編譯工程
終端cd到dapp目錄下執行編譯命令
truffle compile
會看到dapp下多了一個build目錄,存放編譯後的文件。這些文件都是json格式,能夠在應用代碼文件中經過import或require引用這些編譯後的合約文件。
六、部署合約到區塊鏈網絡
在終端裏執行
truffle migrate
執行結束併成功後能夠從ganache界面中看到產生了幾個區塊和幾筆交易,這些交易是從默認的第一個外部擁有帳戶到合約帳戶(這兩個帳戶的概念參見以太坊黃皮書說明,此處不大篇贅述)。
七、打包應用程序並訪問
在終端裏執行(應用程序根目錄下)
1)webpack編譯打包應用
npm run build
【DApp原理】這個打包的結果就是單頁前端應用SPA (Single-Page App)。你能夠將它放在本身的雲web服務器上,服務器上同時要部署一個以太節點,應用經過節點接入區塊鏈網絡。DApp通常都部署在鏈外,合約是發佈到鏈上的。因特網的用戶訪問App界面操做功能,這些功能是合約暴露的web3接口。DApp之因此是去中心化的,就在於其核心——合約,分佈於鏈上全部節點。
2)本地啓用app
npm run dev
訪問 http://localhost:8080,就能夠看到dapp的界面,包含可視化的合約功能。