第二部分. DApp框架,工具以及工做流程
DApp開發框架1
Truffle and Embark. 是Truffle把我領進了門。在Truffle出現以前的那個夏天,我目擊了一幫有天分的學生是如何不眠不休的參加一個hackathon(編程馬拉松)活動的,雖然結果至關不錯,但我仍是嚇到了。而後Truffle出現了,幫你處理掉大量可有可無的小事情,讓你能夠迅速進入寫代碼-編譯-部署-測試-打包DApp這個流程。另一個類似的DApp構建與測試框架是Embark。、
Meteor. 許多DApp開發者使用的另外一套開發棧由web3.js和Meteor組成,Meteor是一套通用webapp開發框架(ethereum-meteor-wallet項目提供了一個很棒的入門實例,而SilentCiero正在構建大量Meteor與web3.js和DApp集成的模板)。我下載並運行過一些不錯的DApp是以這種方式構造的。APIs. BlockApps.net打算提供一套RESTful API給DApp使用以避免去開發者運行本地節點的麻煩,這個中心化服務是基於以太坊Haskell實現的。這與DApp的去中心化模型背道而馳,可是在本地沒法運行以太坊節點的場合很是有用,好比在你但願只有瀏覽器或者使用移動設備的用戶也能使用你的DApp的時候。BlockApps提供了一個命令行工具bloc,註冊一個開發者賬號以後就可使用。
許多人擔憂須要運行以太坊節點才能使用DApp的話會把用戶嚇跑,其實包括BlockApps在內的許多工具都能解決這個問題。Metamask容許你在瀏覽器裏面使用以太坊的功能而無需節點,以太坊官方提供的AlethZero或者AlethOne是正在開發中有易用界面的客戶端,ConsenSys正在打造一個輕錢包LightWallet,這些工具都會讓DApp的使用變得更容易。輕客戶端和水平分片(sharding)也在計劃和開發之中。這是一個能進化出混合架構的P2P生態系統。
智能合約集成開發環境 (IDE)
IDE. 以太坊官方出品了用來編寫智能合約的Mix IDE,我還沒用過但會盡快一試。
基於瀏覽器的IDE. Solidity real-time compiler和Cosmo均可以讓你快速開始在瀏覽器中編寫智能合約。你甚至可讓這些工具使用你的本地節點,只要讓本地節點開一個端口(注意安全!這些工具站點必須可信,並且千萬不要把你的所有身家放在這樣一個本地節點裏面!Cosmo UI上有如何使用geth作到這一點的指引)。在你的智能合約調試經過以後,能夠用開發框架來給它添加用戶界面和打包成DApp,這正是Truffle的工做,後面的編程章節會有詳細講解。
Ether.Camp正在開發另外一個強大的企業級瀏覽器IDE。他們的IDE將支持沙盒測試網絡,自動生成用於測試的用戶界面(取代後文將展現的手動編寫測試),以及一個測試交易瀏覽器test.ether.camp。當你的合約準備正式上線以前,使用他們的測試網絡會是確保你的智能合約在一個接近真實的環境工做正常的好方法。
合約和Dapp示例。 在Github上搜索DApp倉庫和.sol文件能夠看到進行中的有趣東西。這裏有一個DApp大列表:dapps.ethercasts.com
Ether.fund/contracts上有一些Solidity和Serpent寫的合約示例,可是不清楚這些例子有沒有通過測試或者正確性驗證。
部署智能合約的流程
流程以下:
啓動一個以太坊節點 (例如geth或者testrpc)。
使用solc編譯智能合約。 => 得到二進制代碼。
將編譯好的合約部署到網絡。(這一步會消耗以太幣,還須要使用你的節點的默認地址或者指定地址來給合約簽名。) => 得到合約的區塊鏈地址和ABI(合約接口的JSON表示,包括變量,事件和能夠調用的方法)。
用web3.js提供的JavaScript API來調用合約。(根據調用的類型有可能會消耗以太幣。)web