StarkNet client implementation.

Overview

juno

Starknet client implementation.

Go Reference Go Report Card Actions Status codecov

Building from source

Run the following command.

% make all

Executables

Command Description
juno The StarkNet full node client.

Configuration

juno uses a configuration file named juno.yaml that is located in the following places depending on the operating system.

  • macOS - $HOME/Library/Application Support/juno/.
  • Other Unix systems - $XDG_CONFIG_HOME/juno/ or $HOME/.config/juno/ if the $XDG_CONFIG_HOME variable is not set.
  • Windows - %AppData%/juno/.

It generally looks like the following and a default will be generated if one does not exist.

The following is an example on how it would look on a macOS system (replace $HOME with a full path to the home directory).

db_path: $HOME/Library/Application Support/juno
ethereum:
  enabled: true
  node: "ethereum_archive_node"
rpc:
  enabled: true
  port: 8080
starknet:
  enabled: true
  feeder_gateway: "https://alpha-mainnet.starknet.io"
Issues
  • Feature/cairo cli integration

    Feature/cairo cli integration

    Changes:

    • Initial CLI implementation for juno, juno-cli, which integrates commands from the Starknet Feeder Gateway.

    Types of changes

    • [x ] New feature (non-breaking change which adds functionality)

    Testing

    Requires testing

    • [ ] Yes
    • [x ] No

    Currently implementation simple enough to compare directly to pure HTTP requests.

    Further comments

    See idea behind PR here https://www.notion.so/nethermind/Cairo-CLI-Implementation-f524ca0c7f404b8eb151842c5f6d2065

    And living docs here

    opened by D-DePablos 3
  • Corrects Nethermind links

    Corrects Nethermind links

    Fixes | Closes | Resolves #155

    Changes:

    • Corrects social links.

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [x] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    Further comments (optional)

    @stdevMac I saw the merge and instantly tried the links and they linked to the logo, it seems I added extra characters, apologies. They're fine now, to check it you can view this. Thanks!

    opened by EdgarBarrantes 3
  • Add BlockNumber type

    Add BlockNumber type

    Changes:

    Implement the BlockNumber type to handle the block_numberfield in the feeder models. A block_number can be an integer equal to or greater than 0 or the string "pending"

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [x] Yes
    • [ ] No

    In case you checked yes, did you write tests??

    • [x] Yes
    • [ ] No
    opened by stdevAdrianPaez 3
  • Cli/select config and data path

    Cli/select config and data path

    Resolves #100

    Changes:

    • add dataDir flag to specify the data directory. If dataDir is invalid then the default data directory will be used
    • load configuration from config flag. If config is invalid then the default data directory will be used
    • add new function Exists to check if the default configuration are already created

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No
    opened by stdevAdrianPaez 3
  • chore: add juno logo

    chore: add juno logo

    Fixes | Closes | Resolves #

    Anything marked as optional that you didn't need to fill in, please remove it from the PR description. Choose one of the keywords above to refer to the issue this PR solves, followed by the issue number (e.g Fixes # 666). If there is no issue, remove the line. Remove this note after reading.

    Changes:

    • Adds juno logo to README

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [x ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No

    Comments about testing , should you have some (optional)

    Further comments (optional)

    If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...

    opened by k-xo 3
  • Add project description

    Add project description

    Is your feature request related to a problem? Please describe. The project does not have a description. This is especially good for people who see this repo for the first time. Also, this can help us to take on the community standards

    Describe the solution you'd like Add a concise description summarizing the project

    documentation good first issue 
    opened by AntiD2ta 3
  • Feat/juno cli newcmd

    Feat/juno cli newcmd

    Fixes | Closes | Resolves #

    Changes:

    • Add Transaction and Block ID > Hash; Hash > ID
    • Fix tx_trace typing and output + test
    • Add get_state_update

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No
    opened by D-DePablos 2
  • Add juno-cli

    Add juno-cli

    Fixes | Closes | Resolves #

    Changes:

    • Add initial implementation of CLI (without changes to feeder gateway files to prevent tests breaking)

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [ x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No

    Further comments (optional)

    Previous branch db stopped functioning and broke test suite.

    cli 
    opened by D-DePablos 2
  • TransactionID no longer used by Feeder Gateway, feeder.go still includes code to use it. [LOW SEVERITY]

    TransactionID no longer used by Feeder Gateway, feeder.go still includes code to use it. [LOW SEVERITY]

    Describe the bug See title

    To Reproduce GET request to: https://alpha-mainnet.starknet.io/feeder_gateway/get_transaction?transactionId=5425206

    Expected behavior Returns transaction information (in both Feeder gateway and feeder implementation)

    Screenshots image

    image

    opened by D-DePablos 2
  • Adds Nethermind links

    Adds Nethermind links

    Fixes | Closes | Resolves #155

    Changes:

    • Adds social links

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [x] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No
    opened by EdgarBarrantes 2
  • [log] Add logging to project

    [log] Add logging to project

    Fixes | Closes | Resolves #73

    Changes:

    • Add library for logging to project, aka. logrus

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No

    Further comments (optional)

    opened by stdevMac 2
  • Effective Error Handling

    Effective Error Handling

    We should follow a common pattern for error handling in the different parts of the project.

    By default, Golang offers an API for that purpose using fmt.Errof and then using errors.Wrap, we should take advantage.

    And example of how to use a proper error handling, you can check this post about Efective Error Handling

    enhancement 
    opened by stdevMac 0
  • Improve RPC

    Improve RPC

    Currently, we only support a subset of the specification of JSONRPC 2.0 and we don't support subscriptions.

    To consider close this issue, we should:

    • [ ] Support JSONRPC 2.0 spec
    • [ ] Notifications
    • [ ] Subscriptions
    rpc api 
    opened by stdevMac 0
  • Added update_config

    Added update_config

    Resolves #230

    Changes:

    • Adds cli commands for updating the config file using the flags and environment variables

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Other (please describe):

    Testing

    Requires testing

    • [ ] Yes
    • [x] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [ ] No

    Comments about testing , should you have some (optional)

    Further comments (optional)

    If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...

    opened by smishy05 0
  • Improve DocSearch

    Improve DocSearch

    We should soon have searching functionality in our documentation. The tool we hope to use, DocSearch, has a list of ways to help their searching algorithm index the site. Some the recommendations have other benefits, like SEO.

    We should implement some of the recommendations in our documentation.

    documentation good first issue 
    opened by joshklop 0
  • Feat/comms

    Feat/comms

    Fixes | Closes | Resolves #185

    Changes:

    • Adding estimate_fee with multiple function inputs

    Types of changes

    What types of changes does your code introduce? Put an x in the boxes that apply

    • [x] Bugfix
    • [x] New Feature

    Testing

    Requires testing

    • [x] Yes
    • [ ] No

    In case you checked yes, did you write tests??

    • [ ] Yes
    • [x] No -> Planning to!

    Comments about testing , should you have some (optional) In the original implementation I assumed 1 input to the function, which means view functions or those with calldata with more than 1 element don't work.

    I am also using this chance to implement the call_contract functionality.

    cli 
    opened by D-DePablos 1
  • Add PedersenHash type

    Add PedersenHash type

    Changes:

    • Add the PedersenHash type. This is useful for situations where TransactionHash and BlockHash are too specific (e.g. state commitments, etc.)

    Types of changes

    • [X] Refactoring (no functional changes, no api changes)

    Testing

    Requires testing

    • [ ] Yes
    • [x] No
    core 
    opened by joshklop 1
Releases(v0.1)
  • v0.1(Jun 15, 2022)

    Changelog June 15, 2022

    Beta version of Juno Release, added two commands:

    • juno
    • juno-cli

    For more details review the readme

    🎯 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 of StarkNet contracts.
    • Ethereum-like Json RPC Server following this spec. Currently supported are:
      • starknet_getStorageAt
      • starknet_getCode
      • starknet_getBlockByHash
      • starknet_getBlockByNumber
      • starknet_getTransactionByHash
      • starknet_getTransactionByBlockHashAndIndex
      • starknet_getStorageAt (pending)
      • starknet_getCode (pending)
      • starknet_getBlockByNumber (pending)
    • Rest API is a wrapper to the StarkNet feeder gateway. Through it you can call the node in the same way you would call the feeder gateway, where using the same params will return the same response.
    • CLI for general StarkNet tools.
    • Prometheus Metrics.
    • Dockerized app.
    Source code(tar.gz)
    Source code(zip)
Owner
Nethermind
Nethermind - full .NET Core Ethereum node for Windows, Linux, MacOS
Nethermind
A Commander for Go implementation of official Ethereum Client

Young A Commander for Go implementation of official Ethereum Client by zhong-my. Overview Young Dependencies Young stands on the shoulder of many grea

Zhong MingYang 1 Oct 14, 2021
Terra client in golang with multiple protocol implementation (anchor, astroport, prism, ...)

Terra A terra client with some protocol partial implementations (anchor, prism, terraswap type routers, ...) To be able to compile, you need to add th

null 3 Apr 11, 2022
The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.

Fabric Smart Client The Fabric Smart Client (FSC, for short) is a new Fabric client-side component whose objective is twofold. FSC aims to simplify th

null 38 Jun 25, 2022
Go implementation of BLAKE2 (b) cryptographic hash function (optimized for 64-bit platforms).

Go implementation of BLAKE2b collision-resistant cryptographic hash function created by Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, an

Dmitry Chestnykh 89 May 1, 2022
An implementation of JOSE standards (JWE, JWS, JWT) in Go

Go JOSE Package jose aims to provide an implementation of the Javascript Object Signing and Encryption set of standards. This includes support for JSO

Square 1.9k Jun 27, 2022
Go implementation of SipHash-2-4, a fast short-input PRF created by Jean-Philippe Aumasson and Daniel J. Bernstein.

SipHash (Go) Go implementation of SipHash-2-4, a fast short-input PRF created by Jean-Philippe Aumasson and Daniel J. Bernstein (http://131002.net/sip

Dmitry Chestnykh 239 Jun 27, 2022
A simplified blockchain implementation in Golang

A simplified blockchain implementation in Golang

Ivan Kuznetsov 3.4k Jun 28, 2022
A full node Bitcoin (BSV) implementation written in Go

bsvd bsvd is a full node Bitcoin (BSV) implementation written in Go (golang). This project is a port of the bchd codebase to Bitcoin (BSV). It provide

null 41 Feb 7, 2022
Merchant API reference implementation

mAPI More details available in the BRFC Spec for Merchant API. The old golang (v1.1) implementation is no longer being maintained and has been moved t

Bitcoin SV 20 Jun 17, 2022
`age-plugin-yubikey` implementation, encrypt things with a Yubikey/any PIV card

This is an age plugin for PIV cards/Yubikey. Your secret is kept safe on the tamperproof hardware, while letting you use the age command-line.

Tv 20 Dec 10, 2021
Interblockchain communication protocol (IBC) implementation in Golang.

ibc-go Interblockchain communication protocol (IBC) implementation in Golang built as a SDK module. Components Core The core/ directory contains the S

COSMOS 214 Jun 25, 2022
Implementation of the Filecoin protocol, written in Go

Project Lotus - 莲 Lotus is an implementation of the Filecoin Distributed Storage Network. For more details about Filecoin, check out the Filecoin Spec

Filecoin 2.3k Jun 30, 2022
Go implementation of Ethereum proof of stake

Prysm: An Ethereum Consensus Implementation Written in Go This is the core repository for Prysm, a Golang implementation of the Ethereum Consensus spe

Prysmatic Labs 2.6k Jun 22, 2022
Pure Go implementation of the NaCL set of API's

go-nacl This is a pure Go implementation of the API's available in NaCL: https://nacl.cr.yp.to. Compared with the implementation in golang.org/x/crypt

Kevin Burke 522 Apr 30, 2022
Go implementation of the Data At Rest Encryption (DARE) format.

Secure IO Go implementation of the Data At Rest Encryption (DARE) format. Introduction It is a common problem to store data securely - especially on u

Object Storage for the Era of the Hybrid Cloud 293 Jun 14, 2022
Celer cBridge relay node implementation in Golang

cBridge Relay Node Official implementation of cBridge relay node in Golang. Prerequisites Prepare Machine To run a cBridge relay node, it is recommend

Celer Network 58 Jun 17, 2022
A simple implementation of SHA-256 Algorith in Go Language

SHA-256 in Go This is not a serious/efficient implementation of SHA-256 in Go. You can use the official package for that. This is just for learning pu

Krona Emmanuel 6 Nov 10, 2021
Go Implementation of the Spacemesh protocol full node. 💾⏰💪

A Programmable Cryptocurrency go-spacemesh ?? ⏰ ?? Thanks for your interest in this open source project. This repo is the go implementation of the Spa

Spacemesh 577 Jun 28, 2022
An implementation of the Filecoin Distributed Storage Network

Project Lotus - 莲 Lotus is an implementation of the Filecoin Distributed Storage Network. For more details about Filecoin, check out the Filecoin Spec

null 0 Oct 27, 2021