Decentralized application
Decentralized applications are services that allow direct interaction between users and vendors (for example, connecting buyers and sellers in some markets, holders and savers in a file store). Ethereum decentralized applications typically interact with users via HTML/Javascript web applications, using Javascript apis to communicate with the blockchain. Decentralized applications typically have their own suite of related contracts on the blockchain to encode business logic, allowing persistent storage of consensus-demanding state. Keep in mind that due to the inherent redundancy of computation on the Ethereum network, the gas cost of execution will be higher than that of off-chain private execution. This gives decentralized app developers an incentive to limit the amount of code that can be executed and stored on the blockchain.
Decentralized application directory
Decentralized applications using Ethereum are compiled into the following lists, listed at different stages of development (concept, working prototype, live/deployed). If you’re developing a decentralized app, consider adding entries to these lists:
- D — The Ethercasts of the apps state
- Dappslist
- Dappcentral – A classified page for decentralized applications, with instructions, code validation, and network data.
- Dapps Mailing List – Developer mailing list on Ethereum (discontinued).
The list of decentralized services offered covers a wide range of areas, including finance, insurance, prediction markets, social networking, computing and storage distribution, marketing, Internet of Things, management, collaboration, development and gaming.
- What applications can we ultimately expect? https://www.reddit.com/r/ethereum/comments/2mnl7f/the_top_10_ether_dapps_of_201
In the future, decentralized applications may be listed and distributed in dappStores integrated within the decentralized application browser.
Decentralized application browsers
- Mist — Official GUI decentralized application browser developed by the Foundation, development stage. Mist As Wallet Dapp is in trial.
- Syng — Jarrad Hope’s mobile Ethereum browser (development phase) — supported by DEVgrants
- MetaMask — Aaron Kumavis Davis’ in-browser GUI. Epicenter Bitcoin interview on Github — supported by DEVgrants
- AlethZero — C++ eth client GUI(discontinued).
- Supernova — (discontinued)
Developer tools
Decentralized application development requires an understanding of the Web3 Javascript API, the JSON RPC API and the Solidity programming language.
Note: Developer tools are available to help you develop, test, and deploy decentralized applications, automatically using the resources listed below.
- Web3 JavaScript API – the main JavaScript SDK used when you want to interact with Ethereum nodes.
- JSON RPC API – A low-level JSON RPC 2.0 interface for interacting with nodes. This API is used by the Web3 JavaScript API.
- Solidity Docs – Solidity is a smart contract language developed by Ethereum and compiled into the Ethereum VIRTUAL machine opcodes.
- Test Network – The test network helps developers develop and test Ethereum code and network interactions without spending their own Ethereum coins on the main network. Test network options are listed below.
- Decentralized application development resources. This will help you develop, debug, and deploy Ethereum applications.
Decentralized application development resources
- Smart contract ELI5 •https://blog.slock.it/a-primer-to-the-decentralized-autonomous-organization-dao-69fb125bd3cd
- Introduce programming smart contracts to 101 people
- List of standardized contract apis
The sample
- Pricefeed Example – Web3 script prints all account balances
- The etheric fang contract instance, https://dappsforbeginners.wordpress.com/tutorials/your-first-dapp/ https://github.com/ethereum/wiki/wiki/Dapp-Developer-Resources
The tutorial
- Decentralized application tutorial on Ethereum.org
- Decentralized application Tutorial series
- Eris Solidity tutorial series
- Advanced Solidity tutorial
- http://ethereumj.io/blog/2015/09/09/friendly-ether-bot/
- https://github.com/ConsenSys/ether-pudding
Mix-IDE
Mix is the official Ethereum IDE that allows developers to create and deploy contractual and decentralized applications on the Ethereum blockchain. It contains a Solidity source debugger. Mix
IDEs/Frameworks
Below are the developer frameworks and ides for writing decentralized ethereum applications.
- Truffle – Truffle is ethereum’s development environment, testing framework, and asset pipeline.
- Dapple – Dapple is the Solidity developer tool to help build and manage complex contract systems on blockchain like Ethereum.
- Populus – Populus is a smart contract development framework written in Python.
- Eris-pm — Eris Package Manager deploys and tests smart contract architectures on private and public chains.
- Embark – Embark is a decentralized application development framework written in JavaScript.
- EtherScripter (Phased out, discontinued)
- Resilience raw trading broadcast
Ethereum console
Command line console for Ethereum nodes.
The Ethereum console connects via IPC to the Ethereum node running in the background (tested with ETH and GEth) and provides an interactive javascript console, including Web3 objects and administrator attachments.
The management list of available Ethereum node control instructions can be found here
To use the console, you need to start a local Ethereum node and the available IPC communication ports (the geth. Ipc file in the data directory). When a node is enabled, the IPC port is located in your Ethernet host directory by default. You can also set the — test option to use specific node test instructions.
You can then type in the console
This is the definition of the — test mode node directive:
More information about node configuration files.
The underlying service
Whisper
Whisper is a message retrieval protocol that allows nodes to send messages directly to each other in a secure form and hide sender and receiver information from third-party organization snoops.
This is independent of a central server for communication management.
Swarm
Swarm is a distributed storage platform and content delivery service that comes with the ethereum Web 3 stack. Swarm’s overarching goal is to provide a sufficiently decentralized and redundant store of Ethereum’s public record, specifically to store and distribute decentralized application code and data, as well as blockchain data. From an economic point of view, it allows participants to effectively centralize storage and bandwidth resources to provide the previously mentioned services to all participants.
Swarm isn’t that different from WWW from an end user’s point of view, except that uploads aren’t targeted to a specific service. The goal is point-to-point storage and provides anti-ddos, zero-fault, fault-tolerant, censor resistant solutions, as well as self-maintenance, thanks to a built-in incentive system that uses a point-to-point accounting system and allows the exchange of resources for payment. Swarm is designed to combine ethereum’s DevP2P multi-protocol network hierarchy, Ethereum blockchain for domain name solutions, service payment and content availability insurance.
Coordination ξ Vcon at Swarm
- Viktor Tron, Daniel A. Nagy: Swarm — Ethereum COORDINATION Vcon-1 lecture on YouTube
- Daniel A. Nagy: Keeping public records safe — the Ether ξ VCON-0 lecture on YouTube
Code and status
- resources
- Posted on Github
- Development path chart
- Twitter ethersphere
- swarm gitter room
- swarm subreddit
Online and offline storage
- 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/
- What is swarm and what is it used for? – the stackexchange q&a
Ethereum timer
- By Piper Merriam
- Website: alarm_main_website.
- Documentation: alarm_documentation.
The market that facilitates the arrangement of trades to take place later. Provides a role similar to crontab in Unix or setTimeout in javascript. • Decentralized Cron services in ethereum proposal — by Peter Szilagyi
Ethereum Computation Market
- By Piper Merriam
- Website: computation_market_main_website.
- Documentation: computation_market_main_website.
Markets that enable offline computations to be validated. Allow each expensive computation to be used within the Ethereum VIRTUAL machine without actually paying the high gas cost of executing them on the chain.
BTCRelay
BTCrelay
- More information (no need to fix the Bitcoin code for ETH/BTC bidirectional PEG).
- BTCrelay review
RANDAO
Random number: https://www.reddit.com/r/ethereum/comments/49yld7/eli5_how_does_a_service_like_szabodice_grab_a/
The EVM
The Ethereum Virtual Machine (EVM) is the execution environment for ethereum smart contracts. Not only is it sandboxed, but it is virtually completely isolated, meaning that code running inside the Ethereum VIRTUAL machine cannot access the network, file system, or other processes. Smart contracts have limited access even to other smart contracts.
The contract exists on a blockchain, which is an Ethereum specific binary format (Ethereum virtual Machine bytecode). However, contracts are typically written in the Ethereum high-level language, compiled into bytecode using the Ethereum compiler, and eventually uploaded to the blockchain using the Ethereum client.
References:
A link to the list in this article can be found on page 94 of Ethereum Homestead Documentation for 1.7.5 Dapps
This article is adapted from Babbitt and written by Wang Xiaoming. The original link: https://www.8btc.com/article/256541