Juno
Juno is a golang Starknet node implementation by Nethermind with the aim of decentralising Starknet.
โ๏ธ Installation
Prerequisites
- Golang 1.19 or higher is required to build and run the project. You can find the installer on
the official Golang download page.
- A C compiler:
gcc or clang.
Build and Run
make juno
./build/juno
Run with Docker
docker run -it \
-p 6060:6060 \
-v /home/juno:/var/lib/juno \
nethermindeth/juno \
--rpc-port 6060 \
--db-path /var/lib/juno \
--verbosity 0 \
--network 0
Before running the docker run command, please ensure that the directory /home/juno exists on your local machine.
โ Supported Features
- Starknet state construction and storage using a path-based Merkle Patricia trie.
- Pedersen and
starknet_keccak hash implementation over starknet field.
- Feeder gateway synchronisation of Blocks, Transactions, Receipts, State Updates and Classes.
- Block and Transaction hash verification.
- JSON-RPC Endpoints:
starknet_chainId
starknet_blockNumber
starknet_blockHashAndNumber
starknet_getBlockWithTxHashes
starknet_getBlockWithTxs
starknet_getTransactionByHash
starknet_getTransactionReceipt
starknet_getBlockTransactionCount
starknet_getTransactionByBlockIdAndIndex
starknet_getStateUpdate
๐ฃ Roadmap
Phase 1
- Flat DB implementation of trie
- Go implementation of crypto primitives
- Pedersen hash
- Starknet_Keccak
- Felt
- Feeder gateway synchronisation
- State Update
- Blocks
- Transactions
- Class
- Implement the following core data structures, and their Hash calculations
- Blocks
- Transactions and Transaction Receipts
- Contracts and Classes
- Storing blocks, transactions and State updates in a local DB
- Basic RPC (in progress)
-
starknet_chainId
-
starknet_blockNumber
-
starknet_blockHashAndNumber
-
starknet_getBlockWithTxHashes
-
starknet_getBlockWithTxs
-
starknet_getTransactionByHash
-
starknet_getTransactionReceipt
-
starknet_getBlockTransactionCount
-
starknet_getTransactionByBlockIdAndIndex
-
starknet_getStateUpdate
Phase 2
- Integrate cairo vm
- Verification
- L1 verification
- Execution of all transactions from feeder gateway
- Full RPC (according to 0.11.0)
- Start p2p discussions
- Infura and Alchemy integrations
๐ 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.
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.
๐ค 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.