-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: create 'Beginner' sub section of 'About Mithril'
- Loading branch information
Showing
11 changed files
with
139 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
title: Beginner | ||
--- | ||
|
||
import DocCardList from "@theme/DocCardList"; | ||
|
||
This section introduces Mithril in simple terms, explaining its purpose, key features, and how it solves blockchain challenges. Explore Mithril’s benefits and high-level functionality now. | ||
|
||
<DocCardList /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
{ | ||
"label": "Beginner", | ||
"collapsible": true, | ||
"collapsed": false, | ||
"position": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
sidebar_position: 3 | ||
sidebar_label: How it works | ||
--- | ||
|
||
# How it works | ||
|
||
The protocol utilizes a lottery mechanism where the probability of a signer winning is directly proportional to their stake. This lottery determines which signers are eligible to participate in the signing round. The generated signatures are then combined by an aggregator into a **Mithril multi-signature**, which requires a predefined threshold (quorum) of the total stake to be reached. | ||
|
||
The **Mithril protocol** consists of three phases: | ||
|
||
- **Protocol establishment.** During this phase, the protocol parameters are established. These parameters are crucial for security and include: | ||
- **m**: the number of lotteries each signer can participate in for each message | ||
- **k**: the minimum number of unique winning lottery indices needed to create a multi-signature | ||
- **f**: a tuning parameter that adjusts the chances of signers winning a lottery based on their stake. | ||
- **Initialization.** In this phase, participating signers generate and broadcast their keys along with a proof of possession. This process happens at the start of each new epoch, which is five days on Cardano. The aggregate verification key (AVK), a condensed representation of the key registration process, is computed and later used to sign and verify multi-signatures. | ||
- **Operations.** This phase involves the creation and broadcasting of individual signatures by signers. Aggregators collect these signatures and combine them into multi-signatures once the quorum is reached. These multi-signatures are then sealed into a Mithril certificate along with the AVK. | ||
|
||
:::info | ||
|
||
Refer to the [Protocol phases](../advanced/mithril-protocol/protocol.md) overview for more details. | ||
|
||
::: | ||
|
||
Mithril involves three main participants – **signers, aggregators, and clients** – working together to ensure secure and efficient data verification. | ||
|
||
The operations phase is the core of the Mithril process, involving the generation of individual signatures, their aggregation into a multi-signature, and the creation of a certificate that verifies the authenticity of blockchain data: | ||
|
||
- **Message signing.** When a new message, such as a snapshot of the Cardano blockchain, requires certification, a multi-party signing round is initiated. | ||
- **Lottery participation.** Each signer (SPO) participates in the lottery process pertaining to the message, with the likelihood of winning influenced by the signer's stake and other parameters. | ||
- **Individual signature generation.** Signers who win at least one lottery create individual signatures for the message using their specific signing key, sending these signatures to the Mithril aggregator. | ||
- **Aggregation.** The aggregator collects individual signatures and combines them into a single multi-signature once the requisite number of unique winning lottery indices is met (quorum). | ||
- **Certificate generation.** This multi-signature, along with the signed message and additional metadata, forms a Mithril certificate. This certificate serves as verification that a sufficient amount of stake has endorsed the message. | ||
- **Verification.** Clients, including light wallets or node operators, can confirm the authenticity of their assets (information retrieved from some untrusted sources) via the certificates. The verification process is efficient and does not require downloading the entire blockchain history; it entails checking the multi-signature against the known aggregate verification key and tracing the certificate back to a trusted genesis certificate. | ||
|
||
To fully understand Mithril, it is essential to explore its advanced operational aspects, which include its cryptographic foundations, the roles and security requirements of SPOs, and the strategic upgrade paths for the network. | ||
|
||
To explore advanced topics, see: | ||
|
||
- Mithril protocol | ||
- [Protocol phases](../advanced/mithril-protocol/protocol.md) | ||
- [Certificate chain design](../advanced/mithril-protocol/certificates.md) | ||
- [Protocol security](../advanced/mithril-protocol/security.md) | ||
- [Threat model analysis](../advanced/threat-model.md) | ||
- Mithril network | ||
- [Architecture](../advanced/mithril-network/architecture.md) | ||
- [Mithril aggregator](../advanced/mithril-network/aggregator.md) | ||
- [Mithril signer](../advanced/mithril-network/signer.md) | ||
- [Mithril client](../advanced/mithril-network/client.md) |
24 changes: 24 additions & 0 deletions
24
docs/website/root/mithril/beginner/mithril-in-a-nutshell.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
sidebar_position: 1 | ||
sidebar_label: Mithril in a nutshell | ||
--- | ||
|
||
# Mithril in a nutshell | ||
|
||
Let’s start with some background information to understand the current challenge and the solution that Mithril provides. | ||
|
||
Running a Cardano node allows users to interact with the blockchain in a trustless and decentralized way. The network relies on thousands of nodes working together to validate blocks and transactions, creating a unified and secure system. Each node holds a full copy of the blockchain, ensuring independence and decentralization. However, node synchronization is resource-intensive. For example, Daedalus, a full-node wallet, downloads and independently validates every transaction in the blockchain’s history. This process requires significant time, storage, and computational power, creating a barrier for users who lack the necessary resources or technical expertise. | ||
|
||
This challenge leaves users and developers with limited choices: invest in the costly setup and maintenance of a full node or rely on centralized services, which compromises Cardano’s core principle of decentralization. | ||
|
||
## How Mithril helps | ||
|
||
The Mithril protocol is designed to enhance blockchain efficiency and scalability by leveraging stake-based multi-signatures. It achieves higher performance without increasing trust requirements, offering a modular and transparent setup. Signers operate independently to produce individual signatures, which aggregators combine into a single, efficient multi-signature. | ||
|
||
Consider this analogy. Think of it like a community vote where only people who own a certain amount of tokens can participate. Each participant’s vote is signed, and these signatures are then combined to show that a significant portion of the token holders agree on the outcome. | ||
|
||
Unlike traditional systems requiring all participants to validate data, Mithril uses a stake-based threshold multi-signature scheme (STM). This means only a minimum fraction of the total stake is needed to generate a valid signature, ensuring both security and efficiency. | ||
|
||
Operating in a trustless setting, Mithril relies solely on existing proof-of-stake assumptions for consensus security. This makes it ideal for applications such as wallet-as-a-service or mobile clients, which can securely verify and exchange data using certificates from Mithril nodes. | ||
|
||
Additionally, Mithril enables rapid Certification by allowing stakeholders to validate checkpoints rather than the entire transaction history. This feature is especially beneficial for light clients, such as light wallets, and extends to use cases like data synchronization between layer 2 chains and full node bootstrapping. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
sidebar_position: 2 | ||
sidebar_label: Why should you use Mithril? | ||
--- | ||
|
||
# Why should you use Mithril? | ||
|
||
Mithril was developed with a focus on optimization, scalability, and interoperability. It addresses several key challenges in the blockchain ecosystem: | ||
|
||
## Challenges | ||
|
||
- **Slow node bootstrapping.** Synchronizing a full Cardano node from scratch can take days, hindering user participation and development. | ||
- **Light client security and decentralization.** Light clients such as wallets offer efficiency but often rely on centralized and trusted third parties for data, compromising security and decentralization. | ||
- **Layer 2 interaction.** Layer 2 solutions designed to enhance scalability need efficient methods to verify their state and interact with the main chain without requiring validator nodes to run a full Cardano node. | ||
|
||
## Solutions | ||
|
||
Mithril addresses these challenges through its stake-based threshold multi-signature (STM) scheme. This approach allows for efficient and secure verification of blockchain data without the need to run a full node, thereby improving scalability and accessibility. | ||
|
||
Here's how Mithril provides solutions: | ||
|
||
- **Fast bootstrapping.** Mithril enables the rapid setup of a full Cardano node in under 20 minutes by providing certified snapshots of the Cardano database. These snapshots can be quickly verified using the multi-signature scheme. | ||
- **Secure and efficient data exchange for lightweight applications.** Lightweight applications such as wallets can leverage Mithril to verify transaction data associated with specific addresses without relying on third parties or running a full node. This maintains decentralization and security while offering greater efficiency. | ||
- **Support for layer 2 solutions.** Mithril allows lightweight verification of the state and transactions of layer 2 solutions, improving their interaction with the main chain. For example, it can verify the stake of validator nodes in a bridge. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters