closed when reading data, waiting on next header True")
-[denis-XP:cardano.node.ChainDB:Notice:22] [2024-11-14 10:45:01.00 UTC] Chain extended, new tip: d710c33fa606ae604b9de61eb10e83cd937ef4ab33cfb5afdce42e782b752a0a at slot 1572
-[denis-XP:cardano.node.Mempool:Info:30] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("tag",String "RisingEdge")])),("kind",String "TraceMempoolSynced")]
-[denis-XP:cardano.node.Mempool:Info:30] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("contents",Number 6.2125e-5),("tag",String "FallingEdgeWith")])),("kind",String "TraceMempoolSynced")]
----------------------------------------------------------------------
-
----------------------------------------------------------------------
-tail -n 5 ./node-pool2/node.log
----------------------------------------------------------------------
-[denis-XP:cardano.node.Mempool:Info:30] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("contents",Number 5.1172e-5),("tag",String "FallingEdgeWith")])),("kind",String "TraceMempoolSynced")]
-[denis-XP:cardano.node.ChainDB:Info:22] [2024-11-14 10:45:01.00 UTC] Block fits onto some fork: d710c33fa606ae604b9de61eb10e83cd937ef4ab33cfb5afdce42e782b752a0a at slot 1572
-[denis-XP:cardano.node.ChainDB:Notice:22] [2024-11-14 10:45:01.00 UTC] Switched to a fork, new tip: d710c33fa606ae604b9de61eb10e83cd937ef4ab33cfb5afdce42e782b752a0a at slot 1572
-[denis-XP:cardano.node.Mempool:Info:30] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("tag",String "RisingEdge")])),("kind",String "TraceMempoolSynced")]
-[denis-XP:cardano.node.Mempool:Info:30] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("contents",Number 4.089e-5),("tag",String "FallingEdgeWith")])),("kind",String "TraceMempoolSynced")]
----------------------------------------------------------------------
-
-```
-
-## Interact with the Mithril aggregator by using the Mithril client
-
-### Step 1: Prepare some useful variables
-
-```bash
-# Aggregator API endpoint URL
-export AGGREGATOR_ENDPOINT=http://localhost:8080/aggregator
-
-# Digest of the latest produced cardano db snapshot for convenience of the demo
-# You can also modify this variable and set it to the value of the digest of a cardano db snapshot that you can retrieve at step 2
-export SNAPSHOT_DIGEST=latest
-```
-
-You can pick an online test aggregator directly from the [Mithril Explorer](https://mithril.network/explorer).
-
-### Step 2: Select a Cardano DB snapshot
-
-List the available snapshots with which you can bootstrap a Cardano node:
-
-```bash
-AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client cardano-db snapshot list
-```
-
-You will see a list of snapshots:
-
-```bash
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-| Epoch | Immutable | Network | Digest | Size | Locations | Created |
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-| 539 | 10787 | preview | db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667 | 2323485648 | 1 | 2024-04-16 12:56:22.170174972 UTC |
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-| 539 | 10786 | preview | 6af5dac31e7697c4481426712742f4d6391aea0a5b1df145e08e9eaa105af4a5 | 2323875790 | 1 | 2024-04-16 11:44:25.583804349 UTC |
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-| 539 | 10785 | preview | 39770647f027a214ac955668dffe4d6d51b9cf67798041de1b003b21ef2208da | 2323295044 | 1 | 2024-04-16 10:31:26.056746652 UTC |
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-| 539 | 10784 | preview | 9ce64187cb6af25266563e039e8d15962d281482979df94e3ac5c5ca6a914eea | 2323079205 | 1 | 2024-04-16 09:08:14.605224999 UTC |
-+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+-----------------------------------+
-
-```
-
-### Step 3: Show Cardano DB snapshot details
-
-To get more details from a specific snapshot (optional), run:
-
-```bash
-AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client cardano-db snapshot show $SNAPSHOT_DIGEST
-```
-
-You will see more information about the snapshot:
-
-```bash
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Epoch | 539 |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Immutable File Number | 10787 |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Network | preview |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Digest | db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667 |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Size | 2323485648 |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Cardano node version | 10.7.1 |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Location | https://storage.googleapis.com/cdn.aggregator.testing-preview.api.mithril.network/preview-e539-i10787.db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667.tar.zst |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Created | 2024-04-16 12:56:22.170174972 UTC |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Compression Algorithm | Zstandard |
-+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-```
-
-### Step 4: Download and verify the selected Cardano DB snapshot
-
-To download the selected snapshot from the remote location to your remote location, run:
-
-```bash
-AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client cardano-db download $SNAPSHOT_DIGEST
-```
-
-You will see that the certificate chain is validated to ensure the issued certificate is genuine and then the selected snapshot archive is downloaded, unpacked and verified against the corresponding certificate.
-
-```bash
-1/7 - Checking local disk info…
-2/7 - Fetching the certificate and verifying the certificate chain…
-3/7 - Downloading and unpacking the cardano db snapshot
-4/7 - Downloading and verifying digests…
-5/7 - Verifying the cardano database
-6/7 - Computing the cardano db snapshot message
-7/7 - Verifying the cardano db signature…
-Cardano database snapshot 'bfd6621886fe1d3810e1ffb5e366c1688f9cc2ac1ee6aa40eb99ab28f0cc1fd6' archives have been successfully unpacked. Immutable files have been successfully verified with Mithril.
-
- Files in the directory 'db' can be used to run a Cardano node with version >= 10.7.1.
-
- If you are using Cardano Docker image, you can restore a Cardano Node with:
-
- docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/bfd6621886fe1d3810e1ffb5e366c1688f9cc2ac1ee6aa40eb99ab28f0cc1fd6/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.7.1
-```
diff --git a/docs/website/versioned_docs/version-maintained/manual/getting-started/bootstrap-cardano-node.md b/docs/website/versioned_docs/version-maintained/manual/getting-started/bootstrap-cardano-node.md
index 2e33dd33151..b8d43921436 100644
--- a/docs/website/versioned_docs/version-maintained/manual/getting-started/bootstrap-cardano-node.md
+++ b/docs/website/versioned_docs/version-maintained/manual/getting-started/bootstrap-cardano-node.md
@@ -461,7 +461,7 @@ You will see more information about the snapshot:
+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Size | 3.14 GiB |
+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Cardano node version | 10.7.1 |
+| Cardano node version | 11.0.1 |
+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Location | https://storage.googleapis.com/cdn.aggregator.pre-release-preview.api.mithril.network/cardano-immutable-files-full/preview-e916-i18323.a1b5e6f43521fd9c5f55e3d6bf27dc4a62f43980681cb67e28cc40582a0d1974.tar.zst |
+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -506,16 +506,16 @@ You will see that the selected snapshot archive has been downloaded locally unpa
7/7 - Verifying the cardano db signature
Cardano database snapshot '188f65fc7d3bbf30a59ab05ce4ec6649cec96a1b51b909ca0d1702555e8605d0' archives have been successfully unpacked. Immutable files have been successfully verified with Mithril.
- Files in the directory 'db' can be used to run a Cardano node with version >= 10.7.1.
+ Files in the directory 'db' can be used to run a Cardano node with version >= 11.0.1.
If you are using the Cardano Docker image, you can restore a Cardano node with:
- docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/a1b5e6f43521fd9c5f55e3d6bf27dc4a62f43980681cb67e28cc40582a0d1974/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.7.1
+ docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/a1b5e6f43521fd9c5f55e3d6bf27dc4a62f43980681cb67e28cc40582a0d1974/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:11.0.1
Upgrade and replace the restored ledger state snapshot to 'LMDB' flavor by running the command:
- mithril-client tools utxo-hd snapshot-converter --db-directory db --cardano-node-version 10.7.1 --utxo-hd-flavor LMDB --commit
+ mithril-client tools utxo-hd snapshot-converter --db-directory db --cardano-node-version 11.0.1 --utxo-hd-flavor LMDB --commit
```
### Step 5 (optional): Convert the ledger state snapshot to another flavor
@@ -543,7 +543,7 @@ You can also replace `latest` with a specific Cardano node version tag which wil
Launch an empty Cardano node and make it live in minutes!
```bash
-docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="$(pwd)/data/testnet/$SNAPSHOT_DIGEST/db",target=/data/db/ -e NETWORK=$CARDANO_NETWORK ghcr.io/intersectmbo/cardano-node:10.7.1
+docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="$(pwd)/data/testnet/$SNAPSHOT_DIGEST/db",target=/data/db/ -e NETWORK=$CARDANO_NETWORK ghcr.io/intersectmbo/cardano-node:11.0.1
```
You will see the Cardano node start by validating the files ingested from the snapshot archive. Then, it will synchronize with the other network nodes and start adding blocks:
diff --git a/docs/website/versioned_docs/version-maintained/manual/operate/run-aggregator-node.md b/docs/website/versioned_docs/version-maintained/manual/operate/run-aggregator-node.md
index 953cc191a7d..18c44cd8f35 100644
--- a/docs/website/versioned_docs/version-maintained/manual/operate/run-aggregator-node.md
+++ b/docs/website/versioned_docs/version-maintained/manual/operate/run-aggregator-node.md
@@ -254,7 +254,7 @@ The configuration values for the `/opt/mithril/mithril-aggregator.env` file are
**Base configuration** values are:
-- `SIGNED_ENTITY_TYPES`: Comma-separated list of signed entity types to certify (eg, `MithrilStakeDistribution,CardanoImmutableFilesFull,CardanoStakeDistribution,CardanoDatabase,CardanoTransactions`)
+- `SIGNED_ENTITY_TYPES`: Comma-separated list of signed entity types to certify (eg, `MithrilStakeDistribution,CardanoStakeDistribution,CardanoDatabase,CardanoTransactions`)
- `SERVER_PORT`: Listening server port (default: `8080`)
- `PUBLIC_SERVER_URL`: Public URL of your aggregator (eg, `https://aggregator.example.com/aggregator`)
- `LEADER_AGGREGATOR_ENDPOINT`: Endpoint of the leader aggregator to synchronize with (required for follower aggregators, can be found in the [Network configurations](../getting-started/network-configurations.md))
@@ -906,16 +906,11 @@ Make sure your domain name points to your server's public IP address and that po
:::
-## Set up the DMQ node (unstable)
+## Set up the DMQ node (beta)
-:::danger
-
-The DMQ node setup is currently **unstable** and not suitable for production use.
-
-During the stabilization and ramp-up phase of the DMQ network:
+:::info
-- Signatures are still sent to the central aggregator (using the DMQ node is harmless)
-- This section is subject to frequent changes.
+The DMQ node setup is currently **beta**. During the stabilization and ramp-up phase of the DMQ network, signatures received through it may not be enough to reach the quorum and thus produce valid certificates.
:::
@@ -926,6 +921,7 @@ The DMQ node supports the implementation of a **Decentralized Message Queue** (D
- Here is the needed information to set up a DMQ node:
- `**YOUR_DMQ_NODE_SOCKET_PATH**`: replace with the path to the IPC file of the DMQ node
- `**YOUR_CARDANO_NODE_SOCKET_PATH**`: replace with the path to the IPC file of the Cardano node
+ - `**YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**`: replace with the path to the Shelley genesis file of the Cardano node
- `**YOUR_CARDANO_NETWORK_MAGIC**`: replace with the network magic number of your Cardano network
- `**YOUR_DMQ_NODE_PUBLIC_ADDRESS**`: replace with the **public** IP address of your DMQ node
- `**YOUR_DMQ_NODE_PORT**`: replace with the listening port of your DMQ node
@@ -940,6 +936,7 @@ Here is an **example** set of values for **pre-release-preview** that will be us
- **YOUR_DMQ_NODE_SOCKET_PATH**: `/dmq/ipc/node.socket`
- **YOUR_CARDANO_NODE_SOCKET_PATH**: `/cardano/ipc/node.socket`
+- **YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**: `/cardano/config/shelley-genesis.json`
- **YOUR_CARDANO_NETWORK_MAGIC**: `2`
- **YOUR_DMQ_NODE_PUBLIC_ADDRESS**: `34.14.65.160`
- **YOUR_DMQ_NODE_PORT**: `6161`
@@ -956,7 +953,7 @@ As we are still in a testing stage, we only support the `pre-release-preview` ne
You can use these parameters for the **pre-release-preview** network:
-- **DMQ_RELEASE_URL**: `https://github.com/IntersectMBO/dmq-node/releases/download/0.4.2.0/dmq-node-linux.tar.gz`
+- **DMQ_RELEASE_URL**: `https://github.com/IntersectMBO/dmq-node/releases/download/0.6.0.0/dmq-node-linux.tar.gz`
_These URLs may change in the future; please refer to this page for the latest released version of the DMQ node binary._
@@ -1026,6 +1023,7 @@ bash -c 'cat > /opt/dmq/config.json << EOF
{
"CardanoNetworkMagic": **YOUR_CARDANO_NETWORK_MAGIC**,
"CardanoNodeSocket": "**YOUR_CARDANO_NODE_SOCKET_PATH**",
+ "ShelleyGenesisFile": "**YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**",
"PeerSharing": true,
"PeerSelectionCounters": true,
"TraceOptions": {
@@ -1050,6 +1048,7 @@ bash -c 'cat > /opt/dmq/config.json << EOF
{
"CardanoNetworkMagic": 2,
"CardanoNodeSocket": "/cardano/ipc/node.socket",
+ "ShelleyGenesisFile": "/cardano/config/shelley-genesis.json",
"PeerSharing": true,
"PeerSelectionCounters": true,
"TraceOptions": {
diff --git a/docs/website/versioned_docs/version-maintained/manual/operate/run-signer-node.md b/docs/website/versioned_docs/version-maintained/manual/operate/run-signer-node.md
index bb31bd5cdfe..4a4d3ced4fc 100644
--- a/docs/website/versioned_docs/version-maintained/manual/operate/run-signer-node.md
+++ b/docs/website/versioned_docs/version-maintained/manual/operate/run-signer-node.md
@@ -893,16 +893,13 @@ sudo service netfilter-persistent save
:::
-## Set up the DMQ node (unstable)
+## Set up the DMQ node (beta)
-:::danger
-
-The DMQ node setup is currently **unstable** and not suitable for production use.
+:::info
-During the stabilization and ramp-up phase of the DMQ network:
+The DMQ node setup is currently **beta** and suitable for production use by SPOs.
-- Signatures are still sent to the central aggregator (using the DMQ node is harmless)
-- This section is subject to frequent changes.
+During the stabilization and ramp-up phase of the DMQ network, signatures are still sent to the leader aggregator (using the DMQ node is harmless).
:::
@@ -941,6 +938,7 @@ The Mithril signer must connect to the DMQ node socket that is on the **same mac
- Here is the needed information to set up a DMQ node:
- `**YOUR_DMQ_NODE_SOCKET_PATH**`: replace with the path to the IPC file of the DMQ node
- `**YOUR_CARDANO_NODE_SOCKET_PATH**`: replace with the path to the IPC file of the Cardano node
+ - `**YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**`: replace with the path to the Shelley genesis file of the Cardano node
- `**YOUR_CARDANO_NETWORK_MAGIC**`: replace with the network magic number of your Cardano network
- `**YOUR_DMQ_NODE_RELAY_INTERNAL_ADDRESS**`: replace with the **internal** IP address of your DMQ node on the relay machine
- `**YOUR_DMQ_NODE_RELAY_PUBLIC_ADDRESS**`: replace with the **public** IP address of your DMQ node on the relay machine
@@ -958,6 +956,7 @@ Here is an **example** set of values for **pre-release-preview** that will be us
- **YOUR_DMQ_NODE_SOCKET_PATH**: `/dmq/ipc/node.socket`
- **YOUR_CARDANO_NODE_SOCKET_PATH**: `/cardano/ipc/node.socket`
+- **YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**: `/cardano/config/shelley-genesis.json`
- **YOUR_CARDANO_NETWORK_MAGIC**: `2`
- **YOUR_DMQ_NODE_RELAY_INTERNAL_ADDRESS**: `192.168.1.30`
- **YOUR_DMQ_NODE_RELAY_PUBLIC_ADDRESS**: `34.14.65.160`
@@ -977,7 +976,7 @@ As we are still in a testing stage, we only support the `pre-release-preview` ne
You can use these parameters for the **pre-release-preview** network:
-- **DMQ_RELEASE_URL**: `https://github.com/IntersectMBO/dmq-node/releases/download/0.4.2.0/dmq-node-linux.tar.gz`
+- **DMQ_RELEASE_URL**: `https://github.com/IntersectMBO/dmq-node/releases/download/0.6.0.0/dmq-node-linux.tar.gz`
_These URLs may change in the future; please refer to this page for the latest released version of the DMQ node binary._
@@ -1047,6 +1046,7 @@ bash -c 'cat > /opt/dmq/config-relay.json << EOF
{
"CardanoNetworkMagic": **YOUR_CARDANO_NETWORK_MAGIC**,
"CardanoNodeSocket": "**YOUR_CARDANO_NODE_SOCKET_PATH**",
+ "ShelleyGenesisFile": "**YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**",
"PeerSharing": true,
"PeerSelectionCounters": true,
"TraceOptions": {
@@ -1071,6 +1071,7 @@ bash -c 'cat > /opt/dmq/config-relay.json << EOF
{
"CardanoNetworkMagic": 2,
"CardanoNodeSocket": "/cardano/ipc/node.socket",
+ "ShelleyGenesisFile": "/cardano/config/shelley-genesis.json",
"PeerSharing": true,
"PeerSelectionCounters": true,
"TraceOptions": {
@@ -1095,6 +1096,7 @@ bash -c 'cat > /opt/dmq/config-bp.json << EOF
{
"CardanoNetworkMagic": **YOUR_CARDANO_NETWORK_MAGIC**,
"CardanoNodeSocket": "**YOUR_CARDANO_NODE_SOCKET_PATH**",
+ "ShelleyGenesisFile": "**YOUR_CARDANO_SHELLEY_GENESIS_FILE_PATH**",
"PeerSharing": false,
"PeerSelectionCounters": true,
"TraceOptions": {
@@ -1119,6 +1121,7 @@ bash -c 'cat > /opt/dmq/config-bp.json << EOF
{
"CardanoNetworkMagic": 2,
"CardanoNodeSocket": "/cardano/ipc/node.socket",
+ "ShelleyGenesisFile": "/cardano/config/shelley-genesis.json",
"PeerSharing": false,
"PeerSelectionCounters": true,
"TraceOptions": {
@@ -1480,6 +1483,69 @@ More information about the recommended firewall configuration of the Cardano nod
:::
+### Declare your DMQ node as a ledger peer (CIP-155)
+
+:::info
+
+This step is **optional** but **recommended**. It allows other DMQ nodes of the Mithril network to discover your relay automatically through the Cardano ledger, instead of relying solely on the bootstrap peer.
+
+:::
+
+[CIP-155](https://cips.cardano.org/cip/CIP-0155) defines a registry of `SRV` record prefixes that decentralized protocols can use to publish their service endpoints on the Cardano ledger. By declaring an `SRV` record with the `_mithril._tcp` prefix on your pool relay domain, your DMQ relay node becomes discoverable as a **ledger peer** by any DMQ node that uses ledger peers.
+
+The declaration requires two steps:
+
+1. Publish an `SRV` record for your **relay** DMQ node under the `_mithril._tcp` prefix of your pool domain.
+2. Register your pool domain as a multi-host relay in your stake pool registration certificate.
+
+:::caution
+
+Only the **relay** DMQ node must be published as a ledger peer. The **block producer** DMQ node must **never** be exposed.
+
+Here is the needed information to declare your DMQ node as a ledger peer:
+
+- `**YOUR_SPO_DOMAIN_NAME**`: replace with the domain name registered as a multi-host relay in your stake pool registration certificate (for example `example.com`)
+- `**YOUR_DMQ_NODE_RELAY_PUBLIC_HOSTNAME**`: replace with the public hostname (A or AAAA record) of your DMQ relay node
+- `**YOUR_DMQ_NODE_RELAY_PORT**`: replace with the listening port of your DMQ relay node.
+
+:::
+
+#### Publish the SRV record
+
+Add an `SRV` record to the DNS zone of your pool domain so that `_mithril._tcp.**YOUR_SPO_DOMAIN_NAME**` points to your DMQ relay node:
+
+```
+_mithril._tcp.**YOUR_SPO_DOMAIN_NAME**. 86400 IN SRV 10 5 **YOUR_DMQ_NODE_RELAY_PORT** **YOUR_DMQ_NODE_RELAY_PUBLIC_HOSTNAME**.
+```
+
+:::tip
+
+Here is an example for the pool domain `example.com`, with the DMQ relay node reachable at `cardano.example.com` on port `6161`:
+
+```
+_mithril._tcp.example.com. 86400 IN SRV 10 5 6161 cardano.example.com.
+```
+
+The values after `SRV` are the standard priority (`10`), weight (`5`), port (`6161`), and target hostname (`cardano.example.com`). More information is available in [RFC 2782](https://datatracker.ietf.org/doc/html/rfc2782).
+
+:::
+
+#### Register the pool domain as a multi-host relay
+
+Register `**YOUR_SPO_DOMAIN_NAME**` as a multi-host relay of your stake pool so that it is published on the Cardano ledger:
+
+```bash
+cardano-cli latest stake-pool registration-certificate \
+ ... \
+ --multi-host-pool-relay **YOUR_SPO_DOMAIN_NAME**
+```
+
+:::info
+
+The `_cardano._tcp` prefix is used by the Cardano node to discover Cardano relays on the same domain, while the `_mithril._tcp` prefix is used by the DMQ node to discover Mithril DMQ relays. Both prefixes can coexist on the same pool domain.
+
+:::
+
## Verify the Mithril signer deployment
:::tip
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-blocks-and-transactions.md b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-blocks-and-transactions.md
index 5db2d92f9dc..22f299fe99d 100644
--- a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-blocks-and-transactions.md
+++ b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-blocks-and-transactions.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 5
+sidebar_position: 4
sidebar_label: Cardano blocks and transactions
---
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database-v2.md b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database-v2.md
deleted file mode 100644
index a15d15aaa7a..00000000000
--- a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database-v2.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-sidebar_position: 4
-sidebar_label: Cardano node database v2
----
-
-# Cardano node database v2
-
-:::info
-
-- This new incremental certification will supersede the current [certification](./cardano-node-database.md) process for the Cardano node internal database.
-- The rollout of this new certification is detailed in this [blog post](https://mithril.network/doc/dev-blog/2025/06/17/client-cli-cardano-database-backends).
-
-:::
-
-The Mithril protocol supports the incremental certification of the **Cardano node internal database**, enabling fast bootstrapping of a Cardano node on a **specific range of immutable files**. This is particularly useful for full-node wallets, SPOs, and layer 2 protocols that need to operate full Cardano nodes and want to synchronize them quickly after an offline period.
-
-To achieve this, Mithril signers and aggregators independently compute a message representing the immutable files of the Cardano node internal database and apply the Mithril protocol to jointly sign it.
-
-A natural structure for the message is a **Merkle tree**, which:
-
-- Can be succinctly represented by its **Merkle root** (the signed message)
-- Enables membership proof of an immutable file in the set by providing the **Merkle path** from the immutable file to the root.
-
-:::info
-
-The Cardano node internal database:
-
-- Exceeds `150 GB` on the Cardano mainnet
-- Holds less than `20,000` immutable files on the Cardano mainnet
-- Can be fully bootstrapped in `~20 minutes` with Mithril
-- Takes over `24 hours` without Mithril.
-
-:::
-
-## Mithril certification
-
-[](./images/cardano-node-database-v2/end-to-end-process.jpg)
-
-End-to-end certification for Cardano node database
-
-:::info
-
-Learn about the Mithril certification steps [here](./README.mdx).
-
-:::
-
-### Message computation
-
-The message is the root of the Merkle tree composed of the hash of the immutable files in the Cardano node internal database:
-
-- The hash of the immutable files is computed with `SHA256` of their binary content
-- The last immutable file, the ledger state, and the volatile cannot be signed as the Cardano node does not deterministically compute them.
-
-The message computation is the same on the signers and the aggregators.
-
-[](./images/cardano-node-database-v2/message.jpg)
-
-Message creation on the signers and aggregators
-
-:::info
-
-The Merkle tree inner nodes are computed with the `BLAKE2s-256` hash function: the child bytes are concatenated and hashed to compute the parent node.
-
-:::
-
-### Authenticity verification
-
-Since the number of immutable files in the Cardano node’s internal database is small, computing the Merkle tree is fast and can be performed on the client side.
-
-The verification process for a subset of immutable files in the Cardano internal database operates as follows:
-
-- The client downloads data from one or more untrusted sources (eg, an aggregator or a cloud service):
- - A compressed artifact of the partial range of immutable files to restore
- - A map of the digests of immutable files in the Cardano node internal database
-- The client computes the same Merkle tree as the signers and aggregators using the fetched digests
-- The client computes a Merkle proof of membership for the downloaded immutable files, ensuring that:
- - The proof is derived from the computed Merkle tree
- - The proof is valid
- - The Merkle root is signed by a valid Mithril certificate.
-
-[](./images/cardano-node-database-v2/proof-client.jpg)
-
-Proof creation on the clients
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database.md b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database.md
index 35aec688e24..2d6edb97843 100644
--- a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database.md
+++ b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/cardano-node-database.md
@@ -5,32 +5,31 @@ sidebar_label: Cardano node database
# Cardano node database
-:::info
-
-- This certification will be superseded by a new incremental [certification](./cardano-node-database-v2.md) process for the Cardano node internal database.
-- The rollout of this new certification is detailed in this [blog post](https://mithril.network/doc/dev-blog/2025/06/17/client-cli-cardano-database-backends).
+The Mithril protocol supports the incremental certification of the **Cardano node internal database**, enabling fast bootstrapping of a Cardano node on a **specific range of immutable files**. This is particularly useful for full-node wallets, SPOs, and layer 2 protocols that need to operate full Cardano nodes and want to synchronize them quickly after an offline period.
-:::
+To achieve this, Mithril signers and aggregators independently compute a message representing the immutable files of the Cardano node internal database and apply the Mithril protocol to jointly sign it.
-The Mithril protocol supports the certification of the **Cardano node internal database**, enabling fast bootstrapping of a Cardano node. This is particularly useful for full-node wallets, SPOs, and layer 2 protocols that need to operate full Cardano nodes.
+A natural structure for the message is a **Merkle tree**, which:
-To achieve this, Mithril signers and aggregators independently compute a message representing the immutable files of the Cardano node internal database and apply the Mithril protocol to jointly sign it.
+- Can be succinctly represented by its **Merkle root** (the signed message)
+- Enables membership proof of an immutable file in the set by providing the **Merkle path** from the immutable file to the root.
:::info
The Cardano node internal database:
- Exceeds `150 GB` on the Cardano mainnet
-- Can be bootstrapped in `~20 minutes` with Mithril
+- Holds less than `20,000` immutable files on the Cardano mainnet
+- Can be fully bootstrapped in `~20 minutes` with Mithril
- Takes over `24 hours` without Mithril.
:::
## Mithril certification
-[](./images/cardano-node-database/end-to-end-process.jpg)
+[](images/cardano-node-database/end-to-end-process.jpg)
-End-to-end certification for Cardano transactions
+End-to-end certification for Cardano node database
:::info
@@ -40,25 +39,38 @@ Learn about the Mithril certification steps [here](./README.mdx).
### Message computation
-The message is the hash of the concatenation of the immutable files in the Cardano node internal database:
+The message is the root of the Merkle tree composed of the hash of the immutable files in the Cardano node internal database:
- The hash of the immutable files is computed with `SHA256` of their binary content
-- The message is computed with `SHA256` of the concatenation of the hashes of the immutable files
- The last immutable file, the ledger state, and the volatile cannot be signed as the Cardano node does not deterministically compute them.
The message computation is the same on the signers and the aggregators.
-[](./images/cardano-node-database/message.jpg)
+[](images/cardano-node-database/message.jpg)
Message creation on the signers and aggregators
+:::info
+
+The Merkle tree inner nodes are computed with the `BLAKE2s-256` hash function: the child bytes are concatenated and hashed to compute the parent node.
+
+:::
+
### Authenticity verification
-The verification process operates on the full Cardano node internal database:
+Since the number of immutable files in the Cardano node’s internal database is small, computing the Merkle tree is fast and can be performed on the client side.
+
+The verification process for a subset of immutable files in the Cardano internal database operates as follows:
-- The client downloads a compressed artifact from an untrusted source (eg, an aggregator or a cloud service)
-- The client computes the message from the downloaded artifact and verifies that it is signed by a valid Mithril certificate.
+- The client downloads data from one or more untrusted sources (eg, an aggregator or a cloud service):
+ - A compressed artifact of the partial range of immutable files to restore
+ - A map of the digests of immutable files in the Cardano node internal database
+- The client computes the same Merkle tree as the signers and aggregators using the fetched digests
+- The client computes a Merkle proof of membership for the downloaded immutable files, ensuring that:
+ - The proof is derived from the computed Merkle tree
+ - The proof is valid
+ - The Merkle root is signed by a valid Mithril certificate.
-[](./images/cardano-node-database/message.jpg)
+[](images/cardano-node-database/proof-client.jpg)
-Message creation on the clients (same as on signers and aggregators)
+Proof creation on the clients
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/end-to-end-process.jpg b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/end-to-end-process.jpg
deleted file mode 100644
index a15271df4ce..00000000000
Binary files a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/end-to-end-process.jpg and /dev/null differ
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/message.jpg b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/message.jpg
deleted file mode 100644
index 399267d6f6f..00000000000
Binary files a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/message.jpg and /dev/null differ
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/end-to-end-process.jpg b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/end-to-end-process.jpg
index 762d4b9c63f..a15271df4ce 100644
Binary files a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/end-to-end-process.jpg and b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/end-to-end-process.jpg differ
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/message.jpg b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/message.jpg
index 8cfe8c8e223..399267d6f6f 100644
Binary files a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/message.jpg and b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/message.jpg differ
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/proof-client.jpg b/docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/proof-client.jpg
similarity index 100%
rename from docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database-v2/proof-client.jpg
rename to docs/website/versioned_docs/version-maintained/mithril/advanced/mithril-certification/images/cardano-node-database/proof-client.jpg
diff --git a/docs/website/versioned_docs/version-maintained/mithril/advanced/threat-model.md b/docs/website/versioned_docs/version-maintained/mithril/advanced/threat-model.md
index 2fa3166fef6..8878b1a7173 100644
--- a/docs/website/versioned_docs/version-maintained/mithril/advanced/threat-model.md
+++ b/docs/website/versioned_docs/version-maintained/mithril/advanced/threat-model.md
@@ -33,7 +33,7 @@ The system consists of three main components: signers, aggregators, and clients.
- **Mithril signers** certify Cardano chain data by using a Mithril signing key. They must have access to both a trusted `cardano-node` and the Mithril signing key to operate.
- **Mithril signing keys** are rotated every epoch and require certification by the Cardano KES key. Therefore, Mithril signers must have access to the KES key to register a signing key for each epoch.
-- **Cardano KES keys** are also used by the block-producing `cardano-node` and are typically located on the same machine that produces blocks. These keys must be evolved every 36 hours, although they can be rotated from a root key when needed. For more details, see [KES period documentation](https://github.com/input-output-hk/cardano-node-wiki/blob/main/docs/stake-pool-operations/7_KES_period.md).
+- **Cardano KES keys** are also used by the block-producing `cardano-node` and are typically located on the same machine that produces blocks. These keys must be evolved every 36 hours, although they can be rotated from a root key when needed. For more details, see [KES period documentation](https://github.com/IntersectMBO/cardano-node-wiki/blob/main/docs/stake-pool-operations/7_KES_period.md).
:::info To do
@@ -118,7 +118,7 @@ For each asset, we first identify which part of the **CIA triad** (Confidentiali
Capturing KES private keys allows an attacker to impersonate a registered SPO on-chain and produce blocks on its behalf until the keys are rotated.
- **Integrity**: Yes
- Rotating a compromised KES key is a time-consuming process that can be carried out even if the associated KES period has not fully passed. See [KES period docs](https://github.com/input-output-hk/cardano-node-wiki/blob/main/docs/stake-pool-operations/7_KES_period.md).
+ Rotating a compromised KES key is a time-consuming process that can be carried out even if the associated KES period has not fully passed. See [KES period docs](https://github.com/IntersectMBO/cardano-node-wiki/blob/main/docs/stake-pool-operations/7_KES_period.md).
- **Availability**: Yes
If the KES key is unavailable, signing cannot proceed.
diff --git a/docs/website/versioned_docs/version-maintained/networks-matrix.md b/docs/website/versioned_docs/version-maintained/networks-matrix.md
index 1da08e935e3..15b045df659 100644
--- a/docs/website/versioned_docs/version-maintained/networks-matrix.md
+++ b/docs/website/versioned_docs/version-maintained/networks-matrix.md
@@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem';
Here is an updated list of all **Mithril networks**, including their configurations and current statuses:
-> Last update: 01/29/2026
+> Last update: 06/08/2026
@@ -21,9 +21,12 @@ Here is an updated list of all **Mithril networks**, including their configurati
| **Mithril network** | `release-mainnet` |
| **Cardano network** | `mainnet` |
| **Cardano magic Id** | `-` |
-| **Cardano node versions** | `10.6`, `10.7` |
-| **Supported** | Yes :heavy_check_mark: |
-| **Status** | Beta 🟢 |
+| **Cardano node versions** | `10.7`, `11.0` |
+| **Mithril status** | Stable (signer) 🟢 / Beta (aggregator/client) 🟢 |
+| **DMQ magic Id** | `2912307721` |
+| **DMQ node versions** | `0.6.0.0` |
+| **DMQ bootstrap peers** | `35.233.75.24:6161` |
+| **DMQ status** | Beta 🟢 |
| **Aggregator endpoint** | `https://aggregator.release-mainnet.api.mithril.network/aggregator` [:arrow_upper_right:](https://aggregator.release-mainnet.api.mithril.network/aggregator) |
| **Genesis verification key** | `https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-mainnet/genesis.vkey` [:arrow_upper_right:](https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-mainnet/genesis.vkey) |
| **Era reader adapter type** | `cardano-chain` |
@@ -42,9 +45,12 @@ Here is an updated list of all **Mithril networks**, including their configurati
| **Mithril network** | `release-preprod` [:mag_right:](https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.release-preprod.api.mithril.network%2Faggregator) |
| **Cardano network** | `preprod` |
| **Cardano magic Id** | `1` |
-| **Cardano node versions** | `10.6`, `10.7` |
-| **Supported** | Yes :heavy_check_mark: |
-| **Status** | Release 🟢 |
+| **Cardano node versions** | `10.7`, `11.0` |
+| **Mithril status** | Stable 🟢 |
+| **DMQ magic Id** | `2147483649` |
+| **DMQ node versions** | `0.6.0.0` |
+| **DMQ bootstrap peers** | `34.79.19.73:6161`,`34.79.19.73:11002` |
+| **DMQ status** | Beta 🟢 |
| **Aggregator endpoint** | `https://aggregator.release-preprod.api.mithril.network/aggregator` [:arrow_upper_right:](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` [:arrow_upper_right:](https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey) |
| **Era reader adapter type** | `cardano-chain` |
@@ -63,13 +69,12 @@ Here is an updated list of all **Mithril networks**, including their configurati
| **Mithril network** | `pre-release-preview` [:mag_right:](https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.pre-release-preview.api.mithril.network%2Faggregator) |
| **Cardano network** | `preview` |
| **Cardano magic Id** | `2` |
-| **Cardano node versions** | `10.6`, `10.7` |
+| **Cardano node versions** | `10.7`, `11.0` |
+| **Mithril status** | Pre-release 🟠 |
| **DMQ magic Id** | `2147483650` |
-| **DMQ node versions** | `0.4.2.0` |
+| **DMQ node versions** | `0.6.0.0` |
| **DMQ bootstrap peers** | `34.76.22.193:6161`,`34.76.22.193:11002` |
-| **DMQ status** | Unstable 🔴 |
-| **Supported** | Yes :heavy_check_mark: |
-| **Status** | Pre-release 🟠 |
+| **DMQ status** | Beta 🟢 |
| **Aggregator endpoint** | `https://aggregator.pre-release-preview.api.mithril.network/aggregator` [:arrow_upper_right:](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` [:arrow_upper_right:](https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey) |
| **Era reader adapter type** | `cardano-chain` |
@@ -93,13 +98,12 @@ This network is only for the developers of the Mithril Core team.
| **Mithril network** | `testing-preview` [:mag_right:](https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.testing-preview.api.mithril.network%2Faggregator) |
| **Cardano network** | `preview` |
| **Cardano magic Id** | `2` |
-| **Cardano node versions** | `10.6`, `10.7` |
+| **Cardano node versions** | `10.7`, `11.0` |
+| **Mithril status** | Unstable 🔴 |
| **DMQ magic Id** | `2147483650` |
-| **DMQ node versions** | `0.4.2.0` |
+| **DMQ node versions** | `0.6.0.0` |
| **DMQ bootstrap peers** | `34.38.152.55:6161`,`34.38.152.55:11001`,`34.38.152.55:11002`,`34.38.152.55:11003` |
| **DMQ status** | Unstable 🔴 |
-| **Supported** | Yes :heavy_check_mark: |
-| **Status** | Unstable 🔴 |
| **Aggregator endpoint** | `https://aggregator.testing-preview.api.mithril.network/aggregator` [:arrow_upper_right:](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` [:arrow_upper_right:](https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey) |
| **Era reader adapter type** | `cardano-chain` |
diff --git a/docs/website/versioned_docs/version-maintained/use-cases/bridges.mdx b/docs/website/versioned_docs/version-maintained/use-cases/bridges.mdx
index 3c10d6ef87a..eae4cc03fe6 100644
--- a/docs/website/versioned_docs/version-maintained/use-cases/bridges.mdx
+++ b/docs/website/versioned_docs/version-maintained/use-cases/bridges.mdx
@@ -41,7 +41,7 @@ A [WASM package](https://www.npmjs.com/package/@mithril-dev/mithril-client-wasm)
The core flow is straightforward:
1. Observe the lock or burn transaction on Cardano
-2. Query the Mithril aggregator for a transaction proof once the tx hash is known
+2. Query the Mithril aggregator for a transaction proof of membership once the transaction hash is known
3. Verify the proof against the current Mithril certificate chain
4. Apply your finality criteria, then authorize the corresponding action on the destination chain.
diff --git a/docs/website/versioned_sidebars/version-maintained-sidebars.json b/docs/website/versioned_sidebars/version-maintained-sidebars.json
index 41247e4ca2d..123d3ff570e 100644
--- a/docs/website/versioned_sidebars/version-maintained-sidebars.json
+++ b/docs/website/versioned_sidebars/version-maintained-sidebars.json
@@ -25,17 +25,26 @@
{
"type": "category",
"label": "Wallets",
- "link": { "type": "doc", "id": "use-cases/wallets/index" },
+ "link": {
+ "type": "doc",
+ "id": "use-cases/wallets/index"
+ },
"collapsed": false,
"items": [
- { "type": "doc", "id": "use-cases/wallets/light-wallets" },
{
"type": "doc",
- "id": "case-studies/daedalus",
- "label": "Case Study: Daedalus Wallet"
+ "id": "use-cases/wallets/light-wallets"
+ },
+ {
+ "type": "doc",
+ "label": "Case Study: Daedalus Wallet",
+ "id": "case-studies/daedalus"
}
]
},
- { "type": "doc", "id": "use-cases/bridges" }
+ {
+ "type": "doc",
+ "id": "use-cases/bridges"
+ }
]
}