{"id":18149967,"url":"https://github.com/ithacaxyz/odyssey","last_synced_at":"2025-04-04T10:08:29.493Z","repository":{"id":257971252,"uuid":"871007590","full_name":"ithacaxyz/odyssey","owner":"ithacaxyz","description":"A testnet open-source Layer 2 from the future, co-designed with the developer tools stack.","archived":false,"fork":false,"pushed_at":"2024-10-17T22:36:22.000Z","size":1826,"stargazers_count":147,"open_issues_count":14,"forks_count":29,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-10-19T13:12:59.094Z","etag":null,"topics":["ethereum","optimism","optimism-l2","rollup"],"latest_commit_sha":null,"homepage":"https://www.ithaca.xyz/updates/odyssey","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ithacaxyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-11T04:52:39.000Z","updated_at":"2024-10-19T11:41:43.000Z","dependencies_parsed_at":"2024-10-19T09:55:47.759Z","dependency_job_id":null,"html_url":"https://github.com/ithacaxyz/odyssey","commit_stats":null,"previous_names":["ithacaxyz/odyssey"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ithacaxyz%2Fodyssey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ithacaxyz%2Fodyssey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ithacaxyz%2Fodyssey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ithacaxyz%2Fodyssey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ithacaxyz","download_url":"https://codeload.github.com/ithacaxyz/odyssey/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247157283,"owners_count":20893220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","optimism","optimism-l2","rollup"],"created_at":"2024-11-02T00:06:50.698Z","updated_at":"2025-04-04T10:08:29.456Z","avatar_url":"https://github.com/ithacaxyz.png","language":"Rust","funding_links":[],"categories":["Layer 2"],"sub_categories":["Optimism"],"readme":"# Odyssey\n\n\u003c!-- [![Crates.io][crates-badge]][crates-io] --\u003e\n\u003c!-- [![Downloads][downloads-badge]][crates-io] --\u003e\n\n[![MIT License][mit-badge]][mit-url]\n[![Apache-2.0 License][apache-badge]][apache-url]\n[![CI Status][actions-badge]][actions-url]\n\n## What is Odyssey?\n\nOdyssey is a testnet OP Stack rollup aimed at enabling experimentation of bleeding edge Ethereum Research.\nOdyssey is **not** a fork of reth.\nOdyssey implements traits provided by the [reth node builder API](https://paradigmxyz.github.io/reth/docs/reth_node_builder/index.html), allowing implementation of precompiles and instructions of experimental EIPs without forking the node.\n\nSpecifically, Odyssey currently implements the following EIPs:\n\n- [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702): Set EOA account code.\n- [RIP-7212](https://ethereum-magicians.org/t/eip-7212-precompiled-for-secp256r1-curve-support/14789): Precompile for secp256r1 curve support.\n- [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537): Precompiles for BLS12-381 curve operations.\n\nOdyssey also implements the EIPs for EOF, or [The EVM Object Format](https://evmobjectformat.org/).\n\n### Why Odyssey?\n\nOdyssey has 2 goals:\n\n1. Showcase Reth's performance at the extremes. We intend to launch a hosted version of Odyssey on [Conduit](https://conduit.xyz/), 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.\n2. Showcase how Reth's modular architecture can serve as a distribution channel for research ideas. Specifically,\n   Odyssey's node extensions were chosen for their ability to enable applications that enhance the onchain user experience, and\n   drastically reduce cost for existing applications that improve UX.\n\n### Odyssey Testnet\n\n\u003e [!TIP]\n\u003e\n\u003e [The Odyssey Testnet](https://www.ithaca.xyz/updates/odyssey#odyssey-chapter-1-is-live-on-testnet) is now live on Sepolia and is built with Reth, the OP Stack, and [deployed on Conduit](https://app.conduit.xyz/published/view/odyssey).\n\n### Odyssey Local Development\n\nOdyssey 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.\n\nFirst, odyssey should be built locally:\n\n```bash\ngit clone https://github.com/ithacaxyz/odyssey\ncd odyssey\ncargo install --path bin/odyssey\n```\n\n```bash\nodyssey node --chain etc/odyssey-genesis.json --dev --http --http.api all\n```\n\nThis will start the node with a development configuration, and expose the HTTP API on `http://localhost:8545`.\n\nTo use EOF-enabled foundry, use [forge-eof](https://github.com/paradigmxyz/forge-eof) and follow installation instructions.\n\n### Running Odyssey\n\nRunning Odyssey will require running additional infrastructure for the archival L1 node. These instructions are a guide for\nrunning the Odyssey OP-stack node only.\n\nFor instructions on running the full Odyssey OP stack, including the L1 node, see the [Reth book section on running the OP stack](https://paradigmxyz.github.io/reth/run/optimism.html), using the `odyssey` binary instead of `op-reth`.\n\n#### Running the Odyssey execution node\n\nTo run Odyssey from source, clone the repository and run the following commands:\n\n```bash\ngit clone https://github.com/ithacaxyz/odyssey.git\ncd odyssey\ncargo install --path bin/odyssey\nodyssey node \\\n    --chain etc/odyssey-genesis.json \\\n    --rollup.sequencer-http \u003crollup-sequencer-http\u003e \\\n    --http \\\n    --ws \\\n    --authrpc.port 9551 \\\n    --authrpc.jwtsecret /path/to/jwt.hex\n```\n\n#### Running op-node with the Odyssey configuration\n\nOnce `odyssey` is started, [`op-node`](https://github.com/ethereum-optimism/optimism/tree/develop/op-node) can be run with the\nincluded `odyssey-rollup.json`:\n\n```bash\ncd odyssey/\nop-node \\\n    --rollup.config ./etc/odyssey-rollup.json \\\n    --l1=\u003cyour-sepolia-L1-rpc\u003e \\\n    --l2=http://localhost:9551 \\\n    --l2.jwt-secret=/path/to/jwt.hex \\\n    --rpc.addr=0.0.0.0 \\\n    --rpc.port=7000 \\\n    --l1.trustrpc\n```\n\n### Running Odyssey with Kurtosis\n\nRunning a local network with a full Odyssey OP stack with Kurtosis requires some extra setup, since Odyssey uses a forked version of `op-node`.\n\nTo get started, follow [these instructions](https://docs.kurtosis.com/install/) to install Kurtosis.\n\nNext, start a Kurtosis enclave:\n\n```bash\nkurtosis run --enclave op-devnet github.com/ethpandaops/optimism-package \\\n  --args-file https://raw.githubusercontent.com/ithacaxyz/odyssey/main/etc/kurtosis.yaml\n```\n\nThis 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`.\n\n\u003e [!NOTE]\n\u003e\n\u003e If you want to use a custom build of Odyssey, simply build an Odyssey image with `docker build . -t ghcr.io/ithacaxyz/odyssey:latest`.\n\nConsult the [Kurtosis OP package](https://github.com/ethpandaops/optimism-package) repository for instructions on how to adjust the args file to spin up additional services, like a block explorer.\n\n### Wallet extension\n\nOdyssey has a custom `wallet_` namespace, that allows users to delegate their EOAs to a contract using EIP-7702, and perform transactions on those accounts, all funded by the sequencer.\n\nTo enable this namespace, set the environment variable `EXP1_SK` to a private key that will sign the transactions. The new RPC method, `wallet_sendTransaction`, will only sign transactions that either:\n\n1. Designates a contract address to an EOA via EIP-7702, or\n1. Send transactions to an EIP-7702 EOA that is already delegated to an address\n\nThe `odyssey_sendTransaction` endpoint accepts the same fields as `eth_sendTransaction`, with these notable exceptions:\n\n1. `nonce` must not be set, as this is managed by the node\n1. `value` must be unset or 0\n1. `from` must not be specified\n\nThe following fields are ignored, as they are overwritten internally:\n\n1. `gasPrice` (and EIP-1559 gas related pricing fields)\n1. `gasLimit`\n1. `chainId`\n\n### Security\n\nSee [SECURITY.md](SECURITY.md).\n\n#### License\n\n\u003csup\u003e\nLicensed under either of \u003ca href=\"LICENSE-APACHE\"\u003eApache License, Version\n2.0\u003c/a\u003e or \u003ca href=\"LICENSE-MIT\"\u003eMIT license\u003c/a\u003e at your option.\n\u003c/sup\u003e\n\n\u003cbr\u003e\n\n\u003csub\u003e\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in these crates by you, as defined in the Apache-2.0 license,\nshall be dual licensed as above, without any additional terms or conditions.\n\u003c/sub\u003e\n\n\u003c!-- [crates-badge]: https://img.shields.io/crates/v/odyssey.svg --\u003e\n\u003c!-- [crates-io]: https://crates.io/crates/odyssey --\u003e\n\u003c!-- [downloads-badge]: https://img.shields.io/crates/d/odyssey --\u003e\n\n[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[apache-badge]: https://img.shields.io/badge/license-Apache--2.0-blue.svg\n[mit-url]: LICENSE-MIT\n[apache-url]: LICENSE-APACHE\n[actions-badge]: https://github.com/ithacaxyz/odyssey/workflows/unit/badge.svg\n[actions-url]: https://github.com/ithacaxyz/odyssey/actions?query=workflow%3ACI+branch%3Amain\n[foundry-odyssey]: https://github.com/ithacaxyz/foundry-odyssey\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fithacaxyz%2Fodyssey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fithacaxyz%2Fodyssey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fithacaxyz%2Fodyssey/lists"}