Skip to content

omariosman/juno

 
 

Repository files navigation

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.

About

StarkNet client implementation.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 92.1%
  • Assembly 4.5%
  • Python 2.5%
  • Other 0.9%