Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs: reorganize About Mithril section in docs website #2160

Merged
merged 6 commits into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Should you have any questions, ideas or issues, we would like to hear from you:
- #ask-mithril on the IOG [Discord server](https://discord.gg/5kaErDKDRq)
- Create a GitHub [Discussion](https://github.com/input-output-hk/mithril/discussions)
- Create a GitHub [Issue](https://github.com/input-output-hk/mithril/issues/new)
- Ask on Cardano [StackExchange](https://cardano.stackexchange.com/questions/tagged/mithril) using the `mithril` tag
- Ask on Cardano [StackExchange](https://cardano.stackexchange.com/search?q=mithril) using the `mithril` tag

When contributing to this project and interacting with others, please follow our [Code of Conduct](./CODE-OF-CONDUCT.md) and our [Contributing Guidelines](./CONTRIBUTING.md).

Expand Down
42 changes: 41 additions & 1 deletion docs/website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,46 @@ const config = {
to: "/manual/develop/references",
from: ["/manual/developer-docs/references"],
},
{
to: "/mithril/advanced/mithril-protocol",
from: ["/category/mithril-protocol"],
},
{
to: "/mithril/advanced/mithril-protocol/protocol",
from: ["/mithril/mithril-protocol/protocol"],
},
{
to: "/mithril/advanced/mithril-protocol/certificates",
from: ["/mithril/mithril-protocol/certificates"],
},
{
to: "/mithril/advanced/mithril-protocol/security",
from: ["/mithril/mithril-protocol/security"],
},
{
to: "/mithril/advanced/mithril-network/",
from: ["/category/mithril-network"],
},
{
to: "/mithril/advanced/mithril-network/architecture",
from: ["/mithril/mithril-network/architecture"],
},
{
to: "/mithril/advanced/mithril-network/aggregator",
from: ["/mithril/mithril-network/aggregator"],
},
{
to: "/mithril/advanced/mithril-network/signer",
from: ["/mithril/mithril-network/signer"],
},
{
to: "/mithril/advanced/mithril-network/client",
from: ["/mithril/mithril-network/client"],
},
{
to: "/mithril/advanced/threat-model",
from: ["/mithril/threat-model"],
},
],
},
],
Expand Down Expand Up @@ -236,7 +276,7 @@ const config = {
},
{
label: "Stack Exchange",
href: "https://cardano.stackexchange.com/questions/tagged/mithril",
href: "https://cardano.stackexchange.com/search?q=mithril",
},
],
},
Expand Down
18 changes: 9 additions & 9 deletions docs/website/root/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ A Cardano transactions set snapshot represents, in a succinct way, the Cardano t

The Mithril aggregator combines the produced [multi-signature](#multi-signature) and some metadata into a Mithril certificate that will be later used by the [Mithril client](#mithril-client) to verify the authenticity of a [snapshot](#snapshot). The certificates are chained so that the [stake distribution](#stake-distribution) used to create the signatures is verifiably genuine.

> More information is available on the [certificates page](./mithril/mithril-protocol/certificates.md).
> More information is available on the [certificates page](./mithril/advanced/mithril-protocol/certificates.md).

## Epoch

Expand All @@ -48,45 +48,45 @@ Inside the database of a [Cardano node](#cardano-node), the blockchain state is

For each [beacon](#beacon), the [Mithril signers](#mithril-signer) will compute on their end a message representing the blockchain state, and sign it with their verification keys to create an [individual signature](#individual-signature). Upon winning one or more lotteries, the Mithril signer will be able to use this individual signature to participate in the creation of a [multi-signature](#multi-signature).

> More information is available on the [protocol page](./mithril/mithril-protocol/protocol.md).
> More information is available on the [protocol page](./mithril/advanced/mithril-protocol/protocol.md).

## Mithril aggregator

The Mithril aggregator is a trustless node of the [Mithril network](#mithril-network) that orchestrates the work of the [Mithril signer](#mithril-signer) nodes and gathers their [individual signatures](#individual-signature) to produce [Mithril multi-signatures](#multi-signature) and their associated [certificates](#certificate).

It is also in charge of creating and storing the [snapshot](#snapshot) archive.

> More information is available on the [aggregator page](./mithril/mithril-network/aggregator.md).
> More information is available on the [aggregator page](./mithril/advanced/mithril-network/aggregator.md).

## Mithril client

The Mithril client node within the [Mithril network](#mithril-network) is used to restore a [Cardano full node](#cardano-node) by retrieving, from a [Mithril aggregator](#mithril-aggregator), a remote [snapshot](#snapshot) and its [certificate](#certificate) chain. Finally, it is used to verify snapshot and certificate validity using the Mithril cryptographic primitives.

> More information is available on the [client page](./mithril/mithril-network/client.md).
> More information is available on the [client page](./mithril/advanced/mithril-network/client.md).

## Mithril network

In its current version, the Mithril network is a network of nodes responsible for creating [snapshots](#snapshot) and [certificates](#certificate) that enable fast bootstrap of a [Cardano node](#cardano-node). It runs on top of the [Cardano network](#cardano-network).

> More information is available on the [architecture page](./mithril/mithril-network/architecture.md).
> More information is available on the [architecture page](./mithril/advanced/mithril-network/architecture.md).

## Mithril protocol

The Mithril protocol allows stakeholders in a proof-of-stake blockchain network to individually sign messages that are aggregated into a multi-signature which guarantees that they represent a minimum share of the total stake.

> More information is on the [protocol page](./mithril/mithril-protocol/protocol.md).
> More information is on the [protocol page](./mithril/advanced/mithril-protocol/protocol.md).

## Mithril signer

The Mithril signer is a node of the [Mithril network](#mithril-network) that works transparently on top of the [stake pool operator](#stake-pool-operator-spo) Cardano nodes and which individually signs the ledger state.

> More information is available on the [signer page](./mithril/mithril-network/signer.md).
> More information is available on the [signer page](./mithril/advanced/mithril-network/signer.md).

## Multi-signature

The Mithril multi-signature is an aggregate of [individual signatures](#individual-signature), which guarantees that a minimum share of the total stake has participated in its creation.

> More information is available on the [protocol page](./mithril/mithril-protocol/protocol.md).
> More information is available on the [protocol page](./mithril/advanced/mithril-protocol/protocol.md).

## Snapshot

Expand All @@ -106,4 +106,4 @@ A stake pool operator, also known as an SPO, represents a party that holds (via

To create [individual signatures](#individual-signature), [Mithril signers](#mithril-signer) must register their signing public key: the verification key. To guarantee their genuineness, they are signed by the associated [Cardano key pair](#cardano-key-pair). It is worth mentioning that a [Mithril signer](#mithril-signer) must be aware of the verification keys of all the other Mithril signers to produce valid individual signatures.

> More information is available on the [protocol page](./mithril/mithril-protocol/protocol.md).
> More information is available on the [protocol page](./mithril/advanced/mithril-protocol/protocol.md).
2 changes: 1 addition & 1 deletion docs/website/root/manual/develop/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ This node verifies and restores a snapshot along with other types of data, facil

:::tip

For more information about the Mithril protocol, refer to the [about Mithril](../../mithril/mithril-protocol/protocol.md) section.
For more information about the Mithril protocol, refer to the [about Mithril](../../mithril/advanced/mithril-protocol/protocol.md) section.

:::
4 changes: 2 additions & 2 deletions docs/website/root/manual/develop/nodes/mithril-aggregator.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Mithril aggregator is responsible for collecting individual signatures from the

:::tip

- For more information about the **Mithril network**, please see the [architecture](../../../mithril/mithril-network/architecture.md) overview
- For more information about the **Mithril network**, please see the [architecture](../../../mithril/advanced/mithril-network/architecture.md) overview

- For more information about the **Mithril aggregator**, please see the [aggregator node](../../../mithril/mithril-network/aggregator.md) overview.
- For more information about the **Mithril aggregator**, please see the [aggregator node](../../../mithril/advanced/mithril-network/aggregator.md) overview.

:::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ It is responsible for handling the different types of data certified by Mithril

:::tip

- For more information about the **Mithril network**, please see the [architecture](../../../mithril/mithril-network/architecture.md) overview.
- For more information about the **Mithril network**, please see the [architecture](../../../mithril/advanced/mithril-network/architecture.md) overview.

:::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ It is responsible for handling the different types of data certified by Mithril

:::tip

- For more information about the **Mithril network**, please see the [architecture](../../../mithril/mithril-network/architecture.md) overview
- For more information about the **Mithril network**, please see the [architecture](../../../mithril/advanced/mithril-network/architecture.md) overview

- For more information about the **Mithril client** node, please see [this overview](../../../mithril/mithril-network/client.md)
- For more information about the **Mithril client** node, please see [this overview](../../../mithril/advanced/mithril-network/client.md)

- Check out the [`Bootstrap a Cardano node`](../../getting-started/bootstrap-cardano-node.md) guide.

Expand Down
4 changes: 2 additions & 2 deletions docs/website/root/manual/develop/nodes/mithril-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ Mithril client is responsible for restoring the **Cardano** blockchain on an emp
:::tip

- For more information about the **Mithril network**, please see
the [architecture](../../../mithril/mithril-network/architecture.md) overview
the [architecture](../../../mithril/advanced/mithril-network/architecture.md) overview

- For more information about the **Mithril client** node, please
see [this overview](../../../mithril/mithril-network/client.md)
see [this overview](../../../mithril/advanced/mithril-network/client.md)

- Check out the [`Bootstrap a Cardano node`](../../getting-started/bootstrap-cardano-node.md) guide.

Expand Down
4 changes: 2 additions & 2 deletions docs/website/root/manual/develop/nodes/mithril-signer.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Mithril signer is responsible for producing individual signatures that are colle

:::tip

- For more information about the **Mithril network**, please see the [architecture](../../../mithril/mithril-network/architecture.md) overview
- For more information about the **Mithril network**, please see the [architecture](../../../mithril/advanced/mithril-network/architecture.md) overview

- For more information about the **Mithril signer** node, please see [this overview](../../../mithril/mithril-network/signer.md)
- For more information about the **Mithril signer** node, please see [this overview](../../../mithril/advanced/mithril-network/signer.md)

- Check out the [`Run a Mithril signer node`](../../operate/run-signer-node.md) guide.

Expand Down
2 changes: 1 addition & 1 deletion docs/website/root/manual/develop/protocol-simulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,6 @@ Party #0: aggregate signature not found 7724e03fb8d84a376a43b8f41518a11c

:::tip

For more information about the Mithril protocol, refer to the [about Mithril](../../mithril/mithril-protocol/protocol.md) section.
For more information about the Mithril protocol, refer to the [about Mithril](../../mithril/advanced/mithril-protocol/protocol.md) section.

:::
9 changes: 9 additions & 0 deletions docs/website/root/mithril/advanced/README.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Advanced
---

import DocCardList from "@theme/DocCardList";

This section delves into the technical aspects of Mithril, providing detailed insights into its protocol, phases, certificate chain design, and network architecture. Explore these topics to understand how Mithril solves blockchain challenges at a deeper level.

<DocCardList />
6 changes: 6 additions & 0 deletions docs/website/root/mithril/advanced/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"label": "Advanced",
"collapsible": true,
"collapsed": false,
"position": 3
}
9 changes: 9 additions & 0 deletions docs/website/root/mithril/advanced/mithril-network/README.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Mithril network
---

import DocCardList from "@theme/DocCardList";

This section explores the Mithril network, which consists of various nodes that work together to execute the protocol’s rules for signing, aggregating, and verifying blockchain data. By distributing these responsibilities across a decentralized network, Mithril ensures secure, efficient, and scalable data validation without requiring full node operations.

<DocCardList />
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"label": "Mithril network",
"collapsible": true,
"collapsed": false,
"position": 2
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 2
sidebar_label: Mithril aggregator
---

# Mithril aggregator node
# Mithril aggregator

:::info

Expand All @@ -15,7 +15,7 @@ A **Mithril aggregator** is a trustless node responsible for coordinating the ac

- For more information about the **Mithril protocol**, see the [protocol in depth](../mithril-protocol/protocol.md) overview.

- For more information about the **Mithril aggregator**, see the [developer manual](../../manual/develop/nodes/mithril-aggregator.md).
- For more information about the **Mithril aggregator**, see the [developer manual](../../../manual/develop/nodes/mithril-aggregator.md).

:::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 1
sidebar_label: Architecture
---

# Mithril network architecture
# Architecture

:::info

Expand Down Expand Up @@ -33,7 +33,7 @@ The network is composed of the following nodes:

- **Mithril relay**:

> A forward proxy that is used to secure communications between the Mithril signer and the Mithril aggregator. More information is available in the [Mithril signer deployment model](../../manual/operate/run-signer-node.md#mithril-signer-deployment-model) section.
> A forward proxy that is used to secure communications between the Mithril signer and the Mithril aggregator. More information is available in the [Mithril signer deployment model](../../../manual/operate/run-signer-node.md#mithril-signer-deployment-model) section.

:::tip

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 4
sidebar_label: Mithril client
---

# Mithril client node
# Mithril client

:::info

Expand All @@ -18,7 +18,7 @@ The Mithril client node is used to list, show or verify artifacts certified by M

- For more information about the Mithril protocol, see the [protocol in depth](../mithril-protocol/protocol.md) overview.

- For more information about the Mithril client, see the [developer manual](../../manual/develop/nodes/mithril-client.md).
- For more information about the Mithril client, see the [developer manual](../../../manual/develop/nodes/mithril-client.md).

:::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ sidebar_position: 3
sidebar_label: Mithril signer
---

# Mithril signer node
# Mithril signer

:::info

Expand All @@ -15,7 +15,7 @@ The Mithril signer is a node that works transparently on top of the stake pool o

- For more information about the **Mithril protocol**, see the [protocol in depth](../mithril-protocol/protocol.md) overview.

- For more information about the **Mithril signer**, see the [developer manual](../../manual/develop/nodes/mithril-signer.md).
- For more information about the **Mithril signer**, see the [developer manual](../../../manual/develop/nodes/mithril-signer.md).

:::

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Mithril protocol
---

import DocCardList from "@theme/DocCardList";

This section explains the Mithril protocol, which serves as the foundational cryptographic framework for the system. It outlines the processes for creating and verifying multi-signatures, enabling secure and efficient blockchain data validation. By leveraging a stake-based threshold signature scheme, the Mithril protocol ensures scalability, decentralization, and integrity within the network.

<DocCardList />
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"label": "Mithril protocol",
"collapsible": true,
"collapsed": false,
"position": 1
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
---
sidebar_position: 2
sidebar_label: Certificate chain in depth
sidebar_label: Certificate chain design
---

# Mithril certificate chain in depth
# Certificate chain design

## Introduction
jpraynaud marked this conversation as resolved.
Show resolved Hide resolved

The **Mithril protocol** can be summarized as:

> A protocol that enables stakeholders in a proof-of-stake blockchain network to individually sign messages. These signatures are then aggregated into a multi-signature, ensuring that stakeholders collectively represent a minimum share of the total stake.

The **certificate chain** is a Mithril component that certifies the **stake distribution** used to create the multi-signature. Its primary purpose is to prevent adversaries from executing an **eclipse attack** on the blockchain.

Without the certificate, the stake distribution can't be trusted. A malicious actor could relatively easily create a fake stake distribution and use it to produce a valid multi-signature, which would be embedded in a valid but non-genuine certificate. This certificate could be served by a dishonest Mithril aggregator node, leading an honest Mithril client to restore a non-genuine snapshot.
Expand Down Expand Up @@ -61,7 +57,7 @@ The message `MSG(p,n)` is a map of multiple values associated with their respect

:::note

The **trigger** represents the instant at which a certificate should be created. It is combined with at least the associated **epoch** to create a [**beacon**](../../glossary.md#beacon) of the certificate. In the current implementation of the Cardano node database snapshot, this trigger is a new [**immutable file number**](../../glossary.md#immutable-file-number).
The **trigger** represents the instant at which a certificate should be created. It is combined with at least the associated **epoch** to create a [**beacon**](../../../glossary.md#beacon) of the certificate. In the current implementation of the Cardano node database snapshot, this trigger is a new [**immutable file number**](../../../glossary.md#immutable-file-number).

:::

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
sidebar_position: 1
sidebar_label: Protocol in depth
sidebar_label: Protocol phases
---

# Mithril protocol in depth
# Protocol phases

:::info

Expand All @@ -13,7 +13,7 @@ Mithril is based on the research paper [Mithril: Stake-based Threshold Multisign

:::info

You can interact with the **Mithril protocol** through the [protocol simulation](../../manual/develop/protocol-simulation.md). This will help you understand participants' interactions, multi-signature creation, and the influence of protocol parameters.
You can interact with the **Mithril protocol** through the [protocol simulation](../../../manual/develop/protocol-simulation.md). This will help you understand participants' interactions, multi-signature creation, and the influence of protocol parameters.

:::

Expand Down
Loading
Loading