Skip to content
aspiring blockchain node
Rust Shell PowerShell Other
Branch: master
Clone or download
NicolasDP Merge pull request #652 from input-output-hk/recovery_test
[Test] Recovery test for abrupt node restart
Latest commit 863bb3b Aug 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci CircleCI: Use --offline cargo option Jul 11, 2019
.github/ISSUE_TEMPLATE Update issue templates Dec 3, 2018
chain-deps @ f442357 experiment with new interface for multi nodes testing Aug 20, 2019
ci fix deploy script Jun 13, 2019
doc Add CORS to REST endpoint Aug 20, 2019
docker Merge pull request #594 from onicrom/kyleo/docker-fun Jul 12, 2019
jcli release v0.3.3 Aug 22, 2019
jormungandr-integration-tests Merge pull request #652 from input-output-hk/recovery_test Aug 23, 2019
jormungandr-lib Merge pull request #652 from input-output-hk/recovery_test Aug 23, 2019
jormungandr-scenario-tests Merge pull request #718 from input-output-hk/testing-scenario-managin… Aug 22, 2019
jormungandr release v0.3.3 Aug 22, 2019
scripts Update p2p config naming in bootstrap scripts Jul 12, 2019
.github_changelog_generator add github changelog generator configuration file Jun 26, 2019
.gitignore Update cardano-deps: latest tower-grpc, fix vendor May 6, 2019
.gitmodules move to chain-deps Jun 19, 2019
.travis.yml fix spelling in travisci script Jul 8, 2019
CHANGELOG.md release v0.3.3 Aug 22, 2019
Cargo.lock Merge pull request #718 from input-output-hk/testing-scenario-managin… Aug 22, 2019
Cargo.toml move v2 integration test in their own package Aug 20, 2019
LICENSE-APACHE Add license files and disclaimer Mar 1, 2019
LICENSE-MIT Add license files and disclaimer Mar 1, 2019
README.md add build statuses on the different CI we have Jul 8, 2019
ROADMAP.md Update ROADMAP.md Aug 9, 2019
appveyor.yml fix deploy script for appveyor Jun 13, 2019
book.toml add more documentation Jun 19, 2019
shell.nix setup a development environment via shell.nix Feb 26, 2019

README.md

Full Node

Just because you call something a blockchain, that doesn't mean you aren't subject to normal engineering laws.

User guide documentation available here

Master current build status

CI Status Description
Travis CI Build Status Master and release
CircleCI CircleCI Master and PRs
Appveyor Build status Master, release and PRs

How to install from sources

Currently the minimum supported version of the rust compiler is 1.35, however we recommend to use the most recent stable version of the rust compiler.

  1. Install rustup
  2. Run rustup install stable
  3. Run rustup default stable
  4. Clone this repository: git clone --recurse-submodules https://github.com/input-output-hk/jormungandr
  5. Enter the repository directory: cd jormungandr
  6. install jormungandr: cargo install --path jormungandr
  7. install jcli: cargo install --path jcli

Note:

  • On Windows, you'll need to add the %USERPROFILE%\.cargo\bin into the environment variable PATH.
  • On Linux and macOS: add ${HOME}/.cargo/bin into your PATH.
  • Make sure the C compiler toolchain is installed and, on Unix (e.g. macOS), the compiler and linker executable cc is found in PATH.
  • On Linux with systemd: to enable logging to journald replace step 6 with cargo install --path . --features systemd.
  • The build requires the Protocol Buffers compiler:
    • On Linux environments without glibc such as Alpine, the protobuf compiler protoc needs to be installed and found in PATH or otherwise specified in the environment variable PROTOC.
    • NixOS users should rely on shell.nix provided in this source tree to pull the dependencies and set up the environment for the build.
    • For distribution or container builds in general, it's a good practice to install protoc from the official distribution package if available, otherwise the version bundled with crate prost-build will be used.

This will install 2 tools:

  • jormungandr: the node part of the blockchain;
  • jcli: a command line helper tool to help you use and setup the node;

How to install from binaries

Our binaries releases are available here for many operating systems and architecture, but in due time, jormungandr will be available through package managers.

How To Use

A functional node needs 2 configurations:

  1. Its own system configuration: Where to store data, network configuration, logging.
  2. The blockchain genesis configuration which contains the initial trusted setup of the blockchain: coin configuration, consensus settings, initial state.

In normal use, the blockchain genesis configuration is given to you or automatically fetched from the network.

More documentation on the node configuration can be found here, and for the blockchain genesis configuration here

Quick-Start for private mode

Follow instructions on installation, then to start a private and minimal test setup:

  1. In terminal, create an empty directory somewhere and enter this directory
  2. PATH/TO/SOURCE/REPOSITORY/scripts/bootstrap <options>
  3. execute the instruction to start printed at the end

For a BFT setup, use the following recommended options:

bootstrap -b

For a Genesis-praos setup, use the following recommended options:

bootstrap -g -s 2

For help on the options:

bootstrap -h

The bootstrap script creates a simple setup with a faucet with 10 millions coins, a BFT leader, and a stake pool.

The bootstrap script also create 2 shell scripts parametrized to this specific run of bootstrap:

  • faucet-send-money
  • faucet-send-certificate

Both scripts can be used to do simple limited operation through the jcli debugging tools.

Quick-Start in public mode

⚠️ This is not currently functional ⚠️

To start a new node from scratch on a given blockchain, you need to know the block0 hash of this blockchain for trust purpose and internet peers to connect to. The simplest way to start such a node is:

jormungandr --block0-hash <HASH> --trusted-peers <IPs>

Documentation

Documentation is available in the markdown format here

License

This project is licensed under either of the following licenses:

You can’t perform that action at this time.