This repo contains the Entropy blockchain node, the Threshold Signature Server (evaluates programs, stores threshold keyshares, and coordinates threshold-signing), and misc. testing utilities for the network.
Our blockchain node is written with Substrate using Substrate's node template.
You can build the API documentation for Entropy by invoking cargo doc --no-deps --open
.
There is also high level documentation for Entropy available here.
You can begin using this repository in a few different ways. This section describes a few of them.
This repository provides a Docker Compose configuration that spins up a simple, two-node development blockchain. We provide Docker images that you can pull, or you can build from source.
Do this to use the Docker Compose configuration:
- Install Docker. Make sure you also have Docker Compose. Confirm this by running:
docker compose version
- Bring up the configuration:
docker compose up --detach # Detaching is optional.
- If you need to communicate directly with the threshold signature scheme server from your Docker host machine, you may also need to include its address in your local
/etc/hosts
file:echo "127.0.0.1 alice-tss-server bob-tss-server" | sudo tee -a /etc/hosts
- Confirm your local development network is up and running. You can:
- look at server logs:
docker compose logs --follow # Following is also optional.
- use the Entropy Test CLI to interact with the locally running network:
cargo run -p entropy-test-cli -- --chain-endpoint="ws://127.0.0.1:9944" status
- look at server logs:
To build from source, you will need some development tooling installed on your local machine.
Do this to build Entropy from source.
- Install Rust and Substrate dependencies for your Operating System.
- Building the chain node and threshold signature scheme (TSS) server binaries can be done by running:
cargo build --release
Spinning up a local Entropy node for development and basic testing can be done with:
cargo run --release -p entropy -- --dev --rpc-external
Once built, the binary can also be run directly with:
./target/release/entropy --dev --rpc-external
Optionally, you can also run it with detailed logging:
RUST_BACKTRACE=1 ./target/release/entropy -ldebug --dev --rpc-external
Testing is done via cargo test
.
An Entropy node binary is required in order to succesfully run the server tests.
You can manually provide a binary using the ENTROPY_NODE
environment variable.
ENTROPY_NODE="/path/to/entropy" cargo test -p entropy-tss
Or, if no path is specified using ENTROPY_NODE
, then the test suite will search in the target
folder for a binary. A debug or release binary will be chosen based on how the test suite is built.
For example, running cargo test -p entropy-tss --release
will expect a release binary of the Entropy
node, which you can build in the following way: cargo build -p entropy --release
.
To run individual tests you can specify the test in the following way:
cargo test -p entropy-tss --features unsafe -- test_sign_tx_no_chain --nocapture
Once the node template is running locally, you can connect it with Polkadot-JS Apps front-end to interact with your chain. Click here connecting the Apps to your local node template.
A simple command line interface client is included in this repository for test purposes. This can be used with both the local docker-compose network and network deployments.
It is however only intended for use with test networks and has no secure private key storage. For a fully featured command line client see entropyxyz/cli.
- Keys for internal devnet use only (used in tests and for the local network built with docker-compose). These are not secure, they are here for convenience, do not use them for anything real.
- Secret phrase
alarm mutual concert decrease hurry invest culture survey diagram crash snap click
is account: - Network ID/version:
substrate
- Secret seed:
0x29b55504652cedded9ce0ee1f5a25b328ae6c6e97827f84eee6315d0f44816d8
- Public key (hex):
0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
- Account ID:
0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
- SS58 Address:
5H8qc7f4mXFY16NBWSB9qkc6pTks98HdVuoQTs1aova5fRtN
- Secret phrase
where sight patient orphan general short empower hope party hurt month voice
is account: - Network ID/version:
substrate
- Secret seed:
0xb0b5348db82db32d10a37b578e4c6242e148f14648661dccf8b3002fafa72cdd
- Public key (hex):
0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
- Account ID:
0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
- SS58 Address:
5D2SVCUkK5FgFiBwPTJuTN65J6fACSEoZrL41thZBAycwnQV
- Secret phrase
lake carry still awful point mention bike category tornado plate brass lock
is account: - Network ID/version: substrate
- Secret seed:
0xb9085925e9452f3e465b51a883a0dbb2c13d5610b6f8f7e7f206f7f044daa419
- Public key (hex):
0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
- Account ID:
0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
- SS58 Address:
5CY1EquGdAiiJJ28FDiT8EB1C3gnMixtPn4pbSggFF6nUat7
Everytime a change to the chain's interface happens, metadata needs to be pulled. You'll need to install Subxt using cargo install subxt-cli
. Then run a development chain and then invoke the ./scripts/pull_entropy_metadata.sh
script.
Need help with something not necessarily related to entropy-core
?
Head over to the Entropy Community repository for support or to raise a ticket.
For the most part, the code in this repository is licensed under AGPL-3.0.
There are some exceptions however:
- The original code of the
kvdb
crate comes from Alexar'stofnd
project, which is licensed underMIT
. - The original code of the
runtime
andnode
crates come from Parity'sSubstrate
project, which is licensed underGPL-3.0-or-later WITH Classpath-exception-2.0
. - The original code of the
transaction-pause
pallet comes from theAcala
project, which is is licensed underGPL-3.0-or-later WITH Classpath-exception-2.0
.
Modifications made by Entropy to these crates are licensed under AGPL-3.0
.