Do NOT Use!..... Alfa-ROMeo is an experimental implementation of Jörmungandr, actively being tested and developed * (WIP) work-in-progress
This experimental node implementation is written in rust, with the initial aim to support the Ouroboros type of consensus protocol.
This node is a participant of a blockchain network, continuously making, sending, receiving, and validating blocks. All nodes are responsible for making sure that all the rules of the protocol(s) are followed!!!
Just because you call something a blockchain, that doesn't mean you aren't subject to normal engineering laws or physics...
User guide documentation available [https://input-output-hk.github.io/jormungandr/][docs]
Jörmungandr refers to the Midgard Serpent in Norse mythology. It is a hint to Ouroboros, the Ancient Egyptian serpent,(The World Serpent) who ate it's own tail, as well as ALL THE LEVERAGE, and the IOHK paper on proof of stake (POS). ;) [docs]: https://input-output-hk.github.io/jormungandr
It is recommended that you use the original Jörmungandr source code, and NOT this specific implementation.
CI | Status | Description |
---|---|---|
CircleCI | Master and PRs |
Use the Latest Binaries, available for many operating systems and architectures.
Get the Rust Compiler (latest stable version is recommended, minimum required: 1.39+).
rustup install stable
rustup default stable
rustc --version # if this fails, try a new command window, or add the path (see below)
- For detecting build dependencies:
- Homebrew on macOS.
vcpkg
on Windows.pkg-config
on other Unix-like systems.
- C compiler (see cc-rs for more details):
- Must be available as
cc
on Unix and MinGW. - Or as
cl.exe
on Windows.
- Must be available as
- Win: Add
%USERPROFILE%\.cargo\bin
to the environment variablePATH
. - Lin/Mac: Add
${HOME}/.cargo/bin
to yourPATH
.
- The Protocol Buffers version
bundled with crate
prost-build
will be used. - For distribution or container builds in general, it's a good practice to
install
protoc
from the official distribution package if available.
Check <latest release tag>
on
https://github.com/input-output-hk/jormungandr/releases/latest
git clone https://github.com/input-output-hk/jormungandr
cd jormungandr
git checkout tags/<latest release tag> #replace this with something like v1.2.3
cargo build # skip this if you do not want to run the tests
cargo test # skip this if you do not want to run the tests
cargo install --locked --path jormungandr # --features systemd # (on linux with systemd)
cargo install --locked --path jcli
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;
A functional node needs 2 configurations:
- Its own node configuration: Where to store data, network configuration, logging.
- 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.
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>
- Official Cardano Shelly Testnet Documentation.
- For the nightly testnet, ask within the Cardano Stake Pool Workgroup Telegram group.
Follow instructions on installation, then to start a private and minimal test setup:
mkdir mynode
cd mynode
python3 PATH/TO/SOURCE/REPOSITORY/scripts/bootstrap.py <options>
Use the following recommended bootstrap options:
bootstrap --bft # BFT setup
bootstrap --genesis-praos --slot-duration 2 # Genesis-praos setup
bootstrap --help # further help
The bootstrap script creates a simple setup with a faucet with 10 millions coins, a BFT leader, and a stake pool.
Both scripts can be used to do simple limited operation through the jcli debugging tools.
Documentation is available in the markdown format here
This project is licensed under either of the following licenses:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)