以太坊:Dapp及相關開發工具介紹

汪曉明發表於2018-08-21

去中心化應用
去中心化應用是可以使使用者和供應商之間直接互動的服務(例如,連線某些市場上的買方和賣方,檔案儲存裡的持有者和儲存者)。以太坊去中心化應用典型地通過HTML/Javascript網路應用與使用者互動,使用Javascript API與區塊鏈通訊。去中心化應用典型地在區塊鏈上有自己的相關合約套件,用來編碼商業邏輯,允許持久儲存對共識要求嚴格的狀態。記住由於以太坊網路上的運算天生冗餘,執行的gas成本會比離鏈的私人執行成本更高。這就激勵著去中心化應用開發者限制執行的程式碼數量和儲存在區塊鏈上的程式碼數量。

去中心化應用目錄
使用以太坊的去中心化應用被編譯到以下列表,在開發的不同階段列出(概念,工作原型,實時/部署的)。如果你在開發去中心化應用, 考慮向這些列表新增入口:

  • Ðapps 的Ethercasts狀態
  • Dappslist Dappcentral –
  • 去中心化應用的分類頁面,帶說明,程式碼驗證和網路資料。
  • Dapps郵件列表 – 以太坊上的開發者郵件列表(停止使用)。

列表中提供的去中心化服務覆蓋大範圍的領域,包括金融,保險,預測市場,社交網路,運算和儲存分配,賭博,市場,物聯網,管理,合作,開發和遊戲。

我們最終會預期什麼應用? https://www.reddit.com/r/ethe…

將來,去中心化應用可能會在去中心化應用瀏覽器裡整合的dappstores中列出和分配。

去中心化應用瀏覽器

  • Mist – 由基金會開發的官方GUI去中心化應用瀏覽器,開發階段。 Mist as Wallet dapp在試用中。
  • Syng – Jarrad Hope開發的移動以太坊瀏覽器(開發階段) – 由DEVgrants支援
  • MetaMask – Aaron Kumavis Davis的瀏覽器內GUI。Github上的Epicenter Bitcoin訪談 –由DEVgrants支援
  • AlethZero – C++ eth客戶端GUI(停止使用)。
  • Supernova – (停止使用)。

開發者工具
去中心化應用開發需要理解Web3 Javascript API, the JSON RPC API和Solidity程式語言。
注意:有開發者工具幫助你開發、測試和部署去中心化應用,自動使用以下列出的資源。

  • Web3 JavaScript API – 想要和以太坊節點互動的時候,主要用到的JavaScript SDK。
  • JSON RPC API – 與節點互動的低階JSON RPC 2.0介面。這個API被Web3 JavaScript API使用。
  • Solidity Docs – Solidity是以太坊開發的智慧合約語言,編譯到以太坊虛擬機器操作碼。
  • 測試網路 – 測試網路幫助開發者開發和測試以太坊程式碼及網路互動,不需花費主網路上自己的以太幣。測試網路選項在下面列出。
  • 去中心化應用開發資源。這會幫助你開發,排錯和部署以太坊應用。

去中心化應用開發資源

示例

  • pricefeed使用例項 – web3指令碼列印所有的賬戶餘額
  • 以太坊合約例項

https://dappsforbeginners.wor… https://github.com/ethereum/wiki/wiki/Dapp-Developer-Resources

教程

Mix-IDE
Mix是官方以太坊IDE,它允許開發者在以太坊區塊鏈建立和部署合約及去中心化應用。它包含一個Solidity原始碼排錯器。Mix

IDEs/Frameworks
下面是用於寫以太坊去中心化應用的開發者框架和IDE。

  • Truffle – Truffle是以太坊的開發環境,測試框架和資產管道。 Dapple –
  • Dapple是Solidity開發者工具以幫助建立和管理以太坊類似的區塊鏈上覆雜的合約體系。 Populus –
  • Populus是用Python語言寫的智慧合約開發框架。 Eris-PM – Eris Package
  • Manager部署並測試私有和公共鏈上的智慧合約體系。 Embark – Embark是用JavaScript寫的去中心化應用開發框架。
  • EtherScripter (已淘汰,停用) 韌性原始交易廣播

以太坊控制檯
以太坊節點的命令列控制檯。

以太坊控制檯通過IPC連線到在背景執行的以太坊節點(用eth和geth測試)並提供一個互動的javascript控制檯,包括web3物件和管理員附件。

這裡可以找到可用管理列表 以太坊節點控制指令

要使用這個控制檯,你需要啟動一個本地以太坊節點和可用的ipc溝通插口(資料目錄中的geth.ipc檔案)。開啟一個節點後,ipc插口預設位於你的以太坊本地主目錄。你也可以設定—test選項來使用特定節點測試指令。

然後你可以在控制檯輸入

這是—test模式節點指令的釋義:

關於節點配置檔案的更多資訊。

底層服務

Whisper
whisper是一種資訊檢索協議,它允許節點間直接以一種安全的形式互發資訊,並對第三方組織窺探者隱藏傳送者和接收者的資訊。
這是不依賴於一箇中心伺服器的通訊管理。

Swarm
Swarm是分散式儲存平臺以及內容分發服務,以太坊web 3堆疊自帶的基層服務。Swarm的首要目標是提供足夠去中心化和冗餘的以太坊公共記錄儲存,尤其是儲存和分配去中心化應用程式碼和資料,以及區塊鏈資料。從經濟觀點看,它允許參與者有效集中儲存和頻寬資源,用以為所有參與者提供之前提到的服務。

從終端使用者的觀點看,Swarm和WWW並沒有很大不同,除了上載並不是針對一個特定的服務商。目標是點對點儲存,並提供抗DDOS、零故障、容錯、抗審查的解決方案以及自我維護,這歸功於一個使用點對點記賬體系並允許以付款交換資源的內建激勵體系。Swarm被設計為與以太坊devp2p多協議網路層次,為了域名解決方案的以太坊區塊鏈,服務支付和內容可用性保險結合。

swarm 上的ÐΞVcon演講
Viktor Trón, Daniel A. Nagy:Swarm – YouTube上的以太坊 ÐΞVcon-1演講
Daniel A. Nagy:保持公共記錄安全可用 – YouTube上的以太坊ÐΞVcon-0演講
Code and status

資源
github上的釋出
開發路徑圖
twitter上的ethersphere
swarm gitter room
swarm subreddit

線上和離線儲存
https://www.reddit.com/r/ethe…
https://www.reddit.com/r/ethe…
什麼是swarm,用途是什麼? – stackexchange問答

以太坊定時器
作者: Piper Merriam
網站: alarm_main_website。
文件: alarm_documentation。
促使安排交易稍後發生的市場。提供unix中crontab或javascript 中的setTimeout類似的角色。 •以太坊提案中的去中心化cron服務 – 作者Peter Szilagyi

Ethereum Computation Market
作者: Piper Merriam
網站: computation_market_main_website。
文件: computation_market_main_website。
促使離線運算可驗證執行的市場。允許每個昂貴的運算在以太坊虛擬機器內使用,不必實際支付在鏈上執行它們的高額gas成本。
BTCRelay
BTCrelay

更多資訊 (關於ETH/BTC雙向peg,不需修正比特幣程式碼)。
BTCrelay 審查
RANDAO
隨機數: https://www.reddit.com/r/ethe…

The EVM
以太坊虛擬機器(EVM)是以太坊智慧合約的執行環境。它不僅被沙箱化,而且實際上是完全隔離的,這意味著以太坊虛擬機器內部執行的程式碼不可以訪問網路,檔案系統或其他程式。智慧合約甚至對其他智慧合約的訪問許可權都是有限的。

合約存在於區塊鏈上,區塊鏈是以太坊特定的二進位制格式(以太坊虛擬機器位元組程式碼)。然而,合約典型地是用以太坊高階語言寫成,用以太坊編譯器編譯成位元組程式碼,最終用以太坊客戶端上傳到區塊鏈。

參考資料:
文章中的列表對應的連結可以參考《Ethereum Homestead Documentation》第94頁1.7.5 Dapps

汪曉明
HPB芯鏈創始人,巴位元專欄作家。十餘年金融大資料、區塊鏈技術開發經驗,曾參與建立銀聯大資料。主創區塊鏈教學視訊節目《明說》30多期,編寫了《以太坊官網文件中文版》,並作為主要作者編寫了《區塊鏈開發指南》,在中國區塊鏈社群以ID“藍蓮花”知名。

相關文章