09:12:38.357 30/03/2023 +00:00 INFO node/node.go:121 Starting Juno... {"config": "{LogLevel:debug RPCPort:6060 DatabasePath:/var/lib/juno Network:mainnet Pprof:true}"}

09:12:38.364 30/03/2023 +00:00 INFO pprof/pprof.go:43 Starting pprof... {"address": "localhost:9080"}

09:12:41.180 30/03/2023 +00:00 INFO sync/sync.go:113
Stored Block {"number": 0, "hash": "0x47c3...e943", "root": "0x2187...dee6"}

09:12:41.201 30/03/2023 +00:00 INFO sync/sync.go:113
Stored Block {"number": 1, "hash": "0x2a70...fdeb", "root": "0x525a...ac32"}

A full-node client implementation for Starknet

Juno is a Starknet full-node client developed by Nethermind. It will allow node operators to sync with the network and expose an API for other services to access Starknet, advancing the network’s decentralization goals.

09:12:38.357 30/03/2023 +00:00 INFO node/node.go:121 Starting Juno... {"config": "{LogLevel:debug RPCPort:6060 DatabasePath:/var/lib/juno Network:mainnet Pprof:true}"}

09:12:38.364 30/03/2023 +00:00 INFO pprof/pprof.go:43 Starting pprof... {"address": "localhost:9080"}

09:12:41.180 30/03/2023 +00:00 INFO sync/sync.go:113
Stored Block {"number": 0, "hash": "0x47c3...e943", "root": "0x2187...dee6"}

09:12:41.201 30/03/2023 +00:00 INFO sync/sync.go:113
Stored Block {"number": 1, "hash": "0x2a70...fdeb", "root": "0x525a...ac32"}

09:12:38.357 30/03/2023 +00:00  INFO    node/node.go:121        Starting Juno...        {"config": "{LogLevel:debug RPCPort:6060 DatabasePath:/var/lib/juno Network:mainnet Pprof:true}"}

09:12:38.364 30/03/2023 +00:00  INFO    pprof/pprof.go:43       Starting pprof...       {"address": "localhost:9080"}

Unfolding milestones

Starknet is a permissionless, STARK-powered, L2 ZK-rollup that supports general computation, making it one of the most promising solutions for scaling Ethereum. Starknet nodes such as Juno verify the validity of the data they get from the Starknet network by comparing it to the proof retrieved from Ethereum. The development of Juno was split into three phases:

COMPLETED

Phase 1: Permissionless access to Starknet

Juno can hold the full state of Starknet, retrieved from StarkWare’s API. This includes blocks, transactions, state, and contracts. It constructs the complete state and performs high-level verification to ensure correct block and transaction hashes.

Juno exposes calls to retrieve blocks and transactions as an initial step towards a complete JSON RPC API, allowing permissionless access to Starknet.

COMPLETED

Phase 2: Full JSON RPC Support

Juno completes the implementation of the JSON RPC API, extending the current API to allow users to retrieve events, contracts' historical state, and estimates of transaction fees. Juno offers a greater level of verification by verifying Starknet state Ethereum (L1 verification) along with reorg resolution.

Juno is now ready for production use by indexers, explorers, and wallet providers!

IN PROGRESS

Phase 3: Starknet decentralization begins

Juno can synchronize Starknet state from other full nodes with the aim of decentralizing Starknet by removing the dependency from the centralized sequencer.

Snap sync is implemented, significantly reducing sync times and the implementation of JSON RPC’s Trace API will allow users to better understand its execution.

UP NEXT

Phase 4: Juno becomes a Starknet Sequencer

The decentralization of Starknet is complete! Juno becomes a sequencer and participates in L2 consensus to secure the network. Juno has multiple modes of operation:

•   Light client: provides fast permissionless access to Starknet with minimal verification.

•   Full Node: complete verification of Starknet state along with transaction execution.

•   Sequencer: secure the network by taking part in the L2 consensus mechanism.

Unfolding milestones

Starknet is a permissionless, STARK-powered, L2 ZK-rollup that supports general computation, making it one of the most promising solutions for scaling Ethereum. Starknet nodes such as Juno verify the validity of the data they get from the Starknet network by comparing it to the proof retrieved from Ethereum. The development of Juno was split into three phases:

COMPLETED

Phase 1: Permissionless access to Starknet

Juno can hold the full state of Starknet, retrieved from StarkWare’s API. This includes blocks, transactions, state, and contracts. It constructs the complete state and performs high-level verification to ensure correct block and transaction hashes.

Juno exposes calls to retrieve blocks and transactions as an initial step towards a complete JSON RPC API, allowing permissionless access to Starknet.

COMPLETED

Phase 2: Full JSON RPC Support

Juno completes the implementation of the JSON RPC API, extending the current API to allow users to retrieve events, contracts' historical state, and estimates of transaction fees. Juno offers a greater level of verification by verifying Starknet state Ethereum (L1 verification) along with reorg resolution.

Juno is now ready for production use by indexers, explorers, and wallet providers!

IN PROGRESS

Phase 3: Starknet Decentralization begins

Juno can synchronize Starknet state from other full nodes with the aim of decentralizing Starknet by removing the dependency from the centralized sequencer.

Snap sync is implemented, significantly reducing sync times and the implementation of JSON RPC’s Trace API will allow users to better understand its execution.

Juno’s full node feature is complete and has everything needed to interact with Starknet.

UP NEXT

Phase 4: Juno becomes a Starknet Sequencer

The decentralization of Starknet is complete! Juno becomes a sequencer and participates in L2 consensus to secure the network. Juno has multiple modes of operation:

•   Light client: provides fast permissionless access to Starknet with minimal verification.
•   Full Node: complete verification of Starknet state along with transaction execution.
•   Sequencer: secure the network by taking part in the L2 consensus mechanism.

Starknet enters an important phase of its development — one where it becomes more open, composable, trustless, and more trusting. I see my role at the foundation as an opportunity to foster collaboration, and support a move towards the future of decentralized and permissioned chains powered by STARKs.

Tomasz Stańczak

CEO, Nethermind

The team

Bringing all the expertise obtained by developing Nethermind’s Ethereum client, Juno is being developed by a team of world-class engineers at Nethermind. It is written in Golang and open-sourced from the beginning. These two characteristics, coupled with the rising popularity of Starknet’s ecosystem, make Juno one of the most attractive projects for developers to contribute to Starknet’s decentralization plan.

Disclaimer: Kindly note, Juno is an ongoing project, and the client is still in early alpha. Please refer to the GitHub repository page for more details.

Collaborating on this project

Jorik

Schellekens

Aneeque

Safdar

Ömer

Faruk Irmak

Josh

Klopfenstein

Jelilat

Anofiu

Wojciech

Zieba

Collaborating on this project

Jorik

Schellekens

Aneeque

Safdar

Ömer

Faruk Irmak

Josh

Klopfenstein

Jelilat

Anofiu

Wojciech

Zieba