juno

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2022 License: Apache-2.0

README ΒΆ

Juno Logo

Juno

Juno is a StarkNet node implementation written in Golang with ❀️ by Nethermind. Designed to ease things up and performance in mind. We will bring decentralization to StarkNet.

βš™οΈ Installation

Dependencies

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

For a detailed installation guide, please refer to the installation guide page.

For details about the configuration you can look at the config file description.

πŸ“¦ Dockerized

You can install the entire app using docker. Just check the docker guide.

🎯 Features

  • Get and Sync state from Layer 1 (Ethereum).
  • Get and Sync state from API (Feeder Gateway).
  • Store StarkNet State locally.
  • Store StarkNet Transactions.
  • Store StarkNet Blocks.
  • Store the ABI and full code of StarkNet contracts.
  • Ethereum-like Json RPC Server following the v0.1.0 spec. Currently, supported are:
    • starknet_getBlockWithTxHashes - Get block information with transaction hashes given the block id.
    • starknet_getBlockWithTxs - Get block information with full transactions given the block id.
    • starknet_getStateUpdate - Get the information about the result of executing the requested block.
    • starknet_getStorageAt - Get the value of the storage at the given address and key.
    • starknet_getTransactionByHash - Get the details and status of a submitted transaction.
    • starknet_getTransactionByBlockIdAndIndex - Get the details of a transaction by a given block id and index.
    • starknet_getTransactionReceipt - Get the transaction receipt by the transaction hash.
    • starknet_getClassHashAt - Get the contract class hash in the given block for the contract deployed at the given address.
    • starknet_getBlockTransactionCount - Get the number of transactions in a block given a block id.
    • starknet_call - Call a StarkNet function without creating a transaction.
    • starknet_blockNumber - Get the most recent accepted block number.
    • starknet_blockHashAndNumber - Get the most recent accepted block hash and number.
    • starknet_chainId - Return the currently configured StarkNet chain id.
    • starknet_pendingTransactions - Returns the transactions in the transaction pool, recognized by this sequencer.
    • starknet_syncing - Returns an object about the sync status, or false if the node is not synching.
  • Prometheus Metrics.
  • Dockerized app.

πŸ›£ Roadmap

In the future we plan to add a new set of features like:

  • P2P between all nodes on the network.
  • Complete support for v0.2.0 of the RPC spec
  • Faster sync
  • Enhanced metrics
  • And more! Stay tuned! πŸš€

πŸ“œ Documentation

For further details, you can watch the documentation.

πŸ‘ Contribute

If you want to say thank you and/or support the active development of Juno:

  1. Run a node.
  2. Add a GitHub Star to the project.
  3. Tweet about Juno on your Twitter .
  4. Contribute to use, make sure to follow Contributions Guidelines.
  5. Add a Github issue if you find a bug , or you need or want a new feature .

β€πŸ’» Code Contributors

Code Contributors

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

⭐️ Stargazers over time

Stargazers over time

⚠️ License

Copyright (c) 2022-present, with the following contributors . Juno is open-source software licensed under the Apache-2.0 License.

Directories ΒΆ

Path Synopsis
cmd
juno command
internal
db
Package db provides a simple interface to a database.
Package db provides a simple interface to a database.
log
Package log provides a logger.
Package log provides a logger.
metrics/prometheus
Package prometheus measures various metrics that help to monitor the functioning of Juno.
Package prometheus measures various metrics that help to monitor the functioning of Juno.
rpc
pkg
crypto/internal/randutil
Package randutil contains internal randomness utilities for various crypto packages.
Package randutil contains internal randomness utilities for various crypto packages.
crypto/keccak
Package keccak implements legacy Keccak secure hash functions.
Package keccak implements legacy Keccak secure hash functions.
crypto/pedersen
Package pedersen implements the StarkNet variant of the Pedersen hash function.
Package pedersen implements the StarkNet variant of the Pedersen hash function.
crypto/signature
Package signature implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-4 and SEC 1, Version 2.0.
Package signature implements the Elliptic Curve Digital Signature Algorithm, as defined in FIPS 186-4 and SEC 1, Version 2.0.
crypto/weierstrass
Package weierstrass provides a standard interface for short-form Weierstrass elliptic curves over prime fields.
Package weierstrass provides a standard interface for short-form Weierstrass elliptic curves over prime fields.
feeder
Package feeder represent a client for the Feeder Gateway connection.
Package feeder represent a client for the Feeder Gateway connection.
feeder/feederfakes
Code generated by counterfeiter.
Code generated by counterfeiter.
felt
Package felt contains field arithmetic operations for modulus = 0x800000...000001.
Package felt contains field arithmetic operations for modulus = 0x800000...000001.
jsonrpc
Package jsonrpc is a JSON-RPC 2.0 library for Go.
Package jsonrpc is a JSON-RPC 2.0 library for Go.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL