Skip to main content

Welcome to Juno

Let's discover Juno.

What You'll Need

  • Golang version 1.18 for build and run the project.
  • Python 3.7

Installing

Clone the repository:

git clone https://github.com/NethermindEth/juno

Install Python dependencies

We are currently only support python 3.7, and we recommend use pyenv. To install it, you can follow this instruction:

  1. Install dependencies:
sudo apt-get update 
sudo apt-get install make build-essential git patch zlib1g-dev clang \
openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev \
liblzma-dev
  1. Install pyenv:
curl https://pyenv.run | bash
  1. Add the following entries into your ~/.bashrc file:
# pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
  1. Restart your shell:
exec $SHELL
  1. Install python 3.7:
pyenv install 3.7.13
pyenv global 3.7.13
  1. Inside of the project folder, install python dependencies:
$ pip install -r requirenments.txt

Installing Go dependencies

You can install all golang dependencies running the next command inside the project folder:

$ go get ./...

Compile

$ make juno

Run

To synchronize with the StarkNet state from the centralized feeder gateway, run the following command:

# For Ethereum Goerli testnet
$ ./build/juno

# For Ethereum Mainnet
$ ./build/juno --netowrk 1

To sync the state without relying on the feeder gateway, configure an Ethereum node and run the following command:

# For Ethereum Goerli testnet
$ ./build/juno --eth-node "<node-endpoint>"

# For Ethereum Mainnet
$ ./build/juno --netowrk 1 --eth-node "<node-endpoint>"

To view other available options please run ./build/juno -h.

For more configuration details, check the config description.

Using Docker

If you prefer to use docker, you can follow this guide.