omni

module
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 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=simple 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, bindings, and testing for the Omni protocol.
│ ├── bindings: Go bindings for smart contracts.
│ ├── src: Solidity source files for the protocol's smart contracts.
│ └── test: Tests for smart contracts.
├── docs: Documentation resources, including images and diagrams.
├── explorer: Components for the Omni explorer.
│ ├── db: Database schemas and migrations.
│ ├── graphql: GraphQL API for the explorer.
│ └── ui: User interface for the explorer.
├── 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.
├── 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
app
cmd
explorer
db
graphql
Command api is the main entry point for the api.
Command api is the main entry point for the api.
graphql/cmd
Package cmd provides the cli for running the api.
Package cmd provides the cli for running the api.
indexer
Command api is the main entry point for the api.
Command api is the main entry point for the api.
indexer/cmd
Package cmd provides the cli for running the indexer.
Package cmd provides the cli for running the indexer.
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.
evmengine/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
evmstaking
Package evmstaking monitors the omni stake pre-deploy contract and converts its log events to cosmosSDK logic.
Package evmstaking monitors the omni stake pre-deploy contract and converts its log events to cosmosSDK logic.
valsync/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
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.
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.
tutil
Package tutil provides test utilities.
Package tutil provides test utilities.
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
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.
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