去中心化應用是能夠使用戶和供應商之間直接互動的服務(例如,鏈接某些市場上的買方和賣方,文件存儲裏的持有者和儲存者)。以太坊去中心化應用典型地經過HTML/Javascript網絡應用與用戶互動,使用Javascript API與區塊鏈通訊。去中心化應用典型地在區塊鏈上有本身的相關合約套件,用來編碼商業邏輯,容許持久存儲對共識要求嚴格的狀態。記住因爲以太坊網絡上的運算天生冗餘,執行的gas成本會比離鏈的私人執行成本更高。這就激勵着去中心化應用開發者限制執行的代碼數量和儲存在區塊鏈上的代碼數量。javascript
使用以太坊的去中心化應用被編譯到如下列表,在開發的不一樣階段列出(概念,工做原型,實時/部署的)。若是你在開發去中心化應用, 考慮向這些列表添加入口:java
列表中提供的去中心化服務覆蓋大範圍的領域,包括金融,保險,預測市場,社交網絡,運算和存儲分配,賭博,市場,物聯網,管理,合做,開發和遊戲。git
未來,去中心化應用可能會在去中心化應用瀏覽器裏集成的dappstores中列出和分配。github
去中心化應用開發須要理解Web3 Javascript API, the JSON RPC API和Solidity編程語言。web
注意:有開發者工具幫助你開發、測試和部署去中心化應用,自動使用如下列出的資源。編程
示例瀏覽器
https://dappsforbeginners.wordpress.com/tutorials/your-first-dapp/ https://github.com/ethereum/wiki/wiki/Dapp-Developer-Resources安全
教程網絡
Mix是官方以太坊IDE,它容許開發者在以太坊區塊鏈建立和部署合約及去中心化應用。它包含一個Solidity源代碼排錯器。app
下面是用於寫以太坊去中心化應用的開發者框架和IDE。
以太坊節點的命令行控制檯。
以太坊控制檯經過IPC鏈接到在背景運行的以太坊節點(用eth和geth測試)並提供一個交互的javascript控制檯,包括web3對象和管理員附件。
這裏能夠找到可用管理列表 以太坊節點控制指令。
要使用這個控制檯,你須要啓動一個本地以太坊節點和可用的ipc溝通插口(數據目錄中的geth.ipc文件)。開啓一個節點後,ipc插口默認位於你的以太坊本地主目錄。你也能夠設置—test選項來使用特定節點測試指令。
而後你能夠在控制檯輸入。
這是—test模式節點指令的釋義:關於節點配置文件的更多信息。
Swarm是分佈式存儲平臺以及內容分發服務,以太坊web 3堆棧自帶的基層服務。Swarm的首要目標是提供足夠去中心化和冗餘的以太坊公共記錄儲存,尤爲是儲存和分配去中心化應用代碼和數據,以及區塊鏈數據。從經濟觀點看,它容許參與者有效集中儲存和帶寬資源,用覺得全部參與者提供以前提到的服務。
從終端用戶的觀點看,Swarm和WWW並無很大不一樣,除了上載並非針對一個特定的服務商。目標是點對點存儲,並提供抗DDOS、零故障、容錯、抗審查的解決方案以及自我維護,這歸功於一個使用點對點記帳體系並容許以付款交換資源的內置激勵體系。Swarm被設計爲與以太坊devp2p多協議網絡層次,爲了域名解決方案的以太坊區塊鏈,服務支付和內容可用性保險結合。
在線和離線存儲
促使安排交易稍後發生的市場。提供unix中crontab或javascript 中的setTimeout相似的角色。以太坊提案中的去中心化cron服務 – 做者Peter Szilagyi
促使離線運算可驗證執行的市場。容許每一個昂貴的運算在以太坊虛擬機內使用,沒必要實際支付在鏈上執行它們的高額gas成本。
隨機數: https://www.reddit.com/r/ethereum/comments/49yld7/eli5_how_does_a_service_like_szabodice_grab_a/
以太坊虛擬機(EVM)是以太坊智能合約的執行環境。它不只被沙箱化,並且其實是徹底隔離的,這意味着以太坊虛擬機內部運行的代碼不能夠訪問網絡,文件系統或其餘進程。智能合約甚至對其餘智能合約的訪問權限都是有限的。
合約存在於區塊鏈上,區塊鏈是以太坊特定的二進制格式(以太坊虛擬機字節代碼)。然而,合約典型地是用以太坊高級語言寫成,用以太坊編譯器編譯成字節代碼,最終用以太坊客戶端上傳到區塊鏈。
文章中的列表對應的連接能夠參考《Ethereum Homestead Documentation》第94頁1.7.5 Dapps