去中心化應用
去中心化應用是可使用戶和供應商之間直接互動的服務(例如,鏈接某些市場上的買方和賣方,文件存儲裏的持有者和儲存者)。以太坊去中心化應用典型地經過HTML/Javascript網絡應用與用戶互動,使用Javascript API與區塊鏈通訊。去中心化應用典型地在區塊鏈上有本身的相關合約套件,用來編碼商業邏輯,容許持久存儲對共識要求嚴格的狀態。記住因爲以太坊網絡上的運算天生冗餘,執行的gas成本會比離鏈的私人執行成本更高。這就激勵着去中心化應用開發者限制執行的代碼數量和儲存在區塊鏈上的代碼數量。javascript
去中心化應用目錄
使用以太坊的去中心化應用被編譯到如下列表,在開發的不一樣階段列出(概念,工做原型,實時/部署的)。若是你在開發去中心化應用, 考慮向這些列表添加入口:java
- Ðapps 的Ethercasts狀態
- Dappslist
- Dappcentral – 去中心化應用的分類頁面,帶說明,代碼驗證和網絡數據。
- Dapps郵件列表 – 以太坊上的開發者郵件列表(中止使用)。
列表中提供的去中心化服務覆蓋大範圍的領域,包括金融,保險,預測市場,社交網絡,運算和存儲分配,市場,物聯網,管理,合做,開發和遊戲。git
- 咱們最終會預期什麼應用? https://www.reddit.com/r/ethereum/comments/2mnl7f/the_top_10_ether_dapps_of_201
未來,去中心化應用可能會在去中心化應用瀏覽器裏集成的dappstores中列出和分配。github
去中心化應用瀏覽器
- 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編程語言。web
注意:有開發者工具幫助你開發、測試和部署去中心化應用,自動使用如下列出的資源。編程
- Web3 JavaScript API – 想要和以太坊節點交互的時候,主要用到的JavaScript SDK。
- JSON RPC API – 與節點交互的低級JSON RPC 2.0界面。這個API被Web3 JavaScript API使用。
- Solidity Docs – Solidity是以太坊開發的智能合約語言,編譯到以太坊虛擬機操做碼。
- 測試網絡 – 測試網絡幫助開發者開發和測試以太坊代碼及網絡互動,不需花費主網絡上本身的以太幣。測試網絡選項在下面列出。
- 去中心化應用開發資源。這會幫助你開發,排錯和部署以太坊應用。
去中心化應用開發資源
- 智能合約 ELI5 •https://blog.slock.it/a-primer-to-the-decentralized-autonomous-organization-dao-69fb125bd3cd
- 向101小白介紹編程智能合約
- 標準化合約API列表
示例瀏覽器
- pricefeed使用實例 – web3腳本打印全部的帳戶餘額
- 以太坊合約實例https://dappsforbeginners.wordpress.com/tutorials/your-first-dapp/ https://github.com/ethereum/wiki/wiki/Dapp-Developer-Resources
教程安全
- ethereum.org上的去中心化應用教程
- 去中心化應用初學者教程系列
- Eris的Solidity教程系列
- 高級Solidity教程
- http://ethereumj.io/blog/2015/09/09/friendly-ether-bot/
- https://github.com/ConsenSys/ether-pudding
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/ethereum/comments/3hkv2f/eli5_storage_in_the_ethereum_blockchain/
- https://www.reddit.com/r/ethereum/comments/3npsoz/ethereum_ipfs_and_filecoin/
- 什麼是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/ethereum/comments/49yld7/eli5_how_does_a_service_like_szabodice_grab_a/
The EVM
以太坊虛擬機(EVM)是以太坊智能合約的執行環境。它不只被沙箱化,並且其實是徹底隔離的,這意味着以太坊虛擬機內部運行的代碼不能夠訪問網絡,文件系統或其餘進程。智能合約甚至對其餘智能合約的訪問權限都是有限的。
合約存在於區塊鏈上,區塊鏈是以太坊特定的二進制格式(以太坊虛擬機字節代碼)。然而,合約典型地是用以太坊高級語言寫成,用以太坊編譯器編譯成字節代碼,最終用以太坊客戶端上傳到區塊鏈。
參考資料:
文章中的列表對應的連接能夠參考《Ethereum Homestead Documentation》第94頁1.7.5 Dapps
本文轉自巴比特,做者汪曉明。原文連接:https://www.8btc.com/article/256541