omni

module
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2025 License: GPL-3.0

README

Omni Monorepo

Tests

Logo

About Omni

This monorepo contains all source code for the Omni protocol. Omni's goal is to make it easy for smart contract developers to source liquidity and users from anywhere. The protocol consists of various components including an EVM and cross-chain messaging.

The Omni Docs are the best place to get started learning about Omni.

Quickstart

Ensure go, goreleaser and docker are installed.

# Build local docker containers
make build-docker

# Run the end-to-end tests on a local devnet
MANIFEST=devnet1 make e2e-run

# Start a local devnet
make devnet-deploy

# Stop the local devnet
make devnet-clean

If any of above commands fail, see the troubleshooting section.

Directory Structure

├── cli: Omni command line interface.
├── contracts: Solidity contracts and related software.
├── docs: Resources and website for https://docs.omni.network.
├── e2e: Deployments, testing, and live network management.
├── halo: Omni consensus client.
├── lib: Core libraries used across the Omni stack.
├── monitor: Monitoring service for the network.
├── octane: Cosmos SDK module for the EVM.
├── relayer: Relayer service for cross-chain messages and transactions.
├── scripts: Utility scripts for development and operational tasks.
├── sdk: SDK for building applications with Omni.
├── solver: Reference implementation for SolverNet.

Contributing

We are open to contributions, but don't currently have a formal process for contributors. If you are interested, browse through open issues or reach out to chat with the team.

Follow these steps to set up a functional development environment:

  1. Install Docker Desktop.
  2. Setup commit signing: 2a. Create a PGP key pair 2b. Add the public key to Github. 2c. Enabled commit signing 2d. Troubleshoot any issues
  3. Run make setup to initialize your dev environment. See Makefile for details.

Security

Omni has a bug bounty program via Immunefi. You can find more information here.

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
app/upgrades/magellan
Package magellan defines the second Omni consensus chain upgrade, named after Ferdinand Magellan, the famed explorer who led the first expedition to circumnavigate the globe.
Package magellan defines the second Omni consensus chain upgrade, named after Ferdinand Magellan, the famed explorer who led the first expedition to circumnavigate the globe.
app/upgrades/uluwatu
Package uluwatu defines the first omni consensus chain upgrade named after the iconic surf spot in Bali.
Package uluwatu defines the first omni consensus chain upgrade named after the iconic surf spot in Bali.
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/module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
evmstaking/testutil
Package testutil is a generated GoMock package.
Package testutil is a generated GoMock package.
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.
sdk
Package sdk implements the Cosmos SDK configuration.
Package sdk implements the Cosmos SDK configuration.
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.
withdraw
Package withdraw provides tools to automatically create EVM withdrawals for any transfers into user accounts.
Package withdraw provides tools to automatically create EVM withdrawals for any transfers into user accounts.
lib
cast
Package cast provides save casting functions for converting between types without panicking.
Package cast provides save casting functions for converting between types without panicking.
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.
chaos
Package chaos provides a simple API to inject errors into applications to test error handling in-the-wild.
Package chaos provides a simple API to inject errors into applications to test error handling in-the-wild.
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.
pnl
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
app/cursor
Package cursor provides a persisted attestation streamer cursor store.
Package cursor provides a persisted attestation streamer cursor store.
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.
stagingaddrs
Command stagingaddrs prints the contract addresses on the current live staging network.
Command stagingaddrs prints the contract addresses on the current live staging network.
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.
Command solver is the main entry point for the solver service.
Command solver is the main entry point for the solver service.
app
cmd
Package cmd provides the cli for running the solver service
Package cmd provides the cli for running the solver service

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳