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"
Comments
  • Implement Pedersen

    Implement Pedersen

    uses NethermindEth/crypto-cpp

    Description

    Currently fails to link because crypto-cpp needs extra build steps

    Changes:

    Types of changes

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

    Testing

    Requires testing: Yes

    Did you write tests??: Yes

    Documentation

    If this requires a documentation update, did you add one? No

    opened by omerfirmak 12
  • update pedersen

    update pedersen

    Description

    Pedersen Hash is used a lot in the hash calculations and sometimes, we can't predict the input number (whether the elements are > 2 or less than 2). For example, this in the class hash computation.

    The current solution is checking this before computing the Pedersen hash. But given the fact that we may have to do this multiple times, it's neater to check in the Pedersen Hash function

    Changes:

    • Change 1
    • Change 2

    Types of changes

    • Improve existing functionality

    Testing

    Requires testing: Yes

    Did you write tests??: Yes

    opened by jelilat 10
  • Refactor

    Refactor

    Description

    This PR refactors the following:

    • Removes rest server
    • Removes juno cli

    Types of changes

    • Refactoring (no functional changes, no api changes)

    Testing

    Requires testing: No

    Documentation

    If this requires a documentation update, did you add one? Yes

    opened by IronGauntlets 8
  • Reduce overall testing time of juno through changes in REST tests

    Reduce overall testing time of juno through changes in REST tests

    Tests currently take a long time because the rest api tests which are meant to fail (within /pkg/rest/tests/rest_test.go) take a long time to timeout.

    This means that, while the rest of the test suite finishes in less than 10 seconds, all the Test(...)Fail take ~ 10s each, 13 times, incrementing this substantially and wasting time.

    It would be good to have 1 timeout test with the normal rate, and the other failing tests to have a much smaller timeout or use a different method to check for failure than to wait out the full 10s.

    good first issue 
    opened by D-DePablos 7
  • Split out mdbx so RPC client doesn't have to depend on it

    Split out mdbx so RPC client doesn't have to depend on it

    We're not using the server code, but are instead using Juno as a RPC client. The client package depends on some internal bits which then pull in mdbx which introduces additional build constraints: it currently only builds via clang (https://github.com/NethermindEth/juno/issues/152).

    rpc 
    opened by archseer 6
  • Health Check for Node

    Health Check for Node

    We should be able to provide a RPC endpoint, and API endpoint that basically knows when the node is running properly, the db connections are ok, and the feeder gateway is responding well.

    enhancement db core rpc 
    opened by stdevMac 6
  • Add cache

    Add cache

    Changes:

    • Add the internal/cache package with the Cache interface and the LRUCache implementation

    Types of changes

    What types of changes does your code introduce?

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

    Testing

    Requires testing

    • Yes

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

    • Yes
    opened by adriantpaez 5
  • Speed up fail rest tests

    Speed up fail rest tests

    Resolves #256

    Changes:

    • Extracted the hardcoded retry mechanism implemented in the http Do function.
    • Allows the http client to take a retry mechanism as parameter which will then be used in the Do function.
    • Test time before this PR
    ok  	github.com/NethermindEth/juno/pkg/rest/tests	123.929s
    
    • Test time after this PR
    ok  	github.com/NethermindEth/juno/pkg/rest/tests	5.299s
    

    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)
    • [X] 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 v4lproik 5
  • Add health check endpoint

    Add health check endpoint

    Fixes | Closes | Resolves #324

    Description

    Is needed to check that the node is running without errors

    Changes:

    • Add health package to check that node is healthy
    • Add documentation for it

    Types of changes

    Leave only items that describe your changes, remove the rest. Remove this line too.

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

    Testing

    Requires testing: Yes

    Did you write tests??: No, only manual testing

    Documentation

    If this requires a documentation update, did you add one? Yes

    enhancement rpc 
    opened by stdevMac 4
  • Update docs

    Update docs

    Description

    Update docs based on the most recent PR's

    Changes:

    • Update documentation

    Types of changes

    Leave only items that describe your changes, remove the rest. Remove this line too.

    • Documentation Update
    documentation 
    opened by stdevMac 4
  • Local Github ACTions

    Local Github ACTions

    Changes:

    • Added ACT environment variables
    • Investigating Docs deployment error

    Types of changes

    What types of changes does your code introduce?

    • [x] 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)
    • [ ] Documentation Update
    • [ ] Code style update (formatting, renaming)
    • [ ] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes

    Testing: Local runs are done with this .actrc from an M1 macbook:

    -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest -P ubuntu-18.04=ghcr.io/catthehacker/ubuntu:act-18.04 -b --container-architecture linux/amd64

    opened by D-DePablos 4
  • Update test workflow

    Update test workflow

    Description

    Codecov upload was failing during the unit test workflow because we were trying to upload two coverage reports, one for the ubuntu runner and the other for the macos one. This PR fix this problem.

    Changes:

    • Only upload codecov coverage on the ubuntu runner

    Types of changes

    • Build related changes

    Testing

    Requires testing: No

    devops 
    opened by AntiD2ta 1
  • Add basic Blockchain and SyncLoop structures

    Add basic Blockchain and SyncLoop structures

    Towards #453

    Description

    This will act as an abstraction for the multiple data sources that we have available to us to sync against. Although we will only use gateway for now, we can also use L1 and P2P as a data source when syncing.

    Changes:

    • add DataSource interface

    Types of changes

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

    Testing

    Requires testing: No

    Did you write tests??: No

    opened by omerfirmak 1
  • Class Implementation

    Class Implementation

    The class module should do the following

    • compute the starknet class hash for given class definition json blob.
    • compute the contract address for a given contract definition json blob
    core 
    opened by jelilat 0
  • mdbx implementation

    mdbx implementation

    Closes #455

    Description

    Add the database interfaces and implementation.

    • Database: contains all of Juno's tables (or "buckets"). This is represented by mdbx's "environment" struct, which manages the on-disk database file.
    • Transaction: creates buckets and opens cursors on buckets.
    • Cursor: modifies the database, moves to keys in the database

    We will probably need to add more functionality to the Cursor interface (e.g, ForEach, PutMulti, etc.) in the future, but it may make sense to add those incrementally rather than making this PR larger.

    Types of changes

    • New feature (non-breaking change which adds functionality)
    • Documentation Update

    Testing

    Requires testing: Yes

    Did you write tests??: Yes

    Documentation

    If this requires a documentation update, did you add one? Yes: comments added where necessary

    opened by joshklop 1
Releases(v0.2.0)
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 42 Nov 15, 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 90 Jul 11, 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 2k Nov 22, 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 244 Nov 21, 2022
A simplified blockchain implementation in Golang

A simplified blockchain implementation in Golang

Ivan Kuznetsov 3.6k Nov 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 21 Oct 14, 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 22 Aug 10, 2022
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 286 Nov 23, 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.5k Nov 26, 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.9k Nov 28, 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 529 Sep 27, 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 305 Nov 26, 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 62 Sep 27, 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 Sep 22, 2022
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 588 Nov 25, 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