理解以太坊DApp及開發工具

1、理解以太坊工具

以太坊有不少工具,隨着時間的推移有些會過期,但早期的網絡文章會有介紹,從而與目前的工具形成時差上的迷惑,有些工具是隨着工程化的須要逐漸流行起來的。有必要梳理如下:前端

一、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訪問接口,也就是以太坊區塊鏈網絡與鏈外網絡的鏈接橋樑。

2、DAPP的工具、開發與原理

經過一個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的界面,包含可視化的合約功能。

相關文章
相關標籤/搜索