Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions docs/content/about-iota/iota-architecture/consensus.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
description: Overview of the IOTA mempool and consensus engines, Narwhal and Bullshark.
sidebar_label: Mempool and Consensus
---

import Quiz from '@site/src/components/Quiz';
import {questions} from '../../../site/static/json/about-iota/iota-architecture/consensus.json';

# Consensus on IOTA

## Narwall and Bullshark
Expand Down Expand Up @@ -144,3 +148,6 @@ Explains the evolution of the consensus protocol used by IOTA.
2102.08325 [Cs]. http://arxiv.org/abs/2102.08325
* Wang, Q., Yu, J., Chen, S., & Xiang, Y. (2020). SoK: Diving into DAG-based Blockchain Systems. ArXiv:
2012.06128 [Cs]. http://arxiv.org/abs/2012.06128

## Quizzes
<Quiz questions={questions} />
6 changes: 6 additions & 0 deletions docs/content/about-iota/iota-architecture/epochs.mdx
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Quiz from '@site/src/components/Quiz';
import {questions} from '../../../site/static/json/about-iota/iota-architecture/epochs.json';

# Epochs and Reconfiguration

## Epoch
Expand Down Expand Up @@ -36,3 +39,6 @@ validator set and stake distribution can be altered.

If 2f+1 validators agree, the network may upgrade to a new protocol version, which includes new features, bug fixes, and
updates to the Move framework libraries.

## Quizzes
<Quiz questions={questions} />
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Quiz from '@site/src/components/Quiz';
import {questions} from '../../../site/static/json/about-iota/iota-architecture/protocol-upgrades.json';

# Protocol Upgrades

The IOTA protocol, framework, and execution engine are frequently updated to include new features and bug fixes. This
Expand Down Expand Up @@ -48,3 +51,6 @@ If the validator notices that its built-in framework differs from the framework
validators that it would like to upgrade the framework to a new version. If enough validators agree to perform the
upgrade, the new framework object is written at the end of the current epoch. Transactions executed in the new epoch
then use the new version of the framework.

## Quizzes
<Quiz questions={questions} />
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import StakingPoolReqs from "../../_snippets/staking-pool-reqs.mdx";
import Quiz from '@site/src/components/Quiz';
import {questions} from '../../../site/static/json/about-iota/iota-architecture/staking-reward.json';

# Staking and Rewards

Expand Down Expand Up @@ -49,3 +51,6 @@ Validators receive rewards as regular stake objects, so they withdraw their stak
Validators can call
the [`0x3::iota_system::request_withdraw_stake`](https://github.com/iotaledger/iota/blob/6234ae2cc8137f3a2a34cd0aa1ac4fd5f31260e2/crates/iota-framework/packages/iota-system/sources/iota_system.move#L272)
function to withdraw their stake and receive their rewards.

## Quizzes
<Quiz questions={questions} />
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import Quiz from '@site/src/components/Quiz';
import {questions} from '../../../site/static/json/about-iota/iota-architecture/transaction-lifecycle.json';

# Transaction Life Cycle

## High-level Overview
Expand Down Expand Up @@ -124,3 +127,6 @@ Every ~24 hours, the IOTA network undergoes an epoch change, during which stakin
If your wallet app crashes during a transaction, it stores the signed transaction locally. Upon restarting, it will verify if the transaction was finalized. If finalized, no further steps are required. If not, the app will need to resubmit the transaction.

The wallet app can query the full node with the `getTransactionBlock` method to check if the transaction is finalized. If the response contains transaction details, it is finalized. If the response is `None`, the transaction may need to be resubmitted. This ensures that the coffee shop's full node will eventually recognize the transaction once it's included in a checkpoint and update the coffee shop's balance.

## Quizzes
<Quiz questions={questions} />
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"questions": [
{
"questionText": "What is the role of Narwhal in the IOTA consensus system?",
"answerOptions": [
{ "answerText": "It generates the final consensus on transaction ordering.", "isCorrect": false },
{ "answerText": "It ensures data submitted for consensus is readily available.", "isCorrect": true },
{ "answerText": "It provides cryptographic proofs of transaction execution.", "isCorrect": false },
{ "answerText": "It calculates validator rewards in IOTA.", "isCorrect": false }
]
},
{
"questionText": "How does Bullshark improve upon previous consensus algorithms used in IOTA?",
"answerOptions": [
{ "answerText": "By reducing transaction fees to zero.", "isCorrect": false },
{ "answerText": "By using a UTXO data model to speed up validation. ", "isCorrect": false },
{ "answerText": "By providing a consensus on the specific ordering of transactions.", "isCorrect": true },
{ "answerText": "By eliminating the need for validators.", "isCorrect": false }
]
},
{
"questionText": "Which cryptographic library is used by Narwhal for its cryptographic operations?",
"answerOptions": [
{ "answerText": "OpenSSL", "isCorrect": false },
{ "answerText": "fastcrypto", "isCorrect": true },
{ "answerText": "PyCryptodome", "isCorrect": false },
{ "answerText": "Libsodium", "isCorrect": false }
]
},
{
"questionText": "What is the structure used by Narwhal to organize transaction batches in the system?",
"answerOptions": [
{ "answerText": "Blockchain", "isCorrect": false },
{ "answerText": "Tree", "isCorrect": false },
{ "answerText": "Directed Acyclic Graph (DAG)", "isCorrect": true },
{ "answerText": "Circular Linked List", "isCorrect": false }
]
}
]
}

32 changes: 32 additions & 0 deletions docs/site/static/json/about-iota/iota-architecture/epochs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"questions": [
{
"questionText": "What is the primary purpose of an epoch in the IOTA network?",
"answerOptions": [
{ "answerText": "To finalize all transactions instantly.", "isCorrect": false },
{ "answerText": "To keep the validator set and stakes constant for a fixed period.", "isCorrect": true },
{ "answerText": "To allow users to withdraw their tokens.", "isCorrect": false },
{ "answerText": "To upgrade the protocol daily.", "isCorrect": false }
]
},
{
"questionText": "When does reconfiguration occur in the IOTA network?",
"answerOptions": [
{ "answerText": "At the beginning of each epoch.", "isCorrect": false },
{ "answerText": "During validator downtime.", "isCorrect": false },
{ "answerText": "At the end of each epoch.", "isCorrect": true },
{ "answerText": "When a transaction expires.", "isCorrect": false }
]
},
{
"questionText": "What happens during the validator set change at the end of an epoch?",
"answerOptions": [
{ "answerText": "Validators are chosen randomly.", "isCorrect": false },
{ "answerText": "Stakers receive their rewards instantly.", "isCorrect": false },
{ "answerText": "Pending staking and unstaking requests are finalized.", "isCorrect": true },
{ "answerText": "The gas fee structure is modified.", "isCorrect": false }
]
}
]
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"questions": [
{
"questionText": "What is the main challenge addressed by IOTA’s protocol upgrade process?",
"answerOptions": [
{ "answerText": "Ensuring all validators upgrade their software simultaneously.", "isCorrect": true },
{ "answerText": "Allowing users to stake more tokens.", "isCorrect": false },
{ "answerText": "Improving validator voting power.", "isCorrect": false },
{ "answerText": "Increasing transaction speed.", "isCorrect": false }
]
},
{
"questionText": "How is access to a new feature controlled during a protocol upgrade?",
"answerOptions": [
{ "answerText": "By a timestamp.", "isCorrect": false },
{ "answerText": "Through a feature flag.", "isCorrect": true },
{ "answerText": "Using a new consensus algorithm.", "isCorrect": false },
{ "answerText": "By increasing validator commission rates.", "isCorrect": false }
]
},
{
"questionText": "When does a new protocol version take effect?",
"answerOptions": [
{ "answerText": "Immediately after the release.", "isCorrect": false },
{ "answerText": "After 24 hours.", "isCorrect": false },
{ "answerText": "At the beginning of the next epoch.", "isCorrect": true },
{ "answerText": "After a validator upgrade vote is held.", "isCorrect": false }
]
},
{
"questionText": "How do full nodes handle protocol upgrades?",
"answerOptions": [
{ "answerText": "They follow the validators' recorded actions.", "isCorrect": true },
{ "answerText": "They vote on protocol changes.", "isCorrect": false },
{ "answerText": "They upgrade automatically.", "isCorrect": false },
{ "answerText": "They ignore protocol upgrades.", "isCorrect": false }
]
}
]
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"questions": [
{
"questionText": "How do validators on the IOTA network get their voting power?",
"answerOptions": [
{ "answerText": "By mining.", "isCorrect": false },
{ "answerText": "By holding their own IOTA tokens.", "isCorrect": false },
{ "answerText": "From IOTA token holders who delegate their stakes to them.", "isCorrect": true },
{ "answerText": "From other validators.", "isCorrect": false }
]
},
{
"questionText": "What unique feature of IOTA staking allows rewards to automatically reinvest?",
"answerOptions": [
{ "answerText": "Stakers keep their tokens in a cold wallet.", "isCorrect": false },
{ "answerText": "Auto-compounding rewards.", "isCorrect": true },
{ "answerText": "High validator commission rates.", "isCorrect": false },
{ "answerText": "No performance penalties.", "isCorrect": false }
]
},
{
"questionText": "When does a user's stake start contributing to a validator's voting power?",
"answerOptions": [
{ "answerText": "Immediately after staking.", "isCorrect": false },
{ "answerText": "After the next block is mined.", "isCorrect": false },
{ "answerText": "From the next epoch.", "isCorrect": true },
{ "answerText": "After 24 hours.", "isCorrect": false }
]
},
{
"questionText": "What happens if a validator underperforms during an epoch?",
"answerOptions": [
{ "answerText": "They receive reduced rewards.", "isCorrect": false },
{ "answerText": "They lose all their rewards for that epoch.", "isCorrect": true },
{ "answerText": "Their commission rate is increased.", "isCorrect": false },
{ "answerText": "Nothing, rewards are distributed equally.", "isCorrect": false }
]
}
]
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"questions": [
{
"questionText": "What happens after a user submits a transaction in IOTA?",
"answerOptions": [
{ "answerText": "Validators immediately execute the transaction.", "isCorrect": false },
{ "answerText": "The transaction is submitted to validators for validation.", "isCorrect": true },
{ "answerText": "The transaction is instantly added to a checkpoint.", "isCorrect": false },
{ "answerText": "The transaction is locked and cannot be processed further.", "isCorrect": false }
]
},
{
"questionText": "What does the transaction certificate include?",
"answerOptions": [
{ "answerText": "The transaction details and validator signatures.", "isCorrect": true },
{ "answerText": "A detailed list of transaction effects.", "isCorrect": false },
{ "answerText": "The number of gas units used in the transaction.", "isCorrect": false },
{ "answerText": "The current status of shared objects.", "isCorrect": false }
]
},
{
"questionText": "Which parameter can be used to speed up a transaction response for simpler transactions?",
"answerOptions": [
{ "answerText": "WaitForEpochChange", "isCorrect": false },
{ "answerText": "WaitForSharedObjects", "isCorrect": false },
{ "answerText": "WaitForLocalExecution", "isCorrect": false },
{ "answerText": "WaitForEffects", "isCorrect": true }
]
},
{
"questionText": "What ensures that double-spending is prevented during the certification process?",
"answerOptions": [
{ "answerText": "Validators reject all shared object transactions.", "isCorrect": false },
{ "answerText": "Validators use a method called quorum intersection.", "isCorrect": true },
{ "answerText": "Full nodes individually certify transactions.", "isCorrect": false },
{ "answerText": "Only the user's wallet app can sign transactions.", "isCorrect": false }
]
}
]
}

Loading