• Stars
    star
    315
  • Rank 132,951 (Top 3 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Starknet client implementation.

Juno Logo

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

⚙️ Installation

Prerequisites

  • Golang 1.20 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

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 \
  --rpc-port 6060 \
  --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.

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

docker logs -f juno

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
    • starknet_getNonce
    • starknet_getStorageAt
    • starknet_getClassHashAt
    • starknet_getClass
    • starknet_getClassAt
    • starknet_syncing
    • starknet_getEvents

🛣 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

The focus of Phase 2 will be to Verify the state from layer 1 and implement the remaining JSON-RPC endpoints.

  • Starknet v0.11.0 support
    • Poseidon state trie support
  • Blockchain: implement blockchain reorganization logic.
  • Synchronisation: implement verification of state from layer 1.
  • JSON-RPC API v0.3.0:
    • Implement the remaining endpoints:
      • starknet_syncing
      • starknet_getNonce
      • starknet_getStorageAt
      • starknet_getClassHashAt
      • starknet_getClass
      • starknet_getClassAt
      • starknet_getEvents
  • Integration of Starknet in Rust:
    • starknet_call
    • starknet_estimateFee
  • JSON-RPC Write API v0.3.0:
    • starknet_addInvokeTransaction
    • starknet_addDeclareTransaction
    • starknet_addDeployAccountTransaction

👍 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.

More Repositories

1

nethermind

A robust execution client for Ethereum node operators.
C#
1,036
star
2

warp

Warp - Bringing Solidity to Starknet at warp speed. Warp is a Solidity to Cairo Compiler, this allows teams to write/migrate Solidity to Cairo for easy onboarding into the StarkNet ecosystem.
TypeScript
753
star
3

starknet.go

Golang Library for StarkNet/Cairo
Go
144
star
4

sedge

A one-click setup tool for PoS network/chain validators and nodes.
Go
121
star
5

StarknetByExample

A collection of examples of Cairo smart contracts for Starknet.
Cairo
110
star
6

Forta-Agents

TypeScript
95
star
7

Paprika

A custom storage engine of Nethermind, benefiting from the alignment of the underlying data structure with the layout of State & Storage trees of Ethereum.
C#
90
star
8

cairo-vm-go

A virtual machine for Cairo written in Go
Go
82
star
9

dotnet-libp2p

A libp2p implementation for .NET in C#.
C#
60
star
10

horus-checker

Horus, a formal verification tool for StarkNet smart contracts.
Haskell
59
star
11

starknet-remix-plugin

A plugin that brings Starknet to Remix! 🐺 ⭐
TypeScript
41
star
12

Clear

Interactive formal verification tool for Yul programs
Lean
37
star
13

PublicAuditReports

Public reports of audits performed by Nethermind Security
34
star
14

UniStark

Using HardhatWarp for testing
HTML
33
star
15

eigenlayer

EigenLayer CLI (https://www.eigenlayer.xyz)
Go
32
star
16

voyager-verify

A CLI Verifier Package for Voyager
TypeScript
30
star
17

EVMYulLean

Executable formal model of the EVM and Yul in Lean 4.
Lean
30
star
18

el-node-spec

Go
24
star
19

int256

A 256-bit integer implementation for .NET
C#
23
star
20

entro

Library Interacting with Blockchains
Python
23
star
21

hardhat-warp

A Hardhat plugin that uses Warp to bring Solidity contracts to StarkNet
TypeScript
19
star
22

general-agents-module

TypeScript
18
star
23

awesome-preconfirmations

18
star
24

starknet-contract-verifier

CLI to verify your starknet contracts classes on block explorers!
Rust
18
star
25

research-mnemonic

Shamir secret sharing for mnemonic lists
Python
16
star
26

Cairo-SafeMath

Python
16
star
27

verify-everything

Aims to create various ZK verifiers on Starknet for network growth
Cairo
14
star
28

optimized_ecc_cairo

Cairo implementation of operations over the elliptic curve BLS12-381
Cairo
14
star
29

cortex

.NET Core Ethereum 2.0
C#
13
star
30

Mpt-Instruct-DotNet-S

Training and Evaluation code for DotNet focused LLM (based on mosaicml/mpt-7b-instruct)
C#
13
star
31

Yul-Specification

A formal specification of the Yul IR semantics in the Lean proof assistant.
Lean
13
star
32

zksync-remix-plugin

Remix plugin for zkSync
TypeScript
13
star
33

starknet.unity

Starknet Unity SDK lets game developers to integrate Starknet blockchain functionality into their Unity projects with ease.
C#
12
star
34

Taiko-Preconf-AVS

Rust
12
star
35

cairo_zstd

Cairo v1 port of a Zstandard decompressor (WIP)
Cairo
11
star
36

Mev-Searcher

C#
11
star
37

underhanded-cairo-contest

11
star
38

stwo-gpu

Rust
11
star
39

kzg-ceremony-client

C#
10
star
40

starknet-state-verifier

TypeScript
10
star
41

blink-extension

TypeScript
10
star
42

docs

Nethermind documentation
JavaScript
8
star
43

horus-compile

Cairo compiler plugin extending language with annotations
Python
8
star
44

0to1CairoDemo

Demo to upgrade your upgradeable cairo 0 proxy contract to cairo 1 via replace_class_syscall
Python
8
star
45

research-basic-Cairo-operations-big-integers

Cairo implementation of operations involving big integers, including arithmetic operations between 256 and 384 bit integers, and prime field arithmetic of corresponding prime size
Cairo
7
star
46

ethtaipei-cairo1-workshop

6
star
47

cortex-cryptography-bls

Library wrapper for Eth 2.0 version of BLS signatures for .NET Core, using the Herumi library.
C#
6
star
48

near-sffl

Go
6
star
49

starknet-node-data-spec

Specification of network nodes data collection and sharing.
6
star
50

research

Jupyter Notebook
5
star
51

metrics-infrastructure

Metrics Infrastracture sample then can be used to monitor your running Nethermind nodes
5
star
52

restaking-dashboard

Restaking Dashboard
JavaScript
5
star
53

rpc-request-builder

TypeScript
5
star
54

nethermind-encode-bootcamp

Python
4
star
55

eth-docker-compose

Set of docker-compose recipes for Eth2 networks
4
star
56

go-template

This is a template repository for starting new Go projects from scratch with common configurations that we use at Nethermind
Makefile
4
star
57

starknet-abi-form

Starknet ABI Form
TypeScript
4
star
58

nethermind-node-tests

In this repository, there will be a set of test cases which will be executed on various stages of post-merge-smoke-tests nodes syncing process.
C#
3
star
59

research-mnemonic-public

Using Shamir's secret sharing to share mnemonic keys
Python
3
star
60

AA_bundler

Go
3
star
61

homebrew-sedge

Homebrew repository for Sedge
Ruby
3
star
62

voyager-translations

JavaScript
3
star
63

formalverification.xyz

A website listing all the best FV companies in the Crypto space.
TypeScript
3
star
64

terraform-nethermind

Recipe for a fast & easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)
HCL
3
star
65

sign-in-with-starknet

Reference implementation to use Starknet accounts to sign in
TypeScript
2
star
66

kudu

C++
2
star
67

forta-staking-vault

Forta Vault for FORT holders to get access to FORT staking rewards abstracting the complexity of tracking scanning pools performance
Solidity
2
star
68

validators-watcher

Simple validators balance watcher
Go
2
star
69

boost-builder

Go
2
star
70

validators-alerting-service

Simple function that detects decreasing ETH/Gnosis validator's balance and alerts the user.
Python
2
star
71

shutter-validator-registration

JavaScript
2
star
72

gas-benchmarks

Gas benchmark research repository
Python
2
star
73

posmoni

A tool to monitor validators in a PoS network of chain, using official HTTP APIs.
Go
2
star
74

vmsToNotion

Go
2
star
75

CommitEd

Learn about various commitment schemes through visualisation
TypeScript
2
star
76

netherverse

Netherverse (Atlantis Team)
JavaScript
2
star
77

blst-bindings

C#
2
star
78

cairo-workshop

Cairo smart contract development workshop content
Cairo
2
star
79

starknet-worldcoin-bridge

A Worldcoin bridge for Starknet
Cairo
2
star
80

tsim

TypeScript
2
star
81

jrpc-interceptor

A tool to intercept json rpc requests and publish metrics like response time to Prometheus
Go
2
star
82

l2-finality

Tooling to provide real-time data and assess these risks across various L2s
TypeScript
2
star
83

starknet-abi

Python Abi Decoder for Starknet
Python
2
star
84

pwn-starknet

Cairo
2
star
85

aura-validators-monitoring

Go
1
star
86

EOF-Header-Parser

a simple parser of EOF headers from Shanghai compatible bytecodes
C#
1
star
87

Atlantis-Repo

Team Atlantis main repository
1
star
88

warp-plugin

Cairo
1
star
89

vm-request-slack-bot

A slack bot for managing vm requests
Go
1
star
90

hardhat-warp-template

TypeScript
1
star
91

cortex-ssz

An implementation of the ETH2.0 Simple Serialize (SSZ) specification, for .NET Core (written in C#).
C#
1
star
92

nethermind.launcher

JavaScript
1
star
93

optimistic-zk

Solidity
1
star
94

warp-build-action

1
star
95

secp256k1-bindings

C# bindings for the libsecp256k1 library
C#
1
star
96

docker-volumes-snapshotter

Go
1
star
97

IL-EVM

An EVM contract precompiler that emits .NET code to make the execution faster
1
star
98

nethermind-plugins-guide

C#
1
star
99

eigenlayer-operator

1
star
100

eth-pairings-bindings

C# bindings for the eth_pairings library
C#
1
star