Skip to content

A testnet open-source Layer 2 from the future, co-designed with the developer tools stack.

License

Notifications You must be signed in to change notification settings

Budalebah/odyssey

 
 

Repository files navigation

Odyssey

MIT License Apache-2.0 License CI Status

What is Odyssey?

Odyssey is a testnet OP Stack rollup aimed at enabling experimentation of bleeding edge Ethereum Research. Odyssey is not a fork of reth. Odyssey implements traits provided by the reth node builder API, allowing implementation of precompiles and instructions of experimental EIPs without forking the node.

Specifically, Odyssey currently implements the following EIPs:

  • EIP-7702: Set EOA account code.
  • RIP-7212: Precompile for secp256r1 curve support.
  • EIP-2537: Precompiles for BLS12-381 curve operations.

Odyssey also implements the EIPs for EOF, or The EVM Object Format.

Why Odyssey?

Odyssey has 2 goals:

  1. Showcase Reth's performance at the extremes. We intend to launch a hosted version of Odyssey on Conduit, targeting 50mgas/s, and eventually ramping up to 1ggas/s and beyond. In the process we hope to hit the state growth performance bottleneck, and discover ways to solve it. If our hosted chains end up getting too big, we may possibly restart the experiment from zero, and try again.
  2. Showcase how Reth's modular architecture can serve as a distribution channel for research ideas. Specifically, Odyssey's node extensions were chosen for their ability to enable applications that enhance the onchain user experience, and drastically reduce cost for existing applications that improve UX.

Odyssey Local Development

Odyssey does not yet have a running testnet, but can be run locally for development and testing purposes. To do this, the binary can be run with the --dev flag, which will start the node with a development configuration.

First, odyssey should be built locally:

git clone https://github.com/ithacaxyz/odyssey
cd odyssey
cargo install --path bin/odyssey
odyssey node --chain etc/odyssey-genesis.json --dev --http --http.api all

This will start the node with a development configuration, and expose the HTTP API on http://localhost:8545.

To use EOF-enabled foundry, use forge-eof and follow installation instructions.

Running Odyssey

Warning

Odyssey does not yet have a running testnet, please use the local development instructions above!

Running Odyssey will require running additional infrastructure for the archival L1 node. These instructions are a guide for running the Odyssey OP-stack node only.

For instructions on running the full Odyssey OP stack, including the L1 node, see the Reth book section on running the OP stack, using the odyssey binary instead of op-reth.

Running the Odyssey execution node

To run Odyssey from source, clone the repository and run the following commands:

git clone https://github.com/ithacaxyz/odyssey.git
cd odyssey
cargo install --path bin/odyssey
odyssey node
    --chain etc/odyssey-genesis.json \
    --rollup.sequencer-http <TODO> \
    --http \
    --ws \
    --authrpc.port 9551 \
    --authrpc.jwtsecret /path/to/jwt.hex

Running op-node with the Odyssey configuration

Once odyssey is started, op-node can be run with the included odyssey-rollup.json:

cd odyssey/
op-node \
    --rollup.config ./etc/odyssey-rollup.json \
    --l1=<your-sepolia-L1-rpc> \
    --l2=http://localhost:9551 \
    --l2.jwt-secret=/path/to/jwt.hex \
    --rpc.addr=0.0.0.0 \
    --rpc.port=7000 \
    --l1.trustrpc

Running Odyssey with Kurtosis

Running a local network with a full Odyssey OP stack with Kurtosis requires some extra setup, since Odyssey uses a forked version of op-node.

To get started, follow these instructions to install Kurtosis.

Next, clone and build the modified optimism-contract-deployer image:

git clone [email protected]:paradigmxyz/optimism-package.git
cd optimism-package
git switch odyssey
docker build . -t ethpandaops/optimism-contract-deployer:latest --progress plain

Note

The image may fail to build if you have not allocated enough memory for Docker.

Finally, run start a Kurtosis enclave (ensure you are still in optimism-package):

kurtosis run --enclave op-devnet github.com/paradigmxyz/optimism-package@odyssey \
  --args-file https://raw.githubusercontent.com/ithacaxyz/odyssey/main/etc/kurtosis.yaml

This will start an enclave named op-devnet. You can tear down the enclave with kurtosis enclave rm --force op-devnet, or tear down all enclaves using kurtosis clean -a.

Note

If you want to use a custom build of Odyssey, simply build an Odyssey image with docker build . -t ghcr.io/ithacaxyz/odyssey:latest.

Consult the Kurtosis OP package repository for instructions on how to adjust the args file to spin up additional services, like a block exporer.

Security

See SECURITY.md.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in these crates by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A testnet open-source Layer 2 from the future, co-designed with the developer tools stack.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 84.1%
  • Makefile 8.4%
  • Solidity 5.5%
  • Dockerfile 2.0%