op-evm

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

README

Optimistic EVM Rollup

OpEVM is a blockchain settlement system designed for efficient and secure transaction processing. It provides a decentralized infrastructure for settlement and enables high-throughput, low-latency transaction processing on the blockchain. OpEVM is built on top of the Avail, extending Polygon Edge and offers advanced features for block validation, fraudproof detection, and transaction verification.

Features

  • Block Validation: OpEVM ensures that incoming blocks conform to the specified structure and contain valid transaction data.
  • Fraudproof Detection: The system is equipped with fraudproof detection mechanisms to identify and handle malicious blocks.
  • Transaction Verification: OpEVM verifies the integrity and correctness of transactions, ensuring the accuracy of settlement processes.
  • High Throughput: The system is optimized for high throughput, enabling fast and efficient transaction processing.
  • Low Latency: OpEVM minimizes transaction confirmation times, reducing latency and enabling near-instantaneous settlement.
  • Decentralized Infrastructure: OpEVM operates on a decentralized infrastructure, ensuring the security and resilience of the settlement system.
  • Optimistic Rollup: OpEVM is built as an optimistic rollup solution, leveraging Layer 2 scalability techniques to achieve high transaction throughput while maintaining the security guarantees of the underlying blockchain.

Components

Bootstrap Sequencer

The Bootstrap Sequencer component is responsible for bootstrapping the OpEVM. It initializes the necessary parameters, establishes the initial block structure, and sets up the initial state of the system.

Sequencer

The Sequencer component is the main transaction processor in OpEVM. It receives incoming transactions, orders them, and includes them in the blocks to be added to the blockchain. The Sequencer plays a crucial role in maintaining the integrity and consistency of the OpEVM rollup.

WatchTower

The WatchTower component is responsible for block validation, fraudproof detection, and transaction verification. It ensures the integrity of incoming blocks and identifies potential fraud or malicious activities.

Staking

The Staking component handles the staking mechanisms within OpEVM. It manages stakeholder addresses, tracks staked amounts, and facilitates dispute resolution processes.

Getting Started

Demo Deployment

For detailed instructions on installation, configuration, and usage, refer to the DEMO DEPLOYMENT.

Devnet/Testnet Deployment

To deploy a devnet or a testnet in AWS using terraform follow the instructions here.

Testing Fraudproof

Testing fraudproof processing is relatively straightforward. Sequencer implementation contains so called fraud server, which provides an HTTP interface which can be used to trigger a one time fraud construction into next produced block. Watchtower will then catch this and produce a fraudproof block, which leads to dispute resolution process.

To Evaluate the Fraudproof Mechanism, Execute the Following Procedures:
  1. Initiate a minimum of one sequencer with the fraud server function activated.
    • This can be accomplished by launching the sequencer with the --fraud-srv-listen-addr "<address>:<port>" command (for instance: op-evm server --fraud-srv-listen-addr ":9990").
  2. Initiate at least one watchtower that possesses staked assets.
  3. Optionally, you may monitor rollup blocks from Avail to facilitate a clear understanding of the process. This can be done by executing the op-evm tail --jsonrpc-addr "<sequencer's JSON-RPC address>" command.
  4. Generate an HTTP request to the fraud server:
    • For instance, curl http://localhost:9990/fraud/prime.

The sequencer, acting in a "malicious" capacity, will attempt to incorporate a begin dispute resolution transaction into the block, without chain inclusion. The watchtower will detect this action and penalize the sequencer accordingly.

Following the production of a fraudulent block by the "malicious" sequencer, normal operations will be resumed until the fraud server is primed once more.

Contributing

We welcome contributions to the OpEVM project. If you find any issues, have suggestions for improvements, or would like to contribute new features, please open a GitHub issue or submit a pull request.

Contributors

OpEVM was built in collaboration between Avail and Equilibrium Group (Equilibrium Labs & Eiger).

Avail creates the base layer for future blockchains, enabling developers to build rollups and appchains with scalability, flexibility, and ease.

Equilibrium Group, a blockchain powerhouse founded in 2018, is composed of three entities:

  • Equilibrium Labs designs & builds decentralized infrastructure in collaboration with industry pioneers and as in-house ventures.
  • Eiger provides high-value add engineering services to accelerate web3 mass adoption.
  • Membrane Finance is the issuer of EUROe, the first EU-regulated euro-backed stablecoin.

License

OpEVM is released under the Apache 2.0 License. See the LICENSE file for more details.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
consensus
avail
Package avail provides the implementation of the Avail consensus protocol for the blockchain network.
Package avail provides the implementation of the Avail consensus protocol for the blockchain network.
pkg
blockchain
Package blockchain provides functionality for interacting with a blockchain.
Package blockchain provides functionality for interacting with a blockchain.
config
Package config provides utility functions for parsing and extracting specific information from a server configuration.
Package config provides utility functions for parsing and extracting specific information from a server configuration.
devnet
Package devnet provides functionality to start and manage a development network (devnet) consisting of multiple nodes.
Package devnet provides functionality to start and manage a development network (devnet) consisting of multiple nodes.
faucet
Package faucet provides functionality to find and interact with a faucet account in a blockchain.
Package faucet provides functionality to find and interact with a faucet account in a blockchain.
snapshot
Package snapshot provides functionality for managing snapshots of a blockchain key-value storage.
Package snapshot provides functionality for managing snapshots of a blockchain key-value storage.
staking
Package staking contains the definitions and operations related to active participant staking mechanism in the system.
Package staking contains the definitions and operations related to active participant staking mechanism in the system.
Server package for the blockchain client.
Server package for the blockchain client.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL