diff --git a/docs/website/openapi.current.yaml b/docs/website/openapi.current.yaml index dcb3c61245c..80d18af6e3c 100644 --- a/docs/website/openapi.current.yaml +++ b/docs/website/openapi.current.yaml @@ -4,7 +4,7 @@ info: # `mithril-common/src/lib.rs` file. If you plan to update it # here to reflect changes in the API, please also update the constant in the # Rust file. - version: 0.1.61 + version: 0.1.65 title: Mithril Aggregator Server description: | The REST API provided by a Mithril Aggregator Node in a Mithril network. @@ -205,88 +205,6 @@ paths: schema: $ref: "#/components/schemas/Error" - /artifact/snapshots: - get: - summary: Get most recent snapshots - description: | - Returns the list of the most recent snapshots - responses: - "200": - description: snapshots found - content: - application/json: - schema: - $ref: "#/components/schemas/SnapshotListMessage" - default: - description: snapshots retrieval error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - /artifact/snapshot/{digest}: - get: - summary: Get snapshot information - description: | - Returns the information of a snapshot and where to retrieve its binary content - parameters: - - name: digest - in: path - description: Digest of the snapshot to retrieve - required: true - schema: - type: string - format: bytes - examples: - - "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732" - responses: - "200": - description: snapshot found - content: - application/json: - schema: - $ref: "#/components/schemas/SnapshotMessage" - "404": - description: snapshot not found - default: - description: snapshot retrieval error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - /artifact/snapshot/{digest}/download: - get: - summary: Download the snapshot - description: | - Returns the snapshot archive binary content - parameters: - - name: digest - in: path - description: Digest of the snapshot to download - required: true - schema: - type: string - format: bytes - examples: - - "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732" - responses: - "200": - description: snapshot found - content: - application/gzip: - schema: - type: string - format: binary - "404": - description: snapshot not found - default: - description: snapshot retrieval error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /artifact/cardano-database: get: summary: Get most recent Cardano database snapshots @@ -836,32 +754,6 @@ paths: application/json: schema: $ref: "#/components/schemas/Error" - /statistics/snapshot: - post: - summary: Records snapshot download event - description: Records snapshot download event - requestBody: - description: Downloaded snapshot message - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/SnapshotDownloadMessage" - responses: - "201": - description: Event successfully recorded - "400": - description: Record event bad request - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - default: - description: Record event error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" /statistics/cardano-database/immutable-files-restored: post: @@ -1068,7 +960,7 @@ components: "signed_entity_types": [ "MithrilStakeDistribution", - "CardanoImmutableFilesFull", + "CardanoDatabase", "CardanoTransactions" ], "aggregate_signature_type": "Concatenation", @@ -1105,10 +997,9 @@ components: enum: - MithrilStakeDistribution - CardanoStakeDistribution - - CardanoImmutableFilesFull + - CardanoDatabase - CardanoTransactions - CardanoBlocksTransactions - - CardanoDatabase EpochSettingsMessage: description: Epoch settings @@ -1267,7 +1158,7 @@ components: "available_signed_entity_types": [ "MithrilStakeDistribution", - "CardanoImmutableFilesFull", + "CardanoDatabase", "CardanoTransactions", "CardanoBlocksTransactions" ] @@ -1862,6 +1753,14 @@ components: description: Aggregate verification key used to verify the multi signature type: string format: bytes + aggregate_verification_key_snark: + description: | + Hex-encoded SNARK-friendly aggregate verification key, emitted alongside + `aggregate_verification_key` on Lagrange-era certificates. Omitted on + Pythagoras and pre-Lagrange certificates: clients that ignore this field + remain compatible with the pre-Lagrange wire format. + type: string + format: bytes multi_signature: description: STM multi signature created from a quorum of single signatures from the signers type: string @@ -1870,6 +1769,14 @@ components: description: Genesis signature created to bootstrap the certificate chain with the Cardano Genesis Keys type: string format: bytes + genesis_schnorr_signature: + description: | + Hex-encoded SNARK-friendly Schnorr genesis signature, emitted alongside + `genesis_signature` on Lagrange-era genesis certificates. Omitted or empty + on Pythagoras and non-genesis certificates: clients that ignore this field + remain compatible with the pre-Lagrange wire format. + type: string + format: bytes examples: - { "hash": "1324", @@ -1917,209 +1824,6 @@ components: "genesis_signature": "" } - SnapshotListMessage: - description: SnapshotListMessage represents a list of snapshots - type: array - items: - $ref: "#/components/schemas/Snapshot" - examples: - - [ - { - "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "network": "mainnet", - "beacon": { "epoch": 329, "immutable_file_number": 7060000 }, - "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - "size": 26058531636, - "ancillary_size": 123456789, - "created_at": "2022-07-21T17:32:28Z", - "locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - ], - "ancillary_locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732.ancillary.tar.zst" - ] - } - ] - - Snapshot: - description: Snapshot represents a snapshot file and its metadata - type: object - additionalProperties: false - required: - - digest - - network - - beacon - - certificate_hash - - size - - created_at - - locations - properties: - digest: - description: Digest that is signed by the signer participants - type: string - format: bytes - network: - description: Cardano network - type: string - beacon: - $ref: "#/components/schemas/CardanoDbBeacon" - certificate_hash: - description: Hash of the associated certificate - type: string - format: bytes - size: - description: Size of the immutables snapshot file in Bytes - type: integer - format: int64 - ancillary_size: - description: Size of the ancillary snapshot file in Bytes - type: integer - format: int64 - created_at: - description: Date and time at which the snapshot was created - type: string - format: date-time - locations: - description: Locations where the snapshot of the immutable files can be retrieved - type: array - items: - type: string - ancillary_locations: - description: Locations where the snapshot of the ancillary files can be retrieved - type: array - items: - type: string - compression_algorithm: - description: Compression algorithm for the snapshot archive - type: string - cardano_node_version: - description: Version of the Cardano node which is used to create snapshot archives. - type: string - examples: - - { - "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "network": "mainnet", - "beacon": { "epoch": 329, "immutable_file_number": 7060000 }, - "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - "size": 26058531636, - "ancillary_size": 123456789, - "created_at": "2022-07-21T17:32:28Z", - "locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - ], - "ancillary_locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732.ancillary.tar.zst" - ], - "compression_algorithm": "zstandard", - "cardano_node_version": "1.0.0" - } - - SnapshotMessage: - description: This message represents a snapshot file and its metadata. - allOf: - - $ref: "#/components/schemas/Snapshot" - examples: - - { - "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "network": "mainnet", - "beacon": { "epoch": 329, "immutable_file_number": 7060000 }, - "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - "size": 26058531636, - "ancillary_size": 123456789, - "created_at": "2022-07-21T17:32:28Z", - "locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - ], - "ancillary_locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732.ancillary.tar.zst" - ], - "compression_algorithm": "zstandard", - "cardano_node_version": "1.0.0" - } - - SnapshotDownloadMessage: - description: SnapshotDownloadMessage represents a downloaded snapshot event - type: object - additionalProperties: false - required: - - digest - - network - - beacon - - size - - locations - - compression_algorithm - - cardano_node_version - properties: - digest: - description: Digest that is signed by the signer participants - type: string - format: bytes - network: - description: Cardano network - type: string - beacon: - $ref: "#/components/schemas/CardanoDbBeacon" - size: - description: Size of the immutables snapshot file in Bytes - type: integer - format: int64 - ancillary_size: - description: Size of the ancillary snapshot file in Bytes - type: integer - format: int64 - locations: - description: Locations where the snapshot of the immutable files can be retrieved - type: array - items: - type: string - ancillary_locations: - description: Locations where the snapshot of the ancillary files can be retrieved - type: array - items: - type: string - compression_algorithm: - description: Compression algorithm for the snapshot archive - type: string - cardano_node_version: - description: Version of the Cardano node which is used to create snapshot archives. - type: string - examples: - - { - "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "network": "mainnet", - "beacon": { "epoch": 329, "immutable_file_number": 7060000 }, - "size": 26058531636, - "ancillary_size": 123456789, - "locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - ], - "ancillary_locations": - [ - "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732.ancillary.tar.zst" - ], - "compression_algorithm": "zstandard", - "cardano_node_version": "1.0.0" - } - CardanoDatabaseImmutableFilesRestoredMessage: description: CardanoDatabaseImmutableFilesRestoredMessage represents a Cardano database immutable files restored event type: object diff --git a/docs/website/root/manual/develop/references.md b/docs/website/root/manual/develop/references.md index 18b24991939..10c762a6a79 100644 --- a/docs/website/root/manual/develop/references.md +++ b/docs/website/root/manual/develop/references.md @@ -33,7 +33,7 @@ To learn more about the **Mithril protocol**, please refer to the [about Mithril | **Mithril doc** | An API that generates markdown documentation for a crate command lines arguments. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-doc) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_doc/index.html) | - | - | | **Mithril doc derive** | A macro implementation used by **Mithril doc**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-doc-derive) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_doc_derive/index.html) | - | - | | **Mithril persistence** | The **persistence** library used by **Mithril network** nodes. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-persistence) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_persistence/index.html) | - | - | -| **Cardano devnet** | The private **Cardano network** used to test a **Mithril network**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/cardano-devnet) | - | - | - | -| **Mithril end to end** | The tool used to run test scenarios against a **Mithril devnet**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-explorer) | - | - | - | -| **Mithril explorer** | The explorer website that connects to a **Mithril aggregator** and displays its **certificate chain**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-end-to-end) | - | - | - | -| **Protocol simulation** | A simple CLI that helps understand how the **Mithril protocol** works and the role of its protocol parameters. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/demo/protocol-demo) | - | - | - | +| **Cardano devnet** | The private **Cardano network** used to test a **Mithril network**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-test-lab/cardano-devnet) | - | - | - | +| **Mithril end to end** | The tool used to run test scenarios against a **Mithril devnet**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-explorer) | - | - | - | +| **Mithril explorer** | The explorer website that connects to a **Mithril aggregator** and displays its **certificate chain**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-test-lab/mithril-end-to-end) | - | - | - | +| **Protocol simulation** | A simple CLI that helps understand how the **Mithril protocol** works and the role of its protocol parameters. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/demo/protocol-demo) | - | - | - | diff --git a/docs/website/root/use-cases/bridges.mdx b/docs/website/root/use-cases/bridges.mdx index f270d29f187..eae4cc03fe6 100644 --- a/docs/website/root/use-cases/bridges.mdx +++ b/docs/website/root/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 of membership once the transation 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_docs/version-maintained/case-studies/daedalus.mdx b/docs/website/versioned_docs/version-maintained/case-studies/daedalus.mdx index c4aef897842..6d5c59a4446 100644 --- a/docs/website/versioned_docs/version-maintained/case-studies/daedalus.mdx +++ b/docs/website/versioned_docs/version-maintained/case-studies/daedalus.mdx @@ -23,7 +23,7 @@ sidebar_label: "Case Study: Daedalus Wallet" ## The problem -Daedalus runs a full Cardano node locally. On first install, that node must sync the entire Cardano blockchain from genesis, replaying every block. Even on modern hardware, this takes many hours and significant bandwidth, historically a major friction point for users picking up a full-node wallet. +Daedalus runs a full Cardano node locally. On first install, that node must sync the entire Cardano blockchain from genesis, replaying every block. Even on modern hardware, this usually takes more than 24-36 hours, historically a major friction point for users picking up a full-node wallet. ## How Mithril helps diff --git a/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-aggregator.md b/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-aggregator.md index 666345435c4..c971d15fd1b 100644 --- a/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-aggregator.md +++ b/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-aggregator.md @@ -527,7 +527,7 @@ Here is a list of the available parameters for the serve command: | `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 | - | - | - | | `ancillary_files_signer_config` | - | - | `ANCILLARY_FILES_SIGNER_CONFIG` | Configuration of the ancillary files signer

Can either be a secret key or a key stored in a Google Cloud Platform KMS account.

**IMPORTANT**: The cryptographic scheme used is ED25519 | - | - secret-key:
`{ "type": "secret-key", "secret_key": "136372c3138312c3138382c3130352c3233312c3135" }`
- Gcp kms:
`{ "type": "gcp-kms", "resource_name": "projects/project_name/locations/_location_name/keyRings/key_ring_name/cryptoKeys/key_name/cryptoKeyVersions/key_version" }` | - | -| `signed_entity_types` | `--signed-entity-types` | - | `SIGNED_ENTITY_TYPES` | Signed entity types parameters (discriminants names in an ordered comma separated list) | - | `MithrilStakeDistribution,CardanoImmutableFilesFull,CardanoStakeDistribution,CardanoDatabase,CardanoTransactions` | - | +| `signed_entity_types` | `--signed-entity-types` | - | `SIGNED_ENTITY_TYPES` | Signed entity types parameters (discriminants names in an ordered comma separated list) | - | `MithrilStakeDistribution,CardanoStakeDistribution,CardanoDatabase,CardanoTransactions` | - | | `snapshot_compression_algorithm` | `--snapshot-compression-algorithm` | - | `SNAPSHOT_COMPRESSION_ALGORITHM` | Compression algorithm of the snapshot archive | `zstandard` | `gzip` or `zstandard` | - | | `zstandard_parameters` | - | - | `ZSTANDARD_PARAMETERS__LEVEL` and `ZSTANDARD_PARAMETERS__NUMBER_OF_WORKERS` | Zstandard specific parameters | - | `{ level: 9, number_of_workers: 4 }` | - | | `blockfrost_parameters` | - | - | `BLOCKFROST_PARAMETERS` | Optional parameters to connect to the Blockfrost API. Used to fetch the ticker and name of
the registered stake pools.

`base_url` (optional) allows you to override the default URL, which is otherwise automatically determined from the project ID. | - | `{ "project_id": "preprodWuV1ICdtOWfZYfdcxpZ0tsS1N9rVZomQ" }`
or `{ "project_id": "preprodWuV1ICdtOWfZYfdcxpZ0tsS1N9rVZomQ", "base_url": "https://your-custom-blockfrost-server.io/api/v0/" }` | - | @@ -582,6 +582,7 @@ Here is a list of the available parameters for the serve command: | -------------------------- | ---------------------------- | :------------------: | -------------------------- | ------------------------------------------------------------------ | ------------- | ---------------------------------- | :----------------: | | `signed_payload_path` | `--signed-payload-path` | - | - | Path of the payload to import. | - | - | :heavy_check_mark: | | `genesis_verification_key` | `--genesis-verification-key` | - | - | Genesis verification key | - | - | :heavy_check_mark: | +| `mithril_era` | `--mithril-era` | - | - | Mithril era to use for the genesis certificate | - | - | - | | `data_stores_directory` | - | - | `DATA_STORES_DIRECTORY` | Directory to store aggregator databases | - | `./mithril-aggregator/stores` | :heavy_check_mark: | | `cardano_node_socket_path` | - | - | `CARDANO_NODE_SOCKET_PATH` | Path of the socket opened by the Cardano node | - | `/ipc/node.socket` | :heavy_check_mark: | | `cardano_cli_path` | - | - | `CARDANO_CLI_PATH` | Cardano CLI tool path | - | `cardano-cli` | - | @@ -591,11 +592,12 @@ Here is a list of the available parameters for the serve command: `genesis sign` command: -| Parameter | Command line (long) | Command line (short) | Environment variable | Description | Default value | Example | Mandatory | -| ---------------------------- | ------------------------------ | :------------------: | -------------------- | ------------------------------------- | ------------- | ------- | :-------: | -| `to_sign_payload_path` | `--to-sign-payload-path` | - | - | Path of the payload to sign. | - | - | - | -| `target_signed_payload_path` | `--target-signed-payload-path` | - | - | Path of the signed payload to export. | - | - | - | -| `genesis_secret_key_path` | `--genesis-secret-key-path` | - | - | Path of the genesis secret key. | - | - | - | +| Parameter | Command line (long) | Command line (short) | Environment variable | Description | Default value | Example | Mandatory | +| ---------------------------- | ------------------------------ | :------------------: | -------------------- | ---------------------------------------------- | ------------- | ------- | :-------: | +| `to_sign_payload_path` | `--to-sign-payload-path` | - | - | Path of the payload to sign. | - | - | - | +| `target_signed_payload_path` | `--target-signed-payload-path` | - | - | Path of the signed payload to export. | - | - | - | +| `genesis_secret_key_path` | `--genesis-secret-key-path` | - | - | Path of the genesis secret key. | - | - | - | +| `mithril_era` | `--mithril-era` | - | - | Mithril era to use for the genesis certificate | - | - | - | `genesis generate-keypair` command: diff --git a/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-client.md b/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-client.md index bc5367011ce..4545145c71c 100644 --- a/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-client.md +++ b/docs/website/versioned_docs/version-maintained/manual/develop/nodes/mithril-client.md @@ -861,7 +861,9 @@ This command is not compatible with **Linux ARM environments**. | `db_directory` | `--db-directory` | - | - | Path to the Cardano node database directory | - | - | :heavy_check_mark: | | `cardano_node_version` | `--cardano-node-version` | - | - | Cardano node version of the Mithril signed snapshot (`latest` and `pre-release` are also supported to download the latest or pre-release distribution). | - | - | :heavy_check_mark: | | `cardano_network` | `--cardano-network` | - | - | Cardano network | - | - | - | -| `utxo_hd_flavor` | `--utxo-hd-flavor` | - | - | UTxO-HD flavor to convert the ledger snapshot to (`Legacy` or `LMDB`) | - | - | :heavy_check_mark: | +| `binary-path` | `--binary-path` | - | - | Path to the Cardano snapshot converter binary | - | - | - | +| `config-path` | `--config-path` | - | - | Path to JSON configuration file for the Cardano snapshot converter | - | - | - | +| `utxo_hd_flavor` | `--utxo-hd-flavor` | - | - | UTxO-HD flavor to convert the ledger snapshot to (`Legacy`, `LMDB` or `LSM`) | - | - | :heavy_check_mark: | | `commit` | `--commit` | - | - | Replaces the current ledger state in the `db_directory`. | `false` | - | - | | `github_token` | `--github-token` | - | `GITHUB_TOKEN` | GitHub token for authenticated API calls | - | - | - | | `run_mode` | `--run-mode` | - | `RUN_MODE` | Run Mode | `dev` | - | - | diff --git a/docs/website/versioned_docs/version-maintained/manual/develop/references.md b/docs/website/versioned_docs/version-maintained/manual/develop/references.md index 80b31df5801..10c762a6a79 100644 --- a/docs/website/versioned_docs/version-maintained/manual/develop/references.md +++ b/docs/website/versioned_docs/version-maintained/manual/develop/references.md @@ -33,7 +33,7 @@ To learn more about the **Mithril protocol**, please refer to the [about Mithril | **Mithril doc** | An API that generates markdown documentation for a crate command lines arguments. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-doc) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_doc/index.html) | - | - | | **Mithril doc derive** | A macro implementation used by **Mithril doc**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-doc-derive) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_doc_derive/index.html) | - | - | | **Mithril persistence** | The **persistence** library used by **Mithril network** nodes. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/internal/mithril-persistence) | [:arrow_upper_right:](https://mithril.network/rust-doc/mithril_persistence/index.html) | - | - | -| **Mithril devnet** | The private **Mithril/Cardano network** used to create a **Mithril network** on top of a private **Cardano network**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-devnet) | - | - | - | -| **Mithril end to end** | The tool used to run test scenarios against a **Mithril devnet**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-explorer) | - | - | - | -| **Mithril explorer** | The explorer website that connects to a **Mithril aggregator** and displays its **certificate chain**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-end-to-end) | - | - | - | -| **Protocol simulation** | A simple CLI that helps understand how the **Mithril protocol** works and the role of its protocol parameters. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/blob/main/demo/protocol-demo) | - | - | - | +| **Cardano devnet** | The private **Cardano network** used to test a **Mithril network**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-test-lab/cardano-devnet) | - | - | - | +| **Mithril end to end** | The tool used to run test scenarios against a **Mithril devnet**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-explorer) | - | - | - | +| **Mithril explorer** | The explorer website that connects to a **Mithril aggregator** and displays its **certificate chain**. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/mithril-test-lab/mithril-end-to-end) | - | - | - | +| **Protocol simulation** | A simple CLI that helps understand how the **Mithril protocol** works and the role of its protocol parameters. | [:arrow_upper_right:](https://github.com/input-output-hk/mithril/tree/main/demo/protocol-demo) | - | - | - | diff --git a/docs/website/versioned_docs/version-maintained/manual/develop/run-mithril-devnet.md b/docs/website/versioned_docs/version-maintained/manual/develop/run-mithril-devnet.md deleted file mode 100644 index e3e4eb20048..00000000000 --- a/docs/website/versioned_docs/version-maintained/manual/develop/run-mithril-devnet.md +++ /dev/null @@ -1,602 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Run a private network - -:::info - -In this guide, you will learn how to run a demonstration of a **Mithril network** working on top of a private Cardano `devnet` network. This network is completely autonomous and set up to produce Mithril snapshots every minute. - -::: - -You can launch a private Mithril network using the following topology: - -- `2` **Cardano nodes** configured as **stake pool operators (SPOs)** with a **Mithril signer** on top -- `1` **Cardano node** configured as a **Full node** with a **Mithril aggregator** on top. - -![Devnet Topology](images/devnet-topology.png) - -:::danger - -This demonstration works exclusively on Linux machines. - -::: - -:::tip - -More information about the private Cardano/Mithril `devnet` is available [here](https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-devnet/README.md). - -::: - -## Video demonstration - - - -## Prerequisites - -- Install the latest stable version of a [correctly configured](https://www.rust-lang.org/learn/get-started) Rust toolchain - -- Install build tools `build-essential` and `m4`; for example, on Ubuntu/Debian/Mint, run `sudo apt install build-essential m4` - -- Install the OpenSSL development libraries; for example, on Ubuntu/Debian/Mint, run `apt install libssl-dev`. - -## Download the source file - -Download the source file from GitHub (HTTPS): - -```bash -git clone https://github.com/input-output-hk/mithril.git -``` - -Or (SSH): - -```bash -git clone git@github.com:input-output-hk/mithril.git -``` - -## Change the directory - -To change the directory, go to the devnet folder: - -```bash -cd mithril-test-lab/mithril-devnet -``` - -## Run a private Mithril/Cardano network (`devnet`) locally - -### Step 1: Launch the devnet - -Open a terminal window. Run a devnet with one BTF and two SPO Cardano nodes. - -**Option 1**: Use remote Docker images - -The network setup will be quicker when using remote Docker images: - -```bash -MITHRIL_IMAGE_ID=latest FULL_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh -``` - -**Option 2**: Use local Docker images - -Note that using local Docker images to build Mithril nodes may take more time: - -```bash -FULL_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh -``` - -:::info - -Throughout the devnet launch process, you will encounter the following steps: - -- **Bootstrapping the devnet**: generate the artifacts of the devnet, depending on the configuration parameters (cryptographic keys, network topology, transactions to set up pool nodes, etc) -- **Starting the Cardano network**: run the nodes of the **Cardano network**, wait for it to be ready, and activate the pool nodes -- **Starting the Mithril network**: run the nodes of the **Mithril network**, which will work on top of the **Cardano network**. - -::: - -You should see the following information displayed: - -```bash -===================================================================== - Bootstrap Mithril/Cardano devnet -===================================================================== - ->> The artifacts directory was force deleted ->> Devnet Version: 0.4.6 ->> Artifacts Directory[env::ARTIFACTS_DIR]: artifacts ->> Cardano Full nodes [env::NUM_FULL_NODES]: 1 ->> Cardano SPO nodes [env::NUM_POOL_NODES]: 2 ->> Cardano Node Version [env::CARDANO_NODE_VERSION]: 10.7.1 ->> Cardano Network Magic [env::NETWORK_MAGIC]: 42 ->> Cardano Hard Fork Babbage At Epoch [env::HARD_FORK_BABBAGE_AT_EPOCH]: 0 ->> Cardano Hard Fork Conway At Epoch [env::HARD_FORK_CONWAY_AT_EPOCH]: 0 ->> Cardano Slot Length [env::SLOT_LENGTH]: 0.75s ->> Cardano Epoch Length [env::EPOCH_LENGTH]: 100s ->> Cardano Listening Address [env::LISTENING_ADDR]: 127.0.0.1 ->> Creating artifacts directory... ->> Downloading cardano-cli & cardano-node... ->> Extracting cardano-cli & cardano-node... -generated genesis with: 3 genesis keys, 2 non-delegating UTxO keys, 2 stake pools, 2 delegating UTxO keys, 2 delegation map entries, - -===================================================================== - Start Cardano nodes -===================================================================== - ->> Start Cardano network -cardano-cli 10.1.1.0 - linux-x86_64 - ghc-8.10 -git rev 01bda2e2cb0a70cd95067d696dbb44665f1d680a -cardano-node 10.7.1 - linux-x86_64 - ghc-8.10 -git rev 01bda2e2cb0a70cd95067d696dbb44665f1d680a ->> Starting Cardano node 'node-full1' ->> Starting Cardano node 'node-pool1' ->> Starting Cardano node 'node-pool2' ->> Wait for Cardano network to be ready ->>>> Cardano network is not ready yet... [attempt 1] ->>>> Cardano network is not ready yet... [attempt 2] ->>>> Cardano network is not ready yet... [attempt 3] ->>>> Cardano network is ready! ->> Wait for Cardano nodes to have enough immutable files ->> Wait for node-full1 to have enough immutable files ->>>> node-full1 has not enough immutable files yet... [attempt 1] ->>>> node-full1 has not enough immutable files yet... [attempt 2] ->>>> node-full1 has not enough immutable files yet... [attempt 3] ->>>> node-full1 has not enough immutable files yet... [attempt 4] ->>>> node-full1 has not enough immutable files yet... [attempt 5] ->>>> node-full1 has not enough immutable files yet... [attempt 6] ->>>> node-full1 has not enough immutable files yet... [attempt 7] ->>>> node-full1 has not enough immutable files yet... [attempt 8] ->>>> node-full1 has not enough immutable files yet... [attempt 9] ->>>> node-full1 has not enough immutable files yet... [attempt 10] ->>>> node-full1 has not enough immutable files yet... [attempt 11] ->>>> node-full1 has enough immutable files! ->> Wait for node-pool1 to have enough immutable files ->>>> node-pool1 has enough immutable files! ->> Wait for node-pool2 to have enough immutable files ->>>> node-pool2 has enough immutable files! - ->> Info: Mithril Aggregator will be attached to the first Cardano Full node ->> Info: Mithril Signers will be attached to each Cardano SPO node -===================================================================== - Start Mithril nodes -===================================================================== - ->> Start Mithril network -Going to remove artifacts_mithril-aggregator-genesis_run_48d3af826a41 -[+] Running 1/0 - ⠿ Container artifacts_mithril-aggregator-genesis_run_48d3af826a41 Removed 0.0s -[+] Running 4/4 - ⠿ Network artifacts_mithril_network Created 0.1s - ⠿ Container artifacts-mithril-signer-node-pool1-1 Started 0.4s - ⠿ Container artifacts-mithril-aggregator-1 Started 0.5s - ⠿ Container artifacts-mithril-signer-node-pool2-1 Started 0.5s ->> List of Mithril signers --------- -------------------------------------------------------- ----------------------------------- -Signer 1 pool1vtck0eeqq2x3d5avpxhd904y73syn4l00yurvl0teg7u6nh3afv Certified PoolId -Signer 2 pool1y3pxhtqytcwy3mmnawqf2ej0x9sz5frkkwkz6scfqmzyyw8u38v Certified PoolId ->> Wait for Mithril signers to be registered ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Not ready yet ->>>> Ready! ->> Bootstrap the Genesis certificate -{"msg":"Started","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.953666896Z","hostname":"c993b6b764f2","pid":1,"node_version":"0.5.110+e2fa1e0","run_mode":"dev"} -{Genesis bootstrap for test only! -"msg":"BOOTSTRAP GENESIS command","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.95394937Z","hostname":"c993b6b764f2","pid":1,"config":"Configuration { environment: Production, cardano_cli_path: \"/app/bin/cardano-cli\", cardano_node_socket_path: \"/data/ipc/node.sock\", cardano_node_version: \"10.7.1\", network_magic: Some(42), network: \"devnet\", chain_observer_type: Pallas, protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, snapshot_uploader_type: Local, snapshot_bucket_name: None, snapshot_use_cdn_domain: false, server_ip: \"0.0.0.0\", server_port: 8080, run_interval: 1000, db_directory: \"/data/db\", snapshot_directory: \".\", data_stores_directory: \"/data/mithril/aggregator/stores\", genesis_verification_key: \"5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d\", reset_digests_cache: false, disable_digests_cache: false, store_retention_limit: None, era_reader_adapter_type: Bootstrap, era_reader_adapter_params: None, signed_entity_types: None, snapshot_compression_algorithm: Zstandard, zstandard_parameters: None, cexplorer_pools_url: None, signer_importer_run_interval: 720, allow_unparsable_block: false, cardano_transactions_prover_cache_pool_size: 10, cardano_transactions_database_connection_pool_size: 10, cardano_transactions_signing_config: CardanoTransactionsSigningConfig { security_parameter: BlockNumber(3000), step: BlockNumber(120) }, cardano_prover_max_hashes_allowed_by_request: 100, cardano_transactions_block_streamer_max_roll_forwards_per_poll: 10000, enable_metrics_server: false, metrics_server_ip: \"0.0.0.0\", metrics_server_port: 9090, persist_usage_report_interval_in_seconds: 10 }"} -{"msg":"Opening SQLite connection","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954098066Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder","path":"/data/mithril/aggregator/stores/aggregator.sqlite3"} -{"msg":"Enabling SQLite Write Ahead Log journal mode","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954185725Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder"} -{"msg":"Enabling SQLite foreign key support","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954483371Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder"} -{"msg":"Applying database migrations","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954561009Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder"} -{"msg":"Check database version","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954635652Z","hostname":"c993b6b764f2","pid":1,"src":"DatabaseVersionChecker"} -{"msg":"database up to date","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954704978Z","hostname":"c993b6b764f2","pid":1,"src":"DatabaseVersionChecker"} -{"msg":"New MithrilCertificateVerifier created","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954756269Z","hostname":"c993b6b764f2","pid":1} -{"msg":"Handle discrepancies at startup of epoch settings store, will record epoch settings from the configuration for epoch 3","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.956326275Z","hostname":"c993b6b764f2","pid":1,"epoch_settings_configuration":"AggregatorEpochSettings { protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, cardano_transactions_signing_config: CardanoTransactionsSigningConfig { security_parameter: BlockNumber(3000), step: BlockNumber(120) } }"} - -===================================================================== - Schedule Cardano Stake Delegation -===================================================================== - ->> Begin scheduled stakes delegation ->> 11:29:08: Wait 180s until next stakes delegation round... -``` - -### Step 2: Query the devnet - -Open a second terminal window. Watch the state queried from the devnet: - -```bash -watch -n 1 ./devnet-query.sh -``` - -The networks will be queried every second and will display: - -- Certificate production information gathered from the **Mithril network** -- UTXO, stake pools, and stake distribution from the **Cardano network**. - -```bash -===================================================================== - Query Mithril/Cardano devnet -===================================================================== - -===================================================================== -=== Mithril Network -===================================================================== - ->> Query latest certificates -[ - { - "hash": "cbbf3fc1165ff41f2f0691643febe7f8c2d4f99b5c551d01d5f6cca538db0cd4", - "previous_hash": "3d1ceee23e79b1f510c7a6ce4503552495c6f7134afd04a88042d99264da8515", - "epoch": 15, - "signed_entity_type": { - "CardanoTransactions": [ - 15, - 1589 - ] - }, - "metadata": { - "network": "devnet", - "version": "0.1.0", - "parameters": { - "k": 5, - "m": 100, - "phi_f": 0.65 - }, - "initiated_at": "2024-11-14T10:45:15.434075727Z", - "sealed_at": "2024-11-14T10:45:16.441653366Z", - "total_signers": 2 - }, - "protocol_message": { - "message_parts": { - "cardano_transactions_merkle_root": "ecfeb3584f505906de1fadcc6f4acaa9fda55da82c771073a83bbb288bb62b6e", - "next_aggregate_verification_key": "7b226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b3137382c39342c33322c3132392c3132302c3132382c31372c3232352c37332c3135372c3136362c3132342c3234362c3130362c35352c33362c3135372c332c3137372c3231392c35332c3139342c3139322c39342c3133382c36332c3134332c3233312c3230332c3138362c36342c3134335d2c226e725f6c6561766573223a322c22686173686572223a6e756c6c7d2c22746f74616c5f7374616b65223a3230323830313337303631347d", - "latest_block_number": "1589" - } - }, - "signed_message": "3b2242e276f1d1e8f28e5ffeb0f0c666ef3d5a5b2c8bf827576d4a513ab2de29", - "aggregate_verification_key": "7b226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b3233322c33332c3132362c38392c3134332c3138312c32362c3130362c3131362c37392c3230392c34382c3232302c3136332c3133322c3232302c33312c3136392c3131312c3133382c3130332c39382c37332c37312c3135322c3235352c34352c3138322c39362c32382c3137362c3136355d2c226e725f6c6561766573223a322c22686173686572223a6e756c6c7d2c22746f74616c5f7374616b65223a3139303036353437303735387d" - }, - { - "hash": "47068954d8600c214a194be00790a6108c7b397fc91f950f063c7877d8121b92", - "previous_hash": "3d1ceee23e79b1f510c7a6ce4503552495c6f7134afd04a88042d99264da8515", - "epoch": 15, - "signed_entity_type": { - "CardanoTransactions": [ - 15, - 1574 - ] - }, - "metadata": { - "network": "devnet", - "version": "0.1.0", - "parameters": { - "k": 5, - "m": 100, - "phi_f": 0.65 - }, - "initiated_at": "2024-11-14T10:45:04.382631109Z", - "sealed_at": "2024-11-14T10:45:05.394615861Z", - "total_signers": 2 - }, - "protocol_message": { - "message_parts": { - "cardano_transactions_merkle_root": "ecfeb3584f505906de1fadcc6f4acaa9fda55da82c771073a83bbb288bb62b6e", - "next_aggregate_verification_key": "7b226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b3137382c39342c33322c3132392c3132302c3132382c31372c3232352c37332c3135372c3136362c3132342c3234362c3130362c35352c33362c3135372c332c3137372c3231392c35332c3139342c3139322c39342c3133382c36332c3134332c3233312c3230332c3138362c36342c3134335d2c226e725f6c6561766573223a322c22686173686572223a6e756c6c7d2c22746f74616c5f7374616b65223a3230323830313337303631347d", - "latest_block_number": "1574" - } - }, - "signed_message": "ed76b5a8b41e4800fd4babc5bcffe483fe9daf43342aaddefe1f197907f0af06", - "aggregate_verification_key": "7b226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b3233322c33332c3132362c38392c3134332c3138312c32362c3130362c3131362c37392c3230392c34382c3232302c3136332c3133322c3232302c33312c3136392c3131312c3133382c3130332c39382c37332c37312c3135322c3235352c34352c3138322c39362c32382c3137362c3136355d2c226e725f6c6561766573223a322c22686173686572223a6e756c6c7d2c22746f74616c5f7374616b65223a3139303036353437303735387d" - } -] - ->> Query latest mithril stake distributions -[ - { - "epoch": 15, - "hash": "61239e7ea3388238aae9336ccbce50c477ad42478f6fc1642210708118c7ca00", - "certificate_hash": "3d1ceee23e79b1f510c7a6ce4503552495c6f7134afd04a88042d99264da8515", - "created_at": "2024-11-14T10:44:11.099191475Z" - }, - { - "epoch": 14, - "hash": "0c1962696593e52c21683287df30f47027ae5d5f669384f5534784e6f51cdd33", - "certificate_hash": "fa6fc82a1a2bf93a81f5920f1d0ac143aa73183b4b8226a54f3e16741f3705a1", - "created_at": "2024-11-14T10:42:55.567493973Z" - } -] - ->> Query latest snapshots -[ - { - "digest": "4c7b06dd2bef1416391b92a46dae7d2f606ced2954b628f844b021ba5b52b15f", - "network": "devnet", - "beacon": { - "network": "devnet", - "epoch": 15, - "immutable_file_number": 14 - }, - "certificate_hash": "f601ab107b546d8791075916b9fd6ba374b30a7ce6030549e140bac04078b3b6", - "size": 519351, - "created_at": "2024-11-14T10:44:17.153390171Z", - "locations": [ - "http://0.0.0.0:8080/aggregator/artifact/snapshot/4c7b06dd2bef1416391b92a46dae7d2f606ced2954b628f844b021ba5b52b15f/download" - ], - "compression_algorithm": "zstandard", - "cardano_node_version": "10.7.1" - }, - { - "digest": "b98b25f505401e967df1012a4c13385290db15d157d0292e9f8290bd9933a66e", - "network": "devnet", - "beacon": { - "network": "devnet", - "epoch": 14, - "immutable_file_number": 13 - }, - "certificate_hash": "1ec38ed6f158664bf792fb2fddd08e49b52232023b4130b3ebd92e90d659f200", - "size": 469807, - "created_at": "2024-11-14T10:43:01.620428990Z", - "locations": [ - "http://0.0.0.0:8080/aggregator/artifact/snapshot/b98b25f505401e967df1012a4c13385290db15d157d0292e9f8290bd9933a66e/download" - ], - "compression_algorithm": "zstandard", - "cardano_node_version": "10.7.1" - } -] - - -===================================================================== -=== Cardano Network -===================================================================== - ->> Query chain tip -{ - "block": 1599, - "epoch": 15, - "era": "Conway", - "hash": "1d46bbd5179968366568822961f8df9d0e0ea0d74bcf1b371402ddeee315ea41", - "slot": 1599, - "slotInEpoch": 99, - "slotsToEpochEnd": 1, - "syncProgress": "100.00" -} - ->> Query whole utxo - TxHash TxIx Amount --------------------------------------------------------------------------------------- -0227b08e4971e69af83e4f7f37f9b6db11a4e5b0293259bcbc18b960cca2aa34 0 2000003 lovelace + TxOutDatumNone -07ccbb09c88f1789512879adc5c46b70f746d27fc77a938d879b0235ffd06e10 0 20000000001 lovelace + TxOutDatumNone -08823e13632b63dcd2eaf6f064c960b94f1d51652dc218e306305ee13fec5d9f 0 2000002 lovelace + TxOutDatumNone -099b200f28beedd811298150f55f96e3f9c100975dd1b978040e8cc667d44093 0 1000001 lovelace + TxOutDatumNone -13c36c25cbd8afb893813f996907ab13f9f89fd46b5c9a79710996869311ae83 0 6000000 lovelace + TxOutDatumNone -22d4daa27b05d1045f788ae981297ec6038c0856c974f8042be7209b8e6d94db 0 1000002 lovelace + TxOutDatumNone -46e00ecedaa75c64bf23b9c4d95b74e1432570feb800ecb0ab5eb1de05a6e4f1 0 2000004 lovelace + TxOutDatumNone -4a1c33bb474d27398bcd2d79ffca99e675850cba01655a7a7fc1110b3a0b85e3 0 1000003 lovelace + TxOutDatumNone -993b375acdd9f28ce1e7eab5a870d382d090b6ec1ce3372581c7c8b03e356d3b 0 2000001 lovelace + TxOutDatumNone -b9b28ace208bd3fb5feda08e6978ea274be8c2f8d8852ac8ea08dd27cd99133e 0 6000000 lovelace + TxOutDatumNone -bf208279833e96f02cf5d91805898b40784a9516f7f122edcf1fb2c773019861 0 1000005 lovelace + TxOutDatumNone -bf208279833e96f02cf5d91805898b40784a9516f7f122edcf1fb2c773019861 1 899993679904 lovelace + TxOutDatumNone -e0e68233e335f20b319d220a4e3e0fbca8f4b0c493a2ba216fa81a17520de4a4 0 20000000001 lovelace + TxOutDatumNone -e9ca751d4fc6bd00203d36184de814f6687f017ec6a4c6e481e1e188208c8b1f 0 2000005 lovelace + TxOutDatumNone -e9ca751d4fc6bd00203d36184de814f6687f017ec6a4c6e481e1e188208c8b1f 1 899988679904 lovelace + TxOutDatumNone -f5f61cdd76949003172e85941f4aae85ce99764b4a66e378dfb1e1f7fd1abde7 0 1000004 lovelace + TxOutDatumNone - ->> Query stake pools -pool1y3pxhtqytcwy3mmnawqf2ej0x9sz5frkkwkz6scfqmzyyw8u38v -pool1vtck0eeqq2x3d5avpxhd904y73syn4l00yurvl0teg7u6nh3afv - ->> Query stake distribution -{ - "pools": { - "24426bac045e1c48ef73eb8095664f31602a2476b3ac2d430906c442": { - "stakeGo": 96954320166, - "stakeMark": 110102978737, - "stakeSet": 103772355610 - }, - "62f167e720028d16d3ac09aed2bea4f46049d7ef7938367debca3dcd": { - "stakeGo": 93111150592, - "stakeMark": 105309514088, - "stakeSet": 99029015004 - } - }, - "total": { - "stakeGo": 190065470758, - "stakeMark": 215412492825, - "stakeSet": 202801370614 - } -} -``` - -### Step 3: Observe the devnet - -Open a third terminal window. Watch the logs of each devnet node: - -```bash -watch -n 1 `LINES=5 ./devnet-log.sh` -``` - -The nodes will be queried every second and will display thus: - -```bash -===================================================================== - Logs Mithril/Cardano devnet -===================================================================== - -===================================================================== -=== Mithril Network -===================================================================== - ---------------------------------------------------------------------- -docker logs -n 5 artifacts-mithril-aggregator-1 ---------------------------------------------------------------------- -{"msg":"Marked expired open messages","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:45:00.368456608Z","hostname":"bd8372c8c9d5","pid":1,"src":"AggregatorRunner","expired_open_message":"None"} -{"msg":">> get_open_message(signed_entity_type: CardanoTransactions(Epoch(15), BlockNumber(1559)))","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:45:00.368471645Z","hostname":"bd8372c8c9d5","pid":1,"src":"MithrilCertifierService"} -{"msg":" ⋅ No open message to certify, waiting…","v":0,"name":"mithril-aggregator","level":30,"time":"2024-11-14T10:45:00.36863267Z","hostname":"bd8372c8c9d5","pid":1,"src":"AggregatorRuntime","time_point":"TimePoint { epoch: Epoch(15), immutable_file_number: 14, chain_point: ChainPoint { slot_number: SlotNumber(1569), block_number: BlockNumber(1569), block_hash: \"6aadd9a1c21c53f79b703cabfc2a49032dcde2464b94ab578719b6aadb222f23\" } }"} -{"msg":"Incrementing 'mithril_aggregator_runtime_cycle_success_since_startup' counter","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:45:00.368647673Z","hostname":"bd8372c8c9d5","pid":1,"src":"MetricsService"} -{"msg":"… Cycle finished, Sleeping for 1000 ms","v":0,"name":"mithril-aggregator","level":30,"time":"2024-11-14T10:45:00.368664195Z","hostname":"bd8372c8c9d5","pid":1,"src":"AggregatorRuntime"} ---------------------------------------------------------------------- - ---------------------------------------------------------------------- -docker logs -n 5 artifacts-mithril-signer-node-pool1-1 ---------------------------------------------------------------------- -{"msg":">> get_current_time_point","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.5408476Z","hostname":"143e20c318ed","pid":1,"src":"SignerRunner"} -{"msg":">> get_beacon_to_sign(time_point: TimePoint (epoch: 15, immutable_file_number: 14, chain_point: ChainPoint (slot_number: 1571, block_number: 1571, block_hash: 50640d2cbcc7a36cda9bb42b127769448b3799b95613ebcc021b0b416b793942)))","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.541841221Z","hostname":"143e20c318ed","pid":1,"src":"SignerRunner"} -{"msg":" ⋅ No beacon to sign, waiting…","v":0,"name":"mithril-signer","level":30,"time":"2024-11-14T10:45:00.541994982Z","hostname":"143e20c318ed","pid":1,"src":"StateMachine"} -{"msg":"Incrementing 'mithril_signer_runtime_cycle_success_since_startup' counter","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.542006483Z","hostname":"143e20c318ed","pid":1,"src":"MetricsService"} -{"msg":"… Cycle finished, Sleeping for 700 ms","v":0,"name":"mithril-signer","level":30,"time":"2024-11-14T10:45:00.542022062Z","hostname":"143e20c318ed","pid":1,"src":"StateMachine"} ---------------------------------------------------------------------- - ---------------------------------------------------------------------- -docker logs -n 5 artifacts-mithril-signer-node-pool2-1 ---------------------------------------------------------------------- -{"msg":">> get_current_time_point","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.526442506Z","hostname":"b675f9c9de52","pid":1,"src":"SignerRunner"} -{"msg":">> get_beacon_to_sign(time_point: TimePoint (epoch: 15, immutable_file_number: 14, chain_point: ChainPoint (slot_number: 1571, block_number: 1571, block_hash: 50640d2cbcc7a36cda9bb42b127769448b3799b95613ebcc021b0b416b793942)))","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.527386742Z","hostname":"b675f9c9de52","pid":1,"src":"SignerRunner"} -{"msg":" ⋅ No beacon to sign, waiting…","v":0,"name":"mithril-signer","level":30,"time":"2024-11-14T10:45:00.527529799Z","hostname":"b675f9c9de52","pid":1,"src":"StateMachine"} -{"msg":"Incrementing 'mithril_signer_runtime_cycle_success_since_startup' counter","v":0,"name":"mithril-signer","level":20,"time":"2024-11-14T10:45:00.527539103Z","hostname":"b675f9c9de52","pid":1,"src":"MetricsService"} -{"msg":"… Cycle finished, Sleeping for 700 ms","v":0,"name":"mithril-signer","level":30,"time":"2024-11-14T10:45:00.527547906Z","hostname":"b675f9c9de52","pid":1,"src":"StateMachine"} ---------------------------------------------------------------------- - - -===================================================================== -=== Cardano Network -===================================================================== - ---------------------------------------------------------------------- -tail -n 5 ./node-full1/node.log ---------------------------------------------------------------------- -[denis-XP:cardano.node.LocalErrorPolicy:Error:63] [2024-11-14 10:45:00.36 UTC] IP LocalAddress "node-full1/ipc/node.sock@2660" ErrorPolicyUnhandledApplicationException (MuxError MuxBearerClosed " closed when reading data, waiting on next header True") -[denis-XP:cardano.node.LocalErrorPolicy:Error:63] [2024-11-14 10:45:00.36 UTC] IP LocalAddress "node-full1/ipc/node.sock@2659" ErrorPolicyUnhandledApplicationException (MuxError MuxBearerClosed " closed when reading data, waiting on next header True") -[denis-XP:cardano.node.ChainDB:Notice:23] [2024-11-14 10:45:01.00 UTC] Chain extended, new tip: d710c33fa606ae604b9de61eb10e83cd937ef4ab33cfb5afdce42e782b752a0a at slot 1572 -[denis-XP:cardano.node.Mempool:Info:31] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("tag",String "RisingEdge")])),("kind",String "TraceMempoolSynced")] -[denis-XP:cardano.node.Mempool:Info:31] [2024-11-14 10:45:01.00 UTC] fromList [("enclosingTime",Object (fromList [("contents",Number 6.8471e-5),("tag",String "FallingEdgeWith")])),("kind",String "TraceMempoolSynced")] ---------------------------------------------------------------------- - ---------------------------------------------------------------------- -tail -n 5 ./node-pool1/node.log ---------------------------------------------------------------------- -[denis-XP:cardano.node.LocalErrorPolicy:Error:64] [2024-11-14 10:45:00.83 UTC] IP LocalAddress "node-pool1/ipc/node.sock@3353" ErrorPolicyUnhandledApplicationException (MuxError MuxBearerClosed " closed when reading data, waiting on next header True") -[denis-XP:cardano.node.LocalErrorPolicy:Error:64] [2024-11-14 10:45:00.83 UTC] IP LocalAddress "node-pool1/ipc/node.sock@3352" ErrorPolicyUnhandledApplicationException (MuxError MuxBearerClosed " 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 - -[![Design of the certification of the Cardano node internal database v2](./images/cardano-node-database-v2/end-to-end-process.jpg)](./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. - -[![Design of the certification of the Cardano node internal database v2](./images/cardano-node-database-v2/message.jpg)](./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. - -[![Design of the certification of the Cardano node internal database v2](./images/cardano-node-database-v2/proof-client.jpg)](./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 -[![Design of the certification of the Cardano node internal database](./images/cardano-node-database/end-to-end-process.jpg)](./images/cardano-node-database/end-to-end-process.jpg) +[![Design of the certification of the Cardano node internal database](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. -[![Design of the certification of the Cardano node internal database](./images/cardano-node-database/message.jpg)](./images/cardano-node-database/message.jpg) +[![Design of the certification of the Cardano node internal database](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. -[![Design of the certification of the Cardano node internal database](./images/cardano-node-database/message.jpg)](./images/cardano-node-database/message.jpg) +[![Design of the certification of the Cardano node internal database v2](images/cardano-node-database/proof-client.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" + } ] }