├── data ├── networking.csv ├── consensus.csv ├── hardware.csv ├── scaling.csv ├── usability.csv └── deterministic-state-machines.csv ├── figures └── ethercosystem.png └── README.md /data/networking.csv: -------------------------------------------------------------------------------- 1 | Project,Language,Link 2 | ÐΞVp2p,?,https://github.com/ethereum/devp2p/blob/master/discv4.md -------------------------------------------------------------------------------- /data/consensus.csv: -------------------------------------------------------------------------------- 1 | Project,Language,Link 2 | Casper (PoS),?,https://github.com/ethereum/wiki/wiki/Casper-Proof-of-Stake-compendium -------------------------------------------------------------------------------- /figures/ethercosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EthereumCommunityFund/ethereum-ecosystem-map/HEAD/figures/ethercosystem.png -------------------------------------------------------------------------------- /data/hardware.csv: -------------------------------------------------------------------------------- 1 | Project,Language (if applicable),Link 2 | CPU Miner,C++,https://github.com/ethereum/go-ethereum/wiki/Mining 3 | GPU Miner,?,https://github.com/ethereum/go-ethereum/wiki/Mining -------------------------------------------------------------------------------- /data/scaling.csv: -------------------------------------------------------------------------------- 1 | Project,Language,Link 2 | Plasma Cash, 3 | FourthState Labs Plasma, Go, https://github.com/FourthState/plasma-mvp-sidechain 4 | Voiltaire Labs Plasma, JavaScript, https://github.com/voltairelabs/plasma 5 | Sharding ,?,https://github.com/ethereum/wiki/wiki/Sharding-introduction-R&D-compendium -------------------------------------------------------------------------------- /data/usability.csv: -------------------------------------------------------------------------------- 1 | Project,Language,Link 2 | Geth,go,https://github.com/ethereum/go-ethereum 3 | Parity,rust,https://github.com/paritytech/parity 4 | cpp-ethereum,c++,https://github.com/ethereum/cpp-ethereum 5 | py-evm,python,https://github.com/ethereum/py-evm 6 | ethereumjs-vm,javascript,https://github.com/ethereumjs/ethereumjs-vm -------------------------------------------------------------------------------- /data/deterministic-state-machines.csv: -------------------------------------------------------------------------------- 1 | Project,Language,Link 2 | EVM,go,https://github.com/ethereum/go-ethereum 3 | py-EVM,python,https://github.com/pipermerriam/py-evm 4 | EthereumJ,java,https://github.com/ethereum/ethereumj 5 | SputnikVM,rust,https://github.com/ethereumproject/sputnikvm 6 | K Framework,K framework,https://github.com/kframework/evm-semantics 7 | hevm,haskell,https://github.com/dapphub/hevm 8 | Burrow,go,https://github.com/hyperledger/burrow 9 | Ethereumjs-VM,javascript,https://github.com/ethereumjs/ethereumjs-vm 10 | sputter,clojure,https://github.com/nervous-systems/sputter 11 | eWASM kernel,javascript,https://github.com/ewasm/ewasm-kernel -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ethereum-ecosystem-map 2 | This repository is dedicated to collect and display resources that contribute to an objective mapping or overview of the Ethereum ecosystem. 3 | 4 | ## Background & Motivations 5 | Sometimes, for both newcomers and seniors of the Ethereum community, it can be hard to keep track of the latest advances, as well as the latest conversations concerning research. At the same time, the community lacks access to a data-driven, objective mapping of the Ethereum ecosystem. 6 | 7 | From the ECF's perspective, we wish to build automated or semi-automated tools that 8 | provide an objective overview of the state of the ecosystem, so community members can see in what layers, areas or tooling Ethereum is lacking. 9 | 10 | For grant managers at the ECF, this overview can be helpful for prioritising research and development in those areas that are essential but less attractive, distribute funding in a balanced manner, and strive for diversity of projects vertically along the stack, and horizontally, in terms of implementations. 11 | 12 | ## Taxonomy (V.0.2) 13 | Taxonomies are an useful way of presenting information in a visual and concise manner. Nonetheless, they are not perfect, as there will always be projects or cases that do not fit limitedly to one layer, as well as others that fit at the same time in more than one layer. 14 | For illustration purposes, the following is one of the first iterations of a taxonomy of projects in the ethereum ecosystem. 15 | 16 | > Note that all the projects mentioned serve as examples only of each layer, *by no means are these mentions any kind of endorsement*. 17 | 18 | ![Ethercosystem Taxonomy](https://github.com/EthereumCommunityFund/ethereum-ecosystem-map/blob/master/figures/ethercosystem.png) 19 | 20 | ## Table of Contents 21 | 0. [How to Contribute?](#how-to-contribute) 22 | 1. [Hardware](#hardware) 23 | 2. [Networking](#networking) 24 | 3. [Consensus](#consensus) 25 | 4. [Scaling](#scaling) 26 | 5. [Interoperability](#interoperability) 27 | 6. [Deterministic State Machines](#deterministic-state-machines) 28 | 7. [Usability](#usability) 29 | 8. [Development Infrastructure](#development-infrastructure) 30 | 9. [Development Tooling](#development-tooling) 31 | 10. [Application Specific Protocols](#application-specific-protocols) 32 | 11. [Wallets & Account management](#wallets-and-account-management) 33 | 12. [End User Applications](#end-user-applications) 34 | 13. [Off-Chain Utilities](#off-chain-utilities) 35 | 36 | ### How to Contribute? 37 | Should you know of any projects that are not yet listed or suggest a correction, choose one of the following. Depending on the contributions, there best way of proceeding are: 38 | * Error reporting: GitHub Issue, PRs 39 | * Listing new project: GitHub Issue, PRs 40 | * Making suggestions: GitHub Issue 41 | * Questions: GitHub Issue 42 | 43 | Either way, make sure you include the following information: 44 | * Add a label: `error` for corrections, `new project` for additions 45 | * Assign it to me @awasunyin, if this issue has not been dealt with within 7 natural days 46 | And, whenever applicable: 47 | * Project name 48 | * Project implementation language 49 | * Project link to GitHub (must be open-source, if code is not ready, at least some documentation or specifications) 50 | * Which layer? See taxonomy figure. 51 | 52 | #### Create a Pull Request 53 | Should you want to make the changes directly, make sure you include the additional information: 54 | * Brief description of what changes have been made and why, you can include more than one label 55 | 56 | #### Editing .csv files directly 57 | Currently, I compile the names of projects and their information in csv files, which you can find under `/data/*.csv`. After some time, I convert the .csv files into markdown tables and add them to the `README.md`. 58 | > Note: GitHub offers this user-friendly .csv viewer. For changes the .csv, open a PR. 59 | 60 | ### Hardware 61 | | Project | Language (if applicable) | Link | 62 | |-----------|--------------------------|-----------------------------------------------------| 63 | | CPU Miner | C++ | https://github.com/ethereum/go-ethereum/wiki/Mining | 64 | | GPU Miner | ? | https://github.com/ethereum/go-ethereum/wiki/Mining | 65 | 66 | ### Networking 67 | | Project | Language | Link | 68 | |---------|----------|----------------------------------------------------------| 69 | | ÐΞVp2p | ? | https://github.com/ethereum/devp2p/blob/master/discv4.md | 70 | 71 | ### Consensus 72 | | Project | Language | Link | 73 | |--------------|----------|----------------------------------------------------------------------------| 74 | | Casper (PoS) | ? | https://github.com/ethereum/wiki/wiki/Casper-Proof-of-Stake-compendium | 75 | | Casper CBC | ? | - | 76 | | Sharding | ? | https://github.com/ethereum/wiki/wiki/Sharding-introduction-R&D-compendium | 77 | 78 | 79 | ### Scaling 80 | | Project | Language | Link | 81 | |-------------------------|------------|----------------------------------------------------------------------------| 82 | | Plasma Cash | Python | https://github.com/omisego/plasma-cash | 83 | | FourthState Labs Plasma | Go | https://github.com/FourthState/plasma-mvp-sidechain | 84 | | BANKEX | JavaScript | https://github.com/BankEx | 85 | | Truebit | C++ | https://github.com/mrsmkl/truebit-plasma | 86 | | Voltaire Labs Plasma | JavaScript | https://github.com/voltairelabs/plasma | 87 | | Ethereum Plasma | JavaScript | https://github.com/ethereum-plasma/plasma | 88 | | Parsec Labs | JavaScript | https://github.com/parsec-labs/plasma-contracts | 89 | | Lucidity Plasma | Solidity | https://github.com/luciditytech/lucidity-plasma | 90 | | Ethereum Plasma | JavaScript | https://github.com/ethereum-plasma/plasma | 91 | | Sharding | ? | https://github.com/ethereum/wiki/wiki/Sharding-introduction-R&D-compendium | 92 | | Prysmatic Labs (Geth Sharding)| Go | https://github.com/prysmaticlabs/geth-sharding | 93 | | Ethereum Sharding | Python/Vyper | https://github.com/ethereum/sharding | 94 | 95 | 96 | 97 | 98 | ### Interoperability 99 | | Project | Language | Link | 100 | |---------------|-------------|----------------------------------------------| 101 | | | | | 102 | 103 | ### Deterministic State Machines 104 | | Project | Language | Link | 105 | |---------------|-------------|----------------------------------------------| 106 | | EVM | go | https://github.com/ethereum/go-ethereum | 107 | | py-EVM | python | https://github.com/pipermerriam/py-evm | 108 | | EthereumJ | java | https://github.com/ethereum/ethereumj | 109 | | SputnikVM | rust | https://github.com/ethereumproject/sputnikvm | 110 | | K Framework | K framework | https://github.com/kframework/evm-semantics | 111 | | hevm | haskell | https://github.com/dapphub/hevm | 112 | | Burrow | go | https://github.com/hyperledger/burrow | 113 | | Ethereumjs-VM | Javascript | https://github.com/ethereumjs/ethereumjs-vm | 114 | | sputter | clojure | https://github.com/nervous-systems/sputter | 115 | | eWASM kernel | Javascript | https://github.com/ewasm/ewasm-kernel | 116 | 117 | 118 | ### Usability 119 | | Project | Language | Link | 120 | |---------------|------------|---------------------------------------------| 121 | | Geth | go | https://github.com/ethereum/go-ethereum | 122 | | Parity | rust | https://github.com/paritytech/parity | 123 | | cpp-ethereum | c++ | https://github.com/ethereum/cpp-ethereum | 124 | | py-evm | python | https://github.com/ethereum/py-evm | 125 | | ethereumjs-vm | javascript | https://github.com/ethereumjs/ethereumjs-vm | 126 | 127 | ### Development Infrastructure 128 | 129 | | Project | Link | 130 | |-----------|----------------------------| 131 | | Etherscan | https://etherscan.io/ | 132 | | Infura | https://infura.io/ | 133 | | Supermax | https://www.supermax.cool/ | 134 | 135 | 136 | ### Development Tooling 137 | | Project | Language | Link | 138 | |---------------|--------------|---------------------------------------------| 139 | | Web3.js | Javascript | https://github.com/ethereum/web3.js/ | 140 | | Ethers.js | Javascript | https://github.com/ethers-io/ethers.js/ | 141 | | Truffle | Javascript | http://truffleframework.com/ | 142 | | Remix IDE | ? | https://remix.ethereum.org/ | 143 | | 0x.js | Typescript | https://0xproject.com/docs/0xjs | 144 | | ganache | Javascript | https://github.com/trufflesuite/ganache-cli | 145 | | GitPivot | Solidity | https://github.com/status-im/gitpivot | 146 | | Solium Linter | Javascript | https://github.com/duaraghav8/Solium | 147 | | Solidity | Solidity | https://github.com/ethereum/solidity | 148 | | Flint | Flint | https://github.com/franklinsch/flint | 149 | | Vyper | Vyper/Python | https://github.com/ethereum/vyper | 150 | | Gnarly | Typescript | https://github.com/XLNT/gnarly | 151 | 152 | 153 | ### Application Specific Protocols 154 | | Project | Language | Link | 155 | |---------------|--------------|---------------------------------------------| 156 | | 0x | TypeScript | https://github.com/0xProject/0x-monorepo | 157 | | Livepeer | Go | https://github.com/livepeer/go-livepeer | 158 | 159 | ### Wallets and Account Management 160 | | Project | Link | 161 | |-------------|-----------------------------| 162 | | MyCrypto | https://mycrypto.com/ | 163 | | TrustWallet | https://trustwalletapp.com/ | 164 | | Vault | https://vault.io/ | 165 | | Balance | https://balance.io/ | 166 | 167 | ### End User Applications 168 | | Project | Language | Link | 169 | |---------------|-------------|----------------------------------------------| 170 | | | | | 171 | 172 | ### Off-Chain Utilities 173 | | Project | Language | Link | 174 | |---------------|-------------|----------------------------------------------| 175 | | | | | 176 | 177 | ## Frequently Visited Sources 178 | * Ethereum Wiki: https://github.com/ethereum/wiki/wiki 179 | * ETH Research: https://ethresear.ch/latest 180 | --------------------------------------------------------------------------------