Skip to content

NethermindEth/juno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Juno Logo

Juno is a golang Starknet node implementation by Nethermind with the aim of decentralising Starknet.

πŸ“š Documentation

To know everything there is to know on how to interact with Juno, please check out the documentation.

To become a Starknet Validator follow this guide.

βš™οΈ Installation

Prerequisites

  • Golang 1.25 or higher is required to build and run the project. You can find the installer on the official Golang download page.

  • Rust 1.86.0 or higher.

  • A C compiler: gcc.

  • Install some dependencies on your system:

    • macOS

      brew install jemalloc
      brew install pkg-config
      make install-deps
    • Ubuntu

      sudo apt-get install -y libjemalloc-dev libjemalloc2 pkg-config libbz2-dev
      make install-deps
  • To ensure a successful build, you either need to synchronize the tags from the upstream repository or create a new tag.

Build and Run

make juno
./build/juno

Use the --help flag for configuration information. Flags and their values can also be placed in a .yaml file that is passed in through --config.

Run with Docker

To run Juno with Docker, use the following command. Make sure to create the $HOME/juno directory on your local machine before running the command.

docker run -d \
  --name juno \
  -p 6060:6060 \
  -v $HOME/juno:/var/lib/juno \
  nethermind/juno \
  --http \
  --http-port 6060 \
  --http-host 0.0.0.0 \
  --db-path /var/lib/juno \
  --eth-node <YOUR-ETH-NODE>

You should replace <YOUR-ETH-NODE> with your actual Ethereum node address. If you're using Infura, your Ethereum node address might look something like: wss://mainnet.infura.io/ws/v3/your-infura-project-id. Make sure you are using the websocket URL ws/wss and not the http URL http/https.

To view logs from the Docker container, use the following command:

docker logs -f juno

πŸ“Έ Starknet Snapshots

To sync your node as fast as possible, use the provided snapshots service. Fresh snapshots are automatically uploaded once a week. See Database Snapshots to get instructions on how to set Juno up and running using a recent Starknet snapshot.

🌐 Interacting with Juno

Juno works as gateway into Starknet and can be queried using JSON-RPC requests. Also, it allows to subscribe to real time events happening on the network and get constant updates. Read the Interacting with Juno section for more details.

πŸ‘ Contribute

We welcome PRs from external contributors and would love to help you get up to speed. Let us know you're interested in the Discord server and we can discuss good first issues.

For more details on how to get started, check out our contributing guidelines.

There are also many other ways to contribute. Here are some ideas:

  • Run a node.
  • Add a GitHub Star to the project.
  • Tweet about Juno.
  • Add a Github issue if you find a bug, or you need or want a new feature.

πŸ“ž Contact us

For questions or feedback, please don't hesitate to reach out to us:

🀝 Partnerships

To establish a partnership with the Juno team, or if you have any suggestion or special request, feel free to reach us via email.

⚠️ License

Copyright (c) 2022-present, with the following contributors.

Juno is open-source software licensed under the Apache-2.0 License.