# Optimism Optimism is an optimistic rollup solution aiming for high compatibility within Ethereum ecosystem via EVM equivalence with minimal design compromises thanks to reuse of the tooling. Network is still in beta with arbitrary limits and permissioned fraud proofs. ## Overview | | | | ----------------- | -------------------------------------------------- | | State | mainnet (beta) | | Git repo | https://github.com/ethereum-optimism/optimism/ | | Website | optimism.io/ | | Technology | optimistic execution | | Docs | https://community.optimism.io/docs/ | | Community/support | https://discord.gg/FSDYh37b, ~11.3k members | | Explorers | https://optimistic.etherscan.io | | Bridges | https://gateway.optimism.io | | Native token | ETH | ## Technology Optimism PBC builds open, standardized and secure solution on top of extensive L2 research. _Optimism_ , an optimistic rollup, provides layer 2 solution with low fee enviroment while maintaining high comptability with all the dev ecosystem. [EVM equivalence](https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306) allows full compatibility with current contracts, tools for developers and other parts of the ecosystem. Administration of the rollup is currently centralized and network will continue to function only with centralized sequencer. Optimism approach is to reuse existing developer stack instead of building own from scratch. Benefists include compatbility with current ecosystem and security considerations of well known, audited software. ### Geth Optimism network runs on client implementation [l2geth](https://github.com/ethereum-optimism/optimism/tree/master/l2geth) which is the geth codebase with minor changes. Using the most trusted, tested and optimized Ethereum client allowes easier creation of production ready L2 network with standard EVM implementation. Optimistism is using (and wants to standardize its L2 usage) model of modular consensus and execution layer in Ethereum client. Consensus API (Beacon Chain) is utilized as a block generator which converts blocks from parent chain (L1 contract data) to compatible with the L2 network. Optimism minimizes modifications to the geth codebase, however this result also in certain practical disadvantages: * Another piece of software is needed to provide geth with data it can understand - DTL * [Data transport layer](https://github.com/ethereum-optimism/optimism/tree/develop/packages/data-transport-layer) is a package developed by Optimism team for processing L1 data and feeding blocks to geth. * Acting as consensus engine, this is important piece of software which is neccesary to run alongside l2geth for trustless sync and opens new attack vectors. * Keeping up with geth updates which are pretty frequent * Optimism is built on older version of geth, currently using v1.9.10. Even with small codebase changes, it seems like devs are not interested in updating the underlying client * Redundant geth code and features * Reusing geth codebase means including functions which are not usable in l2 network like various sync strategies, mining and makes it harder to maintain with updates ## EVM Differences ## Setup Run Optimism on mainnet using docker setup in this repo. Settings for the software can be found in `envs` directory. Clone this repository, enter `optimism` directory and run using docker-compose: ``` docker-compose up ``` After succesfull build, software is running and syncing. Available http RPCs: * DTL RPC, indexed Layer 1 data - `7878` * l2geth RPC - `8545` * geth pprof, metrics - `6060` Node database size ~ 90GB ### Node setup experience Goal: Run Optimism client fully verifying its mainnet chain. To do this, three pieces of software are needed. Ethereum (execution) client and Optimisim stack, which includes `data-transport-layer` and `l2geth`. Ethereum client setup is out of scope, examples are using RPC of latest Geth.