標籤:樣本 應用 位元組 jar 管理 center his 教程 prim
去中心化應用
去中心化應用是可以使使用者和供應商之間直接互動的服務(例如,串連某些市場上的買方和賣方,檔案儲存體裡的持有人和儲存者)。以太坊去中心化應用典型地通過HTML/Javascript網路應用與使用者互動,使用Javascript API與區塊鏈通訊。去中心化應用典型地在區塊鏈上有自己的相關合約套件,用來編碼商業邏輯,允許持久儲存對共識要求嚴格的狀態。記住由於以太坊網路上的運算天生冗餘,執行的gas成本會比離鏈的私人執行成本更高。這就激勵著去中心化應用開發人員限制執行的代碼數量和儲存在區塊鏈上的代碼數量。
去中心化應用目錄
使用以太坊的去中心化應用被編譯到以下列表,在開發的不同階段列出(概念,工作原型,即時/部署的)。如果你在開發去中心化應用, 考慮向這些列表添加入口:
- Dapps 的Ethercasts狀態
- Dappslist
- Dappcentral – 去中心化應用的分類頁面,帶說明,代碼驗證和網路資料。
- Dapps郵件清單 – 以太坊上的開發人員郵件清單(停止使用)。
列表中提供的去中心化服務覆蓋大範圍的領域,包括金融,保險,預測市場,社交網路,運算和儲存分配,賭博,市場,物聯網,管理,合作,開發和遊戲。
- 我們最終會預期什麼應用? https://www.reddit.com/r/ethereum/comments/2mnl7f/the_top_10_ether_dapps_of_201
將來,去中心化應用可能會在去中心化應用瀏覽器裡整合的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是以太坊開發的智能合約語言,編譯到以太坊虛擬機器作業碼。
- 測試網路 – 測試網路協助開發人員開發與測試以太坊代碼及網路互動,不需花費主網路上自己的以太幣。測試網路選項在下面列出。
- 去中心化應用開發資源。這會協助你開發,排錯和部署以太坊應用。
去中心化應用開發資源
- 智能合約 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原始碼排錯器。
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,用途是什麼 – stackexchange問答
- Gavin Wood: 噓!Whisper – youtube上的DEVCON-1演講視頻
- Whisper概覽和dream API用途
- ELI5
Swarm
Swarm是分布式儲存平台以及內容分發服務,以太坊web 3堆棧內建的基層服務。Swarm的首要目標是提供足夠去中心化和冗餘的以太坊公用記錄儲存,尤其是儲存和分配去中心化應用代碼和資料,以及區塊鏈資料。從經濟觀點看,它允許參與者有效集中儲存和頻寬資源,用以為所有參與者提供之前提到的服務。
從終端使用者的觀點看,Swarm和WWW並沒有很大不同,除了上傳並不是針對一個特定的服務商。目標是點對點儲存,並提供抗DDOS、零故障、容錯、抗審查的解決方案以及自我維護,這歸功於一個使用點對點記賬體系並允許以付款交換資源的內建激勵體系。Swarm被設計為與以太坊devp2p多協議網路層次,為了網域名稱解決方案的以太坊區塊鏈,服務支付和內容可用性保險結合。
swarm 上的DΞVcon演講
- Viktor Trón, Daniel A. Nagy:Swarm – YouTube上的以太坊 DΞVcon-1演講
- Daniel A. Nagy:保持公用記錄安全可用 – YouTube上的以太坊DΞ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
- 更多資訊 (關於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
ETH--Dapp及相關開發工具介紹