omni

module
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2024 License: GPL-3.0

README

Omni Monorepo

Monorepo for Omni node, contracts and other related tools.

Build Tests Documentation Discord Telegram Twitter Follow

Logo

Table of Contents

About Omni

Omni Protocol is a groundbreaking blockchain designed to seamlessly connect Ethereum's rollups, addressing the fragmentation issue in the ecosystem. It enables developers to create applications accessible across all rollups, simplifying user interaction and expanding the market reach for developers.

Key Features of Omni:

  • ETH Restaking: Utilizes Ethereum validators through restaking, providing a robust security layer parallel to Ethereum, enhancing performance where Ethereum has limitations.
  • Fast Finality: Offers quick transaction confirmations, crucial for a responsive user experience and mass adoption.
  • Cross-Rollup Programmability: Empowers developers with a global state layer, allowing the creation of natively cross-rollup applications in a familiar EVM environment.

Omni Protocol stands as a vital infrastructure piece for Ethereum's future, offering a developer-friendly platform that combines security with performance, paving the way for a new era of dApp development.

Installation

Building the node requires a working Go (version 1.22 or higher, see go.mod) and goreleaser (see installation guide here or install with make ensure-go-releaser). You can install them using your favorite package manager. Once the dependencies are installed, run:

make build-docker

Usage

Testing

To run the end-to-end tests, run:

MANIFEST=devnet1 make e2e-run

Starting a devnet

To start a devnet, run:

make devnet-deploy

To stop it, run:

make devnet-clean

Directory Structure

├── contracts: Solidity contracts and related software.
│ ├── core/: Core protocol smart contracts.
│ ├── avs/: Eigen AVS smart contracts.
│ ├── bindings/: Go smart contract bindings.
│ └── allocs/: Predeploy allocations.
├── docs: Documentation resources, including images and diagrams.
├── halo: The Halo instance, including application logic and attestation mechanisms.
│ ├── app: Application logic for Halo.
│ └── cmd: Command-line tools and utilities.
├── lib: Core libraries for various protocol functionalities.
│ ├── cchain: Consensus chain interaction utilities.
│ └── xchain: Cross-chain messaging and utilities.
├── octane: Octane is a modular framework for the EVM.
│ └── evmengine: The EVMEngine cosmos module.
├── relayer: Relayer service for cross-chain messages and transactions.
│ └── app: Application logic for the relayer service.
├── scripts: Utility scripts for development and operational tasks.
└── test: Testing suite for end-to-end, smoke, and utility testing.

Contributing

For detailed instructions on how to contribute, including our coding standards, testing practices, and how to submit pull requests, please see the contribution guidelines.

Acknowledgements

The development of Omni has been a journey of learning, adaptation, and innovation. As we built Omni, we drew inspiration and knowledge from the work of several remarkable teams within the blockchain and Ethereum ecosystem.

We extend our gratitude to the following teams for their pioneering work and the open-source resources they've provided, which have significantly influenced our development process:

  • CometBFT: Our heartfelt thanks go to the CometBFT team for their groundbreaking work in consensus algorithms.

  • Geth: The go-ethereum team's relentless dedication to the Ethereum ecosystem has been nothing short of inspiring. Their comprehensive and robust implementation of the Ethereum protocol has provided us with a solid foundation to build upon.

  • Erigon: We are grateful to Erigon for their novel work in maximizing EVM performance.

  • Optimism: We thank the Optimism team for their dedication to open source work within the Ethereum ecosystem.

Acknowledging these teams is not only a gesture of gratitude but also a reflection of our commitment to collaborative progress and the open-source ethos. The path they've paved has enabled us to contribute our innovations back to the community, and we look forward to continuing this tradition of mutual growth and support.

Security

Please refer to SECURITY.md.

Directories

Path Synopsis
cli
cmd
cmd/omni
Command omni provides the omni command line interface.
Command omni provides the omni command line interface.
e2e
anvilproxy
Command anvilproxy is the main entry point for the anvilproxy.
Command anvilproxy is the main entry point for the anvilproxy.
anvilproxy/cmd
Package cmd provides the cli for running the api.
Package cmd provides the cli for running the api.
app
app/eoa
Package eoa defines well-known (non-fireblocks) eoa private keys used in an omni network.
Package eoa defines well-known (non-fireblocks) eoa private keys used in an omni network.
cmd
fbproxy
The main entry point for the fireblocks proxy command.
The main entry point for the fireblocks proxy command.
Command halo is the main entry point for the halo consensus client.
Command halo is the main entry point for the halo consensus client.
app
attest/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
attest/testutil
Package testutil is a generated GoMock package.
Package testutil is a generated GoMock package.
cmd
Package cmd provides the cli for running the halo consensus client.
Package cmd provides the cli for running the halo consensus client.
evmslashing
Package evmslashing monitors the Slashing pre-deploy contract and converts its log events to cosmosSDK x/slashing logic.
Package evmslashing monitors the Slashing pre-deploy contract and converts its log events to cosmosSDK x/slashing logic.
evmstaking
Package evmstaking monitors the Staking pre-deploy contract and converts its log events to cosmosSDK x/staking logic.
Package evmstaking monitors the Staking pre-deploy contract and converts its log events to cosmosSDK x/staking logic.
evmupgrade
Package evmupgrade monitors the Upgrade pre-deploy contract and converts its log events to cosmosSDK x/upgrade logic.
Package evmupgrade monitors the Upgrade pre-deploy contract and converts its log events to cosmosSDK x/upgrade logic.
genutil/genserve
Package genserve provides a simple gRPC server that allows querying the consensus and execution genesis files.
Package genserve provides a simple gRPC server that allows querying the consensus and execution genesis files.
portal/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
portal/testutil
Package testutil is a generated GoMock package.
Package testutil is a generated GoMock package.
registry/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
valsync/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
valsync/testutil
Package testutil is a generated GoMock package.
Package testutil is a generated GoMock package.
lib
cchain
Package cchain defines the API to interact with the omni consensus chain.
Package cchain defines the API to interact with the omni consensus chain.
cchain/provider
Package provider implements the cchain.Provider interface.
Package provider implements the cchain.Provider interface.
cmd
Package cmd provides a common utilities and helper function to standarise the way omni apps use cobra and viper to produce consistent cli experience for both users and devs.
Package cmd provides a common utilities and helper function to standarise the way omni apps use cobra and viper to produce consistent cli experience for both users and devs.
errors
Package errors provides a consistent interface for using errors.
Package errors provides a consistent interface for using errors.
ethclient/genwrap
Command genwrap provides a code generator for ethclient.Client wrapper that adds prometheus metrics and error wrapping.
Command genwrap provides a code generator for ethclient.Client wrapper that adds prometheus metrics and error wrapping.
ethclient/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
evmchain
Package evmchain provides static metadata about supported evm chains.
Package evmchain provides static metadata about supported evm chains.
expbackoff
Package expbackoff implements exponential backoff.
Package expbackoff implements exponential backoff.
forkjoin
Package forkjoin provides an API for "doing work concurrently (fork) and then waiting for the results (join)".
Package forkjoin provides an API for "doing work concurrently (fork) and then waiting for the results (join)".
k1util
Package k1util provides functions to sign and verify Ethereum RSV style signatures.
Package k1util provides functions to sign and verify Ethereum RSV style signatures.
log
Package log provides a wrapper around the slog package (might change implementation later).
Package log provides a wrapper around the slog package (might change implementation later).
merkle
Package merkle provides an API to generate merkle trees and proofs from 32 byte leaves.
Package merkle provides an API to generate merkle trees and proofs from 32 byte leaves.
netconf
Package netconf provides the configuration of an Omni network, an instance of the Omni cross chain protocol.
Package netconf provides the configuration of an Omni network, an instance of the Omni cross chain protocol.
promutil
Package promutil provides Prometheus utilities.
Package promutil provides Prometheus utilities.
stream
Package stream provide a generic stream function.
Package stream provide a generic stream function.
tracer
Package tracer provides a global OpenTelemetry tracer.
Package tracer provides a global OpenTelemetry tracer.
tutil
Package tutil provides test utilities.
Package tutil provides test utilities.
umath
Package umath provides some useful unsigned math functions to prevent underflows.
Package umath provides some useful unsigned math functions to prevent underflows.
xchain
Package xchain defines the types and interfaces used by the omni cross-chain protocol.
Package xchain defines the types and interfaces used by the omni cross-chain protocol.
xchain/provider
Package provider is the implementation of the Provider interface.
Package provider is the implementation of the Provider interface.
Command monitor is the main entry point for the monitor service.
Command monitor is the main entry point for the monitor service.
app
avs
cmd
Package cmd provides the cli for running the monitor service
Package cmd provides the cli for running the monitor service
routerecon
Package routerecon defines functions to reconcile routescan cross-transactions verifying the data matches expected on-chain values.
Package routerecon defines functions to reconcile routescan cross-transactions verifying the data matches expected on-chain values.
octane
evmengine/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
Command relayer is the main entry point for the relayer.
Command relayer is the main entry point for the relayer.
app
cmd
Package cmd provides the cli for running the relayer.
Package cmd provides the cli for running the relayer.
Package scripts is a empty go package only used for the tools.go pattern.
Package scripts is a empty go package only used for the tools.go pattern.
golint
Command golint is a custom Go linter.
Command golint is a custom Go linter.
verifypr
Command verifypr provides a tool to verify omni PRs against our specific conventional commit template.
Command verifypr provides a tool to verify omni PRs against our specific conventional commit template.

Jump to

Keyboard shortcuts

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