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.
entropy-tss
crate: docs.rs/entropy-tssYou can also build the API docs yourself:
cargo doc --no-deps --open`
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:
docker compose version
docker compose up --detach # Detaching is optional.
/etc/hosts
file:
echo "127.0.0.1 alice-tss-server bob-tss-server charlie-tss-server" | sudo tee -a /etc/hosts
docker compose logs --follow # Following is also optional.
cargo run -p entropy-test-cli -- --chain-endpoint="ws://127.0.0.1:9944" status
Dependencies you will need to build locally:
rustup target add wasm32-unknown-unknown
rustup component add rust-src
wasm-pack
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
Build the chain node and threshold signature scheme (TSS) server binaries 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.
alarm mutual concert decrease hurry invest culture survey diagram crash snap click
is account:substrate
0x29b55504652cedded9ce0ee1f5a25b328ae6c6e97827f84eee6315d0f44816d8
0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
0xe0543c102def9f6ef0e8b8ffa31aa259167a9391566929fd718a1ccdaabdb876
5H8qc7f4mXFY16NBWSB9qkc6pTks98HdVuoQTs1aova5fRtN
where sight patient orphan general short empower hope party hurt month voice
is account:substrate
0xb0b5348db82db32d10a37b578e4c6242e148f14648661dccf8b3002fafa72cdd
0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f
5D2SVCUkK5FgFiBwPTJuTN65J6fACSEoZrL41thZBAycwnQV
lake carry still awful point mention bike category tornado plate brass lock
is account:0xb9085925e9452f3e465b51a883a0dbb2c13d5610b6f8f7e7f206f7f044daa419
0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
0x14d223daeec68671f07298c66c9458980a48bb89fb8a85d5df31131acad8d611
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.
To speed up running tests, some tests use pre-generated keyshares rather than running a distributed key generation during the test. If you need to regenerate these keyshares because something has changed in either Synedrion or the identities of the test TS servers, you can run:
./scripts/create-test-keyshares.sh`
from the project root. For an explanation of how the test keyshare sets are structured, see create-test-keyshares
.
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:
kvdb
crate comes from Alexar's tofnd
project, which is licensed under
MIT
.runtime
and node
crates come from Parity's Substrate
project, which
is licensed under GPL-3.0-or-later WITH Classpath-exception-2.0
.transaction-pause
pallet comes from the Acala
project, which is
is licensed under GPL-3.0-or-later WITH Classpath-exception-2.0
.Modifications made by Entropy to these crates are licensed under AGPL-3.0
.