Mithril Signer Node
This is the node of the Mithril Network responsible for producing individual signatures that are collected and aggregated by the Mithril Aggregator.
For more information about the Mithril Network, please refer to the Architecture page.
For more information about the Mithril Signer, please refer to the Signer Node page.
Checkout the
Run a Mithril Signer node (SPO)
guide.
Here is an up to date list of all the Mithril Networks, their configurations and their status:
Last update: 02/28/2023
- Preview
- Preprod
- Mainnet
pre-release-preview
Information | - |
---|---|
Mithril Network | pre-release-preview 🔎 |
Cardano Network | preview |
Cardano Magic Id | 2 |
Supported | Yes ✔️ |
Status | Pre-Release 🟠 |
Aggregator Endpoint | https://aggregator.pre-release-preview.api.mithril.network/aggregator ↗️ |
Genesis Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey ↗️ |
Era Reader Adapter Type | cardano-chain |
Era Reader Address | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr ↗️ |
Era Reader Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey ↗️ |
Build From | Latest Pre-Release ↗️ |
testing-preview
⚠️ For devs only
Information | - |
---|---|
Mithril Network | testing-preview 🔎 |
Cardano Network | preview |
Cardano Magic Id | 2 |
Supported | Yes ✔️ |
Status | Unstable 🔴 |
Aggregator Endpoint | https://aggregator.testing-preview.api.mithril.network/aggregator ↗️ |
Genesis Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey ↗️ |
Era Reader Adapter Type | cardano-chain |
Era Reader Address | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr ↗️ |
Era Reader Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey ↗️ |
Build From | Main Branch ↗️ |
release-preprod
Information | - |
---|---|
Mithril Network | release-preprod 🔎 |
Cardano Network | preprod |
Cardano Magic Id | 1 |
Supported | Yes ✔️ |
Status | Release 🟢 |
Aggregator Endpoint | https://aggregator.release-preprod.api.mithril.network/aggregator ↗️ |
Genesis Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey ↗️ |
Era Reader Adapter Type | cardano-chain |
Era Reader Address | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr ↗️ |
Era Reader Verification Key | https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey ↗️ |
Build From | Latest Release ↗️ |
release-mainnet
Information | - |
---|---|
Mithril Network | release-mainnet |
Cardano Network | mainnet |
Cardano Magic Id | - |
Supported | No ❌ |
Status | - |
Aggregator Endpoint | - |
Genesis Verification Key | - |
Era Reader Adapter Type | - |
Era Reader Address | - |
Era Reader Verification Key | - |
Build From | - |
In this documentation, we use the generic:
- **YOUR_CARDANO_NETWORK** identifier, but you need to replace it with the name of the network that runs on your Cardano node (e.g.
preprod
) - **YOUR_AGGREGATOR_ENDPOINT** identifier, but you need to replace it with the endpoint of an aggregator that runs on the Cardano network you target (e.g.
https://aggregator.release-preprod.api.mithril.network/aggregator
) - **YOUR_GENESIS_VERIFICATION_KEY** identifier, but you need to replace it with the genesis verification key url that runs on the Cardano network you target (e.g.
https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey
) - **YOUR_ERA_READER_ADAPTER_TYPE** identifier, but you need to replace it with the era reader adapter type used by the Mithril network you target (e.g.
cardano-chain
) - **YOUR_ERA_READER_ADDRESS** identifier, but you need to replace it with the era reader address url used by the Mithril network you target (e.g.
https://raw.githubusercontent.com/input-output-hk/mithril/main/address.addr
) - **YOUR_ERA_READER_VERIFICATION_KEY** identifier, but you need to replace it with the era reader verification key url used by the Mithril network you target (e.g.
https://raw.githubusercontent.com/input-output-hk/mithril/main/TEST_ONLY_era.vkey
)
Resources
Node | Source Repository | Rust Documentation | Docker Packages |
---|---|---|---|
Mithril Signer | ↗️ | ↗️ | ↗️ |
Pre-requisites
Install a correctly configured Rust toolchain (latest stable version)
Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run
apt install libssl-dev
Ensure SQLite3 library is installed on your system and its version is at least
3.35
(released Apr. 2021) on Debian/Ubuntu:apt install libsqlite3
andsqlite3 --version
.
Download source
Download from GitHub (HTTPS)
git clone https://github.com/input-output-hk/mithril.git
Or (SSH)
git clone git@github.com:input-output-hk/mithril.git
Switch to build branch / tag
# **YOUR_BUILD_BRANCH_OR_TAG** depends on the Mithril network you target,
# please refer to the **Build From** column of the above **Mithril Networks** table
git switch **YOUR_BUILD_BRANCH_OR_TAG**
Change directory
cd mithril/mithril-signer
Development test and build
Run tests
make test
Create the help menu
make help
Generate the Rust documentation
make doc
Run in debug mode with default configuration
make debug
Release build and run binary
Build and run in release with default configuration
make run
Or, build only in release
make build
Display the help menu
./mithril-signer --help
You should see
An implementation of a Mithril Signer
Usage: mithril-signer [OPTIONS]
Options:
-r, --run-mode <RUN_MODE>
Run Mode [env: RUN_MODE=] [default: dev]
-v, --verbose...
Verbosity level, add more v to increase
-c, --configuration-dir <CONFIGURATION_DIR>
Directory where the configuration file is located [default: ./config]
--disable-digests-cache
Disable immutables digests cache
--reset-digests-cache
If set the existing immutables digests cache will be reset
-h, --help
Print help information (use `--help` for more detail)
-V, --version
Print version information
Run in release with default configuration
./mithril-signer
Run in release with a specific mode
./mithril-signer -r preview
Run in release with a custom configuration via env vars
NETWORK=**YOUR_CARDANO_NETWORK** AGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT** ./mithril-signer
If you want to dig deeper, you can get access to several level of logs from the Mithril Signer:
- Add
-v
for some logs (WARN) - Add
-vv
for more logs (INFO) - Add
-vvv
for even more logs (DEBUG) - Add
-vvvv
for all logs (TRACE)
Download compiled binary
Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package.
You can download them from the Release / Pre-Release distribution page that depends on the Mithril Network you are targeting.
These links are available in the Build From column of the above Mithril Networks table.
Build and run Docker container
Build a local Docker image
make docker-build
Run a local Docker container
make docker-run
Configuration parameters
The configuration parameters are set either:
- In a configuration file (depending on the
--run-mode
parameter). If runtime mode istestnet
the file is located in./conf/testnet.json
. - The value can be overridden by an environment variable whose name is the parameter name uppercased.
Here is a list of the available parameters:
Parameter | Command Line (long) | Command Line (short) | Environment Variable | Description | Default Value | Example | Mandatory |
---|---|---|---|---|---|---|---|
verbose | --verbose | -v | VERBOSE | Verbosity level | - | Parsed from number of occurrences: -v for Warning , -vv for Info , -vvv for Debug and -vvvv for Trace | ✔️ |
run_mode | --run-mode | -r | RUN_MODE | Runtime mode | dev | - | ✔️ |
db_directory | --db-directory | - | DB_DIRECTORY | Directory to snapshot from the Cardano Node | /db | - | ✔️ |
network | - | - | NETWORK | Cardano network | - | testnet or mainnet or devnet | ✔️ |
network_magic | - | - | NETWORK_MAGIC | Cardano Network Magic number (for testnet and devnet ) | - | 1097911063 or 42 | - |
party_id | - | - | PARTY_ID | Party Id of the signer, usually the Pool Id of the SPO | - | pool1pxaqe80sqpde7902er5kf6v0c7y0sv6d5g676766v2h829fvs3x | - |
run_interval | - | - | RUN_INTERVAL | Interval between two runtime cycles in ms | - | 60000 | ✔️ |
aggregator_endpoint | - | - | AGGREGATOR_ENDPOINT | Aggregator node endpoint | - | https://aggregator.pre-release-preview.api.mithril.network/aggregator | ✔️ |
data_stores_directory | - | - | DATA_STORES_DIRECTORY | Directory to store signer data (Stakes, Protocol initializers, ...) | - | ./mithril-signer/stores | ✔️ |
store_retention_limit | - | - | STORE_RETENTION_LIMIT | Maximum number of records in stores. If not set, no limit is set. | - | - | - |
kes_secret_key_path | - | - | KES_SECRET_KEY_PATH | Path to the Cardano KES Secret Key file. Mandatory in Pool Id Certification Mode where the owner is verified (experimental, soon to be stable & preferred mode) | - | - | - |
operational_certificate_path | - | - | OPERATIONAL_CERTIFICATE_PATH | Path to the Cardano Operational Certificate file. Mandatory in Pool Id Certification Mode where the owner is verified (experimental, soon to be stable & preferred mode) | - | - | - |
era_reader_adapter_type | --era-reader-adapter-type | - | ERA_READER_ADAPTER_TYPE | Era reader adapter type that can be cardano-chain , file or bootstrap . | bootstrap | - | - |
era_reader_adapter_params | --era-reader-adapter-params | - | ERA_READER_ADAPTER_PARAMS | Era reader adapter params that is an optional JSON encoded parameters structure that is expected depending on the era_reader_adapter_type parameter | - | - | - |