From f40049c2a243b982ff15dc0ab770ec76474bd9f5 Mon Sep 17 00:00:00 2001 From: Samuel Rufinatscha Date: Wed, 17 Jul 2024 18:24:09 +0200 Subject: [PATCH] refactor(docs): Refactor `concepts` docs (#1120) * refactor: Refactor concepts docs (up to Tokenomics) * refactor: Remove storage fund usages * refactor: Note inflation * refactor: Transactions * refactor: public struct * fix: Fixed non building docs due to broken references to removed docs * refactor: various fixes to the concepts docs, removed todo items from menu, removed graphql, fixed broken links and removed dead references * fix(devx): remove deleted docs from sidebar after rebasing * fix(devx): fix link * Update docs/content/about-iota/iota-architecture/indexer-functions.mdx Co-authored-by: salaheldinsoliman <49910731+salaheldinsoliman@users.noreply.github.com> --------- Co-authored-by: Dave de Fijter Co-authored-by: Lucas Tortora Co-authored-by: Lucas Tortora <85233773+lucas-tortora@users.noreply.github.com> Co-authored-by: salaheldinsoliman <49910731+salaheldinsoliman@users.noreply.github.com> --- docs/content/_snippets/move-summary.mdx | 2 +- docs/content/about-iota/components.mdx | 45 +- docs/content/about-iota/iota-architecture.mdx | 22 +- .../iota-architecture/consensus.mdx | 24 +- .../about-iota/iota-architecture/epochs.mdx | 7 +- .../iota-architecture/indexer-functions.mdx | 18 +- .../iota-architecture/iota-security.mdx | 50 +- .../iota-architecture/protocol-upgrades.mdx | 22 +- .../iota-architecture/staking-rewards.mdx | 10 +- .../transaction-lifecycle.mdx | 32 +- docs/content/about-iota/research-papers.mdx | 5 +- docs/content/about-iota/tokenomics.mdx | 27 +- .../about-iota/tokenomics/gas-in-iota.mdx | 41 +- .../about-iota/tokenomics/gas-pricing.mdx | 20 +- .../about-iota/tokenomics/iota-bridging.mdx | 48 - .../about-iota/tokenomics/iota-coin.mdx | 15 +- .../about-iota/tokenomics/proof-of-stake.mdx | 27 +- .../tokenomics/staking-unstaking.mdx | 8 +- .../about-iota/tokenomics/storage-fund.mdx | 44 - .../tokenomics/validators-staking.mdx | 6 +- .../developer/app-examples/coin-flip.mdx | 2 +- .../explanations/cryptography.mdx | 12 +- .../images/iota_multisig_structures.png | Bin 189055 -> 371415 bytes .../transaction-auth/keys-addresses.mdx | 8 +- .../cryptography/explanations/zklogin.mdx | 817 ------------------ .../explanations/zklogin/images/overview.png | Bin 235687 -> 0 bytes .../explanations/zklogin/zklogin-example.mdx | 57 -- docs/content/developer/graphql-rpc.mdx | 14 +- .../iota-move-concepts/collections.mdx | 8 +- .../iota-move-concepts/conventions.mdx | 40 +- .../iota-move-concepts/entry-functions.mdx | 4 +- .../iota-101/iota-move-concepts/init.mdx | 4 +- .../iota-move-concepts/iota-move-concepts.mdx | 32 +- .../iota-move-concepts/one-time-witness.mdx | 6 +- .../packages/custom-policies.mdx | 30 +- .../iota-move-concepts/packages/packages.mdx | 10 +- .../iota-move-concepts/packages/upgrade.mdx | 22 +- .../iota-101/iota-move-concepts/patterns.mdx | 2 +- .../patterns/capabilities.mdx | 4 +- .../patterns/hot-potato.mdx | 6 +- .../patterns/id-pointer.mdx | 6 +- .../patterns/transferrable-witness.mdx | 8 +- .../iota-move-concepts/patterns/witness.mdx | 4 +- .../iota-101/iota-move-concepts/strings.mdx | 4 +- .../objects/dynamic-fields/dynamic-fields.mdx | 10 +- .../objects/dynamic-fields/tables-bags.mdx | 8 +- .../developer/iota-101/objects/events.mdx | 10 +- .../iota-101/objects/object-model.mdx | 14 +- .../object-ownership/address-owned.mdx | 6 +- .../objects/object-ownership/immutable.mdx | 8 +- .../object-ownership/object-ownership.mdx | 2 +- .../objects/object-ownership/shared.mdx | 8 +- .../objects/object-ownership/wrapped.mdx | 46 +- .../objects/transfers/custom-rules.mdx | 12 +- .../objects/transfers/transfer-to-object.mdx | 28 +- .../iota-101/objects/transfers/transfers.mdx | 6 +- .../developer/iota-101/objects/versioning.mdx | 15 +- .../iota-101/transactions/gas-smashing.mdx | 10 +- .../transactions/ptb/prog-txn-blocks.mdx | 12 +- .../transactions/sign-and-send-txn.mdx | 11 +- .../transactions/sponsored-transactions.mdx | 28 +- .../iota-101/transactions/transactions.mdx | 12 +- docs/content/sidebars/about-iota.js | 2 - docs/content/sidebars/developer.js | 9 - 64 files changed, 418 insertions(+), 1412 deletions(-) delete mode 100644 docs/content/about-iota/tokenomics/iota-bridging.mdx delete mode 100644 docs/content/about-iota/tokenomics/storage-fund.mdx delete mode 100644 docs/content/developer/cryptography/explanations/zklogin.mdx delete mode 100644 docs/content/developer/cryptography/explanations/zklogin/images/overview.png delete mode 100644 docs/content/developer/cryptography/explanations/zklogin/zklogin-example.mdx diff --git a/docs/content/_snippets/move-summary.mdx b/docs/content/_snippets/move-summary.mdx index a33a615ec4e..f33eb8cc640 100644 --- a/docs/content/_snippets/move-summary.mdx +++ b/docs/content/_snippets/move-summary.mdx @@ -1 +1 @@ -Move is an open source language for writing safe packages to manipulate on-chain objects (sometimes referred to as "smart contracts"). Move is a platform-agnostic language to enable common libraries, tooling, and developer communities across blockchains with vastly different data and execution models. Move is adaptable to meet the needs of the blockchain the code operates on, see [Move on IOTA](../developer/iota-101/iota-move-concepts/iota-move-concepts.mdx) to review enhancements made to Move for optimization on the IOTA blockchain. +Move is an open source language for writing safe packages to manipulate on-chain objects (sometimes referred to as "smart contracts"). Move is a platform-agnostic language to enable common libraries, tooling, and developer communities across blockchains with vastly different data and execution models. Move is adaptable to meet the needs of the blockchain the code operates on, see [Move on Iota](../developer/iota-101/iota-move-concepts/iota-move-concepts.mdx) to review enhancements made to Move for optimization on the Iota blockchain. diff --git a/docs/content/about-iota/components.mdx b/docs/content/about-iota/components.mdx index 34a04204efe..dd655b51b8d 100644 --- a/docs/content/about-iota/components.mdx +++ b/docs/content/about-iota/components.mdx @@ -1,57 +1,56 @@ --- -title: IOTA Components +title: Iota Components --- -The name IOTA, pronounced swē in English, is derived from a Japanese word for the element of water. You can see this influence in the name of the blockchain, its native token elements (IOTA and MICROS), and the imagery used in its branding. +The name Iota is the ninth letter of the Greek alphabet (Ι, ι) and is used figuratively in English to mean a very small amount, reflecting its status as one of the smallest Greek letters. -When you read about IOTA in this documentation, it's referencing all the pieces of the system that comprise the blockchain. This includes the blockchain itself, its various networks (Mainnet, for example), the activity on the blockchain (transaction blocks), the distributed entities that verify this activity (validators), and the Full nodes that execute transaction blocks. The documentation refers to the entirety of these elements as the IOTA platform, or simply IOTA. +When you read about Iota in this documentation, it's referencing all the pieces of the system that comprise the blockchain. This includes the blockchain itself, its various networks (Mainnet, for example), the activity on the blockchain (transaction blocks), the distributed entities that verify this activity (validators), and the Full nodes that execute transaction blocks. The documentation refers to the entirety of these elements as the IOTA platform, or simply IOTA. -## The IOTA blockchain +## The Iota blockchain -IOTA is defined as a Layer 1 protocol blockchain. In basic terms, this means that IOTA performs its own consensus and validation for transaction blocks (activity) on its networks using its own native token (IOTA, in this case). Ethereum (ETH) and Bitcoin (BTC) are other examples of Layer 1 blockchains. +Iota is defined as a Layer 1 protocol blockchain. In basic terms, this means that Iota performs its own consensus and validation for transaction blocks (activity) on its networks using its own native token (IOTA, in this case). Ethereum (ETH) and Bitcoin (BTC) are other examples of Layer 1 blockchains. Layer 2 blockchains, by contrast, leverage the infrastructure of Layer 1 networks, relying on the Layer 1 blockchain to finalize transaction blocks. Polygon (MATIC) is an example of a Layer 2 blockchain that extends Ethereum. ## IOTA tokens -The native token for IOTA is IOTA. Whenever the documentation mentions IOTA (all uppercase letters), it's referring to this token. Transaction blocks on IOTA often deal with small fractions of the value of one IOTA. To make these transaction blocks easier to work with, IOTA provides MICROS. It takes one billion MICROS to equal one IOTA. +The native token for Iota is IOTA. Whenever the documentation mentions IOTA (all uppercase letters), it's referring to this token. Transaction blocks on Iota often deal with small fractions of the value of one IOTA. To make these transaction blocks easier to work with, Iota provides NANOS. It takes one billion NANOS to equal one IOTA. -There is a cost associated with everything, and blockchain transactions are no exception. It costs money to provide computational power to process transaction blocks and store their results. The term for the cost of processing transaction blocks is "gas". You pay for gas and the cost of storing data with a blockchain's native tokens, in this case, IOTA (or MICROS). +There is a cost associated with everything, and blockchain transactions are no exception. It costs money to provide computational power to process transaction blocks and store their results. The term for the cost of processing transaction blocks is "gas". You pay for gas and the cost of storing data with a blockchain's native tokens, in this case, IOTA (or NANOS). To learn more about the tokenomics of IOTA, see the following topics: -- [IOTA Tokenomics](./tokenomics.mdx) -- [IOTA Token](./tokenomics/iota-coin.mdx) -- [Gas in IOTA](./tokenomics/gas-in-iota.mdx) -- [IOTA Storage Fund](./tokenomics/storage-fund.mdx) +- [Iota Tokenomics](./tokenomics.mdx) +- [Iota Token](./tokenomics/iota-coin.mdx) +- [Gas in Iota](./tokenomics/gas-in-iota.mdx) ## Delegated proof-of-stake consensus -IOTA uses a delegated proof-of-stake (DPoS) consensus mechanism to validate on-chain transaction blocks. This means that validators on the IOTA network must have a certain amount of IOTA secured on IOTA Mainnet, either with their own funds or in partnership with IOTA Foundation, to prove their interest in the security of the blockchain. This approach aligns the interest of all validators with that of IOTA users (an efficient, secure blockchain), without the high energy-resource demands of earlier blockchains. +Iota uses a delegated proof-of-stake (DPoS) consensus mechanism to validate on-chain transaction blocks. This means that validators on the Iota network must have a certain amount of IOTA secured on Iota Mainnet, either with their own funds or in partnership with Iota Foundation, to prove their interest in the security of the blockchain. This approach aligns the interest of all validators with that of Iota users (an efficient, secure blockchain), without the high energy-resource demands of earlier blockchains. -To learn more about consensus on IOTA, see the following guides and topics: +To learn more about consensus on Iota, see the following guides and topics: - [Validator Committee](../operator/validator-committee.mdx) -- [IOTA Full Node Data Management](../operator/data-management.mdx) +- [Iota Full Node Data Management](../operator/data-management.mdx) -## IOTA networks +## Iota networks -IOTA has several networks available, each serving a different purpose. +Iota has several networks available, each serving a different purpose. -- **Mainnet:** The network that processes production transaction blocks. When you trade IOTA or NFTs that are ultimately based on fiat currency, you are doing so on the Mainnet network of IOTA. -- **Testnet:** Staging network to provide quality assurance that any planned changes to IOTA do not adversely impact performance. Developers can use this network to test their code before placing it in production. -- **Devnet:** A more unstable network that is used to develop new features. Developers can leverage this network to code against the latest planned features of IOTA. -- **Localnet:** You can run a IOTA network on your local computer. Developing on a local network provides an optimized workflow in an environment you control. +- **Mainnet:** The network that processes production transaction blocks. When you trade IOTA or NFTs that are ultimately based on fiat currency, you are doing so on the Mainnet network of Iota. +- **Testnet:** Staging network to provide quality assurance that any planned changes to Iota do not adversely impact performance. Developers can use this network to test their code before placing it in production. +- **Devnet:** A more unstable network that is used to develop new features. Developers can leverage this network to code against the latest planned features of Iota. +- **Localnet:** You can run an Iota network on your local computer. Developing on a local network provides an optimized workflow in an environment you control. To learn more about these networks and how to interact with them, see the following guides: -- [Create a Local IOTA Network](../developer/getting-started/local-network.mdx) -- [Connect to IOTA](../developer/getting-started/connect.mdx) +- [Create a Local Iota Network](../developer/getting-started/local-network.mdx) +- [Connect to Iota](../developer/getting-started/connect.mdx) ## Move -The Move language provides the logic for all activity on IOTA, like trading NFTs, playing IOTA-integrated games (dApps), and all other transaction-based events. The IOTA platform uses a concept novel to earlier blockchains, where blocks on the chain are actually objects that define assets rather than simple key-value stores that define addresses. The increased programmability inherent with objects required a more robust logic engine to maximize the benefits of this new approach to blockchain technology. +The Move language provides the logic for all activity on Iota, like trading NFTs, playing Iota-integrated games (dApps), and all other transaction-based events. The Iota platform uses a concept novel to earlier blockchains, where blocks on the chain are actually objects that define assets rather than simple key-value stores that define addresses. The increased programmability inherent with objects required a more robust logic engine to maximize the benefits of this new approach to blockchain technology. To learn more about Move, see [Move Concepts](../developer/iota-101/iota-move-concepts/iota-move-concepts.mdx). diff --git a/docs/content/about-iota/iota-architecture.mdx b/docs/content/about-iota/iota-architecture.mdx index 398286b128b..1630ed10516 100644 --- a/docs/content/about-iota/iota-architecture.mdx +++ b/docs/content/about-iota/iota-architecture.mdx @@ -1,35 +1,35 @@ --- -title: IOTA Architecture +title: Iota Architecture --- -IOTA shares some similarities with other blockchains but is unique in many ways. Use the topics in this section to understand the features that define the IOTA network. +Iota shares some similarities with other blockchains but is unique in many ways. Use the topics in this section to understand the features that define the Iota network. -## Understand IOTA Security +## Understand Iota Security -Learn about the mechanisms available to secure on-chain assets, and the assurances IOTA provides regarding asset security. Understand IOTA Security explores the overall IOTA security architecture to ensure the asset types you design leverage IOTA to provide a secure experience for asset holders. +Learn about the mechanisms available to secure on-chain assets, and the assurances Iota provides regarding asset security. Understand Iota Security explores the overall Iota security architecture to ensure the asset types you design leverage Iota to provide a secure experience for asset holders. -Go to [Understand IOTA Security](./iota-architecture/iota-security.mdx). +Go to [Understand Iota Security](./iota-architecture/iota-security.mdx). ## Life of a Transaction -Life of a Transaction details the transitions that all transactions on IOTA go through from creation to finality. This topic also explores some features of the blockchain (like epochs and checkpoints) that play a role in the life of a transaction. +Life of a Transaction details the transitions that all transactions on Iota go through from creation to finality. This topic also explores some features of the blockchain (like epochs and checkpoints) that play a role in the life of a transaction. Go to [Life of a Transaction](./iota-architecture/transaction-lifecycle.mdx). ## Mempool and Consensus Engines -Narwhal and Bullshark combine to form the basis of the IOTA mempool and consensus engine. This topic offers a brief introduction to the technologies that keep the activities on IOTA synchronized and secure. +Narwhal and Bullshark combine to form the basis of the Iota mempool and consensus engine. This topic offers a brief introduction to the technologies that keep the activities on Iota synchronized and secure. Go to [Mempool and Consensus Engines](./iota-architecture/consensus.mdx). -## IOTA Indexer +## Iota Indexer -Running a IOTA indexer offloads data processing from your Full node and stores it in a relational database. This topic explores some of the benefits running an indexer has and points to instruction on how to run your own. +Running an Iota indexer offloads data processing from your Full node and stores it in a relational database. This topic explores some of the benefits running an indexer has and points to instruction on how to run your own. -Go to [IOTA Indexer](./iota-architecture/indexer-functions.mdx). +Go to [Iota Indexer](./iota-architecture/indexer-functions.mdx). ## Protocol Upgrades -The IOTA protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. This functionality is added in the form of new code which is released to validator operators as part of our regular software releases. The IOTA protocol, however, requires that all IOTA validators agree about the results of executing each transaction. +The Iota protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. This functionality is added in the form of new code which is released to validator operators as part of our regular software releases. The Iota protocol, however, requires that all Iota validators agree about the results of executing each transaction. Go to [Protocol Upgrades](./iota-architecture/protocol-upgrades.mdx). \ No newline at end of file diff --git a/docs/content/about-iota/iota-architecture/consensus.mdx b/docs/content/about-iota/iota-architecture/consensus.mdx index 722e2fe398d..0ba308ed2dc 100644 --- a/docs/content/about-iota/iota-architecture/consensus.mdx +++ b/docs/content/about-iota/iota-architecture/consensus.mdx @@ -1,19 +1,19 @@ --- -title: IOTA Mempool and Consensus Engines +title: Iota Mempool and Consensus Engines sidebar_label: Mempool and Consensus Engines -description: Overview of the IOTA mempool and consensus engines, Narwhal and Bullshark. +description: Overview of the Iota mempool and consensus engines, Narwhal and Bullshark. --- -This is a brief introduction to [Narwhal](https://github.com/iotaledger/iota/tree/main/narwhal), and [Bullshark](https://arxiv.org/abs/2209.05633), the high-throughput mempool and consensus engines offered by Mysten Labs. IOTA uses Narwhal as the mempool and Bullshark as the consensus engine by default, to sequence transactions that require a total ordering, synchronize transactions between validators and periodically checkpoint the network's state. +This is a brief introduction to [Narwhal](https://github.com/iotaledger/iota/tree/develop/narwhal), and [Bullshark](https://arxiv.org/abs/2209.05633), the high-throughput mempool and consensus engines offered by Mysten Labs. Iota uses Narwhal as the mempool and Bullshark as the consensus engine by default, to sequence transactions that require a total ordering, synchronize transactions between validators and periodically checkpoint the network's state. The names highlight that the components split the responsibilities of: - ensuring the availability of data submitted to consensus = [Narwhal](https://arxiv.org/abs/2105.11827) - agreeing on a specific ordering of this data = [Bullshark](https://dl.acm.org/doi/abs/10.1145/3548606.3559361) -The IOTA consensus engine represents the latest variant of decades of work on multi-proposer, high-throughput consensus algorithms that reach throughputs of more than 125,000 transactions per second with a two-second latency for a deployment of 50 parties, with production cryptography, permanent storage, and a scaled-out primary-worker architecture. +The Iota consensus engine represents the latest variant of decades of work on multi-proposer, high-throughput consensus algorithms that reach throughputs of more than 125,000 transactions per second with a two-second latency for a deployment of 50 parties, with production cryptography, permanent storage, and a scaled-out primary-worker architecture. -The IOTA consensus engine approach can offer dramatic scalability benefits in the following cases: +The Iota consensus engine approach can offer dramatic scalability benefits in the following cases: - a blockchain that has experimented with larger and larger blocks and has measured runaway latencies before the execution phase - a blockchain with fast execution (e.g., focused on transactions or with an UTXO data model), but which mempool and consensus do not keep up @@ -22,15 +22,13 @@ The IOTA consensus engine approach can offer dramatic scalability benefits in th The Narwhal mempool offers: -- a high-throughput data availability engine, with cryptographic proofs of data availability at a [primary node](https://github.com/iotaledger/iota/blob/main/narwhal/primary) +- a high-throughput data availability engine, with cryptographic proofs of data availability at a [primary node](https://github.com/iotaledger/iota/blob/develop/narwhal/primary) - a structured graph data structure for traversing this information -- a scaled architecture, splitting the disk I/O and networking requirements across several [workers](https://github.com/iotaledger/iota/blob/main/narwhal/worker) - -The [consensus](https://github.com/iotaledger/iota/blob/main/narwhal/consensus) component offers a zero-message overhead consensus algorithm, leveraging graph traversals. +- a scaled architecture, splitting the disk I/O and networking requirements across several [workers](https://github.com/iotaledger/iota/blob/develop/narwhal/worker) ## Architecture -A Narwhal instance sets up a message-passing system comprised of a set of $3f+1$ units of stake divided amongst a set of nodes, and assumes a computationally bounded adversary that controls the network and can corrupt parties holding up to f units of stake. The validators collaborate in forming a leaderless graph of batches of transactions - which the literature (in the context of DAG-based consensus) designates as _blocks_ and that IOTA labels _collections_ - to emphasize that this happens in a context where the mempool data is used by an unspecified consensus algorithm. +A Narwhal instance sets up a message-passing system comprised of a set of $3f+1$ units of stake divided amongst a set of nodes, and assumes a computationally bounded adversary that controls the network and can corrupt parties holding up to f units of stake. The validators collaborate in forming a leaderless graph of batches of transactions - which the literature (in the context of DAG-based consensus) designates as _blocks_ and that Iota labels _collections_ - to emphasize that this happens in a context where the mempool data is used by an unspecified consensus algorithm. The graph's *vertices* consist of certified collections. Each valid collection signed by its validator-author must contain a round number and must itself be signed by a quorum (2f+1) of validator stake. These 2f+1 signatures are called a _certificate of availability_. Furthermore, that collection must contain hash pointers to a quorum of valid certificates (that is, certificates from validators with 2f + 1 units of stake) from the previous round (see Danezis & al. Fig 2), which constitute the *edges* of the graph. @@ -82,7 +80,7 @@ Narwhal is implemented using [Tokio](https://github.com/tokio-rs/tokio), [RocksD ## Configuration -To conduct a fresh deployment of IOTA Consensus Engine, follow the instructions at [Running Benchmarks](https://github.com/iotaledger/iota/blob/main/narwhal/benchmark). +To conduct a fresh deployment of Iota Consensus Engine, follow the instructions at [Running Benchmarks](https://github.com/iotaledger/iota/blob/main/narwhal/benchmark). ## Further reading @@ -96,9 +94,9 @@ Narwhal and Tusk started [as a research prototype](https://github.com/facebookre Bullshark replaces Tusk for even greater performance. [Bullshark: The Partially Synchronous Version](https://arxiv.org/pdf/2209.05633.pdf) - -A simplified version of Bullshark that is used in IOTA today. +A simplified version of Bullshark that is used in Iota today. -[DAG Meets BFT - The Next Generation of BFT Consensus](https://decentralizedthoughts.github.io/2022-06-28-DAG-meets-BFT/) - Explains the evolution of the consensus protocol used by IOTA. +[DAG Meets BFT - The Next Generation of BFT Consensus](https://decentralizedthoughts.github.io/2022-06-28-DAG-meets-BFT/) - Explains the evolution of the consensus protocol used by Iota. ## Bibliography diff --git a/docs/content/about-iota/iota-architecture/epochs.mdx b/docs/content/about-iota/iota-architecture/epochs.mdx index 45489a1bb7c..98945c6d6f5 100644 --- a/docs/content/about-iota/iota-architecture/epochs.mdx +++ b/docs/content/about-iota/iota-architecture/epochs.mdx @@ -3,13 +3,13 @@ title: Epochs and Reconfiguration draft: true --- -In a simplified view, epochs are to the IOTA network what individual days are to a calendar. Reconfiguration, then, is a process at the end of each epoch where that day's activity is tallied and the next day's parameters are set. +In a simplified view, epochs are to the Iota network what individual days are to a calendar. Reconfiguration, then, is a process at the end of each epoch where that day's activity is tallied and the next day's parameters are set. ## Epoch -An epoch is a duration of time where the IOTA validator set and their stakes remain unchanged. On both Mainnet and Testnet, an epoch is about 24 hours. This timeframe allows validators to process transactions efficiently without worrying about ad hoc validator changes during the middle of an epoch. +An epoch is a duration of time where the Iota validator set and their stakes remain unchanged. On both Mainnet and Testnet, an epoch is about 24 hours. This timeframe allows validators to process transactions efficiently without worrying about ad hoc validator changes during the middle of an epoch. -Epoch values are included in the metadata of transactions on the IOTA network, but the average user is unaffected by its value. The only time a user might need to know about epochs is in the case of expiring transactions, where a transaction is only valid if executed before a set epoch. See [Transactions](../../developer/iota-101/transactions/transactions.mdx) for more information about transactions on IOTA. +Epoch values are included in the metadata of transactions on the Iota network, but the average user is unaffected by its value. The only time a user might need to know about epochs is in the case of expiring transactions, where a transaction is only valid if executed before a set epoch. See [Transactions](../../developer/iota-101/transactions/transactions.mdx) for more information about transactions on Iota. ## Reconfiguration @@ -20,7 +20,6 @@ Reconfiguration is a critical process occurring at the end of each epoch. It inv - **Synchronous moment:** This is the only fully synchronous event in the network, crucial for maintaining consistency. 1. **Distribution of gas rewards** - Computation gas fees are distributed to the validator staking reward pool, from which stakers can withdraw. - - Storage fees are allocated to a storage fund, playing a vital role in the IOTA tokenomics, as explaiend in [Tokenomics](../tokenomics.mdx). 1. **Validator set change** - Any pending staking and unstaking requests during the epoch are finalized and reflected in validators stake distribution. - Any pending validator change requests are also processed, including adding new validators and removing existing validators. This is the sole opportunity for altering the validator set and stake distribution. diff --git a/docs/content/about-iota/iota-architecture/indexer-functions.mdx b/docs/content/about-iota/iota-architecture/indexer-functions.mdx index b56fce55b1e..4abb0b7caf8 100644 --- a/docs/content/about-iota/iota-architecture/indexer-functions.mdx +++ b/docs/content/about-iota/iota-architecture/indexer-functions.mdx @@ -1,25 +1,19 @@ --- -title: IOTA Indexer -description: IOTA Indexer is an off-Full node data service that serves data from the IOTA protocol, including both data directly generated from chain and derivative data. +title: Iota Indexer +description: Iota Indexer is an off-Full node data service that serves data from the Iota protocol, including both data directly generated from chain and derivative data. --- -IOTA Indexer is an off-Full node data service that serves data from the IOTA protocol, including both data directly generated from chain and derivative data. +Iota Indexer is an off-Full node data service that serves data from the Iota protocol, including both data directly generated from chain and derivative data. ![Indexer architecture](./images/indexer-arch.png) ## Functions -IOTA Indexer provides three main functionalities: +Iota Indexer provides three main functionalities: - Ingest data from a Full node to a relational database. Data on Full nodes is stored as BCS bytes in embedded RocksDB, thus the query capabilities are very limited. The indexer pulls checkpoint blob data, schematizing them into various tables like objects, transactions, and so on with proper indices. -- Serve online transaction processing (OLTP) RPC requests. With data in relational databases, IOTA indexer spins a stateless reader binary as JSON RPC server with an [interface](/references/iota-api). +- Serve online transaction processing (OLTP) RPC requests. With data in relational databases, Iota indexer spins a stateless reader binary as JSON RPC server with an [interface](/references/iota-api). - Analytical indexer. Other than OLTP data ingestion and requests, indexer also supports some analytical data ingestion like transactions per second (TPS) and daily active user (DAU) metrics. ## Run an indexer -Refer to the [IOTA Indexer README](https://github.com/iotaledger/iota/tree/main/crates/iota-indexer) in the `crates/iota-indexer` directory of the IOTA repo to run an indexer with a local or managed Postgres-compatible database. - -## Future enahancements - -Two planned enhancements for IOTA indexer are: -- Expand IOTA indexer to be able to run on MySQL compatible DB -- Encapsulate the deployment steps into a `docker-compose`-like script for easier initial setup. +Refer to the [Iota Indexer README](https://github.com/iotaledger/iota/tree/main/crates/iota-indexer) to run an indexer with a local or managed Postgres-compatible database. diff --git a/docs/content/about-iota/iota-architecture/iota-security.mdx b/docs/content/about-iota/iota-architecture/iota-security.mdx index 4df63441be3..fef6d9fc3a9 100644 --- a/docs/content/about-iota/iota-architecture/iota-security.mdx +++ b/docs/content/about-iota/iota-architecture/iota-security.mdx @@ -1,70 +1,70 @@ --- -title: Understand IOTA Security -description: IOTA is designed to provide very high security guarantees to asset owners. Assets on IOTA can be used only by their owners, according to the logic pre-defined by smart contracts that can be audited, and that the network will be available to process them correctly despite some of the validators operating IOTA not following the protocol correctly (fault tolerance). +title: Understand Iota Security +description: Iota is designed to provide very high security guarantees to asset owners. Assets on Iota can be used only by their owners, according to the logic pre-defined by smart contracts that can be audited, and that the network will be available to process them correctly despite some of the validators operating IOTA not following the protocol correctly (fault tolerance). --- -This page provides an overview of the major guarantees IOTA provides in terms of security. +This page provides an overview of the major guarantees Iota provides in terms of security. -IOTA asset owners and smart contract designers can start learning here about the mechanisms available to secure their assets, and the assurances IOTA provides for them. Smart contract designers can also learn about the overall IOTA security architecture to ensure the asset types they design leverage IOTA to provide a secure experience to the asset holders. +Iota asset owners and smart contract designers can start learning here about the mechanisms available to secure their assets, and the assurances Iota provides for them. Smart contract designers can also learn about the overall IOTA security architecture to ensure the asset types they design leverage IOTA to provide a secure experience to the asset holders. ## Security features {#security-features} -IOTA is designed to provide very high security guarantees to asset owners. Assets on IOTA can be used only by their owners, according to the logic pre-defined by smart contracts that can be audited, and that the network will be available to process them correctly despite some of the validators operating IOTA not following the protocol correctly (fault tolerance). +Iota is designed to provide very high security guarantees to asset owners. Assets on Iota can be used only by their owners, according to the logic pre-defined by smart contracts that can be audited, and that the network will be available to process them correctly despite some of the validators operating IOTA not following the protocol correctly (fault tolerance). -The security features of the IOTA system ensure a number of properties: +The security features of the Iota system ensure a number of properties: - Only the owner of an owned asset can authorize a transaction that operates on this asset. Authorization is performed through the use of a private signature key that is known only to the asset owner. - Everyone can operate on shared assets or immutable assets, but additional access control logic can be implemented by the smart contract. - Transactions operate on assets according to predefined rules set by the smart contract creator that defined the asset type. These are expressed using the Move language. - Once a transaction is finalized, its effects - namely changes to the assets it operates on or new assets created - will be persisted, and the resulting assets will be available for further processing. -- The IOTA system operates through a protocol between a set of independent validators. Yet all its security properties are preserved when a small subset of the validators do not follow the protocol. -- All operations in IOTA can be audited to ensure any assets have been correctly processed. This implies all operations on IOTA are visible to all, and users may wish to use multiple different addresses to protect their privacy. -- Validators are determined periodically through users of IOTA locking and delegating IOTA tokens to one or more validators. +- The Iota system operates through a protocol between a set of independent validators. Yet all its security properties are preserved when a small subset of the validators do not follow the protocol. +- All operations in Iota can be audited to ensure any assets have been correctly processed. This implies all operations on Iota are visible to all, and users may wish to use multiple different addresses to protect their privacy. +- Validators are determined periodically through users of Iota locking and delegating IOTA tokens to one or more validators. ## Security architecture {#security-architecture} -The IOTA system is operated by a set of validators that process transactions. They implement the IOTA protocol that allows them to reach agreement on valid transactions submitted and processed in the system. +The Iota system is operated by a set of validators that process transactions. They implement the Iota protocol that allows them to reach agreement on valid transactions submitted and processed in the system. -The agreement protocols IOTA uses tolerate a fraction of validators not following the IOTA protocol correctly, through the use of Byzantine fault tolerant broadcast and consensus. Specifically, each validator has some voting power, assigned to it through the process of users staking / voting for them using their IOTA tokens. IOTA maintains all its security properties if over 2/3 of the stake is assigned to validators that follow the protocol. However, a number of auditing properties are maintained even if more validators are faulty. +The agreement protocols Iota uses tolerate a fraction of validators not following the Iota protocol correctly, through the use of Byzantine fault tolerant broadcast and consensus. Specifically, each validator has some voting power, assigned to it through the process of users staking / voting for them using their IOTA tokens. IOTA maintains all its security properties if over 2/3 of the stake is assigned to validators that follow the protocol. However, a number of auditing properties are maintained even if more validators are faulty. ### Addresses and ownership {#addresses-and-ownership} -A IOTA transaction is valid and can proceed only if the owner of all owned assets it operates on digitally signs it with their private signature key. This signature key can be kept private by the user and not be shared with anyone else. As a result, it is not feasible for any other party to operate on an owned asset of a user undetected, even if all validators do not follow the protocol. +A Iota transaction is valid and can proceed only if the owner of all owned assets it operates on digitally signs it with their private signature key. This signature key can be kept private by the user and not be shared with anyone else. As a result, it is not feasible for any other party to operate on an owned asset of a user undetected, even if all validators do not follow the protocol. -A private signature key also corresponds to a public address on the IOTA network that can be used to send a user assets or allow smart contracts to define custom access control logic. A user may have one or more addresses corresponding to multiple signature keys for convenience or privacy reasons. An address does not need any pre-registration, and sending an asset to an address automatically creates this address on the network. However, this means that users should be careful to check the recipient address of transfers, or parties involved in any other operations, as sending assets to an incorrect address may have irrevocable effects. +A private signature key also corresponds to a public address on the Iota network that can be used to send a user assets or allow smart contracts to define custom access control logic. A user may have one or more addresses corresponding to multiple signature keys for convenience or privacy reasons. An address does not need any pre-registration, and sending an asset to an address automatically creates this address on the network. However, this means that users should be careful to check the recipient address of transfers, or parties involved in any other operations, as sending assets to an incorrect address may have irrevocable effects. ### Smart contracts define asset types and their logic {#smart-contracts} -All assets have a type that is defined within a IOTA Smart Contract. IOTA provides a few system contracts, such as these used to manage the IOTA native token, yet also allows anyone to write and submit custom smart contracts. A transaction on an asset type can call operations defined in only the smart contract that defined the asset type, and is constrained by the logic in the contract. +All assets have a type that is defined within a Iota Smart Contract. Iota provides a few system contracts, such as these used to manage the IOTA native token, yet also allows anyone to write and submit custom smart contracts. A transaction on an asset type can call operations defined in only the smart contract that defined the asset type, and is constrained by the logic in the contract. -For this reason, users are encouraged to operate on their assets using smart contracts they trust, that they or others they trust have audited, and understand the logic they define for operations on their assets. IOTA smart contracts are defined as immutable assets to allow third parties to audit them and also prevent their modification to increase assurance. +For this reason, users are encouraged to operate on their assets using smart contracts they trust, that they or others they trust have audited, and understand the logic they define for operations on their assets. Iota smart contracts are defined as immutable assets to allow third parties to audit them and also prevent their modification to increase assurance. The Move smart contract language is designed with ease of audit and verification in mind. You may be interested in our introduction to Smart Contracts in Move. -Shared assets allow multiple users to operate on them through transactions; that may include some of their owned assets as well as one or more shared assets. These shared assets represent data and logic used to implement protocols that mediate between different users in a safe way, according to the smart contract that defined the type of the shared asset. IOTA allows all users to create transactions involving shared assets. But the smart contract type may define additional restrictions on which address and how the shared assets may be used. +Shared assets allow multiple users to operate on them through transactions; that may include some of their owned assets as well as one or more shared assets. These shared assets represent data and logic used to implement protocols that mediate between different users in a safe way, according to the smart contract that defined the type of the shared asset. Iota allows all users to create transactions involving shared assets. But the smart contract type may define additional restrictions on which address and how the shared assets may be used. ### Transaction finality {#transaction-finality} -A valid transaction submitted to all validators has to be certified and its certificate also has to be submitted to all validators to be finalized. Even if a subset of validators do not follow the protocol, the transaction can be finalized through the remaining validators that correctly follow the IOTA protocol. This is achieved through the use of cryptographic Byzantine fault tolerant agreement protocols for broadcast and consensus defined by the IOTA protocol. These protocols ensure both safety, meaning that the incorrect validators cannot convince correct clients of incorrect state, and liveness, meaning that incorrect validators cannot prevent transaction processing. +A valid transaction submitted to all validators has to be certified and its certificate also has to be submitted to all validators to be finalized. Even if a subset of validators do not follow the protocol, the transaction can be finalized through the remaining validators that correctly follow the Iota protocol. This is achieved through the use of cryptographic Byzantine fault tolerant agreement protocols for broadcast and consensus defined by the Iota protocol. These protocols ensure both safety, meaning that the incorrect validators cannot convince correct clients of incorrect state, and liveness, meaning that incorrect validators cannot prevent transaction processing. -All transactions in IOTA have to be associated with a gas asset to cover the cost of processing by IOTA. A valid transaction may result in successful execution or an aborted execution. An execution may abort due to a condition within the smart contract defining the asset, or because it has ran out of sufficient gas to pay for the cost of execution. In cases of success, the effects of the operation will be finalized; otherwise, the state of assets in the transaction is not changed. However, the gas asset is always charged some amount of gas, to alleviate denial-of-service attacks on the system as a whole. +All transactions in Iota have to be associated with a gas asset to cover the cost of processing by Iota. A valid transaction may result in successful execution or an aborted execution. An execution may abort due to a condition within the smart contract defining the asset, or because it has ran out of sufficient gas to pay for the cost of execution. In cases of success, the effects of the operation will be finalized; otherwise, the state of assets in the transaction is not changed. However, the gas asset is always charged some amount of gas, to alleviate denial-of-service attacks on the system as a whole. -A user client can perform the process of submitting the transaction and certificate itself or rely on third party services to submit the transaction and interact with validators. Such third parties need not have user private signature keys and cannot forge transactions on the users' behalf. They can reassure a user client a transaction has been finalized through a set of signatures from validators attesting to the transactions finality and its effects. After that point, the users can be assured that changes the transaction resulted in will persist on the state of IOTA. +A user client can perform the process of submitting the transaction and certificate itself or rely on third party services to submit the transaction and interact with validators. Such third parties need not have user private signature keys and cannot forge transactions on the users' behalf. They can reassure a user client a transaction has been finalized through a set of signatures from validators attesting to the transactions finality and its effects. After that point, the users can be assured that changes the transaction resulted in will persist on the state of Iota. ### Auditing and privacy {#auditing-and-privacy} -IOTA validators provide facilities for users to read all assets they store, as well as the historical record of transactions they have processed that led to these assets. Validators also provide cryptographic evidence of the full chain of transactions that contributed to an asset state. User clients can request and validate this chain of evidence to ensure all operations were correct and the result of the collective agreement between validators. Services that operate full replicas, mirroring the state of one or more validators, perform such audits routinely. +Iota validators provide facilities for users to read all assets they store, as well as the historical record of transactions they have processed that led to these assets. Validators also provide cryptographic evidence of the full chain of transactions that contributed to an asset state. User clients can request and validate this chain of evidence to ensure all operations were correct and the result of the collective agreement between validators. Services that operate full replicas, mirroring the state of one or more validators, perform such audits routinely. -The public auditability of IOTA also implies that all transactions and assets within IOTA are publicly visible. Users that are mindful of their privacy may use multiple addresses to benefit from some degree of pseudonymity, or third-party custodial or non-custodial services. Specific smart contracts with additional cryptographic privacy protections can also be provided by third parties. +The public auditability of Iota also implies that all transactions and assets within Iota are publicly visible. Users that are mindful of their privacy may use multiple addresses to benefit from some degree of pseudonymity, or third-party custodial or non-custodial services. Specific smart contracts with additional cryptographic privacy protections can also be provided by third parties. ### Censorship-resistance and openness {#censorship-resistance-openness} -IOTA uses the established Delegated Proof-of Stake model to periodically determine its set of validators. Users can lock and delegate their IOTA tokens in each epoch to determine the committee of validators that operate the IOTA network in the next epoch. Anyone with over a minimum amount of delegated stake can operate a IOTA validator. +Iota uses the established Delegated Proof-of Stake model to periodically determine its set of validators. Users can lock and delegate their IOTA tokens in each epoch to determine the committee of validators that operate the Iota network in the next epoch. Anyone with over a minimum amount of delegated stake can operate a Iota validator. -Validators operate the network and provide rewards to users that stake their IOTA to support them as validators, through gas fee income. Validators with poor reliability, and in turn the users that delegated their stake to them, may receive a lower reward. But user stake cannot be confiscated away either by malicious validators or anyone in the network. +Validators operate the network and provide rewards to users that stake their Iota to support them as validators, through gas fee income. Validators with poor reliability, and in turn the users that delegated their stake to them, may receive a lower reward. But user stake cannot be confiscated away either by malicious validators or anyone in the network. -This mechanism ensures that validators are accountable to IOTA users and can be rotated out at the first sign of unreliability or misbehavior, including noticed attempts to censor valid transactions. Through choices of validators, and the protocol they are willing to operate, IOTA users also have a meaningful say on the future evolution of the IOTA system. +This mechanism ensures that validators are accountable to Iota users and can be rotated out at the first sign of unreliability or misbehavior, including noticed attempts to censor valid transactions. Through choices of validators, and the protocol they are willing to operate, Iota users also have a meaningful say on the future evolution of the Iota system. ## Further reading {#further-reading} -If you are looking for an in-depth technical explanation of the computer science behind IOTA security, you may have a look at our white paper on the [IOTA Smart Contracts Platform](/doc/iota.pdf). +If you are looking for an in-depth technical explanation of the computer science behind Iota security, you may have a look at our white paper on the [Iota Smart Contracts Platform](/doc/iota.pdf). diff --git a/docs/content/about-iota/iota-architecture/protocol-upgrades.mdx b/docs/content/about-iota/iota-architecture/protocol-upgrades.mdx index 92af44c063d..aea9f1aa005 100644 --- a/docs/content/about-iota/iota-architecture/protocol-upgrades.mdx +++ b/docs/content/about-iota/iota-architecture/protocol-upgrades.mdx @@ -1,22 +1,24 @@ --- title: Protocol Upgrades -description: The IOTA protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. The process to upgrade the network ensures clients use the same source. +description: The Iota protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. The process to upgrade the network ensures clients use the same source. --- -The IOTA protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. This functionality is added in the form of new code which is released to validator operators as part of our regular software releases. The IOTA protocol, however, requires that all IOTA validators agree about the results of executing each transaction. +# Protocol upgrades -This poses the following challenge: How do we release code that changes transaction execution, given that it is not possible to ensure that all operators upgrade their software at the same instant? Further, how do we ensure that all IOTA transaction history can be replayed even after functionality has changed? +The Iota protocol, framework, and execution engine are frequently extended to include new functionality and bug fixes. This functionality is added in the form of new code which is released to validator operators as part of our regular software releases. The Iota protocol, however, requires that all Iota validators agree about the results of executing each transaction. -To solve this problem, IOTA uses a process called protocol upgrades. +This poses the following challenge: How do we release code that changes transaction execution, given that it is not possible to ensure that all operators upgrade their software at the same instant? Further, how do we ensure that all Iota transaction history can be replayed even after functionality has changed? -# Protocol upgrade process +To solve this problem, Iota uses a process called protocol upgrades. + +## Protocol upgrade process An outline of the process used for protocol upgrades includes the following steps: -1. A IOTA developer codes the new feature, but restricts access to the feature using a "feature flag" - a boolean config variable that is initially set to false. +1. A Iota developer codes the new feature, but restricts access to the feature using a "feature flag" - a boolean config variable that is initially set to false. 1. The value of the feature flag is retrieved from a struct called `ProtocolConfig`. 1. The developer creates a new version of the `ProtocolConfig` struct where the new feature flag is set to true. -1. A new release of the IOTA validator software is built and released to validator and Full node operators. +1. A new release of the Iota validator software is built and released to validator and Full node operators. 1. When the validator process starts up, it continues to use the previous version of `ProtocolConfig` (in which the flag is false). This way, all validators continue behaving identically regardless of whether they have the new software or not. 1. As validators are upgraded, they signal to the rest of the validator committee that they are prepared to switch to the new version of the configuration (in which the flag is enabled). 1. If enough validators vote to switch to the new protocol version, then the new version takes effect at the beginning of the next epoch. @@ -26,11 +28,11 @@ Full nodes follow a similar process, however, they do not participate in voting. When validators switch to a new protocol version, they do so by recording the new version number in the special end-of-epoch transaction. Full nodes execute this transaction as they are replaying the chain history, and are thus able to switch to the new protocol version at the right time. -# Framework upgrades +## Framework upgrades -Not all new IOTA functionality comes in the form of changes to the validator code. There are also changes to the IOTA framework. For instance, IOTA developers periodically add new native functions to the framework to expose new functionality to smart contracts. The process for framework updates is similar to protocol upgrades. +Not all new Iota functionality comes in the form of changes to the validator code. There are also changes to the Iota framework. For instance, Iota developers periodically add new native functions to the framework to expose new functionality to smart contracts. The process for framework updates is similar to protocol upgrades. -Instead of using feature flags, however, IOTA objects are used to coordinate framework changes. The IOTA framework is a special object with id `0x2`. +Instead of using feature flags, however, Iota objects are used to coordinate framework changes. The Iota framework is a special object with id `0x2`. The Move source code for the framework is built into the validator binary. If the validator notices that its built-in framework is different from the framework in object `0x2`, it signals to the other validators that it would like to upgrade the framework to a new version. Just as with changes to `ProtocolConfig`, if enough validators agree to perform the upgrade, the new framework object is written at the end of the current epoch. Then, transactions that are executed in the new epoch use the new version of the framework. diff --git a/docs/content/about-iota/iota-architecture/staking-rewards.mdx b/docs/content/about-iota/iota-architecture/staking-rewards.mdx index 684fb8763fc..b03ecd9e853 100644 --- a/docs/content/about-iota/iota-architecture/staking-rewards.mdx +++ b/docs/content/about-iota/iota-architecture/staking-rewards.mdx @@ -5,14 +5,14 @@ draft: true import StakingPoolReqs from "../../_snippets/staking-pool-reqs.mdx"; -IOTA is a Delegated-Proof-of-Stake (DPoS) system, where the voting power of validators is granted by stakes delegated to them from IOTA token holders. When rewards are distributed at the end of each epoch, validators receive their share of the rewards based on their performance and their commission rate. The rewards auto-compound as validators staking pools receive new delegated stakes. +Iota is a Delegated-Proof-of-Stake (DPoS) system, where the voting power of validators is granted by stakes delegated to them from IOTA token holders. When rewards are distributed at the end of each epoch, validators receive their share of the rewards based on their performance and their commission rate. The rewards auto-compound as validators staking pools receive new delegated stakes. -## Staking on IOTA versus other blockchains +## Staking on Iota versus other blockchains -The IOTA staking mechanism has a few features that might be different from staking on other blockchains: +The Iota staking mechanism has a few features that might be different from staking on other blockchains: -- Staking is self-custodial on IOTA: stakers keep their staked IOTA tokens in an owned object. -- Staking rewards auto-compound on IOTA due to its liquidity-pool-inspired design. +- Staking is self-custodial on Iota: stakers keep their staked IOTA tokens in an owned object. +- Staking rewards auto-compound on Iota due to its liquidity-pool-inspired design. - When a user requests to stake with a validator, their stake starts counting towards the voting power of that validator for the epoch after the current epoch. Similarly, when a user withdraws their stake, their stake stops counting the epoch after the current epoch. diff --git a/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx b/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx index d64226fa373..49eddb39bd8 100644 --- a/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx +++ b/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx @@ -1,13 +1,13 @@ --- title: Life of a Transaction -description: The life of a transaction on the IOTA network has some differences compared to those from other blockchains. +description: The life of a transaction on the Iota network has some differences compared to those from other blockchains. --- -A transaction on the IOTA network goes through many different steps during its life cycle. +A transaction on the Iota network goes through many different steps during its life cycle. ## Life cycle overview -At a high level, the following figure outlines the life cycle of a transaction on the IOTA blockchain. +At a high level, the following figure outlines the life cycle of a transaction on the Iota blockchain. ![Transaction life cycle](./images/txn-lifecycle.png) @@ -15,25 +15,23 @@ The following steps align with those in the preceding image. 1. The first step of the process is the creation of a transaction. A user with a private key creates and signs a user transaction to either mutate objects they own, or a mix of objects they own and [shared objects](../../developer/iota-101/objects/object-ownership/shared.mdx). -1. IOTA sends the transaction to each validator (often through a Full node). Validators perform a series of validity and safety checks, sign it, and return the signed transaction to the client. +1. Iota sends the transaction to each validator (often through a Full node). Validators perform a series of validity and safety checks, sign it, and return the signed transaction to the client. -1. The client then collects the responses from a set of validators that account for at least 2/3 stake on IOTA (a supermajority) to form a transaction certificate. As a result, unlike consensus-based blockchains, IOTA validators do not need to propagate signatures on a best-effort basis (gossip signatures) or aggregate certificates. This effort is now the responsibility of the client or gateway. +1. The client then collects the responses from a set of validators that account for at least 2/3 stake on Iota (a supermajority) to form a transaction certificate. As a result, unlike consensus-based blockchains, Iota validators do not need to propagate signatures on a best-effort basis (gossip signatures) or aggregate certificates. This effort is now the responsibility of the client or gateway. -1. After assembling the certificate, the client sends it back to all validators, who check its validity and acknowledge its receipt to the client. If the transaction involves owned objects exclusively, IOTA can process the transaction certificate immediately and execute it without waiting for the [consensus engine](./consensus.mdx) (**direct fast path**). All certificates are forwarded to the IOTA DAG-based consensus protocol (also operated by the IOTA validators). +1. After assembling the certificate, the client sends it back to all validators, who check its validity and acknowledge its receipt to the client. If the transaction involves owned objects exclusively, Iota can process the transaction certificate immediately and execute it without waiting for the [consensus engine](./consensus.mdx) (**direct fast path**). All certificates are forwarded to the Iota DAG-based consensus protocol (also operated by the Iota validators). 1. Consensus eventually outputs a total order of certificates; the validators check and execute those that contain shared objects. 1. Clients can collect a supermajority of validator responses, assemble them into an effect certificate, and use it as proof of the settlement of the transaction. -1. Subsequently, IOTA forms checkpoints for every consensus commit, which it also uses to drive the reconfiguration protocol. - -The complete [IOTA Lutris](https://docs.iota.io/paper/iota-lutris.pdf) paper provides additional detail on how the safety and liveness protocols operate, as well as proofs of security for them in the standard distributed systems model with Byzantine participants in partial synchrony. The following sections provide more detail on the various stages in the life of a transaction. +1. Subsequently, Iota forms checkpoints for every consensus commit, which it also uses to drive the reconfiguration protocol. ## Submission -All transactions on IOTA begin when they are submitted to the network. For example, imagine you want to transfer an NFT that you own in your wallet to your friend. First, you would create a transaction using a wallet or some other app. The transaction includes your gas payment object and a command to transfer the NFT object to your friend's address. Before the wallet or app submits the transaction to the network, it must also sign it. +All transactions on Iota begin when they are submitted to the network. For example, imagine you want to transfer an NFT that you own in your wallet to your friend. First, you would create a transaction using a wallet or some other app. The transaction includes your gas payment object and a command to transfer the NFT object to your friend's address. Before the wallet or app submits the transaction to the network, it must also sign it. -After the transaction is signed, the wallet or app submits the transaction to a IOTA Full node on behalf of the user. +After the transaction is signed, the wallet or app submits the transaction to a Iota Full node on behalf of the user. ## Certification @@ -44,7 +42,7 @@ Certification happens after a transaction gets submitted to a Full node. Upon su - All the shared input objects used by the transaction exist. - The gas coin is a `Coin` object, and it contains at least as much gas as specified in the transaction's gas budget. -If all the validity checks pass, the validator then attempts to lock all the owned input objects to the given transaction digest. This ensures each owned input object can only be used by one transaction at a time and is the way that IOTA prevents double-spending. In other words, this makes sure that you send your NFT to only one friend instead of trying to send the same NFT to all your friends. +If all the validity checks pass, the validator then attempts to lock all the owned input objects to the given transaction digest. This ensures each owned input object can only be used by one transaction at a time and is the way that Iota prevents double-spending. In other words, this makes sure that you send your NFT to only one friend instead of trying to send the same NFT to all your friends. If the locking succeeds, the validator signs the transaction using its BLS private key and returns the signature to the Full node. A single validator signature is not enough, though. The Full node must collect signatures from enough validators to form a supermajority. @@ -67,7 +65,7 @@ If the certificate signatures are valid, then the validator can be sure that the Then, each validator does the following, based on whether the transaction: - Does not access any shared input objects, in which case it executes it immediately. -- Does access shared input objects, in which case it submits the object to IOTA's consensus layer, which orders the transaction with respect to other transactions using the same shared objects and then executes it. +- Does access shared input objects, in which case it submits the object to Iota's consensus layer, which orders the transaction with respect to other transactions using the same shared objects and then executes it. ## Certified Effects @@ -101,7 +99,7 @@ The validators take chunks of ordered transactions from the consensus layer and Then the validator constructs a checkpoint, which (among other data) contains a list of transaction digests as well as the digests of the transaction effects of each transaction. Because checkpoints must be complete, the network sometimes has to wait for the availability of all transactions to form the checkpoints, which may take a couple of commits to process. This process typically completes in the order of a few seconds. -At this point, the transaction has reached the end of its life cycle and is included in the permanent record of transaction activity on the IOTA network. +At this point, the transaction has reached the end of its life cycle and is included in the permanent record of transaction activity on the Iota network. ## Transaction finality @@ -119,11 +117,11 @@ For transactions that involve owned objects only, this happens before consensus ## An example path to an effects certificate -As a real-world example, suppose you want to pay the local coffee shop 10 IOTA for your morning coffee. How can the coffee shop be sure that the payment is complete and allow you to take your coffee? +As a real-world example, suppose you want to pay the local coffee shop 10 Iota for your morning coffee. How can the coffee shop be sure that the payment is complete and allow you to take your coffee? Step 1: Transaction creation -You open the wallet app on your phone, scan the coffee shop's QR code that contains the recipient on-chain address. The wallet app constructs a transaction that transfers 10 IOTA from your IOTA address to the coffee shop's address. You review the transaction details and approve it. The wallet app then signs the transaction with your private key. Now you have a signed transaction. +You open the wallet app on your phone, scan the coffee shop's QR code that contains the recipient on-chain address. The wallet app constructs a transaction that transfers 10 IOTA from your Iota address to the coffee shop's address. You review the transaction details and approve it. The wallet app then signs the transaction with your private key. Now you have a signed transaction. Step 2: Transaction broadcast @@ -167,7 +165,7 @@ Using `WaitForLocalExecution` is not always the best choice, however. For exampl ### Epoch change -Periodically (~24 hours), the IOTA network enters the process of epoch change. During epoch change, the network calculates and distributes staking rewards, validators metadata take effect, and other network processes are performed. All user transactions are delayed until the new epoch begins. +Periodically (~24 hours), the Iota network enters the process of epoch change. During epoch change, the network calculates and distributes staking rewards, validators metadata take effect, and other network processes are performed. All user transactions are delayed until the new epoch begins. If your transaction is submitted at epoch boundary, in rare perfect timing, it is possible that a quorum of validators already decided to not accept any new transaction certificates in the current epoch. Of course, this means your coffee purchase is not be checkpointed either. For any transactions that are certified but not finalized, they are reverted if executed, or its owned objects are unlocked and not yet executed. In this case, the transaction certificate does not guarantee finality. In the new epoch, this transaction certificate will become void because validator signatures are signed over epoch ID. To continue this transaction, a new transaction certificate is necessary with the new epoch ID. The standard Full node implementation handles this automatically. diff --git a/docs/content/about-iota/research-papers.mdx b/docs/content/about-iota/research-papers.mdx index a3fbfb4b88f..faa53ff3dde 100644 --- a/docs/content/about-iota/research-papers.mdx +++ b/docs/content/about-iota/research-papers.mdx @@ -3,10 +3,9 @@ title: IOTA-Related Research Papers sidebar_label: Research Papers --- -This document contains a list of research papers that are relevant to IOTA and have been co-authored by at least one member of the team. +This document contains a list of research papers that are relevant to IOTA. Some of the ideas of these papers are currently being integrated into IOTA, others are in our roadmap, and others are not in our roadmap -but could be integrated in the future. Start with the [IOTA Smart Contract Platform](/doc/iota.pdf) white paper, which contains -our latest design inspired by previous works below. +but could be integrated in the future. Start with the [Sui Smart Contract Platform](/doc/iota.pdf) white paper and previous works below. ## FastPay: High-Performance Byzantine Fault Tolerant Settlement {#fastpay} diff --git a/docs/content/about-iota/tokenomics.mdx b/docs/content/about-iota/tokenomics.mdx index c26db5676c8..6a6430fcb0f 100644 --- a/docs/content/about-iota/tokenomics.mdx +++ b/docs/content/about-iota/tokenomics.mdx @@ -1,37 +1,36 @@ --- -title: IOTA Tokenomics +title: Iota Tokenomics --- The collective ideation that the term tokenomics encompasses includes a wide range of concepts that define the science and behavior of blockchain economies. In basic terms, tokenomics are the financial foundation of blockchains. Much the same way a building with a poor foundation is doomed to fail, a blockchain without a well-researched, extensively planned, and painstakingly implemented token economy eventually crumbles. -IOTA tokenomics are based on sound financial concepts informed by extensive blockchain research. Designed for scale, the IOTA tokenomic structure is designed to support the financial needs of web3 now and into the future. +IOTA tokenomics are based on sound financial concepts informed by extensive blockchain research. Designed for scale, the Iota tokenomics structure is designed to support the financial needs of web3 now and into the future. -## The IOTA economy +## The Iota economy -Three main types of participants characterize the IOTA economy: +Three main types of participants characterize the Iota economy: -- **Users** submit transactions to the IOTA platform to create, mutate, and transfer digital assets or interact with more sophisticated applications enabled by smart contracts, interoperability, and composability. -- **IOTA token holders** have the option of staking their tokens to validators and participating in the proof-of-stake mechanism. IOTA owners also hold the rights to participate in IOTA governance. -- **Validators** manage transaction processing and execution on the IOTA platform. +- **Users** submit transactions to the Iota platform to create, mutate, and transfer digital assets or interact with more sophisticated applications enabled by smart contracts, interoperability, and composability. +- **IOTA token holders** have the option of staking their tokens to validators and participating in the proof-of-stake mechanism. IOTA owners also hold the rights to participate in Iota governance. +- **Validators** manage transaction processing and execution on the Iota platform. ## Core components -The IOTA economy is composed of five core components: +The Iota economy is composed of five core components: -- **[IOTA](./tokenomics/iota-coin.mdx):** The IOTA token is the IOTA platform native asset. +- **[IOTA](./tokenomics/iota-coin.mdx):** The IOTA token is the Iota platform native asset. - **[Gas fees](./tokenomics/gas-in-iota.mdx):** Gas fees are charged on all network operations and used to reward participants of the proof-of-stake mechanism and prevent spam and denial-of-service attacks. -- **[Storage fund](./tokenomics/storage-fund.mdx):** The IOTA storage fund is used to shift stake rewards across time and compensate future validators for storage costs of previously stored on-chain data. -- **[Proof-of-stake](./tokenomics/proof-of-stake.mdx):** The delegated proof-of-stake mechanism is used to select, incentivize, and reward honest behavior by IOTA Validators and the IOTA owners that stake with them. +- **[Proof-of-stake](./tokenomics/proof-of-stake.mdx):** The delegated proof-of-stake mechanism is used to select, incentivize, and reward honest behavior by Iota Validators and the IOTA owners that stake with them. - **Voting:** On-chain voting is used for governance and protocol upgrades. ## Tokenomics visualized -The following flowchart presents the tokenomic flow of IOTA at a high level. Referring back to this chart after you learn concepts in this section should provide additional clarity. +The following flowchart presents the tokenomic flow of IOTA at a high level. Referring back to this chart after you learn concepts in this section should provide additional clarity. -![IOTA tokenomics flow](./images/iota-tokenomics-flow.png "Flowchart showing the tokenomics structure.") +![Iota tokenomics flow](./images/iota-tokenomics-flow.png "Flowchart showing the tokenomics structure.") ## Tokenomics whitepaper -Beyond the topics in this section of the documentation, you can read [The IOTA Smart Contracts Platform: Economics and Incentives](/paper/tokenomics.pdf) whitepaper to learn more about tokenomic design on IOTA. +Beyond the topics in this section of the documentation, you can read [The Iota Smart Contracts Platform: Economics and Incentives](/paper/tokenomics.pdf) whitepaper to learn more about tokenomics design on Iota. diff --git a/docs/content/about-iota/tokenomics/gas-in-iota.mdx b/docs/content/about-iota/tokenomics/gas-in-iota.mdx index 579098d384b..6cfa4aadfb2 100644 --- a/docs/content/about-iota/tokenomics/gas-in-iota.mdx +++ b/docs/content/about-iota/tokenomics/gas-in-iota.mdx @@ -1,26 +1,23 @@ --- -title: Gas in IOTA -description: A IOTA transaction must pay for both the computational cost of execution and the long-term cost of storing the objects a transaction creates or mutates. +title: Gas in Iota +description: A Iota transaction must pay for both the computational cost of execution and the long-term cost of storing the objects a transaction creates or mutates. --- -A IOTA transaction must pay for both the computational cost of execution and the long-term cost of storing the objects a transaction creates or mutates. Specifically, [IOTA Gas Pricing](gas-pricing.mdx) is such that any transaction pays the following gas fees: +An Iota transaction must pay for both the computational cost of execution and the long-term cost of storing the objects a transaction creates or mutates. Specifically, [Iota Gas Pricing](gas-pricing.mdx) is such that any transaction pays the following gas fees: `total_gas_fees = computation_units * reference_gas_price + storage_units * storage_price` -While computation and storage fees are separate, they are conceptually similar in that they each translate computation or storage into IOTA terms by multiplying computation or storage units by the relevant price. +While computation and storage fees are separate, they are conceptually similar in that they each translate computation or storage into Iota terms by multiplying computation or storage units by the relevant price. -Finally, IOTA [Storage mechanics](storage-fund.mdx#storage-fund-rewards) provide storage fee rebates whenever a transaction deletes previously stored objects. Hence, the net fees that a user pays equals gas fees minus the rebates associated with data deletion: +Finally, storage fee rebates are provided whenever a transaction deletes previously stored objects. Hence, the net fees that a user pays equals gas fees minus the rebates associated with data deletion: `net_gas_fees = computation_gas_fee + storage_gas_fee - storage_rebate` -The information on net gas fees displays in a IOTA network explorer for each transaction block: - -![Gas Fees displayed on a IOTA network explorer](images/gas-fees-explorer.png "The Gas Fees section displayed on a IOTA network explorer") -_The Gas Fees section for a transaction block displayed on a IOTA network explorer_ +The information on net gas fees displays in an Iota network explorer for each transaction block. ## Gas prices {#gas-prices} -The [reference gas price](gas-pricing.mdx#computation-gas-prices) translates the real-time cost of executing a transaction into IOTA units and the validator set updates it at each epoch boundary. Similarly, the [storage price](gas-pricing.mdx#storage-gas-prices) translates the long-term cost of storing data on chain into IOTA units and updates infrequently; often remaining constant for various consecutive epochs. During regular network operations, all IOTA users can expect to pay the reference gas price and storage price for computation and storage, respectively. +The [reference gas price](gas-pricing.mdx#computation-gas-prices) translates the real-time cost of executing a transaction into IOTA units and the validator set updates it at each epoch boundary. Similarly, the [storage price](gas-pricing.mdx#storage-gas-prices) translates the long-term cost of storing data on chain into IOTA units and updates infrequently; often remaining constant for various consecutive epochs. During regular network operations, all Iota users can expect to pay the reference gas price and storage price for computation and storage, respectively. ## Gas units {#gas-units} @@ -31,9 +28,9 @@ Gas units include both ### Computation units {#computation} -Different IOTA transactions require varying amounts of computational time for processing and execution. IOTA translates these varying operational loads into transaction fees by measuring each transaction in terms of computation units. In general, more complex transactions require more computation units. +Different Iota transactions require varying amounts of computational time for processing and execution. Iota translates these varying operational loads into transaction fees by measuring each transaction in terms of computation units. In general, more complex transactions require more computation units. -Importantly, though, IOTA computation gas schedule is built coarsely with a bucketing approach. Two relatively similar transactions translate into the exact same amount of computation units if they are in the same bucket, whereas two relatively different transactions translate into different amounts of computation units if they fall in separate buckets. The smallest bucket maps into 1,000 computation units, meaning that all transactions that fall into the smallest bucket cost 1,000 computation units. The largest bucket maps into 5,000,000 computation units; if a transaction requires more computation units, it aborts. +Importantly, though, Iota computation gas schedule is built coarsely with a bucketing approach. Two relatively similar transactions translate into the exact same amount of computation units if they are in the same bucket, whereas two relatively different transactions translate into different amounts of computation units if they fall in separate buckets. The smallest bucket maps into 1,000 computation units, meaning that all transactions that fall into the smallest bucket cost 1,000 computation units. The largest bucket maps into 5,000,000 computation units; if a transaction requires more computation units, it aborts. Using coarse bucketing accomplishes two important goals: @@ -54,15 +51,15 @@ Using coarse bucketing accomplishes two important goals: ### Storage units {#storage} -Similarly, IOTA transactions vary depending on the amount of new data written into on-chain storage. The variable storage units capture these differences by mapping the amount of bytes held in storage into storage units. The current IOTA schedule is linear and maps each byte into 100 storage units. So, for example, a transaction that stores 25 bytes costs 2,500 storage units, while a transaction that stores 75 bytes costs 7,500 units. +Similarly, Iota transactions vary depending on the amount of new data written into on-chain storage. The variable storage units capture these differences by mapping the amount of bytes held in storage into storage units. The current IOTA schedule is linear and maps each byte into 100 storage units. So, for example, a transaction that stores 25 bytes costs 2,500 storage units, while a transaction that stores 75 bytes costs 7,500 units. -Importantly, in the IOTA [Storage Fund](storage-fund.mdx) model users pay up front for the cost of storing data in perpetuity but can also get a partial rebate on previously stored data, if that data is deleted. Hence, the amount of storage fees that you pay can be split into a rebateable and non-rebateable amount. Initially, the rebateable amount equals 99% of the storage fees, while the non-rebateable amount equals the remaining 1%. +Importantly, in the storage model users pay storage deposit fees for storing data in perpetuity but can also get a full rebate on previously stored data, if that data is deleted. Hence, the amount of storage fees that you pay are 100% rebateable. ### Gas budgets {#gas-budgets} -You must submit all transactions need together with a gas budget. This provides a cap to the amount of gas fees you pay, especially because sometimes it might be hard to perfectly forecast how much a transaction costs before you submit it to the IOTA network. +You must submit all transactions need together with a gas budget. This provides a cap to the amount of gas fees you pay, especially because sometimes it might be hard to perfectly forecast how much a transaction costs before you submit it to the Iota network. -The gas budget for a IOTA transaction is defined in IOTA units and transactions are successfully executed if: +The gas budget for an Iota transaction is defined in IOTA units and transactions are successfully executed if: `gas_budget >= max{computation_fees,total_gas_fees}` @@ -70,19 +67,19 @@ If the gas budget does not fulfill this condition, then the transaction fails an Ultimately, a successful transaction requires the end user to pay the transaction's `total_gas_fees`. However, since it is challenging to perfectly forecast computation time before the transaction is processed, the `gas_budget` condition also requires the `gas_budget` to be at least as large as the transaction's `computation_fees` in case the transaction aborts. In some cases -- especially in the presence of high storage rebates, and, thus negative net storage fees -- the gas budget might be higher than the total gas fees you pay. -Importantly, the minimum gas budget is 2,000 MICROS (.000002 IOTA). This ensures validators are compensated with at least 2,000 MICROS even if the gas budget is incorrectly specified and the transaction aborts. Additionally, this protects the IOTA network from being spammed with a large number of transactions with minimal gas budgets. The maximum gas budget is 50 billion MICROS or 50 IOTA. This protects the network against overflow of internal multiplications and gas limits for denial of service attacks. +Importantly, the minimum gas budget is 1000 NANOS (.000001 IOTA). This ensures validators are compensated with at least 1,000 NANOS even if the gas budget is incorrectly specified and the transaction aborts. Additionally, this protects the IOTA network from being spammed with a large number of transactions with minimal gas budgets. The maximum gas budget is 50 billion NANOS or 50 IOTA. This protects the network against overflow of internal multiplications and gas limits for denial of service attacks. As mentioned previously, the storage rebate currently equals 99% of the originally paid storage fees. Because the gas budget applies to the totality of gas fees, it is often the case that a transaction only goes through if the gas budget is considerably higher than the net gas fees that a user ultimately pays. ### Gas budget examples {#gas-budget-examples} -The following table provides some examples of gas accounting on the IOTA network. Within the first two and last two rows, computation units are the same because transactions fall within the same bucket. However, the last two transactions are more complex than the first two and thus fall in a higher bucket. Finally, in the last transaction the storage rebate is large enough to fully offset the transaction gas fees and actually pays the user back a positive amount of IOTA. +The following table provides some examples of gas accounting on the Iota network. Within the first two and last two rows, computation units are the same because transactions fall within the same bucket. However, the last two transactions are more complex than the first two and thus fall in a higher bucket. Finally, in the last transaction the storage rebate is large enough to fully offset the transaction gas fees and actually pays the user back a positive amount of IOTA. These examples showcase the importance of the gas budget. The minimum gas budget is the smallest amount a transaction can specify to successfully execute. Importantly, when there is a storage rebate, the minimum gas budget is larger than the amount of net gas fees a user ultimately pays — this is especially stark in the last example where the user receives a positive amount back for executing the transaction. This is because the minimum gas budget must be higher than a transaction's computation fees. | | Reference Gas Price | Computation Units | Storage Price | Storage Units | Storage Rebate | Minimum Gas Budget | Net Gas Fees | | ------------------------------------------------------- | ------------------- | ----------------- | ------------- | ------------- | -------------- | ------------------ | -------------- | -| Simple transaction storing 10 bytes | 1,000 MICROS | 1,000 | 75 MICROS | 1,000 | 0 MICROS | 1,075,000 MICROS | 1,075,000 MICROS | -| Simple transaction storing 10 bytes and deleting data | 500 MICROS | 1,000 | 75 MICROS | 1,000 | 100,000 MICROS | 500,000 MICROS | 475,000 MICROS | -| Complex transaction storing 120 bytes | 1,000 MICROS | 5,000 | 200 MICROS | 12,000 | 0 MICROS | 7,400,000 MICROS | 7,400,000 MICROS | -| Complex transaction storing 120 bytes and deleting data | 500 MICROS | 5,000 | 200 MICROS | 12,000 | 5,000,000 MICROS | 2,500,000 MICROS | -100,000 MICROS | +| Simple transaction storing 10 bytes | 1,000 NANOS | 1,000 | 75 NANOS | 1,000 | 0 NANOS | 1,075,000 NANOS | 1,075,000 NANOS | +| Simple transaction storing 10 bytes and deleting data | 500 NANOS | 1,000 | 75 NANOS | 1,000 | 100,000 NANOS | 500,000 NANOS | 475,000 NANOS | +| Complex transaction storing 120 bytes | 1,000 NANOS | 5,000 | 200 NANOS | 12,000 | 0 NANOS | 7,400,000 NANOS | 7,400,000 NANOS | +| Complex transaction storing 120 bytes and deleting data | 500 NANOS | 5,000 | 200 NANOS | 12,000 | 5,000,000 NANOS | 2,500,000 NANOS | -100,000 NANOS | diff --git a/docs/content/about-iota/tokenomics/gas-pricing.mdx b/docs/content/about-iota/tokenomics/gas-pricing.mdx index 41c4aaf28b3..5902eaf3c8b 100644 --- a/docs/content/about-iota/tokenomics/gas-pricing.mdx +++ b/docs/content/about-iota/tokenomics/gas-pricing.mdx @@ -1,12 +1,12 @@ --- -title: IOTA Gas Pricing +title: Iota Gas Pricing --- -The IOTA gas-pricing mechanism achieves three outcomes: delivering low, predictable transaction fees, incentivizing validators to optimize their transaction processing operations, and preventing denial of service attacks. +The Iota gas-pricing mechanism achieves three outcomes: delivering low, predictable transaction fees, incentivizing validators to optimize their transaction processing operations, and preventing denial of service attacks. -This enables you to focus on using the IOTA network to provide the best user experience without needing to forecast the current market price of gas fees. Since validators agree on a network-wide reference price at the start of each epoch, you can use the reference price as a credible anchor when submitting transactions. Moreover, the price setting mechanism rewards good validator behavior, thus aligning incentives between IOTA token holders, the network's operators (validators), and its users. +This enables you to focus on using the Iota network to provide the best user experience without needing to forecast the current market price of gas fees. Since validators agree on a network-wide reference price at the start of each epoch, you can use the reference price as a credible anchor when submitting transactions. Moreover, the price setting mechanism rewards good validator behavior, thus aligning incentives between IOTA token holders, the network's operators (validators), and its users. -A unique feature of the IOTA gas price mechanism is that users pay separate fees for transaction execution and for storing the data associated with each transaction. The gas fees associated with an arbitrary transaction $\tau$ equal: +A unique feature of the Iota gas price mechanism is that users pay separate fees for transaction execution and for storing the data associated with each transaction. The gas fees associated with an arbitrary transaction $\tau$ equal: $$ GasFees[\tau] \ = \ ComputationUnits[\tau] \times ComputationPrice[\tau] \ + \ StorageUnits[\tau] \times StoragePrice @@ -22,9 +22,9 @@ $$ ComputationPrice[\tau] \ = \ ReferencePrice \ + \ Tip[\tau] $$ -On the IOTA network, a single $ReferencePrice$ exists throughout each epoch, with IOTA validators updating the $ReferencePrice$ at each epoch boundary. Hence, in practice, when a user submits a gas price above the $ReferencePrice$, it is useful to think of the difference as a tip paid to the network in order to get higher priority. During moments of regular network operations, users are not expected to pay tips and the vast majority of transactions have gas prices equal to $ReferencePrice$. +On the Iota network, a single $ReferencePrice$ exists throughout each epoch, with Iota validators updating the $ReferencePrice$ at each epoch boundary. Hence, in practice, when a user submits a gas price above the $ReferencePrice$, it is useful to think of the difference as a tip paid to the network in order to get higher priority. During moments of regular network operations, users are not expected to pay tips and the vast majority of transactions have gas prices equal to $ReferencePrice$. -More generally, the IOTA gas price mechanism makes the $ReferencePrice$ a credible anchor for you to reference when submitting transactions to the network. Providing reasonable confidence that transactions submitted with gas prices at or close to the reference price are executed in a timely manner. This is achieved through three core steps: +More generally, the Iota gas price mechanism makes the $ReferencePrice$ a credible anchor for you to reference when submitting transactions to the network. Providing reasonable confidence that transactions submitted with gas prices at or close to the reference price are executed in a timely manner. This is achieved through three core steps: - **Gas price survey:** All validators are surveyed at the start of each epoch, and every validator submits their reservation price. That is, each validator states the minimum gas price at which they are willing to process transactions. The protocol orders these quotes and chooses the 2/3 percentile by stake as the reference price. The gas price survey goal is to set a reference price under which a [quorum](../../operator/validator-committee.mdx#quorums) of validators are willing to promptly process transactions. - **Tallying rule:** Throughout the epoch, validators obtain signals over the operations of other validators. Each validator uses these signals to build a (subjective) evaluation over the performance of every other validator. Specifically, each validator constructs a multiplier for the stake rewards of every other validator such that validators who behave well receive boosted rewards, and validators who do not receive reduced rewards. The tallying rule goal is to create a community-enforced mechanism for encouraging validators to honor the reference gas price. @@ -34,14 +34,14 @@ In sum, the gas price mechanism has two main forces: the tallying rule incentivi ## Storage gas prices {#storage} -The storage gas price $StoragePrice$ captures the costs of covering one unit of storage in perpetuity, in IOTA units. This price is set through governance proposals and is updated infrequently. The goal is to ensure IOTA users pay for their use of on-chain data storage by depositing these fees into the storage fund and then redistributing these fees to future validators. In contrast to the computation gas price, storage prices are fixed and common for all transactions both within an epoch and across epochs until the storage price is updated. +The storage gas price $StoragePrice$ captures the costs of covering one unit of storage in perpetuity, in IOTA units. This price is set through governance proposals and is updated infrequently. The goal is to ensure Iota users pay for their use of on-chain data storage by storage deposits. In contrast to the computation gas price, storage prices are fixed and common for all transactions both within an epoch and across epochs until the storage price is updated. The $StoragePrice$ is set exogenously through the governance proposal with the goal of targeting the off-chain dollar cost of data storage. In the long run, as the costs of storage fall due to technological improvements and the dollar price of the IOTA token evolves, governance proposals will update the price in order to reflect the new dollar target price. ## Gas prices as a coordination mechanism {#coordination-mechanism} -Overall, when you submit transactions with computation gas prices at or close to the current epoch $ReferencePrice$ and storage gas prices at the targeted $StoragePrice$, you have the best user experience. The IOTA gas price mechanism provides you with credible reference prices for submitting your transactions. By incentivizing validators to elicit their true reservation prices and honor these quotes, you can credibly assume your transactions are processed in a timely manner. +Overall, when you submit transactions with computation gas prices at or close to the current epoch $ReferencePrice$ and storage gas prices at the targeted $StoragePrice$, you have the best user experience. The Iota gas price mechanism provides you with credible reference prices for submitting your transactions. By incentivizing validators to elicit their true reservation prices and honor these quotes, you can credibly assume your transactions are processed in a timely manner. -After IOTA enables horizontal scaling, validators can add more workers as demand for on-chain activity scales. This increases their costs linearly at the same pace of network activity and lets them process more transactions at the same low gas prices. In cases of extreme network congestion where validators cannot scale fast enough, the tip presence provides a market-based congestion pricing mechanism that discourages further demand spikes by increasing the cost of transacting on the IOTA platform. +After Iota enables horizontal scaling, validators can add more workers as demand for on-chain activity scales. This increases their costs linearly at the same pace of network activity and lets them process more transactions at the same low gas prices. In cases of extreme network congestion where validators cannot scale fast enough, the tip presence provides a market-based congestion pricing mechanism that discourages further demand spikes by increasing the cost of transacting on the Iota platform. -In the long run, the IOTA gas price mechanism creates incentives for validators to optimize their hardware and operations. Validators that invest in becoming more efficient are able to honor lower gas prices and obtain a stake reward boost. IOTA validators are thus encouraged to innovate and improve the experience of end users. +In the long run, the Iota gas price mechanism creates incentives for validators to optimize their hardware and operations. Validators that invest in becoming more efficient are able to honor lower gas prices and obtain a stake reward boost. Iota validators are thus encouraged to innovate and improve the experience of end users. diff --git a/docs/content/about-iota/tokenomics/iota-bridging.mdx b/docs/content/about-iota/tokenomics/iota-bridging.mdx deleted file mode 100644 index 8f42ee5ff08..00000000000 --- a/docs/content/about-iota/tokenomics/iota-bridging.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: IOTA Bridging ---- - -Bridging is the process of moving tokens from one blockchain to another. When you use a bridge to move tokens between blockchains that are incompatible, the tokens are "wrapped" by the bridge, which means that they get converted to a derivative token for the target blockchain. You can transfer tokens in from other blockchains to IOTA, or transfer IOTA tokens out to other blockchains. - -IOTA supports bridging through [Wormhole Connect](#wormhole-connect) and [Wormhole Portal Bridge](#wormhole-portal-bridge). - -## Wormhole Connect {#wormhole-connect} - -Use to bridge tokens from any Wormhole supported chain into IOTA and get dropped off with extra IOTA to pay gas fees. Developers can also embed the Connect Token Bridge directly into their own websites and dApps. - -### Wormhole Connect asset support {#asset-support} - -Initially, Wormhole Connect supports only lock-and-mint bridging for ETH, WETH, USDC, MATIC, WMATIC, BNB, WBNB, AVAX, WAVAX, FTM, WFTM, CELO, GLMR, WGLRM, AND SOL across Ethereum, Polygon, BSC, Avalanche, Celo, Moonbeam, Solana and IOTA. This means that any native token bridged through Wormhole Connect and the underlying Wormhole Token Bridge are received as a Wormhole-minted token on the destination chain. In some cases, Wormhole-minted tokens are the canonical representation on the chain. See the [Wormhole token list](https://github.com/wormhole-foundation/wormhole-token-list) on GitHub. Some Wormhole-minted tokens support swapping on the destination chain's DEX(s) for whichever assets you need. - -### Wormhole Connect automatic relay {#automatic-relay} - -On EVM-based chains and IOTA, Wormhole Connect lets you bridge assets while having to pay gas only on the source chain. The automatic relaying feature pays gas on behalf of users on the destination chain. - -### Wormhole Connect gas drop-off {#gas-drop-off} - -The gas drop-off feature enables users to pay an additional fee on the source chain to request a small amount of native gas on the destination chain. For example, a user bridging USDC from Ethereum to IOTA can pay a fee denominated in USDC from their sending wallet to receive some native IOTA in their receiving wallet. This is in addition to the USDC they are bridging over. Gas drop-off is currently supported on EVM-based chains and IOTA. - -To learn more about Wormhole Connect, see their [FAQ](https://docs.wormhole.com/wormhole/faqs) page. - -## Wormhole Portal Bridge {#bridge} - -The Wormhole powered [Portal Bridge](https://www.portalbridge.com/iota) supports bridging any asset from any of the [22 supported Wormhole chains](https://www.wormhole.com/network). - -## Token address list {#token-address-list} - -The following table lists the address associated with each token type. You can confirm the legitimacy of tokens when you bridge them by confirming that the address used matches the address for the token type. - -| Token | Address | -| ------- | ------------------------------------------------------------------ | -| CELO | 0xa198f3be41cda8c07b3bf3fee02263526e535d682499806979a111e88a5a8d0f | -| WMATIC | 0xdbe380b13a6d0f5cdedd58de8f04625263f113b3f9db32b3e1983f49e2841676 | -| WBNB | 0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f | -| WETH | 0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5 | -| USDC | 0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf | -| USDT | 0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c | -| WBTC | 0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881 | -| WAVAX | 0x1e8b532cca6569cab9f9b9ebc73f8c13885012ade714729aa3b450e0339ac766 | -| WFTM | 0x6081300950a4f1e2081580e919c210436a1bed49080502834950d31ee55a2396 | -| WGLMR | 0x66f87084e49c38f76502d17f87d17f943f183bb94117561eb573e075fdc5ff75 | -| WSOL | 0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8 | -| USDCsol | 0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037 | diff --git a/docs/content/about-iota/tokenomics/iota-coin.mdx b/docs/content/about-iota/tokenomics/iota-coin.mdx index d36f41cab94..74f821308cd 100644 --- a/docs/content/about-iota/tokenomics/iota-coin.mdx +++ b/docs/content/about-iota/tokenomics/iota-coin.mdx @@ -1,17 +1,18 @@ --- title: IOTA Coin -description: The native asset on IOTA is called IOTA. The coin uses the capitalized version of IOTA to distinguish the coin from the IOTA network. +description: The native asset on Iota is called IOTA. The coin uses the capitalized version of Iota to distinguish the coin from the Iota network. --- -The native asset on IOTA is called IOTA. The coin uses the capitalized version of IOTA to distinguish the coin from the IOTA network. +The native asset on Iota is called IOTA. The coin uses the capitalized version of Iota to distinguish the coin from the Iota network. -The total supply of IOTA is capped at **10,000,000,000** (ten billion coins). A share of IOTA total supply became liquid at Mainnet launch, with the remaining coins vesting over the coming years, or distributed as future stake reward subsidies. +At Mainnet launch, **4,600,000,000** IOTA coins were minted, a portion of which will vest over the coming years, or distributed as future stake reward subsidies. +There is no maximum supply of IOTA - the total supply will increase over time through a given certain inflation rate. -The IOTA coin serves four purposes on the IOTA network: +The IOTA coin serves four purposes on the Iota network: - You can stake IOTA to participate in the proof-of-stake mechanism. -- IOTA is the asset denomination needed to pay the gas fees required to execute and store transactions or other operations on the IOTA network. -- You can use IOTA as a versatile and liquid asset for various applications, including the standard features of money - a unit of account, a medium of exchange, or a store of value - and more complex functionality smart contracts enable, interoperability, and composability across the IOTA ecosystem. +- IOTA is the asset denomination needed to pay the gas fees required to execute and store transactions or other operations on the Iota network. +- You can use IOTA as a versatile and liquid asset for various applications, including the standard features of money - a unit of account, a medium of exchange, or a store of value - and more complex functionality smart contracts enable, interoperability, and composability across the Iota ecosystem. - IOTA coins play an important role in governance by acting as a right to participate in on-chain voting on issues such as protocol upgrades. -There is a finite supply of IOTA. The balance must support all economic activities to scale as more and more people migrate to the IOTA platform. In addition, the presence of a storage fund creates important monetary dynamics, in that higher on-chain data requirements translate into a larger storage fund, reducing the amount of IOTA in circulation. +The tokenomics must support all economic activities to scale as more and more people migrate to the Iota platform. In addition, the presence of storage deposits creates important monetary dynamics, reducing the amount of IOTA in circulation. diff --git a/docs/content/about-iota/tokenomics/proof-of-stake.mdx b/docs/content/about-iota/tokenomics/proof-of-stake.mdx index 9f9516ab2ee..c8af7fdd6e1 100644 --- a/docs/content/about-iota/tokenomics/proof-of-stake.mdx +++ b/docs/content/about-iota/tokenomics/proof-of-stake.mdx @@ -2,32 +2,31 @@ title: Proof of Stake --- -The IOTA platform relies on delegated proof-of-stake (DPoS) to determine the set of validators that process transactions. +The Iota platform relies on delegated proof-of-stake (DPoS) to determine the set of validators that process transactions. -## IOTA token staking {#staking} +## Iota token staking {#staking} Within each epoch, a fixed set of validators process operations, each with a specific amount of stake from IOTA token holders. A validator's share of total stake is relevant in that it determines each validator's share of voting power for processing transactions. Staking IOTA implies the IOTA tokens are locked for the entire epoch. IOTA token holders are free to withdraw their IOTA or to change their selected validator when the epoch changes. ## Economic model {#economic-model} -This section covers how the different components of the IOTA economy interact with each other to introduce the IOTA DPoS system. For reference, see the Staking and Tokenomics diagram in the [IOTA Tokenomics](../tokenomics.mdx) overview. +This section covers how the different components of the Iota economy interact with each other to introduce the Iota DPoS system. For reference, see the Staking and Tokenomics diagram in the [IOTA Tokenomics](../tokenomics.mdx) overview. -The IOTA economic model works as follows: +The Iota economic model works as follows: At the beginning of each epoch, three important events happen: - IOTA holders stake (some) of their tokens to validators and a new [committee](../../operator/validator-committee.mdx) is formed. -- The reference gas prices are set as described in [IOTA Gas Pricing](./gas-pricing.mdx). -- The [storage fund](./storage-fund.mdx) size is adjusted using the net inflow of the previous epoch. +- The reference gas prices are set as described in [Iota Gas Pricing](./gas-pricing.mdx). -Following these actions, the protocol computes the total amount of stake as the sum of staked IOTA plus the storage fund. Call the share of user stake $\alpha$. +Following these actions, the protocol computes the total amount of stake as the sum of staked IOTA. Call the share of user stake $\alpha$. -During each epoch: Users submit transactions to the IOTA platform and validators process them. For each transaction, users pay the associated computation and storage gas fees. In cases where users delete previous transaction data, users obtain a partial rebate of their storage fees. Validators observe the behavior of other validators and evaluate each other's performance. +During each epoch: Users submit transactions to the Iota platform and validators process them. For each transaction, users pay the associated computation and storage gas fees. In cases where users delete previous transaction data, users obtain a partial rebate of their storage fees. Validators observe the behavior of other validators and evaluate each other's performance. At the end of each epoch: The protocol distributes stake rewards to participants of the DPoS mechanism. This occurs through two main steps: - The total amount of stake rewards is calculated as the sum of computation fees accrued throughout the epoch plus the epoch’s stake reward subsidies. The latter component is temporary in that it will only exist in the network's first years and disappear in the long run as the amount of IOTA in circulation reaches its total supply. -- The total amount of stake rewards is distributed across various entities. Importantly, remember that the storage fund is taken into account in the calculation of the epoch total stake. However, the storage fund is not owned by any entities in the way that staked IOTA is. Instead, the IOTA economic model distributes the stake rewards accruing to the storage fund – a share $(1-\alpha)$ of the total stake rewards – to validators in order to compensate them for their storage costs. Of these rewards, a share $\gamma$ is paid out to validators while the remaining $(1-\gamma)$ is used to reinvest in capital of the fund. Finally, let $\beta_v$ represent the share of stake managed by a validator $v$ that is owned by itself while $(1-\beta_v)$ represents the share owned by third-party stakers. Validators keep the full rewards accruing to their own stake but keep only a commission $\delta_v\\%$ on IOTA tokens staked by users as a fee for managing that stake. The split of stake rewards for the user staking pool staking at validator $v$ and for the validator itself equal: +- The total amount of stake rewards is distributed across various entities. Importantly, remember that the storage fund is taken into account in the calculation of the epoch total stake. However, the storage fund is not owned by any entities in the way that staked IOTA is. Instead, the Iota economic model distributes the stake rewards accruing to the storage fund – a share $(1-\alpha)$ of the total stake rewards – to validators in order to compensate them for their storage costs. Of these rewards, a share $\gamma$ is paid out to validators while the remaining $(1-\gamma)$ is used to reinvest in capital of the fund. Finally, let $\beta_v$ represent the share of stake managed by a validator $v$ that is owned by itself while $(1-\beta_v)$ represents the share owned by third-party stakers. Validators keep the full rewards accruing to their own stake but keep only a commission $\delta_v\\%$ on IOTA tokens staked by users as a fee for managing that stake. The split of stake rewards for the user staking pool staking at validator $v$ and for the validator itself equal: $$ UserStakeRewards_v \ = \Big[ \alpha(1-\delta_v)(1-\beta_v)\Big]\mu_v\sigma_v \times StakeRewards @@ -37,14 +36,12 @@ $$ ValidatorRewards_v \ = \ \Bigg[\alpha\Big(\beta_v+\delta_v(1-\beta_v)\Big)\mu_v\sigma_v+(1-\alpha)\frac{\gamma}{N}\Bigg] \times StakeRewards $$ -The $\mu_v$ variable captures the output of the [tallying rule](gas-pricing.mdx#tallying-rule) computed as part of the [gas price mechanism](./gas-pricing.mdx) and corresponds to $\mu_v\geq1$ for performant validators and $\mu_v<1$ for non-performant validators. This variable ensures that validators have "skin in the game" and are incentivized to operate IOTA efficiently. The $\sigma_v$ parameter captures each validator's share of total stake. +The $\mu_v$ variable captures the output of the [tallying rule](gas-pricing.mdx#tallying-rule) computed as part of the [gas price mechanism](./gas-pricing.mdx) and corresponds to $\mu_v\geq1$ for performant validators and $\mu_v<1$ for non-performant validators. This variable ensures that validators have "skin in the game" and are incentivized to operate Iota efficiently. The $\sigma_v$ parameter captures each validator's share of total stake. Consequently, validators with more stake earn more stake rewards and the joint $\mu_v\sigma_v$ term incentivizes validators to increase their share of stake while also operating the network performantly. In the long-run, this incentive encourages users to shift the stake distribution towards the network's most efficient validators, delivering a cost-efficient and decentralized network. -Finally, the storage fund rewards accrue to all $N$ validators equally (since all validators face a similar burden of holding data in storage). The small amount of stake rewards that is not distributed out to either users or validators, namely the share $(1-\alpha)(1-\gamma)$ of stake rewards, gets reinvested in the storage fund. +On net, this design encourages validators to operate with low gas price quotes, but not too low or they receive slashed stake rewards. Consequently, the Iota gas price mechanism and DPoS system encourages a healthy competition for fair prices where validators set low gas fees while operating with viable business models. -On net, this design encourages validators to operate with low gas price quotes, but not too low or they receive slashed stake rewards. Consequently, the IOTA gas price mechanism and DPoS system encourages a healthy competition for fair prices where validators set low gas fees while operating with viable business models. +## Iota incentives {#incentives} -## IOTA incentives {#incentives} - -The IOTA economic model bestows IOTA users with an important monitoring role. On the one hand, users want their transactions processed as quickly and efficiently as possible. User clients, such as wallets, encourage this by prioritizing communication with the most responsive validators. Such efficient operations are compensated with boosted rewards relative to less responsive validators. On the other hand, IOTA token stakers receive the same boosted or penalized rewards as their selected validator. An unresponsive validator is thus doubly exposed to IOTA incentives: they lose directly through slashed rewards and indirectly through reduced user stake in future epochs as stakers move their tokens to more responsive validators. +The Iota economic model bestows Iota users with an important monitoring role. On the one hand, users want their transactions processed as quickly and efficiently as possible. User clients, such as wallets, encourage this by prioritizing communication with the most responsive validators. Such efficient operations are compensated with boosted rewards relative to less responsive validators. On the other hand, IOTA token stakers receive the same boosted or penalized rewards as their selected validator. An unresponsive validator is thus doubly exposed to Iota incentives: they lose directly through slashed rewards and indirectly through reduced user stake in future epochs as stakers move their tokens to more responsive validators. diff --git a/docs/content/about-iota/tokenomics/staking-unstaking.mdx b/docs/content/about-iota/tokenomics/staking-unstaking.mdx index aa9d2ad34a2..29f8771458b 100644 --- a/docs/content/about-iota/tokenomics/staking-unstaking.mdx +++ b/docs/content/about-iota/tokenomics/staking-unstaking.mdx @@ -3,13 +3,13 @@ title: Staking and Unstaking description: Staking and unstaking IOTA with validators earns a percentage of rewards they receive from gas fees. --- -IOTA uses a Delegated-Proof-of-Stake (DPoS) system to secure and operate the network, meaning that the voting power of a validator in the network is determined by the amount of stake delegated to them by IOTA token holders. The more stake delegated to a validator, the more voting power they have. In exchange for processing transactions and performing consensus, validators earn rewards based on the amount of gas fees collected. These rewards are then shared among stakers as staking rewards. +Iota uses a Delegated-Proof-of-Stake (DPoS) system to secure and operate the network, meaning that the voting power of a validator in the network is determined by the amount of stake delegated to them by IOTA token holders. The more stake delegated to a validator, the more voting power they have. In exchange for processing transactions and performing consensus, validators earn rewards based on a given IOTA inflation rate. These rewards are then shared among stakers as staking rewards. ## Staking -You stake your IOTA tokens by sending a transaction to the network that calls the staking function implemented as part of the system Move package. This transaction wraps the IOTA tokens in a self-custodial stake object. This stake object contains information including the validator staking pool ID and the activation epoch of the stake. With the introduction of [SIP-6](https://blog.iota.io/liquid-staking-coming-iota/), you can participate in liquid staking protocols using your staked objects. +You stake your IOTA tokens by sending a transaction to the network that calls the staking function implemented as part of the system Move package. This transaction wraps the IOTA tokens in a self-custodial stake object. This stake object contains information including the validator staking pool ID and the activation epoch of the stake. -IOTA-compatible crypto wallets typically have functionality to initiate staking and unstaking from your IOTA address. See the respective documentation for these tools to begin staking your IOTA. +IOTA-compatible crypto wallets typically have functionality to initiate staking and unstaking from your Iota address. See the respective documentation for these tools to begin staking your IOTA. ## Unstaking @@ -17,7 +17,7 @@ Similar to staking, a user withdraws stake from a validator by sending a transac ## Choosing a validator for staking -When you stake on IOTA, you have to choose a specific validator you would like to stake with. The choice of validator can potentially impact the amount of staking rewards you receive. The factors determining this amount include, but are not limited to: +When you stake on Iota, you have to choose a specific validator you would like to stake with. The choice of validator can potentially impact the amount of staking rewards you receive. The factors determining this amount include, but are not limited to: - Validator commission rate: a validator can choose to set a non-zero commission rate specifying the percentage of staking rewards they are taking from the stakers. For example, if a validator has the commission rate of 10%, then 10% of every staker's staking rewards is given to the validator. Understand that a validator can choose its commission at a future moment in time without prior notice. - Validator performance: a validator with bad performance might be punished according to the [tallying rule](./gas-pricing.mdx#tallying-rule). Punished validators do not receive any staking rewards for the epoch during which they are punished, and you also do not receive that epoch's rewards when you withdraw your stake from that validator. diff --git a/docs/content/about-iota/tokenomics/storage-fund.mdx b/docs/content/about-iota/tokenomics/storage-fund.mdx deleted file mode 100644 index a5c477fa72f..00000000000 --- a/docs/content/about-iota/tokenomics/storage-fund.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Storage Fund -description: IOTA includes an efficient and sustainable economic mechanism for financing data storage, which is important given the ability of IOTA to store arbitrarily large amounts of on-chain data. ---- - -IOTA includes an efficient and sustainable economic mechanism for financing data storage, which is important given the ability of IOTA to store arbitrarily large amounts of on-chain data. - -Financially, on-chain data storage introduces a severe inter-temporal challenge: validators who process and write data into storage today might differ from the future validators needing to store that data. If users paid fees for computation power only at write, then future users would need to subsidize past users for their storage and pay disproportionately high fees. This negative network externality can become highly taxing for IOTA in the future if left unaddressed. - -IOTA economic design includes a storage fund that redistributes storage fees from past transactions to future validators. When users transact on IOTA, they pay fees upfront for both computation and storage. The storage fees are deposited into a storage fund used to adjust the share of future stake rewards distributed to validators relative to the users that stake IOTA with them. This design provides future IOTA validators with viable business models. - -## Storage fund rewards {#rewards} - -The IOTA delegated proof-of-stake (PoS) mechanism calculates total stake as the sum of user stake plus the IOTA tokens deposited in the storage fund. Hence, the storage fund receives a proportional share of the overall stake rewards depending on its size relative to total stake. The majority of these stake rewards – a share $\gamma$ – are paid out to current validators to compensate for storage costs, while the remaining $(1-\gamma)$ rewards are used to reinvest in the fund. In other words, stake rewards accruing to the storage fees submitted by past transactions are paid out to current validators to compensate them for data storage costs. When on-chain storage requirements are high, validators receive substantial additional rewards to compensate for their storage costs. Vice versa when storage requirements are low. - -More specifically, the storage fund has three key features: - -- The storage fund is funded by past transactions and functions as a tool for shifting gas fees across different epochs. This ensures that future validators are compensated for their storage costs by the past users who created those storage requirements in the first place. -- The storage fund pays out only the returns on its capital and does not distribute its principal. That is, in practice, it is as if validators were able to borrow the storage fund’s IOTA as additional stake and keep the majority of stake rewards (a $\gamma$%). But note that validators do not receive funds directly from the storage fund. This guarantees the fund never loses its capitalization and can survive indefinitely. This feature is further buttressed by the $(1-\gamma)$% of stake rewards reinvested in the fund. -- The storage fund includes a _deletion option_. If you delete data, you get a partial refund of the storage fees paid originally. Storage fees exist to pay for storage throughout the data lifecycle. There is no reason to keep charging for storage after deletion of the data, so these fees are rebated. - -:::info - -The _deletion option_ should not be confused with deleting past transactions. Activity on IOTA is finalized at each epoch boundary and past transactions are immutable and can never be reversed. The type of data that can be deleted is, for example, data corresponding to objects that are no longer live, such as NFT metadata, tickets that have been redeemed, auctions that have concluded, and so on. - -::: - -## Storage fund mechanics {#mechanics} - -The storage fund size is fixed throughout each epoch, with its size changing at the epoch boundary according to the net inflows accumulated throughout the epoch. Inflows and outflows correspond to: - -- Inflows from the storage fees paid for transactions executed during the current epoch. -- Inflows from reinvestments of the fund’s returns into new principal. Specifically, the share $(1-\gamma)$ of stake rewards accrued to the storage fund that is not paid out to validators. -- Outflows from storage fee rebates paid to users who delete the data associated with past transactions. - -The key property of the rebate function is that it limits storage fund outflows to be always less than the original storage flow, at the individual transaction level. This mechanism guarantees that the storage fund is never depleted and that its size moves in line with the amount of data held in storage. - -## Storage fund incentives {#incentives} - -The storage fund introduces various desirable incentives into the IOTA economy: - -- Its mechanics incentivize users to delete data and obtain a rebate on their storage fees when the cost of storing such data exceeds the value obtained from maintaining that data on-chain. This introduces a useful market-based mechanism where users free storage when it becomes uneconomical for them to keep it. -- It creates deflationary pressure over the IOTA token in that increased activity leads to larger storage requirements and to more IOTA removed from circulation. -- It is capital efficient in that it is economically equivalent to a rent model where users pay for storage through a pay-per-period model. diff --git a/docs/content/about-iota/tokenomics/validators-staking.mdx b/docs/content/about-iota/tokenomics/validators-staking.mdx index cd26f419f56..56a1ccef870 100644 --- a/docs/content/about-iota/tokenomics/validators-staking.mdx +++ b/docs/content/about-iota/tokenomics/validators-staking.mdx @@ -4,12 +4,12 @@ title: Validators and Staking Pools import StakingPoolReqs from "../../_snippets/staking-pool-reqs.mdx"; -Each IOTA validator maintains its own staking pool to track the amount of stake and to compound staking rewards. Validator pools operate together with a time series of exchange rates that are computed at each epoch boundary. These exchange rates determine the amount of IOTA tokens that each past IOTA staker can withdraw in the future. Importantly, the exchange rates increase as more rewards are deposited into a staking pool and the longer an amount of IOTA is deposited in a staking pool, the more rewards it will accrue. +Each Iota validator maintains its own staking pool to track the amount of stake and to compound staking rewards. Validator pools operate together with a time series of exchange rates that are computed at each epoch boundary. These exchange rates determine the amount of IOTA tokens that each past IOTA staker can withdraw in the future. Importantly, the exchange rates increase as more rewards are deposited into a staking pool and the longer an amount of IOTA is deposited in a staking pool, the more rewards it will accrue. When IOTA is deposited to the staking pool in epoch `E`, those IOTA are converted into liquidity tokens at the epoch `E` exchange rate. As the staking pool earns rewards, the exchange rate appreciates. At epoch `E'`, those liquidity tokens are worth more and translate into more IOTA. -The only difference between IOTA staking pools and typical liquidity pools is that in IOTA the liquidity tokens do not exist. Rather, the global exchange rate table is used to track the accounting. Because all IOTA tokens in the staking pool are treated the same, regardless of whether they were originally deposited as new stake or as stake rewards, all IOTA tokens immediately count as stake and thus compound rewards immediately. +The only difference between Iota staking pools and typical liquidity pools is that in Iota the liquidity tokens do not exist. Rather, the global exchange rate table is used to track the accounting. Because all IOTA tokens in the staking pool are treated the same, regardless of whether they were originally deposited as new stake or as stake rewards, all IOTA tokens immediately count as stake and thus compound rewards immediately. -The staking pool is implemented in a system-level smart contract ([staking_pool.move](https://github.com/iotaledger/iota/blob/main/crates/iota-framework/packages/iota-system/sources/staking_pool.move)) and is part of the IOTA framework. +The staking pool is implemented in a system-level smart contract ([staking_pool.move](https://github.com/iotaledger/iota/blob/develop/crates/iota-framework/packages/iota-system/sources/staking_pool.move)) and is part of the Iota framework. ## Validator pool exchange rate diff --git a/docs/content/developer/app-examples/coin-flip.mdx b/docs/content/developer/app-examples/coin-flip.mdx index ae778dd1f7f..876a6dcb8c8 100644 --- a/docs/content/developer/app-examples/coin-flip.mdx +++ b/docs/content/developer/app-examples/coin-flip.mdx @@ -414,7 +414,7 @@ Now take a look at the main function in this game, `finish_game`: } ``` -- First, the function makes sure the `Game` object exists, then deletes it, as after the game concludes the metadata is no longer needed. Freeing up unnecessary storage is not only recommended, but [incentivized through rebates on storage fees](../../about-iota/tokenomics/storage-fund.mdx#storage-fund-incentives-incentives). +- First, the function makes sure the `Game` object exists, then deletes it, as after the game concludes the metadata is no longer needed. - In step 1, the function checks to see if the BLS signature is valid. This is to ensure the game is truly random. - In step 2, the function checks to see if the player’s guess, heads (`0`) or tails (`1`), is the same as that of the house. This is done by taking the first byte of the randomized vector and checking to see if it’s divisible by two. If it is, it is heads, if it is not, it is tails. - In step 3, if the player won, meaning the player’s guess matched the results of the house, the logic transfers fees from the stake to the house, then distributes the rest of the principle plus an equal amount from the house’s balance back to the player. If the player loses, the logic transfers the entire stake to the house, and takes no fees. diff --git a/docs/content/developer/cryptography/explanations/cryptography.mdx b/docs/content/developer/cryptography/explanations/cryptography.mdx index b7e82dbcde1..3b1ae1b3d99 100644 --- a/docs/content/developer/cryptography/explanations/cryptography.mdx +++ b/docs/content/developer/cryptography/explanations/cryptography.mdx @@ -2,22 +2,16 @@ title: Cryptography --- -Cryptographic agility is core to IOTA. The system supports multiple cryptography algorithms and primitives and can switch between them rapidly. With IOTA, you can choose the right cryptography solution for your system and implement the latest algorithms as they become available. +Cryptographic agility is core to Iota. The system supports multiple cryptography algorithms and primitives and can switch between them rapidly. With Iota, you can choose the right cryptography solution for your system and implement the latest algorithms as they become available. -IOTA defines its cryptography primitives, such as public key, signature, aggregated signature, and hash functions, under one unified type alias or enum wrapper that is shared across the entire repository. Making changes to these primitives affects all of an application's components. You can quickly update application cryptography and be assured of uniform security. +Iota defines its cryptography primitives, such as public key, signature, aggregated signature, and hash functions, under one unified type alias or enum wrapper that is shared across the entire repository. Making changes to these primitives affects all of an application's components. You can quickly update application cryptography and be assured of uniform security. ## Transaction Authentication -Transaction authentication features on IOTA provide security against unauthorized access to on-chain data. Transaction Authentication provides an overview of related topics. +Transaction authentication features on Iota provide security against unauthorized access to on-chain data. Transaction Authentication provides an overview of related topics. Go to [Transaction Authentication](./transaction-auth.mdx). -## zkLogin - -zkLogin is a IOTA primitive that enables you to send transactions from a IOTA address using an OAuth credential, without publicly linking the two. zkLogin provides a description of the primitive and how to implement it. - -Go to [zkLogin](./zklogin.mdx). - ## Related links - [Cryptography guides](../how-to/cryptography.mdx): See the cryptography guides for instruction on applying these concepts. \ No newline at end of file diff --git a/docs/content/developer/cryptography/explanations/transaction-auth/images/iota_multisig_structures.png b/docs/content/developer/cryptography/explanations/transaction-auth/images/iota_multisig_structures.png index 8e7d8ee3173c4f8529e2626611cc4d523dd7b8b6..a171643c90c323c4fa6134075240cb3f2d2d127e 100644 GIT binary patch literal 371415 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 z zt$I|NUlI~2+3&9`EvZg~u|jaB1=Nx@){8 z@vZ{-;AN>r0_&}fLblr~mZyYl`y*F*8$idv&JAPbj0}j|pn@Q;fl`I!u?;B6=mF?Y zA0gt-fV}i{!4pifDxX|zoX0>FO3rPths$-dovZ=Swir%nQ*@*o@m8KW{vf?=X~u!QlBu5&ep>i9g_r{PG);?HZN$Sbo&at@ePm3uV|lHW^L zIt{%f*d9;s-@l(LLT0X%kELd@f~>_aT(}?!o2GY$ z7}F!)fYh<-qtFWQGQE`BaiyhwSvm+(81kaDVVUd z$LrCC6(bR=Bvz@?4d@A$GkdZrA*ET`^Op)pwmIjrkK8FBaCv!o)f3-jdjnWF&vx>< z$)S-1v2&8&p&&WuIuG^~E%9oTKIqJPVO`B5+YSVT(QtnrCp)_hXqpo=$BC|YLg zL7n+#1WHRdVs#(*GygL2qEa!S_yL!%mzRjg)6{?dMZ?X2uTspSpm4CTc{(M8e<-grZv=@$CjB2LZ&<{hSz^ApUZHAm_K(^3; z-@W^IdY{HYOh?`mV=AskG3lFtehTp(STd>s#U07Z!O;fqSzw*C+|xsq?&WZnkchZ4 zhKx^5(bCXlwa!5J%1s4NTXYCXgiH#MW;Qmhp2jt!3t+nasl)xOt9y}XQcXC{BHoG-eyeX-K&$rt9%TQtRM%6 zqWTAFqU&p8;lF`ml9JQ4h(ya$)&3FpgJ8e5Mj|q}n$6BiDkU>j9rCV%?ptS*zPU#1 zf&HUH;fM5{Fn;0S;#xSfGk0drSuj*;3+cP*OUDiZSbb$JI=6DWghc%A#|NWw^`lAc zX7U4<=mOPUQYsldNWg_lOt@#Bq73}M+Fe7|sAflddjMRH=qsys68K?FEX(9#@CD#H zRW-dc&ea-Q*@Y_vT9tNDlP%|jwz2QugPR}V<_sa{0FhAW;PqV(?Qm_L6!{3GX7fEh zhl$s=8-SE|x=$|sT4)g&&F#tm`H%4WPktlVY;E1990wLlN^e}zVQS zX_Sf7TMejOd#Lj-U%7nQ+0}F!^t6G2>GK!9&(6-`{U3>Z!>t4L&v~6{d~^@c{@0X> z&%O1o#b?>v+ob)1hjRBmg(7g`xT!|2TmXXWuLIHBAjmHhgD(620p;soTy9|B{AeT| z7hq8>@k;3%;d`H>wreUxgNCjfz)@t50PUh*Y?u6f|0@Xw=O1kphlrolPVCkU%Tvjs zk=S_WSq?la&S(sgJSMY?3N3$r@9W##7~H8~6t@GkB)Fv*!MdIEh`6X#mUVTOz@&dE zV#fs|DQs2Vu<6bVijnGeibHZ*W=C%U^@85Wr`JZsxw$R6v?*ZGLFcgX$L~r8dvID@ zOKehdC%2Wkd4t$qqE5*F;?%k50x9F@d=u`NkUxy%%FYKJP3wc!WnB42Na%G4|KThf z6&`-acM!}^5cWGdVDnQ^^#JxC$F&*jt7hYssa{YKEUVI>=RvOIcJ=s1b62&w=RIv% z<=T_u$o1$cb9r#V@mvgIWbWS!3)*kuqv5vyFb%uhD!wAx^++bM_htqd@Clt8#_~TF za{dF4D?~4QKq8^2`r){&6QjWr>z&<8!Y6$WmZ{)y1_Cl}?i zSPtB{e6kmc2h;#5MTBZ-4V3D(!f3iejks!AA|g5ez(DGvYuBz#X_w)HN=ElT9d+2qzoX&+DM}t4;Nfzbzyal66fkP#xpzDspj_aNQnVzx;JEoNt5UJ|$sh zwfUCW7Y#mLg>)XyF9@wU>-HOI20$-!=B2QgLJaE`o)XY@t%ckkk$*b5NSQ~Kgy8~4 z1*`sWlE533seG8|I!7jp_Tbed0S_@P4;o?jk0di6J<~Fz4(Tb96Y>af!wwzWVhUqO zFD-R*ckequqe4Ccdpz#~8`4stV|AXxl*sjfWlxENMSV3~`p}=Gx+vg$23EB^`$f2B zt;fc)%jzGpdV41up^u;2j^1P@=S<)x7t_?$&9-v(uh>Pla0mX_iHV+kBWc^ynPxoz zW57TnS?T*f*gH4R7j2*EC4=9|#ypd8VoN&F8*OSS&KdC!*kTvU{Y1`UaNFgXUp{${ z?Lp<>8B$`5wgJY^zJTMH?aj?iW}++yd&Q5Rf+Pvz@x%IvyfhX%J~hC2{NPXxg_x*@ z!BD(n>TjEmkyC~k-Nrtk#EQwXFU;t4XNd*2@jHWr*g|9)?TmVDk0R5=5!da`*5FQd zRn$BaLzY(LVkC`{AYE>67QJtR`+PkUo$-(FT~D_}mZwFyeFa<2czN94m>$z~dNZJP z>pUkv>(SF!-iTWD(|d59nu#Q++k28Csdk6vCZ8$>uG*SHyIb??5&~z z&FojWwV7F)d!NkdgG93jT(*;bEGh99(#1Po60!Mp{h*%x)LXfCkcFJx^P8b^aIm+R znv}RxJh(n-?!sRzY!pzgkLP#I@TBME1&z9}2(GQp-E-3S-duloS^J>h-%CFsGWY|l2iTnJoFWvR{G5TQprfxdOj&9XBz1} z!}La#pLP-PiBEUc+D6;539ANhpCZMbtvQ38$qu&5pYpTTCE9+os(kqIn6%7v$x5+&1DsQx;^ja!8tisCCv9Pi-E;{DQt#2bg zXR$$~R_Dav4JGX88X>_b+1Imd`R}Flt2q^6pZBSfi{(eYQVnJZa$7ukSCf~@A6ITN zhhPhJ(KC)dp0GYL@2A_$*NYXp>af5G@|c6TI_xc3#~7vRc^!sE&WI^;q+y@%hrfa% zgX7z?Uwi@4I*9ae)Yc-#Nk4p{e(Au8wWV`63*M&Nq!y{L7#%&%e%siLnI|r~uq6jA znO)v)BrUf@)vv6qxuXif59&S(liGAjUU0eo@VVmW8GdyBw^LJ7r?MB`{{4!|Ihyw{ z5lbx!&W>K1I!J9#?GXMUw3MzzWt5oOslQ6^6;tLSu#X0|pw9K*e+VP)D(^$X^w>Wo zFY(@RFa;(5rv=oXcK31-a0B~ww=-RSaE?-Bn|JMhA4d>8sBrphZ;pz10YtiuRQiaL zS9~VPD_c6-LI2SL>oQ%0=bc*rlfmg@=BnUBcHfTrg z6)#$K7oHC`Y^{5DF0LhH>k=pTAu&wA<>llA(z|4h%wA`aQiugJnA^@m1e;8;CrIL{ zOa-}Eo52N!?=Vz%_I|xN|2%lh2Esii)%-Mm&ZiYb=1(p+8mb$hJvNpjzvlSw?9AQo zG(;IxAM~}`I+{R_*D2SvKUVyhC2s+{Yd@>Kt=HN14Dn4vO}`xbOh6bd#8{f91%=}) zmOyWBZ)|Txk8Ur@?<`^jtXKAhaI2K8T0+;jgyg17{jCZ0!L4bhBCFnI=udW5>qNG{ zIgKlSa{2#j0fuJHmj0S9@=72eD5uMTKAU$Os0*YYIZbv#D+Rq>vEwfbbMq31$&gMBTLX z_f$lEw{qB(^WUUZtm5gOs%?(TbDldvofHNoEXOmQuwK`;@4Lpul{hf)&fsR-J{LHo zXijz2o_^u$O+8#21OryO+_#ftCD1ua>$>I`o={V~<=;d@Db`j~3)**FS*DZF2iFdy z45tKuGe};(uDx~sHD#SG$~3#=7MW>IPpmR1uPy&o3_YIEmgZly43F3=k5v_xksm)_ zG~Mh$b2bnd^z2o{&2JNmF)gF@Gky{6ZXZBI!R`KS#TO6jOD-$u;a&SJyA(%hzGI&P z{ODKl%Ue^gpRS^7xTqeXz?_uyE}Z|Ma`ySaJUobzmyFdXixV{!m9OW@1<7@IpwMXN z@TOE$c($j=5*&9PVhRBhXyz`mVyFR0?ch6uY6vJ|Xa*Xnz2^RSf2YsL%^d{X8zn?c zG}i@5SMa>BtO_m4Epr-`G{PCm{Cm!RrhC>PD7 zwf@`dVLhS#m8~5*gRg^j-9Zn&O0GPKq&iPgaWNz=UKJ7KD0VP9r7z7gZ0CA_U%oqk>K@6@O#?oU;xW&E(xOg%Acw zwW!5T=x>s$A}|kc%yB1+g$jd|FcF z`1y-L6690oP*%dkRW305KLY*x4vd&+E#3W%@JZgBY2wBt=h&<5`^$j_F)=au?PbJy zS~HC2h;!v&i>;0U&u&HXDY3;}pLki$-LBWeVl_`g#{a&nhkptQeXf3`-a;Kj(2Qu#yj(erCG-Ju>@=unz_V>2^oR^DlskKpq0oZKh+iXnaR zm|DIPo*%gOcw=u}49Z^i4E^r%ZBSY`j_KMbh*!UF)MHn>#PsCzFT^#?aS?>g?tc@w z6bMcZ7ZqhnZx&VV^p4{h3j}dZaEvj~JF30c#qNKK$5YHWKxSmOtpC0aYYX;MIH9?P zPbg(8<#d6Lfy_hio1{-fJ=oqv#m2I^)3XE&5&TEesm+$W(vD0dHFr6vt8Z$C!5*-9 z`}5^Sf}LqXG2ZfxaqBe<2vA?^z5K=?85teju`wJ<_Nz?qvf@E-H9v6plR>8RAen=R z$Vl`)MV{Brc7n*v=6g+j{h8U*Brts-w5}smn&oG;B*SrIPj7d#3H7qEul&Ph8+m{v zZp%h&lCsA8bc3*FkeVDHFS>P|G^PDBk$KXaZzwXowyQ-ptKr-_xcm2oSiZv! zHW>mz5{57C%okm@()zu!Q7_^@S$f~iccQ$MXZ4LyL=$J*rRP=TNu)}d^@kL_A`=|? z)35AS)%ZY&4+OzkYkr){!F>)-sCm2N`isgbX8dS{- zZbWs84{B9IiZKLV179gDQcHz53W4avaiE&x|7-tdqDsgo`C5uuE}ObE5fM#-Ya^Uy zbAMDBB+t90hJCN_3pQHA4u2e`#|M%;gNbR9BU7FqnS&(KimXzvg`|m=Xbm1{x_PP9qGk2#mL%oP9`#b<5?fP7U78>VqqkC)VEHj z_y0@}?je^9PK%L!9n3;pdBgFBMp*W+kz^>Y^qWLk`>t;PQ3r=^aakRwr|v?$f|2=$ zvG!m%XkI4%N`n49!N53~%$1^y1VW|A!4(fnOBrkJOUGLlKvwWQeX&UidCf~w$p8p_cq0R8+P1!~C7R!sub2F~5`)-O^>Cha7l@BOb zt}fG>*49=~Ih=xGq|^qcpZT3UdGf21EwHeo{hk?WqApLwRY@ktq<=$~>U~YZ7t;MbV1|L zC>h1X(>oWVI{N!{Yo*3XtASw)aX74cxKVjh)|Wt98#qD5=e1q-cgR({iRzM0SwemZ z^DLy%k^6W4{mZi5`fk_OxQtFCEZ`|xoim%i_In3fcfS*zQD6MV``7Ii(XZ%y)l}CN z{FC9G!Ve$P+rJ35Aj`@vPc1OA`D%qZ6dKgSO-qQRTB^-cu@N&Ut7j{2?ej}uRDDV! z5-!=ov=WY+=WZ zaAbr~-}8U@GHuX4%m~u$bW+kdA-CnN8L!IO(f!24X^PZ!wz#GV_G(<)v;!fX@+ z4U`>e&picV5CF)_$7`s`rgL3>n;-faG@_DQ{IA2VU6DrBsI1Y!ebNtt)AacG-%-{T z$Mza{dg{6GE0QC6EyA_fLdu{knZ;Fyh$u3x&7aZ(a4ej6ou!u>OH}C*7z^U3sh$$z zatg5h2@MT}`f>tMvFB1_kiCehm=v$HjN>rA?N^E>wQF{AAA7gDA!J`0NH4v~t{H~7 z$kYKOALa}*!*yhLjbWzneXhZCZ@1~9%B?9vUo4I-k39@$xvBhp86oe?+EY*m?R_HZ zboFf4rJt1kw?hqLl|stc|0H)Xtla(JEBeTO#7A6~uLH#^mzc>{AkkH zLFr~GlCAes)#<@Hf>olT+GPU&@O>L_xM6LvhdNQJTvZ?ZgpZxi{KSqe$uScAyUC+4 z{Hlq#C%?@xKDoP)bU*WHmUBL&CY*x--dv;$NFlo7$doKsRjW>B-rBFI*3}Fg%*8ek)bSP?IrAyffs=t@|4H zU$JGqdAvFDMt_2~({TJTNzn?wH1g2~17oVZRCYS7&41JYca; zNnQgc4x_&D>v)=I#+9a%dmmBB;}U&UsS0aXM@L6zr`QKbILAIPy=hcziI7VEdPLmi z+Y#Z_holhzkAcUyNX9~WAYh11x8#-(Q#Ct^gpOOAnDdd@9RR3LRF?`JXnk(#{Clht zF{>W#l}~LayrUsG$bo_hYM8#w^tIFn72+jm+8Tb$Brr!dJ=36n-9R!-&*rF0L?mVH z;-XoeU6h)7BL8yb&i2M|-#s8Sw2_H+0U26{DA~yMl(43g(N%JZ6>*-uV>aPXj6%Dr zfBMhU3+_WEwcpu1+eh|8jHjClC@BK#pg|-_ z^bl;B`B_ls_x!P>>pAV-M_%T<{)SglUuwxF3o3<6<=)j?hI+kl?gnW!q?0-ew$xm< zV0+38okt{Ji5*95L`2(0ZbC@7_o8sicT4_4j6s`;Ut2~T`b3324W#&;rREKhQWyKP zV%st6DEnxq$Ye0|AQ$tZAr2fUZGLrQR&w!0ucI5tzW3IBKK_KOP!g9AtH&)DETR6D zK;;-^R(&bA?8bnuo?gx{S8=eGcxXMs4%iAK1QUGaCh>s>tr-ye-LId?YB*c}M2aMS zURMRla)XIUoXTA{YN;i>cGxC!i0VPmg2g={`>K}TarMwyWcNhR}*Y2N_o7_7KSCU%3mFS z*i-JXgqgR1mQn9ek81;$jCbx0xe=~)N^-<-5c*B!z4&wEfjj?!>GS`VB6SY`8YT0@ z1CqyY-)KiSj(qL76lMhJ>0)FC_si%&VZ1Zg-de86z?JUua|BQM7iTfSK{9K-c@XbH zwEhxAV|Ntjst>KXZ{y%qIZfnL%0@(#Y*HZ;q>4X-wXWkip!~tV4>FNlNf&Ifa10EU zp1`^GHSUUAXSWiI^-8rE@ar_iFtkw?IOFL5YA;z7>o}!xVlbJL(6iP*??U&9M}%ta zGWiFbUzOXFmG{lfzh@o)d$K&4sHwB}ydM8B3?+1SGD zv$c;bvuxD1%OZA+HQV^#{ZR3556O+#d44?|aL?o5^lwDAMd7=Y=!Q}yUb=Hv7Ls6a z3aj8CvS`Is`;~4PMeQLkAC~?s%1xU;5abW{C#c`%q@zFZSTE!&Yi9jyv7Rq=@vVVu zp-{4K-Hg}|9(SUEdzrtv!L|>y#pcbsVzM>DF7vmp93#-~@!;_my7{F0ew>0?K;&^JDKvu$Q2?myl=#=v(Bs1;LjND;2bOHrJlO9FrOQNJ3&9>b$VZwM-9qH#4!XN)^jCjB4nwq{AC!q{FB#W%SSUqeR#UhPN3`R&P=} zZzeOkajdEJZYTATrP&fj0G+)^*V+8p;;B|!d&<<((jA+&?eVy6bnTlc*t1g~+0@>8 zWbdsMqO-uXR2Wkzd*$~V^WgmT?Abb)3>}-_!!;C?VUR3rg*n64dpg^#YA4&l<{OtA z;fReL#ak0&Z}c_d(9Ef%Lkf0U(41ntW31<$U?ZA(A~|BaUHj4Sy6pj?NJKm`8sI8Ed%%`fuqA|x{&FJ%o?2R3N`=V`csK&G^l~njux>_Rk(1rv}9aeTn4j(Szv6Z^uj7%Ud18MUj#&VWIo|Llw zBb16p1B3v*=>_HVdgK3xy{~Mma{t!F071f{K|~4ZZV?bfx=Xri(j_S=ARt|WbV!4A zgMiW@EiEnGASGu^|7TzO+UEnDSDROBxm+-LV*JLq#~plMg@hTVMWETS>8c$EUq4Cu zP;i<%uAX(an{a*Yw*B8QWk*YMq!FSFmxK+8V4%$U*4Aj!G#ssf z8_A|ja5b90nCihS?EhQ~IywN*1c0lbsdA4?GK}OR?o=_fNCT3*S_=7k$^=il1Nd309zRLXpoGrMNuX|>_Vsh`P5K(w{7Fz`-J6k$ocH(~4Tbn_J2~30eu|e_&@}Bd1G+dmHbPD4!Uc=vXyd zk@n~qR?wY^ui*aXAx2G(->G#I;{Y9D36w&n)<#YmJ zlBIBmm_g?$z+mvU9~CP`b@VbTcJ^8HGH34_+-gL0lx;%48&qk4B7Z}Y%Y+|XYGGtp zUwEL1q2tDi1KwHyE~)K+8FA&^9R{fLj3A?6I0$<#Np}~K<^CHq%n31p8-2v_xK5ZJ;R}FW8tmKmAeUR`#vYeh5#ViBO2F=(U zv{?B%)2Lu3n7+Aj43djcYLJ=IH71_Eksze9|KfG!>9l_awR_}=9-XkEP51}le$1~i zg@NQf_HuG}CPHAHPaT*?SLR|-^Yi zeOfA($(H`k8q9V$hV92}2I(}>m$%lHO-w9qL=Q+idG?MQ%+%OXxT?h&BYq*Rjo4m! zg7M$UtouL_@g(&far+XczEgw!jIVY{r`x2XD2JN`-!VqX>U+bGU2 zNxRlRvVJUhYjMVQTCu&cF(3C#gbc~{VLmzz_dLvGt9qyZamVwd9+nh8VcE<=$gs2T zXkU3-qTH<y(h`U^msZror$E~m42j{fWgpNil9=@5c9ay1u^rK z8u#F{3%+`5)fY3)cIxDQx}WX#43gNIdlhIK{L7<}3m%awUvdcRhSmT|^ER}}^G72^ z3M8&pY^T-o@;1l7BEiu#i11bK43VzyZeCXyJOf1k`P(x`bMqi+O!1syU=7?m}tGZK-IC=pn*VYQVp3>=J-pqmn!0HlNV zyg-~1viUytEQ6%HODB~k7~n^MDEsH?8x5S5XE7>&A46Ncz6F2-4L2743@{<>+b_QQ z+~7)7zCrg?Se_*Ba_RLNphZj8mGH(#8+Q+ahl+1Y+GJ&B7$ST>Vl1o`aaZrd=Hpz{ zb}ax};qDX^j;Ubyrt#m$LPPG_U}Ca@)x;~`Fiqa)K-5&Q(UkFhTJH;<=_beOPZd5n zs1p-I+)sW1-(r$Ug-+Zu5LuBJ{25cQ0S9p-$a^NFnqX&c`dK>i+ImHvRz47>Ag8Qr zA{??HVA1qNQ?_4Iqk9Dmzn7HTp|Pc-eDW)q?Tw%ounvJ8)=3@PDF4K))pMTgY-YzZ z$F-hgePaWhN|2KCKRbW7cR)QvM|sy;KGb8T&WV>%Igb@@;Go#@)18#7J%VK+|J!cS~WY;h5HWrv<6l@B_Xe)om zUAWr&Gj-Tm%-iI5>ED{gSZ6N@9q}wX=BczvHCekJppQHbrbdKq%N$#XdqwQ6`#ejm z4jg~XjErP)OZGufFVYZ>9gKT{LiedJZh7S88<#@rmU{Ouk8Lf&!ENH@6L@}%Y+m4g zhsZOws@o`E8IeBJf~JOs6axpPuRnO~!lt9RIl^^m@^_^?LAib1qhpwVI8j55CtUb- zW{9I^hdb9dN;R%t+iHn^`s(q~QL6hGebFmmr=7%KuHvRJiBM?C8^xO=J>)R^1_lavzZ+QwEY@&x3PRLwUPvB2)nYz+ zhaLZbSf+xL$20IxpPXFZW%=?Jn<`wf?2+&rmd?x=4M(YM0^6P0=SSv!JG~n24Ih=* zgZP3Gh7)4i+7H#y6AODw)a$%YkBjlaW>zgU9e9qmTNdo9Xot^=>eLKp+NGX1{e>4)7+ctejUu^+v2}ub2V$vYP58 zi<4M3QMjegT_>)#I?^s zDA{i~pX#w6L?5b9!*&FLyTHhr|M{BPdmR-TaXh_zI${CnVas?3yAT+XjXfXBetsV^ z-3Q7{Uk9U%1Gs$dg9;Q^y+Mr=!lmIr2ps=~+#kMnp^Gi!(59ET&%0U-$#Z_8HrNTP zI4H%Cc6hL4uEUoc*0E?EdTmqNjVBBM3B+w}fmAi%Mfn*~0OeF;@&uOJ2>yW0uY~a- zC9E*5mX}9+7{NkNLM=zKd=fYiK%Yu@unWw$Sb70Fa5O)np*nwTbjy!V5*b7jmR+ao zO(|hyGd$E^`0Gho;iG{A*zVzJqD_0`R2LP=l(RMed-SjSc)Qh6E5*y#p>&5BPXL@d zd9Lk;Edzdxu<4_efa02zm^g$POrKo@$(*Cp8?Es>4I^c1F8(YZQBg(9}I$k^OOHV`8p76H|ZvBh@aXJ5kXrL^ow$a4>9% z+`%%KmzPBA(cc1<;1V%2Nz%ZP(sbfkPH|Iqj@pZmV4|AVVLTQ$i$nl=8IFW=-10RP)f(OUFr6)sEbFz~a!VjpuEf#D7b~>@diN=HC0B7- zn94!!l_!ejmiXM(gfEEG1_(rz2Oa3kE2mF)l>v&%H8y3c8la#S@JFvG*^r|#sbKU&O`t+@s zAHO$X0g0((L(gsyGQXrZoKW=Ul!`NEYiu9N$c0o}CrVqu|Emq=m%deG>mk5l@=OOr z(QnT<4z~OQ{C%w0JpKY~%f-bNg*v1j=fquQ?Ajk#3dzDcVMQH3iuJ^_P0ZO zqu8yMbDtoIK?u1&|C?cwkwsNCe7#e9ohSfuOlUjo(6TW<+5`^7j!?nWRd4zMoZ0$3 z)DP|ly{>kE>Yb!|x{L&<&e?(hfUP0#{%5*;4roJ+j9GV~bxlHuB(9Cv}5Q=Q_Ur2PDH~f3#p6C&N%RZx>qr6K&6pGIp2Q zU>@q7tY_o(PgziL0qrm5kEJSOAlW>4(Kn`^;rwEs10UQSQtOYD0U~s}iWR4X9mp9L zq*^?4mOW^G9hXgwU9|rDx1PFciK}c%g8oNnhAjkAWOLxQ_wu)aTjwEyh0v5|-3s-c z(>%&-dR$C0c)I=oKQXQ&g4p%GVvZm_5yek730I;o?i#79-ttNG*#e!x(J_ciKH4x> zQ_bmN1JP&c_~!>HpIth}h+_FSGpajv`#PP{=u+;VBF&A!Rxgoh5X&+;u(<4r2Q=bu z-|=sbljoN!EC>X^5PW6CKd@@g>nf=$CeIs9-a_pu4knOPu_O_i9u_uvWq;7BYG}xeP->=KCeaM4J#eV0O;2)p1 zxCm1$L!Sc7*`bRt%C_!r_Vgr~IxfhfNCKBPmKUaxsY1j^A+!`YYlqpS1Oo z*0&yQi#fIY>7@JCn*LI&=1%x%m2K#kfE<$nGIT^LM+X2sbcSwV0$@SZzR}UF0rS>*~{AM?oR{6Yq6Ou)hubiQX$Fm9>_lBzD9fQ%|xV zs|S%m#!%)dZw(|)MMfM^#vVsIv{>lN8LP)3^KEs$0K`R4-ssAF5TW|d5tN`sVx@zASBGOL7u1Vz+k4Fdfn0J z@0JqPNoON(Z{~eJ=@g8<)fW;4u8^wYe>S4xd;<1b`;DmEJ z7w6>dICy90E)-|M{%z8w--W+e?J46w5&Xqrjvyn0$&;S_>1k4xwXknxn=lqxRRjY2 zzwm?(5@?nbin`L!p0%-n0A$eY@TuUb#QeKFN(r~Acl34j^`W{NHnSbE4dN&?FHtYx zR%A;*%#YZCUV7FM&{#z~LsC%R)2~tPd$Tb9BIWXDx``J0m!4iMgvtUp6>#%r zQV^cR3USNu9NDLl!6>{QET40D|LFxU2iUC5I#ET)iKZQ#Hk|%2 z$SVOdb#V0oFu(7YbV|=M{9j)(XJI?u{U2iYHEHmdD(aTCTo_{9HbYquX);7fGWMD zl_LTJIUpVW;h$(}-vI9*Pz~3Zf}>9d2v*hiFrPA`1OqKIyL%Z>O6)o@hMq~xMrith z{pSaMmopGySjg99rPPCm)o z=N~xmU?GHP(-Or{z>Mn#RB zmw`IPEJXsXVpr@m(CGl&fJW7%>1`Q<(kEiv8AN{roIm-g;n|XZm4zawpNf}Eqt{0H zP4kBDr8)YPl?2ugsAJ^55L@GxVKAcg&k&B7L3wc(d{u&*P>pTwEmyITWeuqVQs0^B z))Drwy^#WOsoJ&g4P0y99?-EQcpr9lqPuP;q$;G#&pD>70`46;U@{_ApKD+2rYvu& zr}tGl(H*F8-2HlEUlF`0xhmkdNU?)2gOO4E<FKg4-bCQgPOWErCOz;&mKj-4A)tx5|~& zjm4uV-$T@^lgtN#Rak_x4Ybq^Dw15WZsS8LB0(Lw&ZC&`bOJaJw)V%D)H@Yx{~$Qn z*cPPQ#gs%Ye#Oxcvf?;npF zbq5Qq4kj&161-+6MVuz{YPn=;Z5*yj zB^$9S^5QN-s9mRjkrC$6D^2hTbr@L`B~vWQKzo7aRErCs&8>1x!`J&*sj@jePRCVS zz?NQ0=i%p<#^<8RTFT6I<_ydjAuOt|pZaA;n-s>p9F#a2y1%q-W*#7P{6!8&*kHA_X zxoS`>lx?Jk$Kx#{n22| zG`F<;ke~PlTqK_+-=ez*s1L-mn43HVPAO2*etM?UEu5U^HH-f1Xb<0YeF`b?0j_2r9!vcgmQx8U&g^{WsDpFOY^ zl~L(1ZDxn$StnAVO}#zX-L{Zv^ln!2M&@3 z3eOtzwE%j@;iljYGM)e+@aOy}>s@r9acn@4-3ooL8IW#^EitM+){My@MhV@ukN`%guYcAiFKk@Uuuvo4F+`+NYw z_KpYgfNp927{9&rCnyb-v{9ud>{V7l{I1L`a`$Gz-qS^a8=R3=pEC&XNZwRGdEYg} z;}0QX^q>6cJD;NttyN^-Hb<&xH-iZ)WYis{WWq=aDRe0yRxoY0>YlAVw~!O)3V^P? z-Xl&{(4w~sO(_~@AW&^)^23VL!g7I-n<)4`dOsB;fm@mOqj>K}4Fy#C6x&p|n=OE?0ovPA|Xb|>A;fX0KvuP`L1>Bj-8V=f>&R8{|gaOHd zjEJaIo8AO)ta@xUph0CNm?=7960sALkN{CW&x*E>{Sm6Gq>m=;6iIo6y>Q z6xNo`0liY{9stx`^#GBtP-Ob6J&H39^-7-ppsvs9Q&RVHs_@%=`$~hsfo6GsENj53 z>PhAlb@5-^?QI@z#p@NNxaKdBRFegPSYnMbW2rwxjGb!EufgWd7$L`uI!1mk`X526 zh6G(L;@LxJqz4q6c3|m~yBD%&R`BJ$veoM2+7Lb-&hcduhk|1j^1I}BNF*`Z-xmM4 zU{kca6h<@Gj}%{mPHW@=exLKBM~|3$@OB{|1X!#ByfcN?HJ?xDt+U-6NVx?BWczkD z-tIH>0JRXJEeyLso{mg~19{f22u)(zj$0TmiqIOEK?Y8{XhvmaT#7WxR+6K)mv0o8 zXwmWee5%dD-?HcC;zIL#!QN8=4>MzE6HJS(^IuF3fM|X&Kc(8fEw=nAIa$SqB6Egp zMEusknhHgA>27Ng+gdTMxZ0U;|Dd z(=RWOkysLxFW)*3)0;;>gq$TMCySDkq99N>ds%tSzz(B~!>T|_RqN3n?Ni%>_z{Ry zinbzr_;7T?I&ZVcj{Elw`DfC#1r0OdNH%=eDIW=M$yYedb=Y%XSu^{H+U&<9=~d29 zx=S@3#)057O2WVXL(O~R30s~daZ1=)-MV$Fk%Sp&oze$(BgL|V#9U8wfdST^s;gej0o+~_4j2VvX=<{YeRamG z;1Jc&y!MrpPN7$VA&K^22lla9NpR!Fn zgWq=l_r8qhc;TDC+-=9fvsWV-nt{3p#6s;$xicO|g@uI?&d(=vLKk^bRv}g{)cqsk zqzqh7>yL;=^bKhZGi@o_GMa@$J6Q$|$y~3q@{Xx;#~Km7VvZey)c0e!c67BqtkrO< zAe~o3ON)bS-mrD(X&NXEcz0*AdSPQd@O#(zAmVz2mB?c+wj6g8(C9PeA%^MG-uFyyJqhs zNQYk=aCca#>atnz?_T(_wMgIDcV^G@v1z2(P>Ti=hn2#{QCF4xSg-#Wx=A*Znd#{Xl~;8ENqi+wYbTRkzF1VY zyQ8V0;o?8rU3nVhf&)%>i@%}0g8GlyZRB^Ht+?C0_ZevzN_*_I-o9;YWO(O1>ni4; z{RixNiMuXuc?$#MOeWw6!e4EX*(-Gt`S+LT&*%Zm!3qLin}&7^gtv7Gqq@yJ-W3LD zpq%3acY_*iFJ)!~2bNkkwFFX;2@IeR8x`XTo2s!h> z1jAz!oN(kMS1sd-YAKKQ3y^6zLUC?hAJse*i0^rO(8ujdj!gam9>?E1p1U`~7Ij>g z@!aE|9vQmAn*8h?a3y9N>#vtwH?oKoLz>rlUb?v}(Woxl*8)coMi-D5nt}cZZm#=Q zs>4Pm{k3I7wZD}W2^o72;{G}pDK?=pH5o9)4`aRSFet4Yo4JOf2xMGhMP&B# zUCa`Eh-_1_X@}D~n9E@tOM_1N#^$N0u{mv62m!BPe zSUcRH7?K%|8D0Sz7*vA+3$YXncDwbJr0o z4~h_#g{9>ZkL*_CKwqDFBaL!r?0CJ23x}6Z`#_QKUn65NYx{vR%R#olv|F4**V0A~ zCFOORJ(Ck7eK;*Z2Yz6u?11`uu~W909DOAuO^8T=f;)eo)qd6n#ezQz$Nm2j`4Rv8RA>2m=>VdTc4y*hQ0S57ee*y^Nf> z5=~aBfeRiVMKF`r7?&jQR--ZWL#QOgv*%cogHM%AamwQmQh-jS3&5;Oh)O9gfWErR z!@`?5u4j3K*q)&Wyia1PpQ~V(+M>|-fhMbuQwO>^)oQfBNfERpcd1C2IHdwyD{C3jYBN znPR&o9&5&=EBKLs1K4Zcy?K-PxhVCx1F5NJMy70+E z0S`i-_91e1<_AIVPM6Lg%RspCE$lnvKdJ0_2+Tpd6+4wdV=%reDWr1Fo%*wd1xvlc zkTHuCdHb-*bFcw1^mEgYZ<9^o&zq$VdE)*2wbC6FV~B)R%!}c}%;a<3ryMviHoqS; z4qQhQ>5xKFOq8!Iy>Mv4D%SoSWYWu4SifPu@vF0)8+xK)PcT*azz%2?z*JQz@jLY( z8>D3xj{?i2moqiy-wE9+WdeT=Uq8wqCSU!et*2~O@0=5P>gm}R?D6Squ{smBP zDeu!d)1#z8ExMM(M5k+LnAxc7arisZ-mplNlsBv#HxZQtyr#Fx0~1?n-*n^Qw$@f> z09}3J69EP0-%KGs__50OuoCqcZP~0*Wv+IB$zxbMC138j7orPuu2^lO&0G@@DhnF6 zkd|%#{q>sSi|+qp=s7|RZ|i^m4fv z{qH|TV8iqCKfdHG?qVVxPXGJMTf^`5|9+(Zz8=Vb`u}y6@=md;|BDOopHJ|=H}QWT z_5Uph|9@-LUTpn;3h)?29s~P^zM9+eCkS3&BWYz4QNVS{nbxVc)`tDR>y*;zKN+9W z&Z{SpY+PuB0T9Cuh)VZXKtKQt()(38brGp#KwIdDt$zOH%NIZ}q?X?R6=NWf=yAC% zZvlrdIl6D!G!T@W$?wwGxI?`+Vj)54k9>#`wg_tBil&=k4&(YuH&B*e>bQujJU^iC z*BdUv*tR z1{B1V);Q9VJ+Paqn3Rsy++%ux>=YDwEz0AGd= zXj=H8r|G0|N4wEY<)Jhz>WcGd{0QjY65g@+2K0y#yc-~slV79A1cV&+aiizDBr-!D z;lMwQGkFKl_U%WOKr2uB{^LU82808(1z>|Z6hS+X4?I0*X968}gHl4*@jtsily!BH z0*bIjXr!gs_u~6ZR##SFcI2A@>D(J&nH(J*fxJ*vP^Z94EI?m4{ceXHNMjgedKJ|l zvkD3}gJ=Jr9OYSe8eBSKES0!rNPvOqboIcs(xGsH#~OIDT#2AVf|OLVJSra{Js7L7 zv9XzCg*2a25)%_wS3N#t8&Wf{_yiF#yjUTY~bA8;1r<)t4`6 zp7oi7G;!u`FKdy3SNJK|JYmlqf6Ie6V8Vkn=&?pa4Ef2_3^A6=K*Gl^h!21SyD4pn z0jQ&}-#L&%Pp0KdpzQ}ey8{kk09ZA+y>)M%OBJV#c^^U(47NeJKX=pjleIN8hI%=G zQHC@!4BgJP0zv{p3OMGGva6AxyXZ$}$BLHBJ}mwKc0b8VK*iz%*x7Y;1d;=8i^%~% z-_Iib_U$F;5p-a99I6Jlm^^|KJ(l-QykwEat{`6Cd`g&<1Q?q^>Bk{jV1)v*KU(uT zbu*fJY{QovbPD_TJkk*#>&vf= z(E8h*OWnqU4U$;qVCyONcTjm~c|e-S_H3h6e@dQj%P%>vvtdY+A{oFt_h^!eXUbEH z0E$ELM0A7ZUChA!Xv(0ZU^-;@!UEX`aKOl+iw&g)gByad1CUq(6kzOWAa3(H%~rDb zcarbyz$gBP_0T(-y^{OKlj0EMI{;%wP^Ud#@1W5i4;O$ahJFQDhz|WVVk5!{3@7C^ z@I3z3PV)4YFsQ)l%{w4i6tEG}A^F+*p{&;o!18C6%XvX1A(^d+BvI;A2b?x5-b6%0 zwudwsT%$F zA}as^;VKIWV*gj>ytTc}v|Lbf4>Ao74{<*~03rz?Jbds4;HsM}`pxU>mVk=FT1JJH zJ-g}c@=IbYG$2#29c8>>TU&2DnJu_D>KLVo?}-eF?MrJ7q%Ied1nW^S9-RFn0|C?0 z)R~TApw4bgS%k}}CFccE%W}HbeRN4*8R@|F;hJCmMElWxT8G1N*_`{I(^^gsy+0DJeQcy;x)KLB0L>kp-QR zcCk#41@t11h?~s-X5=ANHKBy{#i(ek&?%Cm|fo&CoFCQWod`d^GA@_Ale2O$s;ClK?Ipu>uE?d)}BUs$^+=$1-TEBQVkUIY3z zg2bTob+%|0LWn8e!rYt{{arMCcJTNcd<43Nk8bWREr}=743a@THw|EED@k<+W$>`F&cE1T zh%n|A`tGP80=Wf;&mv%`2xu9oFN&YqUghgpW2@>h~7L`^0$~K z7?9!OimF4f3Upo-V*4!mN~Z-6EP5air^+4EsPPQK6CalgM^QrF^v?p#XlZIVu=v-b z!3efY1(efA3o2t}@SDIA?~}9!-63dK@~Z)p+fmGvlv&eoPadU18t8ucXI(MdI5tW7 zkM_28sRWDVktyKVH*~#$W3=cUfO*iF=!KGV6Z$5uZd-l@cj@T$a85w~+?SRMr~B;s zpm4Z4dw6)*+3mq*0z`W&uCuW&F9lM^>AwJvM?Ef^3|EvD>}5wqKK&LD8O7B^clbWI+WRQ>kiJC5^&4vs9K4NE=>ja_e0^ah|o ztNnzMy|`eBqGIt7kpg=GFYwrf6-k{=?fSQ%2TQ-DiQ@P8n`>%#`1lfmAxc01SbAq# z4NWl6+}g_vcN$Mp+|I$9al6V@2Il_mLNiYLQCKkYTLpC+MQasK>-fYDsdN)f%*1Z^ zPxaC9gdOnZM@myCckIGDtM9JD@m=wS)KjgX=I%0&g>M*7mGF$*Ws`X3FI))&c%9Z` z+I}_&cYUXqQN2BI5G#-Uge+XQ{!QN>)6Q7@EXnuRgx1!yA7OIuAHHYkL7rZ21QzAf zR6T5!d@T4Od;GdQJ3A-m(9^)mqU%;jF$18d5BGyIUO!&z{lsOJKa4DfK`)_WhIPzn zqZ8f|@r&w+H8*IwXlSoukeKC}KWQuMo}Tx5EQniER)^Od!B~R) zF3@|ITKM4tNoME1ccG51g{-uCY&eNF>7r9fc(Q6q`AKmssF{i3xHNhsSN>aS4fXo9 z#s~J4z&3sY2EqOh-ea`^`ztIACtR_xvtTM+B(T9Hs8Yg#m#4#yi~3b3j{Y*`)HNZD z-rn9Cwud)WT4pA^p>0+B%$=?w-;;X0Ik9*q1yR!WCelRqV8ZP{niIDDRzMg0;tvlw zIBAgD%NBM(gR~p9dCdz)(SaP!esC=|sxQIwa8QieYaiU>tQ*bvl9~FfO^=aeq#7e6 z!MeQdg$ZxMJuI}gxzA%*tiMn;{WHh%PG_>iBf*)dn z=`WsQ+j)h@FYYEiIzR^gvhVAwkM)WfG1H5>+D9c+>pmVOhcV^D)#njOOckncC~1eC z8x&5#^nI$-Bi74HE+|QwT3VEH=-{CX8>U~Yu*K;@FHLw%MC6v2;b;P>wBW3`Z$uNE zQJ?)XHv{KxF{&#zym$ zKOq%i(tj(Tn3LoS$i1fIV!^M$s4!SN6>WB+)G)AKj;3cH>|sahCCT~kqMQBwGO(KI zcGUjK_7sd^wzGxD@RTVSc)ab|)I+se4m@mZO2!Ky$E)GgCB0rIxMLBxqGQjb>Yk9| zfc82nytAwU9_PBcGdS8{mLXaC2Hw_MO&$}m+y&g1R-F0w!aFd>Bc-Aafh+~X!iLou z+`AQ~PLtnO4#n#`J9B_nf*@G(@5AzcQZz8r{Ev_A`i`RV`~dur?lOLeN(4ar#JK@n z2|!_zO`wS3tM`RC#drcl$6DAA96TPO*W@%l@11;N(_O>V>XaF*nln;VPnI6CEO1EP-lI&+BwKCpsSjP!iz0y z0j4R)RiN$`WM-LpewwxtR2Eo2b6M()JUeqcLYJeChCxh6H?zy%qDAj6rs>SlcLLoA zXIL7j9;yKqw@cz3Am=1k7horpPR8y_zI5O!SO0wb?3dpi_<nAW7bG{&1CVOS;tf54)EpBzsQG>I)~Z8VolMojhKDPbouuePbjaDPQ?|W7B;(A)22rq`O`BYAE|EoTZ^#ClMy#~ zif4TMP94J&D}o;#g&T60$;n#FZbQmW;}d@25A4WvDs#hDr(hfV#cjVXx{>S_J%iCM zCEv?0dC~F@6eacU+tc2AO#U(jd$bkj@Vw*8!SfR{6EM;DJi9!j5D%t$)RhUurd0<4 zQ#WK%#~rQ{;lkq*a}CVoat$d4eDDq5z1#!iPhiq&e*qf?FN`lDH-1z=bIZx5rotI3 zS$g8&{$SCo^mXrvR)#(yFd~|q)P^g-RU*-PB8VFI55DYBt6;oP4Xk4mIU5VbfcmTb zY7x5Ru{)-037~s?lfLicG;c;}H|R~^)VT}hb2e6woHc%tSVpfm56FOFHRe;u&xRm* zaVjCv7b@~Gw*y{7l_Xbym}q1cIs_EQb51n%eCCCR^`hCB2>7^g6b(%j13@yn>jNC} zjgWMPoz(zw!_a7ILhI(X1N}(TxJM1;wQmN{=MIBin|Y!OHBMlgiF;Bv*UG^u;*H~j zTP62phAlrCy?x0<+m@$H7ZJ-kZ|eeO!g%ntO!aH7=E=m*NSpZn{yI`m6Rv z9XK1?V9|2j!>-g!MxNq{ILrkQTwE|6CZ;86vEraS!z9?B#7i;zkc6bb@y;Sd(e0gs z%Rcdld*uBbng|`t72#;GW2Za6y*E_yd2xt%ZDS*v&hnhTW?7i@LY}RhZ` z;4E$x-s)q)+RM`Iv-~=)>&1wpDhM$p`5I_6!TN*-d|>2u$o3`DWOAm>Xh`_Y&L<7=wQOx4Y<51r(;5n%9GgBPal&z~=|%Db}4k zQ?EP#M*;J(7P?ifq;(fKe^d|3qU33i3zVFSCeTHne#D497Qn4l6JUj#0DR~HS{cr- zn@93A9PI4F;EjLY3?t)SsfK}-RUa(|Iethj0T#NyFdVNSIrOu-_a1V1Ply|sWb8FI zHnSy$_5~!o=?#I2uN3%sqfVdD3EkzLaJr9=4}^EZ)t;(O>N8Qwiy6+&R1eN^)Kw|J zu3vO+#Bs-t@8^e6P!q}w7uqa9o{h@z;ygIbEX*JY@5dckba}8x+dy3xn}ZdAW)wLDp0NAZ-0$h3O#X9#t);pF&iLV@e?UAnXKX^Lm`s^d z)RSfC1d1$Ug3n;n`RXDwiQjeTGON6*idt0{NGMj}q7kFax2i3n7&V+kASv?1lF&5R$yNFe@$Lx%J-ycO^lZdG#d$M*zLnC56C4z-+)Y1+g-#0etWg}jc< z2_s|UWnlP?&6Fj(7UbIV)`%113&6-@O+ag4Lyi3oD#zh=!yV%Bv9V&^W+ok92)ctn z4)D)&%`2onDjnNlWK@ShmKgT#=M1|{QNrjM(_p5%J~KnT5U#-4!>NEeAZIfX?b0}#MP zOn={zQp<_5?CR=q!$&mOg8Vu)K@@k_XcvMO;T@M9U>miFn026s+>;M_2)pvgfjnb_T*deUCW6umu^ z1+A2d%Epf@Wx7$2uUxU0g4uq&I3hNknKoPw*M;{7Oc^ic2>8MRm9|LdgM{XoXenWETd0vJa5MuCm_>M@RrM}M`4dR9A=6=Xljwp-i#&?H= z2<`Q}3R17f&+Yusn3HP>Wvy#}^nhHXXo_j7TUoOE;3p8qw!%RzXNRjmgF9W~8S*`2 z#7RoZN9rv|6UTJLR7Sbb-vzeK1NyP9#LJj2PlF$#UW*BL_9)z6ied<90y|gFUM*N1 zwge=WTWqOi4Gj!`Z|77s0s?F>r^!{l2-f^~UVlOEZ|uiyfKwpllY|du$L-S85A?8i z(E{$=pxheUgM3WXqkBQFHo+N|lNDXZ9nhf==0S4K_M^;-I0c0m!HfAj+m~CZR~M!Q z2R7l)4O-`IC+=E`!r%LuKGXEJ-ul)7OtQ)QGg1yMjW_RLwYk8MB$-;UQRhmSo6pC| zx$K!FRmA4C0~oa^Ue?UX#gNnGf2Lo^&zOx44gS6WR{46LsBD^AEV&BIHTaT?4?`NN zs*p(CS_=?a`b_$qwauSICg@t62PJF`n3S(HS%Tc6#giVp?PEeh=_PCsF2HLVz5vIy zFpfb3gWR87d0n>ic3f!;tk?7N*MI%eQ|Zf(DBgfjO>+$wC#O-;wMICQjpZU0-)zE! zA3yMInU*Q1e5hk%H+$IW5@-U|&vnIT*LRWNO>&`toeMkt5w0PiRBS_|QS(a9%g1b`6^5 zNY*lLi0Gd3231iJV1*6z{yv|Q2np+4m(|&@Gn0Efi=i-y1m0rQ#9dK@XV{G#6g_42uS5 zSJ1y{CZ@v=S@8qgzb_D#9;thYXcUf|q0Yf{926d7g<^3TOB4h0u+w=?}7pC}U zw!gfU$h9~iC>@HcTS6;5f?$kcESFqY3>k63Zz6}C8aeJVK{13ts=e3d9#&S2k>W9z z-#`pY7wZO3^!20`$e)M*N_*Y~M>k(Y=&^L0<^19FJR-TaV7`LakvckW<>n#>hGvMA zTTW&+bx;@1>gIqv zgjSeY*0b_K&Opc8VI}j{$@`W=D2Z_~Z=byC%=%jHt|%I7b(fhqnU3`1H}uBZ{h!N$ zQc8SH=iATVX2}}CdMCfrjj~c9q_gmn;sNCXufr%5rCV@0ib-LoF}KFA8UO zfLzEq9P+5l^QNK-fPtOJ|DK#o?1-=QY-(`?6HaK z7pF96=^brQ>H?mn8`cogvifHiQYH*sc_X(hHL0U9xCTD^Yt`7cy!oW@6s!%Z^90K}mjBio$!g|MMWnGh(>M`VxAB;$X+ zSzjSOIh{=`Te@zIszlN`;Dp{S26} ztCMfr%^f-dK3nCw2j)`R#XZ~k%vhkeYDJ|5W6JwJdkGvRWkGPY*P^APUaj9`h zxTn?FC@a))4K~s=#-QH+v%+a5GKt9PUwuJ)t(DfjMj@+d@~vhDG~(K%5jB zCdC%)!Z=1&uQu}jFk#$^IUh#$0_N^zdxKXipmGqk`k0zpjT7$3H#0a`s^5lo5d7?4 z=7N-6jGVw}mgU3i(RdS_QagymDsXkYI`H}{SNfXadB$yjUtEkajxFTI3*3PF9>3Ek z1j`&4!S0^hYL6pBC;+LRl)VSll=ch25J*#Bq$&&>PIKr^zzrwvPnf{PZW{z#lsVw2 zzJE@J^pmrOgV@rv^tH$SQjl^O59qUOh%z_o97`=d&4yAl54Ru-XT7}pFMNN=aq2E3 zduY4He1K34gSz<^8gf@tTrHpv<`5Tto*=rg`eJpnJKv1!s|3s`O}hE{pB3{^G*vX3$Q2259c{$JM zfvq~)y7H%6QSmx%5)B(M{&T&(LM{yWuwsL;AHbKfS{~w1oPV)yAw9R8v~{(#4*#C5 zIl4h65D+yBPr)Y!gb?NdNfq{dWZ{5MKnK3@v~S}Kyv$EeUH1yoH|mrIU*?(V{=-Io zZ*NyIK?`c@?0f=<7f(a)>VZx^%gOE|HAW^_2cqsF zxv`x+x=-m6vA-ZEa!yE#->ajll-d}?6P2Kj1_+D$8UDdN2TFEU*2l&?um*KHdRTo~ z2(|uDT{LqL79i%8Do4p*Y!)hNRqXTRX}~aS&fNVE03fhW5D?h5Tg3@+nRJ?)xl{FV zQOK}Hje`5=_;}K!7Aa@JH)oa|KB=@ua-Bb3S#+%)9Q9t&EjzYcEqurHV*Y*q_YuK8 zEqJwaJ|GRhAt)st6&v0?kXm#wD<;iVHq&+jkn{;3l5DRNg~AfoUG{33V(aS~#S!Zn zR`Bra7O||kwMp9Cd6UxDj`=@7=OaW^WB4B40Fa@)r#wkOvt7qZPU9=(=fVWItUq(W zAgPuiA4hWHFI4vDW7Ry6I+-l}z2~W2ZPBozJ#E+@s3op8ley&iEefa{A$*~0zB?kOwuKPy+hr9QTiYjZ{2F-SxMUo(3 z03@Rb2&jkwBumagL2}L+%t|s4C5a+MC~`)EsDKCvNRhLEf>0nJ83g94e!qA6dB1%Ky;uSHiu5Jjyk@S`D^%X(vFNReeI$A{d`+heRt>;&sl z-J)I&{+62gLKdmOE|(tW-Z^lQB-SDPY{A~5Fzi7tACxNki^|563rbX8@g&lj+4%}h;Uuy}*17FVQT zjh7_!Mo!T4)~)Yoaz>tK5s9m8#2*;rD4ub|02#hR78bRZiS=ilO--ea{ALT4i6lpx z3wi?TaVTF+RZY$`C?B6#hit5L#3 zB9TU2S?XM>v#^S+6Uy-UvZ@0eZ@2>lL`BD_E`1f`jZ+LXd_Ooi$ko)%d&|;N_D?zh zE!95DNbwL`#2@y|Tl~%F1A&8_xw?axitA5r25_S{ZLn=Buu3z9V~IkxRUU z979|3A84~*m}c+Vcbwdk2tR-?7H-dWjQEM_Pp>NGy9F3_zjNb<#!2-qIl={mi-OwIg z8E1jEdK*|B8iFxLd9S1k(uirLs#!j|2U}CMxuWA4H@OGoSlabdhaMA{*D!v75;P2|{cS_MG4GQ2~Zwlw#F{J;&7SOcuAfPSwZeO^P(riEXArM4A5k z6t{cDH=S5#pEP9oe|QB{S=3KPH=c}knln|-vNWjSl>ccL$&ftlzu4rOQ?<0T1nLT= zsZ$}RI2xHfzlVHpey{Hsx8v^mkcwg#J#)=*&|JdSX+a4;%))}M35B22;XGyxdahY9 zR*y9`bf!)EyXeIxRH)ehLJuiq6B6lvL!qTAt8h|Or%Ya!m1>Bmuw^80Xc&2T9j~3m z%Cob-`A8Pa1ZZu0`AzEt7-JB(5$AV(%RMPz!DGoNez0CNg~-(y6C+nE7k_-j0|m&A zmqWUWTj?wx_v{t?`*io9iP{1ZPXgR*RxM8}4>z10pgwuqnmbtLhdjzG&BDWE?H*Pa ze{GFBw=89yQcaTk8Z5uG>-T(YG%|WbUG7wuLAT#A+5a!CXjbJ^1_M*xe&1Caa-p31 z`R6q+mBueZlvx(E6E*|Y_Xb>T70OJh7jNaz_+PDZEH){hZ9Heph%UnpT*wGxshh!RM(7%L{H93$jT`9E!kdqs;aKmU`v3xW_Z#AI5RnHi~+Rq z+~=G4Aw#uG+MhZjYkr$t=(C3g1}m@*r-6Q<{JL%07lPn^qe1gcK+XtOO0lkPs|W|wi)Rn#yX|BdGIcCVrtV|` zpbrS1i=#Ccc&CpWllI-6M^FWZKMUw|4PZ$}YxbAl?&oRzZ7;ZG5k4-+P{3Yh9T_4=b{I?Rcr76ycR&SYt={A=p+yM;{A^*hf1~-e}SKG~)5_Guu0_6@6gwT~ux$8o@YU**A zaw%UX+Rz3Tr}%|WY4MDBkypBBM3z;!Qha_j-v_m(s+8~G13;XQ&xj~`QLT;`KSuth zl~C=%5#FQ^QFfDf0MGlZu>>KI=L^0pLmy(G3Sy-&2*zk4vl#ZG9`eix)ep-ZtrTH+Zawk!?YL=w-ZA6xR0L(X;Z39 z5=WnzG+1bahDH$4Fd%*yQB))xpL6+;BT>rt=hxSyoec!jLV|1sAk0^FYMwmLY=t

N!KVVOtt?mu<9&$gCo@v!TkyWqX_^~Z1a_$J_A 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�q^UBv-%)Dt6%GP8>6XJj| z=l}DG;?=&`nvM1Huo~To0+kIe0V=d%>hx^CQE6n}rtp)A@sZT{v)*sk;rv{?R8NlX zH(P5{Ph31beS?-i`c$HoA6{zp5fx_ewWbzrz;8B+9f_`AMUGhw=yJ<4 zYtSboPokT>2RpS(=$|lfZ67S& z?@~#697p}Y(1mE9$hX?GG2jZi13?^QoHS?P9#}>3YYFq%6O_c`#;bmbWur>(2IYME zh9u?%!%96D+fR5WQ`>3;^FbT_zWY^$_}yu$B7CdevSf%&u?(Zd#AXWDs=0BANynHz z$+7wYQrmQtK|^B^4_b{&Q4Y_>&F+o){!AgtzT}1?THgJlETC#eEV9E%C>n_bYTSu% z*eU#S*rP6CGY11s0I3eWVRz8Bv(v_0EkFPG9<1H%YGJ~5HWK-OpAzx*nUIedB!U!n zg81WlyGG^w($M2Ksu*hb3w*a@yM$o4qVboljQf?NTOlaZY%B4knxsU(-#D6|E{=i@`av-k&6h^x=% zA#QIlYiQ=;7Y&m|WZfPrm-83|WWNd|6!lLA3Cp1IIG2)=49R2p8gEJMf$c$`agX2Q z5FwUMbnFL#SqzF7H#rz`F|R<;9NdVg*(0(@h!Y$&)h>Gu0$MS#yb^)Yp}}nU#OLbu z&WW>VXR*qD7y95kC@v_hNr%6}-S4jGe3$v> zMyjBCoF!`B^v92-B_pt!s{kwmH0&%P>G0~oLp?iX%=EzyndhN6SMoXjj36RRVsOj zrt?gpX8Thso{cDC=CfW!3!R3bA+H6DFH(Q-a*EoQB+;6njd08|nL4D^DNQ|Y&#F9$ zAnjy}4l7((0~ox7#Ock6VD7To%=Xw^LHIyi1C`?U-u`K6I+kvhFtw^NC`mf!d$ran z=U6{;f9aUtM^l7muFr3_iuzW`jaWQZBCPFLaG|qE8dUFf0cFnTE|908@ zpQwM?oE-4!6MY5Y4-B*ns=ZGBgdfxj71BGcQM{aZG-fE&xQ{C7EPk6>%aa%GL$iUu z)AWK0Id4$Vj(r$BQtJ|QO3yXfr2k30|6!1_R+DSBNMp*C=#rCDmV;SlDjE;*76r$3 zcWf1_C9(K7M!C-9wO0=Ou=5VleRP;%R!|X3zZY;nG&2J_A1`_vV+yScmnJ@7ekQ-TU7hD8$?{$=Z7RyV&!!=jqHHwy_R&%|oil$6J!6gC zY)^SXy_R6&@sXD38E6tM4(d3VtQAX*=hZJOl64`s8Z?41W-Q)9k^TMHXJB#e-}{aE z8Stk}pQ^P%R!K*@O#D*gQ~qO`tPwgWmLiM&i*i|pI#xseFw>lE`3?pwMa`F+k-WFcA>r<#Ewes z(V~9D@q#a&71o`I{oJ(q!bydrGW@-5RjAt?hSV=H79){!{Vl8CJ%h(?=Z+i)1~Lfd ztSF}~L*BlxsOWz;NstSISf+C$i=SbOi!o`Z!jsB>&xM0yCrM6(lVPmeK>_c>>5I<$ zrGbjpg3Fx<=^?h8rXWY$f3QEZ#B$-?*?+(4$Lt%sNu1zm5*3@sE^@qAj zHisqwRR}-P2SOJQUsMyLjb;qADPk%A{vD3Y%>r8-87&`7YtrmM<|i#~d-Bhz+U!@* z+)1_!be17A$-QFpYwsW@QrgY`tD?e_D0f(_jg9HMt^d1E`0o#y_G?7{`?CzM@#O#h z^zx|$48;F@{{JswDE?mS)h^8ylcgj`-;CXy?k0qz?`PTx#oa1hTv<8p4)Wfv#igzP_FvxMkXTexQ~PLx z4G@*q^>tf)eSK5YIoPG{HDVaH3xkbZ5)$BrJKNoV@+uC_b9#$pIQS;)VE7((f%o2D zpM;%W?vIYaPJqh;IsRr@*b9VDvIvA44o*G1Z}t6W%F**-}twj7*r?0vj}xccWzI4{E=VdLp#83hfEH|z<19HD^S zUM#PAcVz#6&b0LRZhy?)5f#P0!X92goq!f!9WG=%UHwCApotXPjC~M17zZ}F>4NPX znM5`9_0grCLjQgb&RhRKfZFFY9HLlrTOR zG)9&fHc`LF^LHDr``iDX|L*zo=Sdh8f@wtTXJj5y{LMZ$KSPd&p$nn$+E!i+fdPD5 z^mkP6v)uYK4z~{i31Evos_WNfWQ_h^RPv=i14*xGXP3X-44eIh21oq;mCTJlX-DS! z4Q|u_U6?9_TG$8Zu3Eu9ojr7-qM~@_e~0^J_=7(KncO=*9=E{o_bg>aA%Cu`){0L% zG3M_--t7PPVrzSPdr8LsUM5b)`~P+v!yXoF@#l8`{>A^DUp9s>T=;E2Z@25UQ7gT) znZ9Afjc>+KB3h;ZZiJGG=dD$yKtZmKeran0`Oo9Gu2a-9HD2=gKOkl>SF^ri|GPAB z>WQ=ju4Y5~_SNA9r-Rgy>W|i!IB2g$i!Xv=z=7p^brM=ZgovlZ| zaVX{H%IzC8nOM3$|C;3PUm{2KU+QOOZg99pUtZhDz<#kyyT&oxOQ*~OnkZ)LFA7V9 z?8d`DKs8t;&O`+W-n)hz) zLok=6l)Gtag)Q_O@`-GmO5~Koq0Oy9+7RycxN)T}{UMtS_ilr7m=xau zKCr-O+qkQFK`Oj`{W<3+BRr+c7L%SyBmx3{LrbG9E)ejqooKo5_1m}0J?AZ<$*xz! z^7=%E@i;kPnNHxJr&H#aXD%deSt;k`DNi@)MR{1Cb6K>Nb;-G2%mUm9>*{j9?Ic#o zThNA0SJ+SROmkhxU9c6w6`N;)79RARc(l(~uvd3+34s|u;fJP9 ziO~LJ2yj@bhz(*IYjT&AbIob(hh$BoLV+F)PN zaf_%Y<*8m0pA(tl_2!{dvI)X%V!pw3E33n0C2x*7R3gTMlh-eCh_w}~zh!?=oWBzG zX#L@p1;8=d97BiPCrVUHOKW2lqRrY40F^KnEiRtZ(&C>SZes_%ucVm>z%p(6mfQjZ z-q8(i%#u465Hy|u2P$X zvQyj;-s}I43QllQu8iYZ+XEqJJo1(Gf<5O!!Da(4ZR?SzSHeH+{(Zx!Q$_cg_RhgX zR8HF9aEadFdWXRBNXay4(;$vQ-ywFP#MAm~&9~Y7*6E<^8_wl#5K-0Ziq_>|@o8R7 zfK|3O)@vdM`l6B;W)YGftNY02*kw z-Z}-EW){mJUt5{DL7#-iOn=6juopVIazU49%s+XTc8&QGL`bFRD>x-L zM4D^C2L-mdKvH&rf92{5m&{Zpq|U<@H{~Uzs>m4IzEE!Vh-*`8pRF1H-S6Oa5P_k1AUlb z*4Co_u6N39`FDqg9IZC+wY{ngsLtEl!GptzAO3mN0&KuoUumr#XJlXYM8}2N&oXjQF88 z?>GB^lCc}p!ha_a=jLg8NMOCd7O4EgSa|%;xyAxpRpULk&_t#;(lNfc7qGoz zp*m2V;WpoUxB?Th%TnJzNxM&*k~VlC-gW9bsqqUEhO^U`LTh)6FVI%Q>eC*N!9HrC zU3L@RKCGK#?U#6o_!8EPQbFnJ9tZurFT1U~nuGFak3FRt;tK6ikxns*+=1Zv@5--Z z*}d~P`^{L}0H9M=9-O~z^SL@vq094zmP>nY1PJ*+f~W7^`mZeCw1I4Z0~Qy7w?gRJ zhAS&G$1z7IViTangUmgBnOYX>fuY?Ra+}tbW%gQncg_H|G}ItO!b2@ z6mvyC6$fJYDoU^c8nl6;>n9*%EcxiRg}2-iZ-wTCYD{Ls&2lr10MKBJ=w|*fw9S3# znrrq)|F&+EZ;BMY2=sCq=H<5OQ@jhRwr;a_iSf{EgqWA4vY57(-hR_b{_+EGCCTNb zb7hjWLnq9Wp^(_Vz_b`De-H0LIQ{sy{{8eCdWh=w#7VI@h2f=Lqqs7Er?uy41_f-&DXa<&*a`+Bb6^>^_#M>=B|2r3i3a=q~gj9 za`t~iioYS?QPDKa`2Miu9l=AfS*s4po|ik&^HJ3wiB=ZiexgLM(~AV1fbVQk=5*9N zokcMRC~7RZevv;HBfX9KvcPsJ8=8>~LgvS1pS!D{S9>0;jg-*63RA_3pO8aA^$dSD zo1FvB5`mfC29g4psaIxVf5Yq2sY`tEAT0d|Te6?(@NiuRyq7qYYNy*fgk4q6K*LaE|Tn~`n6_JB$rQTXLB`uJr4 z@EDB1wsI%I)Oed_GI-cc)6+=z4VY3fJUA*!@!PfYGHiq0v||j&v0mw z+8;&mV%TyOb93>to_kdE+yCU$zf8O6c`A9LG>8C45Mx&S`iupH$fwD(9Wh_St}jFW zxTNgix46u2 zTnf`T_1$$*Xy?vn&t^y^4v)&3pZyMgJ)`N^x!{2gF3YUpwd31{K<;+bwmaT#GAw{h z#^7f0FugHSls-PHbELwU>F(NSX7FHJKX*+AdlQnC?7x+Y^>iVojynK|1v7`8Jt#O( z<1yvvo4iSgNe$N*MyW{L=KHIGoNFoUke^d_zN|9YlnYmD_sx?__yP zdO(j|Cro}h@S{AcL6H*9cP>9Sk;$AvwRRxkW6*VBS6#Zfrl}9}FF?U1*I*B0ynxb+ ze)7DhkuaosZQsXzA~6j&UuJZAiY^)3C5Ul*DQg%?}e*%4yk zW@u`6LZPu(X7T&ne|Y<4{cQs2s*m}P=GghAzvG$*>RHxeq&f}pXKk$gN3Y9qxeVUs znw_%$r5yN0fji3PI8Xm$P^`|;(}EPksSiW-fjQytUx9qix4)Z|OUaolw_#lmb=fd2 z08c45&{YFG@AbK4TuVy^ofJmW)j`e(l{qY$BvukrTWLlg_a)_ZQ`FD=EfHOJb9 z++w{9g#-?F5$`Iocfp0IflkO&L=R5y^&4QgqvJYS%6r3V{`N&U9fS06ldMy77&}=T zG^TSIY~L=RgoGOUSsn5SYrG(Y7|aYkDG3)ZUDBcv5!iU@Qd-iGs8FHo)GayHZ^2qa zx8DdnVCv)n!52E!{RwS{7@{l;xT;kb7~f8V+Rd07SmTsi!se~g?Sj9Nvp){cw(tn^ zjFqXe7R}Bu-{o)??RKdCAbI5i#-2yL4Pl)ycxQpYmaVb0Ji zY0{&Qy4GP_EhJ0w(BG|UIO4MwkF@rx=V=3zzI-(Qh?ces^yrn>dhe?wTJ6i|#J$&D z1FOv+dlc)|L*q%mM9ox%fe2i25kndI`bX>qi#U%|!cU>pN*3}X>-jmP-dqX8T~I3H z*x&tQhYhdBHI$=5#zO}|U_y6^^mfO$%N!^_RNCpzqUQG751RJm*O6GiWqq|wm%;wVOQggj z_`%k3n3Xd{2S_WFh0H&Dq52ho*#XAEk4FA!(2O?LwSm@qJ5m>G-y~d=yv1NKr8(LB z!r`C#=I?FnH2e}vDe_+W*$1~KUTenb#oF8)mgz^Q;9rI+IfTb>_Pjye}!TuN%r+ zj3&Wf{pOLOU)K-yj9mM3&_ICVI7KJ>*-uw=I%cFmIVsBtl>RQTi-0-7@QgJ)8p9Nu zF~11r`TG7m_s$!mBFyIgpImK-i7!1uN`ySM7k_;~;3?~+-;-AYaV=t|pfza{wSk49 z#U@~|iH>`)v3QQe>w7e`U%%vGt)FU-FXmgfNMu{z?K^N=4@l`={hO0s_FZ-_qkn$W z?xCT4Iuw*-t5F2r>=^DEdZa``_b&z=3g93cHR>!mXv~GNfxcqQy#ufbuFPg7dUgX& z>jXP-#6GyOwpS*?z#bo7$s0Q)|Kl>_;CY3U2H6bW^GH``VDgS@BCqXFYFlP&n}Pzo z6K*(|S)v_*P`{#e$9((Q!}Uqh%ibI(pK~KNUm^O1>)A^%;k)2*Rd=8*LzS+-blipv z&UZ+F%6C(pcB#p&nW*_@v7J-;R`^g*sy>ha2>%~lAYh}-E0b>j0<`6>YTyR(`HJZN zm$_Pk>?S|30&%w1iv6aQ*2{S!rA_qoq2PS{RXeq4{jvM-=mP1-gK;*%sv`whf?~c^ zsijF3!~ap@Ei{YiWhGHx0&_rGKYyq+)(%`yN7t!MpJ<7=&g)}C1>Kg*9;zO4f<%{A z{AH*n@Qj3&Tega)t-aIdTcR?D#5J@V4ibtS@l4?0`BoO~G+*jfD*M-=+z>^28>}JV zOVHW~nI_KTO8$b(uP0LaNT%-MN581{UtzpUK3#W3V{M>0>^Us8eEj?u;a;(KP~WPb z0IiV<`*`72%8EA~m!xv?VaxpPi8u7y9v$?UY7Zp)c*wPL0`}N~K4cC&GVcnu;y}!h z98~1v7(~>)yp}Jz>Eget?{Uf&T7(Grmd0P*UJF}&#bQqE@=KPfi6<{>*G=ND$H zgV+=(+~Tzc07AeMR0+^IC+}0*py1F@a-ojTWiUxG3`Bu#F)qiA4$tx-Jzl=BWSJ`8 zburxk=Hlk9P*%aSuP@IpsF9j%=Qy0Tj;b_P1{yM&)7oKK=Xp=4tG8&^T%Z&dacV4_|l8QT z!_>2BQ3YILmQd$@SSbOH8Z}B3qwm@eey=1dkT@>+_<4-GJmjGi^JexXaD1w}3PUR$ zG{_Vc0Q#y9?)=#)p$ck)y|10D?G(RzP*GpHB+x(4Z@LY%3VdF5ts*bB-?Fqxod#PD z&t{Cimx7qTmNjvs;K8K36*r-mp}!qX)@Wy1A17QufKaz(JPL9&T*j;8WExXleg{l9 zk{aHaI(>*4;{_(qiB-lM8qAJtLpZ`J!X-cC;Tgzb-O(1S9Ao`0YDMiR=HUXi1m6x9 zGUs!JX9EFp7|R8Z5@;^I9;OLn z%P2;JQ>}$E1*Q!zn>?=uKponCpC8&g#4o;Q5tZztK4-X9nnK9r73ZW0y>i}Z?dfMp zA>1)Zi-NNp-;#Uq@@Ld}4g>sxkHuRWXB1+E?NC;Fdj2Eb<4W%nW{+o`tv(da@(tg$ z#Yui%xGhg_N_GRf%D~s9drDGb2Zx|>C3kfRye)C%hv4&(JM-38F7m0JyE@h@4?P|W z+IY8m&WP9%8$IZ(jJ?eePrnIZ9V{&OWwVv8<{yC9+O=jla>erFXmwE;w&?RQ;6wj? z^$IpPiqUbNY2{A-El!tOc*$ z+~Dq|4g3}zeow40YEFbd>M-bnl>6y@oAwW-@Hk~z^6cZq)P&~GAFP8QAtca`HrKm? z>0b1!c{yfv<&8f+R>T%?CB6hfMN#Bw`YW!SZro19m_CsF1CTwaK8{6`gOja)s@-FG zAEqg`FQT>&u_%9cvYEJ(Lnk?H7xavN6IglxnAx`(r|w-iwZvySCkpktc;@|~t;OhS zMRPUhNHA&TxpZFo?6KrgYe4vf4=XA-mX4RQCs@wV{VE zc6S8kwjYW)*ERGY4@f*Y8g-*CTehel^ks1KPA|N*Mi+>`V~XPdTfsA|TC|2?XY@^_UsU-%~#Vu+<4cY8D^+w!(Q$knT6-04%ae=9LN(q+B&;|4cW0u>V-#sq z=nnb=cc5)}T@c#U7`U`uzM*mx#3S0Y-31flj?K7BD{r1vlmb?mBEzQif!!UpXWXRe z(?5%ki5@?h1WI9KG zPU!dJR(O*9vDr>-^RDQ1TRp$F)hu9eFGKioJGR(SFW=a~EOR8D$uGiFVICj~kTSha z+n=ykbl2!d6dFHA&Jh|J#*+K=ysL8-Lo+@23{#qOZ^Y~MsH#ull0MvQc$l!-10j0g z^(Iq2_=lP?7@6H)urqY{vTaiU!jn8W*e?lD?I+tK-Ne462%u8@hwEru)B{BdwFyL7%YV2Ec@iHZ9Qi`PvAb2zTtQaS)222h%7Gl!-RP`<@iT zE$S8bP%vPQLh2Q{56<{(MZR+G_~APM)b3*R52IrtEuo>KuNQ1C=LiiL@?3F#2^tx@ z6Ok_khm?clbqv8$rQv7Ir>Bic3B|u@BPH}4L4&D^s~!yU`tPN-FaLm5dTIm% ztDLIH?CM{a95QEW*D&NND zlaz+t4C4t%hEh0m(w}7bK1!N1oHSFJic$dVO*0|-qB zr>2N%l5D6bW$$ir6EN&BZP{nt+~Mq1j@W`{vmu-t%Eh8}ByR3%8d6@*Y5v{#1wkMY zUxWP4Q=1cG%7Q3A@b}*Xo4=uwJ-R^TK2v&7;)g3f2_O_Gfs@$)d_ReTnAKlU=Pf?v=(aHwsQGavsR|ZBWFQ+a}9PB;Ph$#D(EB-VpCrF{8X$br1Tz=>;Bvs6IrI2q3XH2RiL3V6N^qu{>8$CNXM}5LCgduP zg?w=g`D3YpTh?eN>}!J3(Rs3^CjP!NSV*4S=~oF?RSkC&V3ngY$YeymSYPg?An{F; zTbP)JTVD~!LcaS%Il|Jts6>v1CLa%c*u7F`0@OA?SY6U_PiL%8o~t?KR1e;#?(3^r zAgstO;2=i81$ltN|1%eOE;J$$@RBQ7$4fA)R>uYssW_K-vc1ueLJB6&$Jw(b_8+6! z7n#Z>jMy+E)N`O^J{pQA%b))lyF*NF+)GW1y*k0Z@v~?X?{ONaH^U_e{-cpE;)#!Q z+?}`Hnjc=Xs?*uRKHf7YX!k>ubIK%7t`UPel!coha(8^9-dyMu{AJ;gMbdrZuzP)U z-|QU1=nNXrBw5eF_10iHY1V|Fe5&WJLPK`&$0#?q=rUKuo9OF>&XY+5fqVPJp1=akI|<)9+48d`Mug5L&}rIGMS>)PxrHRjhWR0hUs z;4d!J9N@mnVh3)GY`2kM2g{%o)f_ALSg4+$FA9-5m=0t$WEi6Vf>a63qY(6=n+2@8 z6NB=x*EsxhmzEaGVZ|?kVR9hpWC=KraWB^ib;W|KD|!o?UHUptN4ADLj0{@hVek(9wgSKyL$C`o}n~ zi$D=-Sabw``*z~SI-g)O<^i`EL4eozI!iRi3;WsF(*`6_Xh?!UK{`K0=!Ki`rp*Rf zj3^aq2XC*w@z&JdDTKKpP11p*4T!gxAb(o)7TgjQ&tQJ5^yg%Yb30bZGPcIP0%(~a zEq(575R@rLF7m7pl3@E_&70(XA|2&-YLPt}^P;aNyM{=&s7N6XQd-%;0VsUz-{7l3 z@fKK_CTlky%s2mFDR#6RdUzs$%;OVr6DG!FSFSe~U7$1;@>~pYpo;QLQoqf+x9SPq z6;C$TVWppD%La*oBa-Y!j*{nYoA&lNrxo{L9s6N&5l2FD;bm$MestOovec)|+^^(f z0?)btuof~a3UnK1W!HUv+L*j~JmfD6AR5Wgo-`W(w|x>Ok2~?9qaKX0^M6BNR(0PG zLJD6y)(2i`sIniI$s6a_p?aT2pI&5i!5$DNU(z(ObU0u6VuwR0Aur3FTo3)ZmfDeaPcwY&S#CtChoK z9TX*341erB1)>-fB?9TcEe=wNTQ8YHCs{`@cI>P(h*e;c4238sOsXu5`)MNl6x@PV zM8$CJQcXuvB0RaK-V*qMK+fSrZbcRm^A)PazzC7Y;k232zCfn%Mu_Gfqbsk#-lL|0ELpDWi8?*peX@Z!4F z$1b$aCgm>x$Zi4=pxpPh!gay!6>z=luxoPz37r}lq%lg>g?=L4#re`xh$|PTXL-R1 zp%Z2cVQ(&)+86)2my+!Q1Jmg(GZ{EP<=GN+;Y|S>bA%3i_o-B6@>|dpQPY$Q_4vjg zm*>jO@Cq7DnmLT&WtyD7MM1e@VYk}caPv}#35kbZ1$v&qE}=DMv2;OMY=p1p_2!|r5b(JF=g+6H1FsvJy?b2p zwzY1Pg+opAo}v5eN$ASTd(i*+a$*%U`nc@kpw|Y~*dS5fPlePXJ=0U_=-JIci+eY( zUMhHtgla4fD&1qqTW+70ticN>b8q14YO4q6?&72#rY`DJ z7ZaAs9{1;D#D}^c)*C+SKxOO_L|(98nk#;!d$WDXz9?UHfI{T*ZfnkQ9{LHN$5jWo zz-Wf7Tdx5@EV$aI74U&|^uPakF1=6WyrPrbtmJR%63WQ4Ic2dQACCUJna|DyR|vpM&?-#Rl6cIeU+BIn z0+GFY@(gsf1M&*%-P9naN4dzUTMRt^TIhA8KC59!woF8m$8Z2}d{FP^VF1&4!+O<+ zj+nx(yPHFS+^U0#=&XYR5JSl`W{vulW)0y`n=GEUFo(yeEmRkr3dx05-tJ%q1=Q%_ zMmoa8^w$>pL*Kl2VsmpNt$~0+2XZbBP;1abSvFtagtoTnpPicEI;y^Q{eFf+{Im1rexp4MOutokI8O|~Pb(R~j3O)%09G$xH?{YPWlfV4$d;kAoru=tj z|9|j>{=dDIJ&(;rVYd3aBL~|}AusPgh$V_;%uZ%B#>S_q)0<|Tz+La}k~6JH&owB~ z6E}{M8p{1Is(rBWqQrf5C+V;({otr3N4nqvdQoakyPxi_PqUGpzI*AkP48vm5#h=C zp$WnA#jqm7lPepp^E6v_E-lB@6Hb*ZR{U08_V}HGa|L*9;_dmA8e?J`| z;`%>a&Tsw?GvJ-pKZe1>_nxHs<68Xpv`t1pc^w|V4MLdkO7=-QIo3w~rkaEg5vK&QE`NUAG3r{i_pO(6u?`qMir^v2XP`@V3T zDw-r*@ATs5!+}3`MD^a=nE_=j^oh{`x?8B9Yd3jQ!%JFO<8{ciScsM0>ZmW9Fta$= zKU7H8@0dq>5_m73yq*%{dXFvkHr>yzalKx*ZuOY`3P~+vKn~1cP}U> zXr&p@#jPnvHhweZN3m!K<4HucKDDb0`bn)GfvZP$$?$DQA@;wGpbr{T|0@bxZ5Pc< zyXMX7+KBtlFfCa|IBaRGLcZ0|fG9ka>b}se5Fu)tR7XI4X$RjPW(*hRh93aRGGV(P12`6}z3))E!nGGA^IChn+pTo+ZIng|!#ZrvO?ofMK8rGgP#D}V8Cs9v+2Kkzp= zE+wNY|GQh+td{h5Kv{CI8Am?LO~wu|0||}VM7$kP>6bKAqTn)PU1cLxPKjGhHn+1= zNq1lG?|PVi-?HRJfoGI>S};k3aP5W|vCJh70Yl6J?o)kSWUb#(JafxIilmuZzvNI? zK867ai|6v@!mRMzJ1PB%f=qfHja6@vbGinSB#pghBG<eUO)3|o#xqU#A57yXM(bnAZ$MtxujL_cp$au4}-5hFa(!`x# z@a2h2WWe&W&IZkWuDds_M54^8eG-~Fb4**7=bi9Z4n@IV&z29~3LeoY8aID;OPng( zCDe89Wxt=;vb3Kt;D5Dz8L_%DGm*BNt|aU~=i;Vh+7PkCC=CaMYGby{j5)gm@bOFg zM$H=XE(VGf*(vB~7B~JQmJF0{o~q=i=pPyB=!O2WC7#oWu=;u#15iyr%r5YFlRlI=BuDPBBWGvmXX^TjDYGCM%Sa93iD!gY;mzl?*D6*P(lQ%rs}{=!kZ(s}-4Q>|@j?`w_FvxM|qhb2BHWaE%|cubf?I*|LwwSU}*1 z+xzzwH_#s2GT6wS*_hI~kv$Ugv>g5`K6K)+`O7qihPd;6&$h#w?U4vB89psAI*MJ@ zH1Aaz7ny(qA$l%l6{&1^(%WUUq%$w;oYH5%x2I)B5<@2rA6=kvGb^977n^7!yKI9R zDXWs96)1OzcD*WS=No=@7$J0DWB=#b-8G02wL|+hMfPRbPJH>~!H$c>T#@jiQjnq1 zAkMdFF+De_lb=$4cghCQe=s4glH)kta@UUI@%YAKLG<{J@K>h923rN{edoGW(*ldt z=`F{{eHI^hn|PuV*PbZKRPkrnF0&gZ$tdlut zUPz*b>Dzh7W#M)UkDtfqmj503BS(JaR29EE{s!C0mZ(&+DAL2}^WGM%hm71ZrUyvNRBl_Rw0Ku%k; z4^cK`Fd#IsNriTL9yySoNxiz%Z;F7yUT_irsTl+xJg;9u(GX&ue|C?fQYcN4b@aMY zr9+L5iSqH$m)W>8nG^@xnI7V5MUsQnf|4}4E~~W`jHNMVXbt5bH3~|oQQA(!eD{s# zQ8y=~)bd@eCqA4hLc*1Kr(`TJgnceCg5SVgA=zh=1=My2JUaBA7G&BPbxRIh@j<5E z66Y&%mp|ew^Ymal3+~cOGCDZVx-b6SlAo&f_d@srJlaov(4Hdd&Lh{mSk-?|5I%Cm z5qe%8UPo2p`*jz3+8_gP3@GeM~PAvP-+% zrS`k{$(}UdDl$=xT)V)r%r{#M+ z+3!LmoAE>rtPP}0Tzy_U?bu+@bc+07aH$YPIThO*kjY>jGaEL(pSFeDSr5CsdRZcZ z07D#BE`FUi{Nb2a@enRZ#P5AE_uSr!nZJf>dFX=(Q9f*4q~=h);BU~ zZ1|~H*k8ji?;JbqwJNj*)veW;Dxy07D+hXLR)j%k!epR+wXnp4EqcY&b#*97ta=45 zJXYv5`bPz=BI5-`PLiZVUeMyi$VTFsDA%agKxbGto_~JV7t1< zoFQR{S-Fs;#AQA*DskXzSFAm_^*oC?fuGAL;GyiJUvt{Ri7yX)FA`gvi-(8^G3-K1 zJo)}`N5&#xK=NbwVBV3H=?UU43KSv&_OfH~mpxbtB2PykJTD!SKixJX%Blt{4PPv} z<{&E^3QM6n8t!miN;VrA@-%=v(Vw&&v*|Ci*|U8ZP>x+wz4zZjr8aZ5L3JpdjLY-_ z53)g&jK)JHApU32_>XFaCVo644_v@%EZMF?Bh6^pz=^`6WK66I`FUX)%BCc6Pl$qI zO|eB<5gyBdEDen?6I9BEKF3yTw7zd$arErx-J5rBsd79zA1%5TmaD_5(`eMwGtiUf zP`2^!`DLB<0?A_3O zkkS}}-X8T$z@r{7#-*)UV-vk(;$m6QZxo zFDgoh`WYDE9)3Iyc{$c88bg?z{kd{)Lvl{K`Sa2xGrLGr6U~;WLlx);=!3_@LvPhK z7Gjaq)!|)Zn^liJf|;}ud*wCAe4jR!{I|pdgEhw1@2+-(IVUe{Z=bT+HWK&DtT^%r zsapqm_Ds28K}nh^cHriz`gMA_(4z*BTtjzY#vQ8op^|W^~-E$tNVpIr*O@`MYV?+ z@7}r(5i+}~xYE#d=DCe;OInw+{z^}3@{qYqRS|sv-T9_)ri0p!vNDm)GiB^?a%M+= z`HSDdNAQp3Ux<`0wX_hN}@tj!(NL z6dw@79Q@TZp~b{}5V!yS43=3BOT6xDjxD=mhQG>jocrrn(6qDs-AovDBm;WqQEk`H zDZkGdRra@aE7P%b#D0E@?RS4@#_UV!_;8PN!r$b)hox~>smzFoCa;zdmb}L@_=f1Lf7*kr3E14~xrDJGiE|Q=%rAy*lt!(3)&}gAN zVS+*rxNe3`Vb7Ougk5GpiJ02R^?9D@@3^xuJ^>=CrF3++{TRPIy)(YE37n^hLxP2@Pe?F)>=-|t!fN=Y| z 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 z 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 z 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 G|Gxm2h0Oy1 diff --git a/docs/content/developer/cryptography/explanations/transaction-auth/keys-addresses.mdx b/docs/content/developer/cryptography/explanations/transaction-auth/keys-addresses.mdx index 70a6896d10c..1bba4b997fc 100644 --- a/docs/content/developer/cryptography/explanations/transaction-auth/keys-addresses.mdx +++ b/docs/content/developer/cryptography/explanations/transaction-auth/keys-addresses.mdx @@ -48,6 +48,12 @@ After IOTA defines the deterministic way to derive the master key from a seed, B For deriving a 32-byte IOTA address, IOTA hashes the signature scheme flag 1-byte concatenated with public key bytes using the [BLAKE2b](https://www.blake2.net/) (256 bits output) hashing function. IOTA address currently supports pure Ed25519, Secp256k1, Secp256r1, and MultiSig with corresponding flag bytes of 0x00, 0x01, 0x02, and 0x03, respectively. +:::warning Ed25519 hashing exception + +The exception to this is the Ed25519 scheme, which is the default. The BLAKE2b hash for Ed25519 public keys does not have a flag prepended before hashing unlike the other siging schemes. + +::: + ## Example IOTA Wallet and SDKs provide a flexible interface to sign transactions with various signing schemes. @@ -57,7 +63,7 @@ IOTA Wallet and SDKs provide a flexible interface to sign transactions with vari ```typescript const keypair = Ed25519Keypair.deriveKeypair(TEST_MNEMONIC, `m/44'/4218'/0'/0'/0'`); -const address = keypair.getPublicKey().toIOTAAddress(); +const address = keypair.getPublicKey().toIotaAddress(); ``` diff --git a/docs/content/developer/cryptography/explanations/zklogin.mdx b/docs/content/developer/cryptography/explanations/zklogin.mdx deleted file mode 100644 index dad83cc8598..00000000000 --- a/docs/content/developer/cryptography/explanations/zklogin.mdx +++ /dev/null @@ -1,817 +0,0 @@ ---- -title: zkLogin -description: zkLogin is a IOTA primitive that enables you to send transactions from a IOTA address using an OAuth credential, without publicly linking the two. ---- - -zkLogin is a IOTA primitive that provides the ability for you to send transactions from a IOTA address using an OAuth credential, without publicly linking the two. - -zkLogin is designed with the following goals in mind: - -- **Streamlined onboarding:** zkLogin enables you to transact on IOTA using the familiar OAuth login flow, eliminating the friction of handling cryptographic keys or remembering mnemonics. -- **Self-custody:** A zkLogin transaction requires user approval via the standard OAuth login process--the OAuth provider cannot transact on the user's behalf. -- **Security:** zkLogin is a two-factor authentication scheme: sending a transaction requires both a credential from a recent OAuth login and a salt not managed by the OAuth provider. An attacker who compromises an OAuth account cannot transact from the user's corresponding IOTA address unless they separately compromise the salt. -- **Privacy:** Zero-knowledge proofs prevent third parties from linking a IOTA address with its corresponding OAuth identifier. -- **Optional verified identity:** A user can opt in to verify the OAuth identifier that was used to derive a particular IOTA address. This serves as the foundation for a verifiable on-chain identity layer. -- **Accessibility:** zkLogin is one of several native IOTA signature schemes thanks to IOTA's [cryptography agility](transaction-auth/signatures.mdx). It integrates with other IOTA primitives, like sponsored transactions and multisig. -- **Rigorousness:** The code for zkLogin has been independently [audited](https://github.com/iota-foundation/security-audits/blob/main/docs/zksecurity_zklogin-circuits.pdf) by two firms specializing in zero knowledge. The public zkLogin ceremony for creating the common reference string attracted contributions from more than 100 participants. - -Are you a builder who wants to integrate zkLogin into your application or wallet? Dive into our [Integration guide](#integration-guide). - -If you want to understand how zkLogin works, including how the zero-knowledge proof is generated, and how IOTA verifies a zkLogin transaction, see [this section](#how-zklogin-works). - -If you are curious about the security model and the privacy considerations of zkLogin, visit this [page](#security-and-privacy). - -More questions? See [the FAQ section](#faq). - -## OpenID providers - -The following table lists the OpenID providers that can support zkLogin or are currently being reviewed to determine whether they can support zkLogin. - -| Provider | Can support? | Devnet | Testnet | Mainnet | -| ------------ | ---------- | -------- | -------- | -------- | -| Facebook | Yes | Yes | Yes | Yes | -| Google | Yes | Yes | Yes | Yes | -| Twitch | Yes | Yes | Yes | Yes | -| Slack | Yes | Yes | No | No | -| Kakao | Yes | Yes | No | No | -| Apple | Yes | Yes | No | No | -| RedBull | Under review | No | No | No | -| Microsoft | Under review | No | No | No | -| AWS (Tenant) | Under review | No | No | No | -| Amazon | Under review | No | No | No | -| WeChat | Under review | No | No | No | -| Auth0 | Under review | No | No | No | -| Okta | Under review | No | No | No | - -## Integration guide - -Here is the high-level flow the wallet or frontend application must implement to support zkLogin-enabled transactions: - -1. The wallet creates an ephemeral KeyPair. -1. The wallet prompts the user to complete an OAuth login flow with the nonce corresponding to the ephemeral public key. -1. After receiving the JWT token, the wallet obtains a zero-knowledge proof. -1. The wallet obtains a unique user salt based on a JWT token. The OAuth subject identifier and salt can be used to compute the zkLogin IOTA address. -1. The wallet signs transactions with the ephemeral private key. -1. The wallet submits the transaction with the ephemeral signature and the zero-knowledge proof. - -Let's dive into the specific implementation details. - -## Install the zkLogin TypeScript SDK - -To use the zkLogin TypeScript SDK in your project, run the following command in your project root: - -```typescript -npm install @iota/zklogin - -# If you want to use the latest experimental version: -npm install @iota/zklogin@experimental -``` - -## Configure a developer account with OpenID provider - -See [latest table](#openid-providers) for all enabled providers. More OpenID-compatible providers will be enabled in the future. - -For example, the following TypeScript code can be used to construct a login URL for testing. - -```typescript -const REDIRECT_URI = ''; - -const params = new URLSearchParams({ - // See below for how to configure client ID and redirect URL - client_id: $CLIENT_ID, - redirect_uri: $REDIRECT_URL, - response_type: 'id_token', - scope: 'openid', - // See below for details about generation of the nonce - nonce: nonce, -}); - -const loginURL = `https://accounts.google.com/o/oauth2/v2/auth?${params}`; -``` - -You must configure the client ID (`$CLIENT_ID`) and redirect URL (`$REDIRECT_URL`) with each provider as follows: - -### Google - -1. Register for a Google Cloud account and access the [dashboard](https://console.cloud.google.com/home/dashboard). -1. Select "APIs & Services" then "Credentials", where you can find the client ID. Set the redirect URL. This should be the wallet or application front end. - -![1](images/zklogin-google1.png 'Sign up for Google developer account') - -_Sign up for Google developer account_ - -![2](images/zklogin-google2.png 'Go to Credentials') - -_Go to Credentials_ - -![3](images/zklogin-google3.png 'Configure Redirect URL') - -_Configure a Redirect URL_ - -### Facebook - -1. Register for a Facebook developer account and access the [dashboard](https://developers.facebook.com/apps/). - -1. Select "Build your app" then "Products" then "Facebook Login" where you can find the client ID. Set the redirect URL. This should be the wallet or application frontend. - -![1](images/zklogin-facebook1.png 'Sign up for Facebook developer account') - -_Sign up for Facebook developer account_ - -![2](images/zklogin-facebook2.png 'Go to Settings') - -_Go to Settings_ - -### Twitch - -1. Register for a Twitch developer account. Access the [dashboard](https://dev.twitch.tv/console). - -1. Go to "Register Your Application" then "Application" where you can find the client ID. Set the redirect URL. This should be the wallet or application frontend. - -![1](images/zklogin-twitch1.png "Sign up for Twitch developer account") - -*Sign up for Twitch developer account* - -![2](images/zklogin-twitch2.png "Go to Console") - -*Go to Console* - -### Kakao - -1. Register for a Kakao developer account. Access the [dashboard](https://developers.kakao.com/console/app) and add an application. - -![1](images/zklogin-kakao1.png "Add applications to Kakao") - -*Add applications to Kakao* - -1. Go to "App Keys" where you can find the corresponding client ID for different platforms. - -- Native app key: Used to call APIs through the Android or iOS SDK. -- JavaScript key: Used to call APIs through the JavaScript SDK. -- REST API key: Used to call APIs through the REST API. - -![2](images/zklogin-kakao2.png "Find Client ID") - -*Find client ID* - -1. Toggle on "Kakao Login Activation" and "OpenID Connect Activation". Set the redirect URL in "Kakao Login" under "Product Settings". This should be the wallet or application frontend. - -![1](images/zklogin-kakao3.png "Set Redirect URL") - -*Set redirect URL* - -### Slack - -1. Register for a Slack developer account. Access the [dashboard](https://api.slack.com/apps) and go to "Create New App" then choose "From scratch". - - ![1](images/zklogin-slack1.png "Create app in Slack") - - *Create app in Slack* - -1. Find the Client ID and Client Secret under "App Credentials". - - ![1](images/zklogin-slack2.png "Find Client ID and Client Secret") - - *Find Client ID and Client Secret* - -1. Set Redirect URL in "OAuth & Permissions" under "Features". This should be the wallet or application frontend. - - ![1](images/zklogin-slack3.png "Set Redirect URL") - - *Set Redirect URL* - -### Apple - -1. Register for an [Apple developer account](https://developer.apple.com/). Go to the **Certificates, Identifiers and Profiles** section. - - ![1](images/zklogin-apple1.png "Click on Certificates, Identifiers and Profiles") - - *This is where you can create Certificates, Identifiers and Profiles* - -1. Create an App ID - - From the sidebar, select **Identifiers** and click the blue plus icon to create a new one. - - Choose **App IDs** as the identifier type and click **Continue**. - - In the next screen, enter a descriptive name for your App ID and a unique Bundle ID in reverse-dns format (for example, `com.example.app`). - - Scroll down to the list of capabilities and enable **Sign In with Apple** by checking the box next to it. - - ![1](images/zklogin-apple2.png "Create an App ID") - - *This is how you can enable Sign In with Apple for your App ID* - -1. Create a Services ID - - A Services ID identifies a specific instance of your app and is used as the OAuth `client_id`. You need a Services ID if you want to use **Sign In with Apple** for your web app. - - ![1](images/zklogin-apple3.png "Create a Services ID") - - *This is where you Create a Services ID* - -1. Create a new identifier and select **Services IDs** as the identifier type. - - - In the next step, enter a name for your app that will be displayed to the users during the sign-in process and a unique identifier that will be used as the OAuth `client_id`. Make sure to enable **Sign In with Apple** by checking the box next to it. - - Click the **Configure** button next to **Sign In with Apple** to set up the domain and redirect URLs for your app. You need to specify the domain name where your app is hosted and the redirect URL that will handle the OAuth response from Apple. - - Select the App ID that you created in the previous step as the Primary App ID. This will associate your Services ID with your App ID. - - Enter the domain name of your app (for example, example-app.com) and the redirect URL that will receive the authorization code from Apple (for example, https://example-app.com/redirect). Note that Apple does not allow localhost or IP addresses as valid domains or redirect URLs. - - Click **Save** and then **Continue** and **Register** until you complete this step. - - You have now created an App ID and a Services ID for your app. The identifier of your Services ID is your OAuth `client_id`. In my example, that is com.example.client. - - ![1](images/zklogin-apple4.png "Set Redirect URL") - - *This is where you Set Redirect URL* - -## Get JWT Token - -1. Generate an ephemeral KeyPair. Follow the same process as you would generating a KeyPair in a traditional wallet. See [IOTA SDK](https://sdk.mystenlabs.com/typescript/cryptography/keypairs) for details. - -1. Set the expiration time for the ephemeral KeyPair. The wallet decides whether the maximum epoch is the current epoch or later. The wallet also determines whether this is adjustable by the user. - -1. Assemble the OAuth URL with configured client ID, redirect URL, ephemeral public key and nonce: This is what the application sends the user to complete the login flow with a computed [nonce](#notations). - -```typescript -import { generateNonce, generateRandomness } from '@iota/zklogin'; - -const FULLNODE_URL = 'https://fullnode.devnet.iota.io'; // replace with the RPC URL you want to use -const iotaClient = new IOTAClient({ url: FULLNODE_URL }); -const { epoch, epochDurationMs, epochStartTimestampMs } = await iotaClient.getLatestIOTASystemState(); - -const maxEpoch = Number(epoch) + 2; // this means the ephemeral key will be active for 2 epochs from now. -const ephemeralKeyPair = new Ed25519Keypair(); -const randomness = generateRandomness(); -const nonce = generateNonce(ephemeralKeyPair.getPublicKey(), maxEpoch, randomness); -``` -The auth flow URL can be constructed with `$CLIENT_ID`, `$REDIRECT_URL` and `$NONCE`. - -For some providers ("Yes" for "Auth Flow Only"), the JWT token can be found immediately in the redirect URL after the auth flow. - -For other providers ("No" for "Auth Flow Only"), the auth flow only returns a code (`$AUTH_CODE`) in redirect URL. To retrieve the JWT token, an additional POST call is required with "Token Exchange URL". - -| Provider | Auth Flow URL | Token Exchange URL | Auth Flow Only | -| ----------- | ----------- | ----------- | ----------- | -| Google | `https://accounts.google.com/o/oauth2/v2/auth?client_id=$CLIENT_ID&response_type=id_token&redirect_uri=$REDIRECT_URL&scope=openid&nonce=$NONCE` | N/A | Yes | -| Facebook | `https://www.facebook.com/v17.0/dialog/oauth?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URL&scope=openid&nonce=$NONCE&response_type=id_token` | N/A | Yes | -| Twitch | `https://id.twitch.tv/oauth2/authorize?client_id=$CLIENT_ID&force_verify=true&lang=en&login_type=login&redirect_uri=$REDIRECT_URL& response_type=id_token&scope=openid&nonce=$NONCE` | N/A | Yes | -| Kakao | `https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URL&nonce=$NONCE` | `https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URL&code=$AUTH_CODE` | No | -| Apple | `https://appleid.apple.com/auth/authorize?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URL&scope=email&response_mode=form_post&response_type=code%20id_token&nonce=$NONCE` | N/A | Yes | -| Slack | `https://slack.com/openid/connect/authorize?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URL&nonce=$NONCE&scope=openid` | `https://slack.com/api/openid.connect.token?code=$AUTH_CODE&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET` | No | - -## Decoding JWT - -Upon successful redirection the ID Provider will attach the JWT token as a URL parameter (Using the Google Flow as an example) - -``` -http://host/auth?id_token=tokenPartA.tokenPartB.tokenPartC&authuser=0&prompt=none -``` - -The `id_token` param is the JWT token in encoded format. You can validate the correctness of the encoded token and investigate its structure by pasting it in the [jwt.io](https://jwt.io) website. - -To decode the JWT you can use a library like: `jwt_decode:` and map the response to the provided type `JwtPayload`: - -```typescript - -const decodedJwt = jwt_decode(encodedJWT) as JwtPayload; - -export interface JwtPayload { - iss?: string; - sub?: string; //Subject ID - aud?: string[] | string; - exp?: number; - nbf?: number; - iat?: number; - jti?: string; -} -``` - -## User Salt Management - -User salt is used when computing the zkLogin IOTA address (see [definition](#address-definition)). The salt is required to be a 16-bytes value or a integer smaller than `2n**128n`. There are several options for the application to maintain the user salt: -1. Client Side: - - Option 1: Request user input for the salt during wallet access, transferring the responsibility to the user, who must then remember it. - - Option 2: Browser or Mobile Storage: Ensure proper workflows to prevent users from losing wallet access during device or browser changes. One approach is to email the salt during new wallet setup. -2. Backend service that exposes an endpoint that returns a unique salt for each user consistently. - - Option 3: Store a mapping from user identifier (e.g. `sub`) to user salt in a conventional database (e.g. `user` or `password` table). The salt is unique per user. - - Option 4: Implement a service that keeps a master seed value, and derive a user salt with key derivation by validating and parsing the JWT token. For example, use `HKDF(ikm = seed, salt = iss || aud, info = sub)` defined [here](https://github.com/MystenLabs/fastcrypto/blob/e6161f9279510e89bd9e9089a09edc018b30fbfe/fastcrypto/src/hmac.rs#L121). Note that this option does not allow any rotation on master seed or change in client ID (i.e. aud), otherwise a different user address will be derived and will result in loss of funds. - -Here's an example request and response for the Mysten Labs-maintained salt server (using option 4). If you wish to use the Mysten ran salt server, please contact us for whitelisting your registered client ID. Only valid JWT token authenticated with whitelisted client IDs are accepted. - -```bash -curl -X POST https://salt.api.mystenlabs.com/get_salt -H 'Content-Type: application/json' -d '{"token": "$JWT_TOKEN"}' - -Response: {"salt":"129390038577185583942388216820280642146"} -``` - -User salt is used to disconnect the OAuth identifier (sub) from the on-chain IOTA address to avoid linking Web2 credentials with Web3 credentials. While losing or misusing the salt could enable this link, it wouldn't compromise fund control or zkLogin asset authority. See more discussion [here](#security-and-privacy). - -## Get the User's IOTA Address - -Once the OAuth flow completes, the JWT token can be found in the redirect URL. Along with the user salt, the zkLogin address can be derived as follows: - -```typescript -import { jwtToAddress } from '@iota/zklogin'; - -const zkLoginUserAddress = jwtToAddress(jwt, userSalt); -``` - -## Get the Zero-Knowledge Proof - -The next step is to fetch the ZK proof. This is an attestation (proof) over the ephemeral key pair that proves the ephemeral key pair is valid. - -First, generate the extended ephemeral public key to use as an input to the ZKP. - -```typescript -import { getExtendedEphemeralPublicKey } from '@iota/zklogin'; - -const extendedEphemeralPublicKey = getExtendedEphemeralPublicKey(ephemeralKeyPair.getPublicKey()); -``` - -You need to fetch a new ZK proof if the previous ephemeral key pair is expired or is otherwise inaccessible. - -Because generating a ZK proof can be resource-intensive and potentially slow on the client side, it's advised that wallets utilize a backend service endpoint dedicated to ZK proof generation. - -There are two options: -1. Call the Mysten Labs-maintained proving service -1. Run the proving service in your backend using the provided Docker images. - -### Call the Mysten Labs-maintained proving service - -If you wish to use the Mysten ran ZK Proving Service for Mainnet, please contact us for whitelisting your registered client ID. Only valid JWT token authenticated with whitelisted client IDs are accepted. - -To use `prover-dev` endpoint, you do not need to whitelist client IDs. Note that the proof generated with the `prover-dev` endpoint can only be submitted for Devnet zkLogin transactions, submitting it to Testnet or Mainnet fails. - -| Network | Prover URL | -| ------- | ---------- | -| Mainnet, Testnet | https://prover.mystenlabs.com/v1 | -| Devnet | https://prover-dev.mystenlabs.com/v1 | - -You can use BigInt or Base64 encoding for `extendedEphemeralPublicKey`, `jwtRandomness`, and `salt`. The following examples show two sample requests with the first using BigInt encoding and the second using Base64. - -```bash -curl -X POST $PROVER_URL -H 'Content-Type: application/json' \ --d '{"jwt":"$JWT_TOKEN", \ -"extendedEphemeralPublicKey":"84029355920633174015103288781128426107680789454168570548782290541079926444544", \ -"maxEpoch":"10", \ -"jwtRandomness":"100681567828351849884072155819400689117", \ -"salt":"248191903847969014646285995941615069143", \ -"keyClaimName":"sub" \ -}' - -curl -X POST $PROVER_URL -H 'Content-Type: application/json' \ --d '{"jwt":"$JWT_TOKEN", \ -"extendedEphemeralPublicKey":"ucbuFjDvPnERRKZI2wa7sihPcnTPvuU//O5QPMGkkgA=", \ -"maxEpoch":"10", \ -"jwtRandomness":"S76Qi8c/SZlmmotnFMr13Q==", \ -"salt":"urgFnwIxJ++Ooswtf0Nn1w==", \ -"keyClaimName":"sub" \ -}' -``` - -Response: - -```json -{ - "proofPoints":{ - "a":["17267520948013237176538401967633949796808964318007586959472021003187557716854", - "14650660244262428784196747165683760208919070184766586754097510948934669736103", - "1"], - "b":[["21139310988334827550539224708307701217878230950292201561482099688321320348443", - "10547097602625638823059992458926868829066244356588080322181801706465994418281"], - ["12744153306027049365027606189549081708414309055722206371798414155740784907883", - "17883388059920040098415197241200663975335711492591606641576557652282627716838"], - ["1","0"]], - - "c":["14769767061575837119226231519343805418804298487906870764117230269550212315249", - "19108054814174425469923382354535700312637807408963428646825944966509611405530","1"] - }, - "issBase64Details":{"value":"wiaXNzIjoiaHR0cHM6Ly9pZC50d2l0Y2gudHYvb2F1dGgyIiw", "indexMod4": 2 }, - "headerBase64":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ" -} -``` - -### How to handle CORS error - -To avoid possible CORS errors in Frontend apps, it is suggested to delegate this call to a backend service. - -The response can be mapped to the inputs parameter type of `getZkLoginSignature` of zkLogin SDK. - -```typescript -const proofResponse = await post('/your-internal-api/zkp/get', zkpRequestPayload); - -export type PartialZkLoginSignature = Omit< - Parameters['0']['inputs'], - 'addressSeed' ->; -const partialZkLoginSignature = proofResponse as PartialZkLoginSignature; -``` - -### Run the proving service in your backend - -1. Download the [Groth16 proving key zkey file](https://docs.circom.io/getting-started/proving-circuits/) that will be later used as an argument to run the prover. There are zkeys available for Mainnet and Testnet, as well as a test zkey for Devnet. See [the Ceremony section](#ceremony) for more details on how the main proving key is generated. Please install [git lfs](https://git-lfs.com/) which is needed before downloading the zkey. - - - Main zkey (for Mainnet and Testnet) - ```bash - wget -O - https://raw.githubusercontent.com/iota-foundation/zklogin-ceremony-contributions/main/download-main-zkey.sh | bash - ``` - - Test zkey (for Devnet) - ```bash - wget -O - https://raw.githubusercontent.com/iota-foundation/zklogin-ceremony-contributions/main/download-test-zkey.sh | bash - ``` - - - To verify the download contains the correct zkey file, you can run the following command to check the Blake2b hash: `b2sum ${file_name}.zkey`. - - | Network | zkey file name | Hash | - | ------------ | ---------- | -------- | - | Mainnet, Testnet | `zkLogin-main.zkey` | `060beb961802568ac9ac7f14de0fbcd55e373e8f5ec7cc32189e26fb65700aa4e36f5604f868022c765e634d14ea1cd58bd4d79cef8f3cf9693510696bcbcbce` | - | Devnet | `zkLogin-test.zkey` | `686e2f5fd969897b1c034d7654799ee2c3952489814e4eaaf3d7e1bb539841047ae8ee5fdcdaca5f4ddd76abb5a8e8eb77b44b693a2ba9d4be57e94292b26ce2` | - -1. For the next step, you need two Docker images from the [mysten/zklogin repository](https://hub.docker.com/repository/docker/mysten/zklogin/general) (tagged as `prover` and `prover-fe`). To simplify, a docker compose file is available that automates this process. Run `docker compose` with the downloaded `zkey` from the same directory as the YAML file. - -```yaml -services: - backend: - image: mysten/zklogin:prover-stable - volumes: - # The ZKEY environment variable must be set to the path of the zkey file. - - ${ZKEY}:/app/binaries/zkLogin.zkey - environment: - - ZKEY=/app/binaries/zkLogin.zkey - - WITNESS_BINARIES=/app/binaries - - frontend: - image: mysten/zklogin:prover-fe-stable - command: "8080" - ports: - # The PROVER_PORT environment variable must be set to the desired port. - - "${PROVER_PORT}:8080" - environment: - - PROVER_URI=http://backend:8080/input - - NODE_ENV=production - - DEBUG=zkLogin:info,jwks - # The default timeout is 15 seconds. Uncomment the following line to change it. - # - PROVER_TIMEOUT=30 -``` - -``` -ZKEY= PROVER_PORT= docker compose up -``` - -1. To call the service, the following two endpoints are supported: - - `/ping`: To test if the service is up. Running `curl http://localhost:PROVER_PORT/ping` should return `pong`. - - `/v1`: The request and response are the same as the Mysten Labs maintained service. - -A few important things to note: - -- The backend service (mysten/zklogin:prover-stable) is compute-heavy. Use at least the minimum recommended 16 cores and 16GB RAM. Using weaker instances can lead to timeout errors with the message "Call to rapidsnark service took longer than 15s". You can adjust the environment variable `PROVER_TIMEOUT` to set a different timeout value, for example, `PROVER_TIMEOUT=30` for a timeout of 30 seconds. - -- If you want to compile the prover from scratch (for performance reasons), please see our fork of [rapidsnark](https://github.com/MystenLabs/rapidsnark#compile-prover-in-server-mode). You'd need to compile and launch the prover in server mode. - -- Setting `DEBUG=*` turns on all logs in the prover-fe service some of which may contain PII. Consider using DEBUG=zkLogin:info,jwks in production environments. - -## Assemble the zkLogin signature and submit the transaction - -First, sign the transaction bytes with the ephemeral private key using the key pair generated previously. This is the same as [traditional KeyPair signing](https://sdk.mystenlabs.com/typescript/cryptography/keypairs). Make sure that the transaction `sender ` is also defined. - -```typescript - const ephemeralKeyPair = new Ed25519Keypair(); - -const client = new IOTAClient({ url: "" }); - -const txb = new TransactionBlock(); - -txb.setSender(zkLoginUserAddress); - -const { bytes, signature: userSignature } = await txb.sign({ - client, - signer: ephemeralKeyPair, // This must be the same ephemeral key pair used in the ZKP request -}); -``` - -Next, generate an address seed by combining `userSalt`, `sub` (subject ID), and `aud` (audience). - -Set the address seed and the partial zkLogin signature to be the `inputs` parameter. - -You can now serialize the zkLogin signature by combining the ZK proof (`inputs`), -the `maxEpoch`, and the ephemeral signature (`userSignature`). - -```typescript -import { genAddressSeed, getZkLoginSignature } from "@iota/zklogin"; - -const addressSeed : string = genAddressSeed(BigInt(userSalt!), "sub", decodedJwt.sub, decodedJwt.aud).toString(); - -const zkLoginSignature : SerializedSignature = getZkLoginSignature({ - inputs: { - ...partialZkLoginSignature, - addressSeed - }, - maxEpoch, - userSignature, -}); -``` - -Finally, execute the transaction. - -```typescript -client.executeTransactionBlock({ - transactionBlock: bytes, - signature: zkLoginSignature, -}); -``` - -## Caching the ephemeral private key and ZK proof - -As previously documented, each ZK proof is tied to an ephemeral key pair. So you can reuse the proof to sign any number of transactions until the ephemeral key pair expires (until the current epoch crosses `maxEpoch`). - -You might want to cache the ephemeral key pair along with the ZKP for future uses. - -However, the ephemeral key pair needs to be treated as a secret akin to a key pair in a traditional wallet. This is because if both the ephemeral private key and ZK proof are revealed to an attacker, then they can typically sign any transaction on behalf of the user (using the same process described previously). - -Consequently, you should not store them persistently in an unsecure storage location, on any platform. For example, on browsers, use session storage instead of local storage to store the ephemeral key pair and the ZK proof. This is because session storage automatically clears its data when the browser session ends, while data in local storage persists indefinitely. - -## How zkLogin Works {#how-zklogin-works} - -In rough sketches, the zkLogin protocol relies on the following: - -1. A JWT token is a signed payload from OAuth providers, including a user-defined field named nonce. zkLogin leverages [the OpenID Connect OAuth flow](https://openid.net/developers/how-connect-works/) by defining the nonce as a public key and an expiry epoch. -1. The wallet stores an ephemeral KeyPair, where the ephemeral public key is defined in the nonce. The ephemeral private key signs transactions for a brief session, eliminating the need for user memorization. - The Groth16 zero-knowledge proof is generated based on the JWT token, concealing privacy-sensitive fields. -1. A transaction is submitted on-chain with the ephemeral signature and the ZK proof. IOTA authorities execute the transaction after verifying the ephemeral signature and the proof. -1. Instead of deriving the IOTA address based on a public key, the zkLogin address is derived from `sub` (that uniquely identifies the user per provider), `iss` (identifies the provider), `aud` (identifies the application) and `user_salt` (a value that unlinks the OAuth identifier with the on-chain address). - -## The complete zkLogin flow - -![1](images/zklogin-flow.png 'zkLogin Complete Flow') - -(Step 0) We use Groth16 for our protocol's zkSNARK instantiation, requiring a singular generation of a structured common reference string (CRS) linked to the circuit. A ceremony is conducted to generate the CRS, which is used to produce the proving key in the ZK Proving Service, the verifying key in IOTA Authority. See [the Ceremony section](#ceremony) for more details. - -(Step 1-3) The user begins by logging into an OpenID Provider (OP) to obtain a JWT token containing a defined nonce. In particular, the user generates an _ephemeral_ KeyPair `(eph_sk, eph_pk)` and embed `eph_pk`, along with expiry times (`max_epoch`) and randomness (`jwt_randomness`), into the nonce (see [definition](#notations)). After the user completes the OAuth login flow, an JWT token can be found in the redirect URL in the application. - -(Step 4-5) The application frontend then sends the JWT token to a salt service. The salt service returns the unique `user_salt` based on `iss, aud, sub` upon validation of the JWT token. - -(Step 6-7) The user sends the ZK proving service the JWT token, user salt, ephemeral public key, jwt randomness, key claim name (i.e. `sub`). The proving service generates a Zero-Knowledge Proof that takes these as private inputs and does the following: (a) Checks the nonce is derived correctly [as defined](#notations) (b) Checks that key claim value matches the corresponding field in the JWT, (c) Verifies the RSA signature from OP on the JWT, and (d) the address is consistent with the key claim value and user salt. - -(Step 8): The application computes the user address based on iss, aud, sub, aud. This step can be done independently as long as the application has a valid JWT token. - -(Step 9-10) A transaction is signed using the ephemeral private key to generate an ephemeral signature. Finally, the user submits the transaction along with the ephemeral signature, ZK proof and other inputs to IOTA. - -(After Step 10) After submitted on chain, IOTA Authorities verify the ZK proof against the provider JWKs from storage (agreed upon in consensus) and also the ephemeral signature. - -## Entities - -1. Application frontend: This describes the wallet or frontend application that supports zkLogin. This frontend is responsible for storing the ephemeral private key, directing users to complete the OAuth login flow, creating and signing a zkLogin transaction. - -2. Salt Backup Service: This is a backend service responsible for returning a salt per unique user. See [integration guide](#integration-guide) for other strategies to maintain salt. - -3. ZK Proving Service: This is a backend service responsible for generating ZK proofs based on JWT token, JWT randomness, user salt and max epoch. This proof is submitted on-chain along with the ephemeral signature for a zkLogin transaction. - -## Address definition - -The address is computed on the following inputs: - -1. The address flag: `zk_login_flag = 0x05` for zkLogin address. This serves as a domain separator as a signature scheme defined in [crypto agility](transaction-auth.mdx). - -1. `kc_name_F = hashBytesToField(kc_name, maxKCNameLen)`: Name of the key claim, e.g., `sub`. The sequence of bytes is mapped to a field element in BN254 using `hashBytesToField` (defined below). - -1. `kc_value_F = hashBytesToField(kc_value, maxKCValueLen)`: The value of the key claim mapped using `hashBytesToField`. - -1. `aud_F = hashBytesToField(aud, maxAudValueLen)`: The Relying Party (RP) identifier. See [definition](#terminology-and-notations). - -1. `iss`: The OpenID Provider (OP) identifier. See [definition](#terminology-and-notations). - -1. `user_salt`: A value introduced to unlink the OAuth identifier with the on-chain address. - -Finally, we derive `zk_login_address = Blake2b_256(zk_login_flag, iss_L, iss, addr_seed)` where `addr_seed = Poseidon_BN254(kc_name_F, kc_value_F, aud_F, Poseidon_BN254(user_salt)`. - -## Terminology and notations - -See below for all relevant OpenID terminology defined in [spec](https://openid.net/specs/openid-connect-core-1_0.html#Terminology) and how they are used in zkLogin, along with definitions for protocol details. - -### OpenID provider (OP) - -OAuth 2.0 authorization server that is capable of authenticating the end-user and providing claims to a relying party about the authentication event and the end-user. This is identified in the `iss` field in JWT token payload. Currently zkLogin supported OPs include Google, Facebook, and Twitch, and more compatible providers will be enabled in the future. - -### Relying party (RP) or client - -OAuth 2.0 client application requiring end-user authentication and claims from an OpenID provider. This is assigned by OP when the developer creates the application. This is identified in the `aud` field in JWT token payload. This refers to any zkLogin enabled wallet or application. - -### Subject identifier (sub) - -Locally unique and never reassigned identifier within the issuer for the end-user, which is intended to be consumed by the RP. IOTA uses this as the key claim to derive user address. - -### JWK (JSON Web Key) - -A JSON data structure that represents a set of public keys for an OP. A public endpoint (e.g. https://www.googleapis.com/oauth2/v3/certs) can be queried to retrieve the valid public keys corresponding to `kid` for the provider. Upon matching with the `kid` in the header of a JWT token, the JWT token can be verified against the payload and its corresponding JWK. In IOTA, all authorities call the JWK endpoints independently, and update the latest view of JWKs for all supported providers during protocol upgrades. The correctness of JWKs is guaranteed by the quorum (2f+1) of validator stake. - -### JWT Token (JSON Web Token) - -JWT token can be found in the redirect URL to RP after the user completes the OAuth login flow (i.e. `https://redirect.com?id_token=$JWT_TOKEN`). The JWT token contains a `header`, `payload` and a `signature`. The signature is an RSA signature that can be verified against `jwt_message = header + . + payload` and its JWK identified by `kid`. The `payload` contains a JSON of many claims that is a name, value pair. See below for the specific claims that are relevant to the zkLogin protocol. - -**Header** - -| Name | Example Value | Usage | -| ---- | ---------------------------------------- | --------------------------------------------------------- | -| alg | RS256 | zkLogin only supports `RS256` (RSA + SHA-256). | -| kid | c3afe7a9bda46bae6ef97e46c95cda48912e5979 | Identifies the JWK that should be used to verify the JWT. | -| typ | JWT | zkLogin only supports `JWT`. | - -**Payload** - -| Name | Example Value | Usage | -| ----- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| iss | https://accounts.google.com | A unique identifier assigned to the OAuth provider. | -| aud | 575519200000-msop9ep45u2uo98hapqmngv8d8000000.apps.googleusercontent.com | A unique identifier assigned to the relying party by the OAuth provider. | -| nonce | hTPpgF7XAKbW37rEUS6pEVZqmoI | A value set by the relying party. The zkLogin enabled wallet is required to set this to the hash of ephemeral public key, an expiry time and a randomness. | -| sub | 110463452167303000000 | A unique identifier assigned to the user. | - -For a zkLogin transaction, we do not use the `iat` and `exp` claims (i.e., timestamp). This is because we provide a different way for users to specify expiry times, namely via `nonce`. - -### Key Claim - -We call the claim used to derive a users' address as the "key claim" e.g., sub or email. Naturally, we only want to use claims that are fixed once and never changed again. For zkLogin, we currently support sub as the key claim because OpenID spec mandates that providers do not change this identifier. In the future, this can be extended to use email, username, etc. - -### Notations - -1. `(eph_sk, eph_pk)`: Ephemeral key pair refers to the private and public key pair used to produce ephemeral signatures. The signing mechanism is the same as traditional transaction signing, but it is ephemeral because it is only stored for a short session and can be refreshed upon new OAuth sessions. The ephemeral public key is used to compute nonce. -2. `nonce`: An application-defined field embedded in the JWT token payload, computed as the hash of the ephemeral public key, JWT randomness, and the maximum epoch (IOTA's defined expiry epoch). Specifically, a zkLogin compatible nonce is required to passed in as `nonce = ToBase64URL(Poseidon_BN254([ext_eph_pk_bigint / 2^128, ext_eph_pk_bigint % 2^128, max_epoch, jwt_randomness]).to_bytes()[len - 20..])` where `ext_eph_pk_bigint` is the BigInt representation of `ext_eph_pk`. -3. `ext_eph_pk`: The byte representation of an ephemeral public key (`flag || eph_pk`). Size varies depending on the choice of the signature scheme (denoted by the flag, defined in [Signatures](transaction-auth.mdx)). -4. `user_salt`: A value introduced to unlink the OAuth identifier with the on-chain address. -5. `max_epoch`: The epoch at which the JWT token expires. This is u64 used in IOTA. -6. `kc_name`: The key claim name, e.g. `sub`. -7. `kc_value`: The key claim value, e.g. `110463452167303000000`. -8. `hashBytesToField(str, maxLen)`: Hashes the ASCII string to a field element using the Poseidon hash. - -## Ceremony - -To preserve privacy of the OAuth artifacts, a zero-knowledge proof of possession of the artifacts is provided. zkLogin employs the Groth16 zkSNARK to instantiate the zero-knowledge proofs, as it is the most efficient general-purpose zkSNARK in terms of proof size and verification efficiency. - -However, Groth16 needs a computation-specific Common Reference String (CRS) to be setup by a trusted party. With zkLogin expected to ensure the safe-keeping of high value transactions and the integrity of critical smart contracts, we cannot base the security of the system on the honesty of a single entity. Hence, to generate the CRS for the zkLogin circuit, it is vital to run a protocol which bases its security on the assumed honesty of a small fraction of a large number of parties. - -### What is the ceremony? - -The IOTA zkLogin ceremony is essentially a cryptographic multi-party computation (MPC) performed by a diverse group of participants to generate this CRS. We follow the MPC protocol [MMORPG](https://eprint.iacr.org/2017/1050.pdf) described by Bowe, Gabizon and Miers. The protocol roughly proceeds in 2 phases. The first phase results in a series of powers of a secret quantity tau in the exponent of an elliptic curve element. Since this phase is circuit-agnostic, we adopted the result of the existing community contributed [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau/tree/master). Our ceremony was the second phase, which is specific to the zkLogin circuit. - -The MMORPG protocol is a sequential protocol, which allows an indefinite number of parties to participate in sequence, without the need of any prior synchronization or ordering. Each party needs to download the output of the previous party, generate entropy of its own and then layer it on top of the received result, producing its own contribution, which is then relayed to the next party. The protocol guarantees security, if at least one of the participants follows the protocol faithfully, generates strong entropy and discards it reliably. - -### How was the ceremony performed? - -We sent invitations to 100+ people with diverse backgrounds and affiliations: IOTA validators, cryptographers, web3 experts, world-renowned academicians, and business leaders. We planned the ceremony to take place on the dates September 12-18, 2023, but allowed participants to join when they wanted with no fixed slots. - -Since the MPC is sequential, each contributor needed to wait till the previous contributor finished in order to receive the previous contribution, follow the MPC steps and produce their own contribution. Due to this structure, we provisioned a queue where participants waited, while those who joined before them finished. To authenticate participants, we sent a unique activation code to each of them. The activation code was the secret key of a signing key pair, which had a dual purpose: it allowed the coordination server to associate the participant's email with the contribution, and to verify the contribution with the corresponding public key. - -Participants had two options to contribute: through a browser or a docker. The browser option was more user-friendly for contributors to participate as everything happens in the browser. The Docker option required Docker setup but is more transparent—the Dockerfile and contributor source code are open-sourced and the whole process is verifiable. Moreover, the browser option utilizes [snarkjs](https://github.com/iden3/snarkjs) while the Docker option utilizes [Kobi's implementation](https://github.com/iseriohn/phase2-bn254). This provided software variety and contributors could choose to contribute by whichever method they trust. In addition, participants could generate entropy via entering random text or making random cursor movements. - -The zkLogin circuit and the ceremony client [code](https://github.com/iota-foundation/zk-ceremony-client) were made open source and the links were made available to the participants to review before the ceremony. In addition, we also posted these developer docs and an [audit report](https://github.com/iota-foundation/security-audits/blob/main/docs/zksecurity_zklogin-circuits.pdf) on the circuit from zkSecurity. We adopted [challenge #0081](https://pse-trusted-setup-ppot.s3.eu-central-1.amazonaws.com/challenge_0081) (resulting from 80 community contributions) from [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau/tree/master/0080_carter_response) in phase 1, which is circuit agnostic. We applied the output of the [Drand](http://drand.love) random beacon at epoch #3298000 to remove bias. For phase 2, our ceremony had 111 contributions, 82 from browser and 29 from docker. Finally, we applied the output of the Drand random beacon at epoch #3320606 to remove bias from contributions. All intermediate files can be reproduced following instructions [here](https://github.com/iota-foundation/zklogin-ceremony-contributions/blob/main/phase1/README.md) for phase 1 and [here](https://github.com/iota-foundation/zklogin-ceremony-contributions/blob/main/phase2/README.md) for phase 2. - -## Finalization - -The final CRS along with the transcript of contribution of every participant is available in a public repository. Contributors received both the hash of the previous contribution they were working on and the resulting hash after their contribution, displayed on-screen and sent via email. They can compare these hashes with the transcripts publicly available on the ceremony site. In addition, anyone is able to check that the hashes are computed correctly and each contribution is properly incorporated in the finalized parameters. - -Eventually, the final CRS was used to generate the proving key and verifying key. The proving key is used to generate zero knowledge proof for zkLogin, stored with the ZK proving service. The verifying key was [deployed](https://github.com/iotaledger/iota/pull/13822) as part of the validator software (protocol version 25 in [release 1.10.1](https://github.com/iotaledger/iota/releases/tag/mainnet-v1.10.1)) that is used to verify the zkLogin transaction on IOTA. - -## Security and Privacy - -We'll walk through all zkLogin artifacts, their security assumptions, and the consequences of loss or exposure. - -## JWT Token - -The JWT token's validity is scoped on the client ID (i.e. aud) to prevent phishing attacks. The same origin policy for the proof prevents the JWT token obtained for a malicious application from being used for zkLogin. The JWT token for the client ID is sent directly to the application frontend through the redirect URL. A leaked JWT token for the specific client ID can compromise user privacy, as these tokens frequently hold sensitive information like usernames and emails. Furthermore, if a backend salt server is responsible for user salt management, the JWT token could potentially be exploited to retrieve the user's salt, which introduces additional risks. - -However, a JWT leak does not mean loss of funds as long as the corresponding ephemeral private key is safe. - -## User Salt - -The user salt is required to get access to the zkLogin wallet. This value is essential for both ZK proof generation and zkLogin address derivation. - -The leak of user salt does not mean loss of funds, but it enables the attacker to associate the user's subject identifier (i.e. `sub`) with the IOTA address. This can be problematic depending on whether pairwise or public subject identifiers are in use. In particular, there is no problem if pairwise IDs are used (e.g., Facebook) as the subject identifier is unique per RP. However, with public reusable IDs (e.g., Google and Twitch), the globally unique sub value can be used to identify users. - -## Ephemeral Private Key - -The ephemeral private key's lifespan is tied to the maximum epoch specified in nonce for creating a valid ZK proof. Should it be misplaced, a new ephemeral private key can be generated for transaction signing, accompanied by a freshly generated ZK proof using a new nonce. However, if the ephemeral private key is compromised, acquiring the user salt and the valid ZK proof would be necessary to move funds. - -## Proof - -Obtaining the proof itself cannot create a valid zkLogin transaction because an ephemeral signature over the transaction is also needed. - -## Privacy - -By default, there is no linking between the OAuth subject identifier (i.e. `sub`) and a IOTA address. This is the purpose of the user salt. -The JWT token is not published on-chain by default. The revealed values include `iss`, `aud` and `kid` so that the public input hash can be computed, any sensitive fields such as `sub` are used as private inputs when generating the proof. - -The ZK proving service and the salt service (if maintained) can link the user identity since the user salt and JWT token are known, but the two services are stateless by design. - -In the future, the user can opt in to verify their OAuth identity associated with an IOTA address on-chain. - -## FAQ - -### What providers is zkLogin compatible with? - -zkLogin can support providers that work with OpenID Connect built on top of the OAuth 2.0 framework. This is a subset of OAuth 2.0 compatible providers. See [latest table](#openid-providers) for all enabled providers. Other compatible providers will be enabled via protocol upgrades in the future. - -### How is a zkLogin Wallet different from a traditional private key wallet? - -Traditional private key wallets demand users to consistently recall mnemonics and passphrases, necessitating secure storage to prevent fund loss from private key compromise. - -On the other hand, a zkLogin wallet only requires an ephemeral private key storage with session expiry and the OAuth login flow with expiry. Forgetting an ephemeral key does not result in loss of funds, because a user can always sign in again to generate a new ephemeral key and a new ZK proof. - -### How is zkLogin different from MPC or Multisig wallets? - -Multi-Party Computation (MPC) and Multisig wallets rely on multiple keys or distributing multiple key shares and then defining a threshold value for accepting a signature. - -zkLogin does not split any individual private keys, but ephemeral private keys are registered using a fresh nonce when the user authenticates with the OAuth provider. The primary advantage of zkLogin is that the user does not need to manage any persistent private key anywhere, not even with any private keys management techniques like MPC or Multisig. - -You can think of zkLogin as a 2FA scheme for an address, where the first part is user's OAuth account and the second is the user's salt. - -Furthermore, because IOTA native supports Multisig wallets, one can always include one or more zkLogin signers inside a Multisig wallet for additional security, such as using the zkLogin part as 2FA in k-of-N settings. - -### If my OAuth account is compromised, what happens to my zkLogin address? - -Because zkLogin is a 2FA system, an attacker that has compromised your OAuth account cannot access your zkLogin address unless they have separately compromised your salt. - -### If I lose access to my OAuth account, do I lose access to my zkLogin address? - -Yes. You must be able to log into your OAuth account and produce a current JWT in order to use zkLogin. - -### Does losing my OAuth credential mean the loss of funds in the zkLogin wallet? - -A forgotten OAuth credential can typically be recovered by resetting the password in that provider. -In the unfortunate event where user's OAuth credentials get compromised, an adversary will still require to obtain `user_salt`, but also learn which wallet is used in order to take over that account. Note that modern `user_salt` providers may have additional 2FA security measures in place to prevent provision of user's salt even to entities that present a valid, non-expired JWT. - -It's also important to highlight that due to the fact that zkLogin addresses do not expose any information about the user's identity or wallet used, targeted attacks by just monitoring the blockchain are more difficult. -Finally, on the unfortunate event where one loses access to their OAuth account permanently, access to that wallet is lost. But if recovery from a lost OAuth account is desired, a good suggestion for wallet providers is to support the native IOTA Multisig functionality and add a backup method. Note that it's even possible to have a Multisig wallet that all signers are using zkLogin, i.e. an 1-of-2 Multisig zkLogin wallet where the first part is Google and the second Facebook OAuth, respectively. - -### Can I convert or merge a traditional private key wallet into a zkLogin one, or vice versa? - -No. The zkLogin wallet address is derived differently compared to a private key address. - -### Will my zkLogin address ever change? - -zkLogin address is derived from `sub`, `iss`, `aud` and `user_salt`. - -The address will not change if the user logs in to the same wallet with the same OAuth provider, since `sub`, `iss`, `aud` and `user_salt` (see definitions) will remain unchanged in the JWT token, even though the JWT token itself may look different every time the user logs in. - -However, if the user logs in with different OAuth providers, your address will change because the `iss` and `aud` are defined distinctly per provider. - -In addition, each wallet or application maintains its own `user_salt`, so logging with the same provider for different wallets may also result in different addresses. - -See more on address [definition](#address-definition). - -### Can I have multiple addresses with the same OAuth provider? - -Yes, this is possible by using a different wallet provider or different `user_salt` for each account. This is useful for separating funds between different accounts. - -### Is a zkLogin Wallet custodial? - -A zkLogin wallet is a non-custodial or unhosted wallet. - -A custodial or hosted wallet is where a third party (the custodian) controls the private keys on behalf of a wallet user. No such third-party exists for zkLogin wallets. - -Instead, a zkLogin wallet can be viewed as a 2-out-of-2 Multisig where the two credentials are the user's OAuth credentials (maintained by the user) and the salt. In other words, neither the OAuth provider, the wallet vendor, the ZK proving service or the salt service provider is a custodian. - -### Generating a ZK proof is expensive, is a new proof required to be generated for every transaction? - -No. Proof generation is only required when ephemeral KeyPair expires. Since the nonce is defined by the ephemeral public key (`eph_pk`) and expiry (`max_epoch`), the ZK proof is valid until what the expiry is committed to nonce in the JWT token. The ZK proof can be cached and the same ephemeral key can be used to sign transactions till it expires. - -### Does zkLogin work on mobile? - -zkLogin is a IOTA native primitive and not a feature of a particular application or wallet. It can be used by any IOTA developer, including on mobile. - -### Is account recovery possible if the user loses the OAuth credentials? - -Yes, the user can follow the OAuth providers' recovery flow. The ephemeral private key can be refreshed and after completing a new OAuth login flow, the user can obtain new ZK proof and sign transactions with the refreshed key. - -### What are some assumptions for the zkLogin circuit? - -Due to the way Groth16 works, we impose length restrictions on several fields in the JWT. Some of the fields that are length-restricted include aud, iss, the JWT's header and payload. For example, zkLogin can currently only work with aud values of up to length 120 (this value is not yet final). In general, we tried to make sure that the restrictions are as generous as possible. We have decided on these values after looking at as many JWTs that we could get our hands on. - -### How is zkLogin different from other solutions that support social login? - -While providing social login with Web2 credentials for Web3 wallet is not a new concept, the existing solutions have one or more of the trust assumptions: - -1. Trust a different network or parties to verify Web2 credentials other than the Blockchain itself, usually involving a JWK oracle posted on-chain by a trusted party. -1. Trust some parties to manage a persistent private key, whether it uses MPC, threshold cryptography or secure enclaves. -1. Relying on smart contracts (account abstraction) to verify the JWT token on-chain with revealing privacy fields, or to verify ZK proofs on-chain which can be expensive. - -Some of the existing deployed solutions rely on some of these assumptions. Web3Auth and DAuth social login requires deployment of custom OAuth verifiers to Web3auth Auth Network nodes to verify the JWT token. Magic Wallet and Privy also require custom OAuth identity issuer and verifiers to adopt the DID standard. All of the solutions still require persistent private keys management, either with trusted parties like AWS via delegation, Shamir Secret Sharing or MPC. - -The key differentiators that zkLogin brings to IOTA are: - -1. Native Support in IOTA: Unlike other solutions that are blockchain agnostic, zkLogin is deployed just for IOTA. This means a zkLogin transaction can be combined with Multisig and sponsored transactions seamlessly. - -2. Self-Custodial without additional trust: We leverage the nonce field in JWT token to commit to ephemeral public key, so no persistent private key management is required with any trusted parties. In addition, the JWK itself is an oracle agreed upon by the quorum of stakes by the validators with trusting any source of authority. - -3. Full privacy: Nothing is required to submit on-chain except the ZK proof and the ephemeral signature. - -4. Compatible with Existing Identity Providers: zkLogin is compatible with providers that adopt OpenID Connect. No need to trust any intermediate identity issuers or verifiers other than the OAuth providers themselves. - -## How to verify a zkLogin signature offchain? - -The following options support a zkLogin signature over either transaction data or personal message. - -1. Use keytool: See usage in keytool. - -```bash -$IOTA_BINARY keytool zk-login-sig-verify -h -``` - -2. Use a self hosted server endpoint: See usage in [zklogin-verifier](https://github.com/MystenLabs/zklogin-verifier). diff --git a/docs/content/developer/cryptography/explanations/zklogin/images/overview.png b/docs/content/developer/cryptography/explanations/zklogin/images/overview.png deleted file mode 100644 index 4a89d41e8dfcc69603710585946b44af60dbbc3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235687 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

0~)T8-rw-3E35Tpv$_o(JfF_-5+aCx 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 JbN9Gi_!ZaK)c^nh diff --git a/docs/content/developer/cryptography/explanations/zklogin/zklogin-example.mdx b/docs/content/developer/cryptography/explanations/zklogin/zklogin-example.mdx deleted file mode 100644 index 0c35e21b82b..00000000000 --- a/docs/content/developer/cryptography/explanations/zklogin/zklogin-example.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: zkLogin Example -description: An example that breaks down the logic behind each step of zkLogin. ---- - -The IOTA community created an example to facilitate a comprehensive understanding of each step involved in IOTA zkLogin for developers. - -- [IOTA zkLogin Example](https://iota-zklogin.vercel.app/) - -![ZKLogin Overview](images/overview.png "ZKLogin Overview") -This example breaks down the complete process of IOTA zkLogin into seven steps, as follows: - -1. Generate ephemeral key pair -1. Fetch JWT -1. Decode JWT -1. Generate salt -1. Generate user IOTA address -1. Fetch ZK proof -1. Assemble zkLogin signature - -Each step includes corresponding code snippets, providing instructions on how to obtain the required data for each step. - -## Operating environment - -The example runs in IOTA Devnet. All data the user generates is stored locally on the client-side (browser). The acquisition of the zero-knowledge proof (ZK proof) is done through a call to the [Mysten Labs-maintained proving service](../zklogin.mdx#call-the-mysten-labs-maintained-proving-service). Therefore, running the example does not require an additional deployed backend server (or a Docker container). - -## Storage locations for key data - -The following table lists the storage location for key data the example uses: - -| Data | Storage location | -| --- | --- | -| Ephemeral key pair | `window.sessionStorage` | -| Randomness | `window.sessionStorage` | -| User salt | `window.localStorage` | -| Max epoch | `window.localStorage` | - -Because the user salt is stored long-term in the browser's `localStorage`, as long as the `localStorage` is not cleared manually, you can use the same JWT (in this example, logging in with the same Google account) to access the corresponding zkLogin address generated from the current salt value at any time. - -:::caution - -Changing browsers or devices results in the inability to access previously generated IOTA zkLogin addresses, even when using the same JWT. - -::: - -## Troubleshooting - -- **ZK Proof request failure:** - - This might occur because of inconsistencies in the creation of multiple randomness or user salts, causing request failures. Click the **Reset Button** in the top right corner of the UI to restart the entire process. - -- **Request test tokens failure:** - - This is because you have surpassed the faucet server request frequency limitations. - - You can go to IOTA [#devnet-faucet](https://discord.com/channels/916379725201563759/971488439931392130) or [#testnet-faucet](https://discord.com/channels/916379725201563759/1037811694564560966) Discord channels to claim test coins. - -- Any suggestions are welcome on the project's GitHub repo through raised issues, and of course, pull requests are highly appreciated. - -- For more FAQs about zkLogin, you can check [zkLogin FAQ](../zklogin.mdx#faq). diff --git a/docs/content/developer/graphql-rpc.mdx b/docs/content/developer/graphql-rpc.mdx index b796cf38e46..fbb4d6df465 100644 --- a/docs/content/developer/graphql-rpc.mdx +++ b/docs/content/developer/graphql-rpc.mdx @@ -1,5 +1,5 @@ --- -title: GraphQL for the IOTA RPC +title: GraphQL for the Iota RPC --- This section explains some of the common concepts when working with GraphQL, such as altering behavior using HTTP headers, re-using query snippets with variables and fragments, consuming paginated queries, and understanding and working within the limits enforced by the service. @@ -24,7 +24,7 @@ The service accepts the following optional headers: By default, each request returns the service's version in the response header: `x-iota-rpc-version`. ```bash -curl -i -X POST https://iota-mainnet.mystenlabs.com/graphql \ +curl -i -X POST https://explorer.iota.org/mainnet/graphql \ --header 'x-iota-rpc-show-usage: true' \ --header 'Content-Type: application/json' \ --data '{ @@ -96,7 +96,7 @@ When using the online IDE, supply variables as a JSON object to the query in the When making a request to the GraphQL service (for example, using `curl`), pass the query and variables as two fields of a single JSON object: ```bash - curl -X POST https://iota-testnet.mystenlabs.com/graphql \ + curl -X POST https://explorer.iota.org/testnet/graphql \ --header 'Content-Type: application/json' \ --data '{ "query": "query ($epochID: Int) { epoch(id: $epochID) { referenceGasPrice } }", @@ -252,7 +252,7 @@ To see these principles put into practice, consult the examples for [paginating ## Limits -The GraphQL service for IOTA RPC is rate-limited on all available instances to keep network throughput optimized and to protect against excessive or abusive calls to the service. +The GraphQL service for Iota RPC is rate-limited on all available instances to keep network throughput optimized and to protect against excessive or abusive calls to the service. ### Rate limits @@ -283,6 +283,6 @@ In addition to rate limits, queries are also validated against a number of rules ## Related links -- [GraphQL quick-start](getting-started/graphql-rpc.mdx): Querying IOTA RPC with GraphQL gets you started using GraphQL to query the IOTA RPC for on-chain data. -- [GraphQL migration](advanced/graphql-migration.mdx): Migrating to GraphQL guides you through migrating IOTA RPC projects from JSON-RPC to GraphQL. -- [GraphQL reference](../references/iota-graphql.mdx): Auto-generated GraphQL reference for IOTA RPC. +- [GraphQL quick-start](getting-started/graphql-rpc.mdx): Querying Iota RPC with GraphQL gets you started using GraphQL to query the Iota RPC for on-chain data. +- [GraphQL migration](advanced/graphql-migration.mdx): Migrating to GraphQL guides you through migrating Iota RPC projects from JSON-RPC to GraphQL. +- [GraphQL reference](../references/iota-graphql.mdx): Auto-generated GraphQL reference for Iota RPC. diff --git a/docs/content/developer/iota-101/iota-move-concepts/collections.mdx b/docs/content/developer/iota-101/iota-move-concepts/collections.mdx index 2ab48fcc1b3..89d55b8eceb 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/collections.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/collections.mdx @@ -1,9 +1,9 @@ --- title: Collections -description: The IOTA framework provides several modules you can use to work with groups of data. +description: The Iota framework provides several modules you can use to work with groups of data. --- -Collections provide a convenient way to work with groups of data. The IOTA framework provides several modules that provide collection logic: +Collections provide a convenient way to work with groups of data. The Iota framework provides several modules that provide collection logic: ## bag @@ -13,7 +13,7 @@ To learn more, see [Table and Bag](../objects/dynamic-fields/tables-bags.mdx) or ## dynamic_field -In addition to the fields declared in its type definition, a IOTA object can have dynamic fields that can be added after the object has been constructed. Unlike ordinary field names (which are always statically declared identifiers) a dynamic field name can be any value with the copy, drop, and store abilities (for example, an integer, a boolean, or a string). This gives IOTA programmers the flexibility to extend objects on-the-fly, and it also serves as a building block for core collection types. +In addition to the fields declared in its type definition, a Iota object can have dynamic fields that can be added after the object has been constructed. Unlike ordinary field names (which are always statically declared identifiers) a dynamic field name can be any value with the copy, drop, and store abilities (for example, an integer, a boolean, or a string). This gives IOTA programmers the flexibility to extend objects on-the-fly, and it also serves as a building block for core collection types. To learn more, see [Dynamic Fields](../objects/dynamic-fields/dynamic-fields.mdx) or the [framework definition](https://github.com/iotaledger/iota/blob/main/crates/iota-framework/docs/iota-framework/dynamic_field.md) on GitHub. @@ -49,7 +49,7 @@ To learn more, see the [framework definition](https://github.com/iotaledger/iota ## table -A table is a map-like collection. But unlike a traditional collection, its keys and values are not stored within the Table value, but instead are stored using IOTA's object system. The Table struct acts only as a handle into the object system to retrieve those keys and values. Note that this means that Table values with exactly the same key-value mapping will not be equal, with ==, at runtime. +A table is a map-like collection. But unlike a traditional collection, its keys and values are not stored within the Table value, but instead are stored using Iota's object system. The Table struct acts only as a handle into the object system to retrieve those keys and values. Note that this means that Table values with exactly the same key-value mapping will not be equal, with ==, at runtime. To learn more, see [Table and Bag](../objects/dynamic-fields/tables-bags.mdx) or the [framework definition](https://github.com/iotaledger/iota/blob/main/crates/iota-framework/docs/iota-framework/table.md) on GitHub. diff --git a/docs/content/developer/iota-101/iota-move-concepts/conventions.mdx b/docs/content/developer/iota-101/iota-move-concepts/conventions.mdx index 854b9bc7b8b..77a057c3f6a 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/conventions.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/conventions.mdx @@ -1,6 +1,6 @@ --- title: Conventions -description: Recommended Move 2024 best practices for the IOTA blockchain. +description: Recommended Move 2024 best practices for the Iota blockchain. --- The following recommendations are based on 2024 Move. @@ -59,10 +59,10 @@ Do not use 'potato' in the name of structs. The lack of abilities define it as a ```move module conventions::request { // ✅ Right - struct Request {} + public struct Request {} // ❌ Wrong - struct RequestPotato {} + public struct RequestPotato {} } ``` @@ -73,7 +73,7 @@ Be mindful of the dot syntax when naming functions. Avoid using the object name ```move module conventions::profile { - struct Profile { + public struct Profile { age: u64 } @@ -110,7 +110,7 @@ Name the functions that create data structures as `empty`. ```move module conventions::collection { - struct Collection has copy, drop, store { + public struct Collection has copy, drop, store { bits: vector } @@ -132,7 +132,7 @@ module conventions::object { use iota::object::{Self, UID}; use iota::tx_context::TxContext; - struct Object has key, store { + public struct Object has key, store { id: UID } @@ -155,7 +155,7 @@ module conventions::profile { use iota::tx_context::TxContext; use iota::transfer::share_object; - struct Profile has key { + public struct Profile has key { id: UID } @@ -182,7 +182,7 @@ module conventions::profile { use iota::object::UID; - struct Profile has key { + public struct Profile has key { id: UID, name: String, age: u8 @@ -209,7 +209,7 @@ module conventions::wallet { use iota::object::UID; - struct Wallet has key, store { + public struct Wallet has key, store { id: UID, amount: u64 } @@ -219,7 +219,7 @@ module conventions::claw_back_wallet { use iota::object::UID; - struct Wallet has key { + public struct Wallet has key { id: UID, amount: u64 } @@ -251,7 +251,7 @@ module conventions::profile { use iota::object::UID; - struct Profile has key, store { + public struct Profile has key, store { id: UID, /// The age of the user age: u8, @@ -272,7 +272,7 @@ module conventions::wallet { use iota::balance::{Self, Balance}; use iota::iota::IOTA; - struct Wallet has key, store { + public struct Wallet has key, store { id: UID, value: Value } @@ -305,7 +305,7 @@ module conventions::amm { use iota::object::UID; use iota::tx_context::{Self, TxContext}; - struct Pool has key { + public struct Pool has key { id: UID } @@ -345,7 +345,7 @@ module conventions::amm { use iota::coin::Coin; use iota::object::UID; - struct Pool has key { + public struct Pool has key { id: UID } @@ -377,12 +377,12 @@ module conventions::access_control { use iota::table::{Self, Table}; use iota::tx_context::{Self, TxContext}; - struct Account has key, store { + public struct Account has key, store { id: UID, balance: u64 } - struct State has key { + public struct State has key { id: UID, accounts: Table, balance: Balance @@ -425,12 +425,12 @@ module conventions::vesting_wallet { use iota::balance::Balance; use iota::tx_context::TxContext; - struct OwnedWallet has key { + public struct OwnedWallet has key { id: UID, balance: Balance } - struct SharedWallet has key { + public struct SharedWallet has key { id: UID, balance: Balance, accounts: Table @@ -468,12 +468,12 @@ module conventions::social_network { use iota::object::UID; - struct Account has key { + public struct Account has key { id: UID, name: String } - struct Admin has key { + public struct Admin has key { id: UID, } diff --git a/docs/content/developer/iota-101/iota-move-concepts/entry-functions.mdx b/docs/content/developer/iota-101/iota-move-concepts/entry-functions.mdx index be3f39917d8..63a23af1a44 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/entry-functions.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/entry-functions.mdx @@ -10,7 +10,7 @@ These restrictions prevent third parties using the scriptable nature of programm ## `public` vs `entry` functions -The `public` modifier also allows a function to be called from a programmable transaction block. It additionally allows the function to be called from other modules, and does not impose the same restrictions on where the function's parameters can come from and what it can return, so in many cases `public` is the right way to expose your function to the outside world. `entry` is useful if: +The `public` modifier also allows a function to be called from a programmable transaction block. It additionally allows the function to be called from other modules, and does not impose the same restrictions on where the function's parameters can come from and what it can return, so in many cases `public` is the right way to expose your function to the outside world. `entry` is useful if: - You want strong guarantees that your function is not being combined with third-party module functions, in programmable transaction blocks. The canonical example of this is a swap protocol that does not want to interact with a flash loan provider: If the swap protocol exposes only `entry` functions to perform swaps, it will not be possible to pass in a flash loaned `Coin`, because that coin will be the output of some previous transaction. - You do not want the function's signature to appear in your module's ABI. `public` function signatures must be maintained by upgrades while `entry` function signatures do not. @@ -25,7 +25,7 @@ module entry_functions::example { use iota::transfer; use iota::tx_context::{Self, TxContext}; - struct Foo has key { + public struct Foo has key { id: UID, bar: u64, } diff --git a/docs/content/developer/iota-101/iota-move-concepts/init.mdx b/docs/content/developer/iota-101/iota-move-concepts/init.mdx index e75e707c01a..983d876ee6d 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/init.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/init.mdx @@ -17,7 +17,7 @@ For example, the following `init` functions are all valid: - `fun init(otw: EXAMPLE, ctx: &TxContext)` - `fun init(otw: EXAMPLE, ctx: &mut TxContext)` -Every function that fits this criteria will be run when the package is first published, and at no other time, including when the package is upgraded. This means that an `init` function that was introduced during an upgrade (to a new or existing module) will never run. +Every function that fits this criteria will be run when the package is first published, and at no other time, including when the package is upgraded. This means that an `init` function that was introduced during an upgrade (to a new or existing module) will never run. The following example demonstrates a valid `init` function in a module: @@ -28,7 +28,7 @@ module examples::one_timer { use iota::tx_context::{Self, TxContext}; /// The one of a kind - created in the module initializer. - struct CreatorCapability has key { + public struct CreatorCapability has key { id: UID } diff --git a/docs/content/developer/iota-101/iota-move-concepts/iota-move-concepts.mdx b/docs/content/developer/iota-101/iota-move-concepts/iota-move-concepts.mdx index 46001ec75bf..2a4d00887f9 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/iota-move-concepts.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/iota-move-concepts.mdx @@ -7,34 +7,34 @@ import MoveSummary from "../../../_snippets/move-summary.mdx"; -You can use Move to define, create, and manage programmable IOTA objects representing user-level assets. IOTA's object system is implemented by adding new functionality to Move while also imposing additional restrictions. See [Object Model](./../objects/object-model.mdx) for more details. +You can use Move to define, create, and manage programmable Iota objects representing user-level assets. Iota's object system is implemented by adding new functionality to Move while also imposing additional restrictions. See [Object Model](./../objects/object-model.mdx) for more details. -## Move on IOTA +## Move on Iota -Move on IOTA contains some important differences from Move on other blockchains. IOTA takes advantage of Move's security and flexibility and enhances it with the features described in the following sections to vastly improve throughput, reduce delays in finality, and make Move programming more approachable. For full details, see the [IOTA Smart Contracts Platform](/doc/iota.pdf) white paper. +Move on Iota contains some important differences from Move on other blockchains. Iota takes advantage of Move's security and flexibility and enhances it with the features described in the following sections to vastly improve throughput, reduce delays in finality, and make Move programming more approachable. For full details, see the [Iota Smart Contracts Platform](/doc/iota.pdf) white paper. :::tip -Where the IOTA documentation refers to the Move language, the content is documenting the specific Move implementation on the IOTA blockchain. If relevant, the documentation expressly refers to the original use case for the Move language as Move on Diem. +Where the Iota documentation refers to the Move language, the content is documenting the specific Move implementation on the Iota blockchain. If relevant, the documentation expressly refers to the original use case for the Move language as Move on Diem. ::: -In general, Move on Diem code written for other systems works in IOTA with these exceptions: +In general, Move on Diem code written for other systems works in Iota with these exceptions: - [Global storage operators](https://move-language.github.io/move/global-storage-operators.html) - [Key abilities](https://github.com/move-language/move/blob/main/language/documentation/book/src/abilities.md) ## Key differences -Key differences with Move on IOTA include: +Key differences with Move on Iota include: -- IOTA uses its own [object-centric global storage](#object-centric-global-storage) +- Iota uses its own [object-centric global storage](#object-centric-global-storage) - Addresses represent [Object IDs](#addresses-represent-object-ids) -- IOTA objects have [globally unique IDs](#object-with-key-ability-globally-unique-ids) -- IOTA has [module initializers](#module-initializers) (init) -- IOTA [entry points](#entry-points-take-object-references-as-input) take object references as input +- Iota objects have [globally unique IDs](#object-with-key-ability-globally-unique-ids) +- Iota has [module initializers](#module-initializers) (init) +- Iota [entry points](#entry-points-take-object-references-as-input) take object references as input ### Object-centric global storage @@ -42,27 +42,27 @@ In Move on Diem, global storage is part of the programming model. Resources and This approach introduces a scaling issue, as it is not possible to statically determine which transactions are contending over the same resource and which are not. This is similar to the scaling issues faced by other blockchains where smart contracts typically store account information in large, internal mappings, which limit throughput. -Move on IOTA addresses the scaling issue by not having global storage, or its related operations. When objects (in contrast to resources) and packages (sets of modules) are stored on IOTA, they are each given unique identifiers. All a transaction's inputs are explicitly specified up-front using these unique identifiers, to allow the chain to schedule transactions with non-overlapping inputs in parallel. +Move on Iota addresses the scaling issue by not having global storage, or its related operations. When objects (in contrast to resources) and packages (sets of modules) are stored on Iota, they are each given unique identifiers. All a transaction's inputs are explicitly specified up-front using these unique identifiers, to allow the chain to schedule transactions with non-overlapping inputs in parallel. ### Addresses represent Object IDs In Move on Diem, there is a 16-byte `address` type used to represent account addresses in global storage. A 16 byte address is sufficient for the Move on Diem security model. -IOTA doesn't have global storage, so `address` is re-purposed as a 32-byte identifier used for both objects and accounts. Each transaction is signed by an account (the "sender") that is accessible from the transaction context, and each object stores its `address` wrapped in its `id: UID` field. (Refer to [object.move](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object.move) in the IOTA framework for details). +Iota doesn't have global storage, so `address` is re-purposed as a 32-byte identifier used for both objects and accounts. Each transaction is signed by an account (the "sender") that is accessible from the transaction context, and each object stores its `address` wrapped in its `id: UID` field. (Refer to [object.move](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object.move) in the Iota framework for details). ### Object with key ability, globally unique IDs In Move on Diem, the `key` ability indicates that the type is a resource, meaning it (along with an account address) can be used as a key in global storage. -On IOTA, the `key` ability indicates that a struct is an object type and comes with an additional requirement that the first field of the struct has signature `id: UID`, to contain the object's unique address on-chain. IOTA's bytecode verifier ensures that new objects are always assigned fresh `UID`s (identifiers are never re-used). +On Iota, the `key` ability indicates that a struct is an object type and comes with an additional requirement that the first field of the struct has signature `id: UID`, to contain the object's unique address on-chain. Iota's bytecode verifier ensures that new objects are always assigned fresh `UID`s (identifiers are never re-used). ### Module initializers -As described in [Object-centric global storage](#object-centric-global-storage), you publish Move modules into IOTA storage. The IOTA runtime executes a special [initializer function](init.mdx) you optionally define in a module only once at the time of module publication to pre-initialize module-specific data (for example, creating singleton objects). +As described in [Object-centric global storage](#object-centric-global-storage), you publish Move modules into Iota storage. The Iota runtime executes a special [initializer function](init.mdx) you optionally define in a module only once at the time of module publication to pre-initialize module-specific data (for example, creating singleton objects). ### Entry points take object references as input -You can call public functions from IOTA transactions (called programmable transaction blocks). These functions can take objects by value, by immutable reference, or by mutable reference. If taken by value, you can destroy the object, wrap it (in another object), or transfer it (to a IOTA ID specified by an address). If taken by mutable reference, the modified version of the object saves to storage without any change in ownership. In any case, the IOTA network authenticates the object and declares it's usage as a part of the transaction. +You can call public functions from Iota transactions (called programmable transaction blocks). These functions can take objects by value, by immutable reference, or by mutable reference. If taken by value, you can destroy the object, wrap it (in another object), or transfer it (to an Iota ID specified by an address). If taken by mutable reference, the modified version of the object saves to storage without any change in ownership. In any case, the Iota network authenticates the object and declares its usage as a part of the transaction. In addition to calling public functions, you can call a function that is marked [entry](entry-functions.mdx) even if it is private as long as other non-`entry` functions have not used its inputs. @@ -89,4 +89,4 @@ A one-time witness (OTW) is a special instance of a type created in the module i ### Patterns -Move coding patterns, or techniques, solve logic problems you encounter when developing Move packages for the IOTA blockchain. See the [Patterns](patterns.mdx) section for a list of documented coding patterns. +Move coding patterns, or techniques, solve logic problems you encounter when developing Move packages for the Iota blockchain. See the [Patterns](patterns.mdx) section for a list of documented coding patterns. diff --git a/docs/content/developer/iota-101/iota-move-concepts/one-time-witness.mdx b/docs/content/developer/iota-101/iota-move-concepts/one-time-witness.mdx index 653b65b016c..6608b5d8c59 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/one-time-witness.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/one-time-witness.mdx @@ -17,7 +17,7 @@ To check whether a type could be used as a OTW, pass an instance of it to `iota: module examples::mycoin { /// Name matches the module name - struct MYCOIN has drop {} + public struct MYCOIN has drop {} /// The instance is received as the first argument fun init(witness: MYCOIN, ctx: &mut TxContext) { @@ -53,7 +53,7 @@ module examples::one_time_witness_registry { /// An object of this type will mark that there's a type, /// and there can be only one record per type. - struct UniqueTypeRecord has key { + public struct UniqueTypeRecord has key { id: UID, name: String } @@ -84,7 +84,7 @@ module examples::my_otw { use examples::one_time_witness_registry as registry; /// Type is named after the module but uppercased - struct MY_OTW has drop {} + public struct MY_OTW has drop {} /// To get it, use the first argument of the module initializer. /// It is a full instance and not a reference type. diff --git a/docs/content/developer/iota-101/iota-move-concepts/packages/custom-policies.mdx b/docs/content/developer/iota-101/iota-move-concepts/packages/custom-policies.mdx index 257da7f1886..83d7532968e 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/packages/custom-policies.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/packages/custom-policies.mdx @@ -8,11 +8,11 @@ Protecting the ability to upgrade a package on chain using a single key can pose -To address the security risk of single-key upgrade ownership poses while still providing the opportunity to [upgrade live packages](upgrade.mdx), IOTA offers _custom upgrade policies_. These policies protect `UpgradeCap` access and issue `UpgradeTicket` objects that authorize upgrades on a case-by-case basis. +To address the security risk of single-key upgrade ownership poses while still providing the opportunity to [upgrade live packages](./upgrade.mdx), Iota offers _custom upgrade policies_. These policies protect `UpgradeCap` access and issue `UpgradeTicket` objects that authorize upgrades on a case-by-case basis. ## Compatibility {#compatibility} -IOTA comes with a set of built-in package compatibility policies, listed here from most to least strict: +Iota comes with a set of built-in package compatibility policies, listed here from most to least strict: | Policy | Description | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -40,7 +40,7 @@ Package upgrades must occur end-to-end in a single transaction block and are com 1. **Commit:** Update the `UpgradeCap` with information about the newly created package. -While step 2 is a built-in command, steps 1 and 3 are implemented as Move functions. The IOTA framework provides their most basic implementation: +While step 2 is a built-in command, steps 1 and 3 are implemented as Move functions. The Iota framework provides their most basic implementation: ```move module iota::package { @@ -70,7 +70,7 @@ The `UpgradeCap` is the central type responsible for coordinating package upgrad ```move module iota::package { - struct UpgradeCap has key, store { + public struct UpgradeCap has key, store { id: UID, package: ID, version: u64, @@ -96,7 +96,7 @@ And its API guarantees the following properties: ```move module iota::package { - struct UpgradeTicket { + public struct UpgradeTicket { cap: ID, package: ID, policy: u8, @@ -119,7 +119,7 @@ After creating an `UpgradeTicket`, you must use it within that transaction block The `UpgradeTicket` `digest` field comes from the `digest` parameter to `authorize_upgrade`, which the caller must supply. While `authorize_upgrade` does not process the `digest`, custom policies can use it to authorize only upgrades that it has seen the -bytecode or source code for ahead of time. IOTA calculates the digest as follows: +bytecode or source code for ahead of time. Iota calculates the digest as follows: - Take the bytecode for each module, represented as an array of bytes. - Append the list of the package's transitive dependencies, each represented as an array of bytes. @@ -142,18 +142,18 @@ BUILDING test ```move module iota::package { - struct UpgradeReceipt { + public struct UpgradeReceipt { cap: ID, package: ID, } } ``` -The `UpgradeReceipt` is proof that the `Upgrade` command ran successfully, and IOTA added the new package to the set of created +The `UpgradeReceipt` is proof that the `Upgrade` command ran successfully, and Iota added the new package to the set of created objects for the transaction. It is used to update its `UpgradeCap` (identified by `cap: ID`) with the ID of the latest package in its family (`package: ID`). -After IOTA creates an `UpgradeReceipt`, you must use it to update its `UpgradeCap` within the same transaction block (you cannot store it for later, drop it, or burn it), or the transaction fails. +After Iota creates an `UpgradeReceipt`, you must use it to update its `UpgradeCap` within the same transaction block (you cannot store it for later, drop it, or burn it), or the transaction fails. ## Isolating policies {#isolating-policies} @@ -188,7 +188,7 @@ module policy::day_of_week { use iota::package; use iota::tx_context::TxContext; - struct UpgradeCap has key, store { + public struct UpgradeCap has key, store { id: UID, cap: package::UpgradeCap, day: u8, @@ -275,7 +275,7 @@ module policy::day_of_week { use iota::package; use iota::tx_context::TxContext; - struct UpgradeCap has key, store { + public struct UpgradeCap has key, store { id: UID, cap: package::UpgradeCap, day: u8, @@ -512,7 +512,7 @@ In the `example/sources` directory, create an `example.move` file with the follo ```move module example::example { - struct Event has copy, drop { x: u64 } + public struct Event has copy, drop { x: u64 } entry fun nudge() { iota::event::emit(Event { x: 41 }) } @@ -530,7 +530,7 @@ Create a new directory to store a Node.js project. You can use the `npm init` fu ``` -Open a terminal or console to the root of your Node.js project. Run the following command to add the IOTA TypeScript SDK as a dependency: +Open a terminal or console to the root of your Node.js project. Run the following command to add the Iota TypeScript SDK as a dependency: ```bash npm install @iota/iota.js @@ -548,7 +548,7 @@ const IOTA = 'iota'; const POLICY_PACKAGE_ID = ''; ``` -Next, add boilerplate code to get the signer key pair for the currently active address in the IOTA Client CLI: +Next, add boilerplate code to get the signer key pair for the currently active address in the Iota Client CLI: ```js import { execSync } from 'child_process'; @@ -1063,7 +1063,7 @@ BUILDING example -Use the IOTA Client CLI to test the upgraded package (the package ID is **different** from the original version of your example package): +Use the Iota Client CLI to test the upgraded package (the package ID is **different** from the original version of your example package): ```bash iota client call --gas-budget 10000000 \ diff --git a/docs/content/developer/iota-101/iota-move-concepts/packages/packages.mdx b/docs/content/developer/iota-101/iota-move-concepts/packages/packages.mdx index da9e76c0e55..fc732dc5e96 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/packages/packages.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/packages/packages.mdx @@ -1,11 +1,11 @@ --- title: Package Upgrades -description: A Move package on IOTA includes one or more modules that define that package's interaction with on-chain objects. Upgrading on-chain packages provides a way to improve your code or add features without affecting packages that use your published modules. +description: A Move package on Iota includes one or more modules that define that package's interaction with on-chain objects. Upgrading on-chain packages provides a way to improve your code or add features without affecting packages that use your published modules. --- import UpgradeSingleKeyRisk from "../../../../_snippets/upgrade-single-key-risk.mdx"; -A Move package on IOTA includes one or more modules that define that package's interaction with on-chain objects. You develop the logic for those modules using Move, which you then compile into an object. Finally, you publish your package object onto a IOTA network. On chain, anyone can view your package contents and the logic it employs to manipulate other on-chain objects using a IOTA network explorer. +A Move package on Iota includes one or more modules that define that package's interaction with on-chain objects. You develop the logic for those modules using Move, which you then compile into an object. Finally, you publish your package object onto the Iota network. On chain, anyone can view your package contents and the logic it employs to manipulate other on-chain objects using an Iota network explorer. ## Packages are immutable @@ -15,11 +15,11 @@ After you publish a package object on chain to a network, it lives there forever While you can't manipulate on-chain packages directly, you do have the ability to upgrade them. Upgrading on-chain packages provides a way to improve your code or add features without affecting packages that use the original package. When you upgrade a package, you're creating a new object on chain instead of modifying the original package. See [Upgrading Packages](upgrade.mdx) to learn more about the process. -## Using IOTA Client CLI to upgrade packages +## Using Iota Client CLI to upgrade packages -The [IOTA Client CLI](/references/cli/client.mdx) `upgrade` command offers an approachable way to upgrade packages when the CLI active address owns the `UpgradeCap` object associated with those packages. +The [Iota Client CLI](/references/cli/client.mdx) `upgrade` command offers an approachable way to upgrade packages when the CLI active address owns the `UpgradeCap` object associated with those packages. -Using the IOTA CLI is useful to get started with upgrades, or in the early stages of package development, but protecting the ability to upgrade a package on chain using a single key can pose a security risk for several reasons: +Using the Iota CLI is useful to get started with upgrades, or in the early stages of package development, but protecting the ability to upgrade a package on chain using a single key can pose a security risk for several reasons: diff --git a/docs/content/developer/iota-101/iota-move-concepts/packages/upgrade.mdx b/docs/content/developer/iota-101/iota-move-concepts/packages/upgrade.mdx index 190b8517a4c..066de6951b2 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/packages/upgrade.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/packages/upgrade.mdx @@ -1,11 +1,11 @@ --- title: Upgrading Packages -description: IOTA provides a method of upgrading your packages while still retaining their immutable properties. +description: Iota provides a method of upgrading your packages while still retaining their immutable properties. --- -IOTA smart contracts are immutable package objects consisting of a collection of Move modules. Because the packages are immutable, transactions can safely access smart contracts without full consensus (fastpath transactions). If someone could change these packages, they would become [shared objects](../../objects/object-ownership/shared.mdx), which would require full consensus before completing a transaction. +Iota smart contracts are immutable package objects consisting of a collection of Move modules. Because the packages are immutable, transactions can safely access smart contracts without full consensus (fastpath transactions). If someone could change these packages, they would become [shared objects](../../objects/object-ownership/shared.mdx), which would require full consensus before completing a transaction. -The inability to change package objects, however, becomes a problem when considering the iterative nature of code development. Builders require the ability to update their code and pull changes from other developers while still being able to reap the benefits of fastpath transactions. Fortunately, the IOTA network provides a method of upgrading your packages while still retaining their immutable properties. +The inability to change package objects, however, becomes a problem when considering the iterative nature of code development. Builders require the ability to update their code and pull changes from other developers while still being able to reap the benefits of fastpath transactions. Fortunately, the Iota network provides a method of upgrading your packages while still retaining their immutable properties. ## Upgrade considerations @@ -13,7 +13,7 @@ There are some details of the process that you should consider before upgrading For example, [module initializers](../init.mdx) do not re-run with package upgrades. When you publish your initial package, Move runs the `init` function you define for the package once (and only once) at the time of the publish event. Any `init` functions you might include in subsequent versions of your package are ignored. -As alluded to previously, all packages on the IOTA network are immutable. Because of this fact, you cannot delete old packages from the chain. As a result, there is nothing that prevents other packages from accessing the methods and types defined in the old versions of your upgraded packages. By default, users can choose to keep using the old version of a package, as well. As a package developer, you must be aware of and account for this possibility. +As alluded to previously, all packages on the Iota network are immutable. Because of this fact, you cannot delete old packages from the chain. As a result, there is nothing that prevents other packages from accessing the methods and types defined in the old versions of your upgraded packages. By default, users can choose to keep using the old version of a package, as well. As a package developer, you must be aware of and account for this possibility. For example, you might define an `increment` function in your original package: @@ -26,7 +26,7 @@ public fun increment(c: &mut Counter) { Then, your package upgrade might add an emit event to the `increment` function: ```move -struct Progress has copy, drop { +public struct Progress has copy, drop { reached: u64 } @@ -57,7 +57,7 @@ module example::counter { use iota::transfer; use iota::tx_context::TxContext; - struct Counter has key { + public struct Counter has key { id: UID, value: u64, } @@ -93,7 +93,7 @@ module example::counter { // 1. Track the current version of the module const VERSION: u64 = 1; - struct Counter has key { + public struct Counter has key { id: UID, // 2. Track the current version of the shared object version: u64, @@ -102,7 +102,7 @@ module example::counter { value: u64, } - struct AdminCap has key { + public struct AdminCap has key { id: UID, } @@ -153,18 +153,18 @@ module example::counter { // 1. Bump the `VERSION` of the package. const VERSION: u64 = 2; - struct Counter has key { + public struct Counter has key { id: UID, version: u64, admin: ID, value: u64, } - struct AdminCap has key { + public struct AdminCap has key { id: UID, } - struct Progress has copy, drop { + public struct Progress has copy, drop { reached: u64, } diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns.mdx index fbf9b1ed572..386924f70a1 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns.mdx @@ -1,6 +1,6 @@ --- title: Patterns -description: Move coding patterns, or techniques, solve logic problems you encounter when developing Move packages for the IOTA blockchain. These include capabilities, witness and transferrable witness, hot potato, and ID pointer. +description: Move coding patterns, or techniques, solve logic problems you encounter when developing Move packages for the Iota blockchain. These include capabilities, witness and transferable witness, hot potato, and ID pointer. --- Topics in this section introduce Move coding patterns that solve various logic needs in your package development. diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns/capabilities.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns/capabilities.mdx index c0b49006440..f846db26e6c 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns/capabilities.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns/capabilities.mdx @@ -13,10 +13,10 @@ module examples::item { use iota::tx_context::{Self, TxContext}; /// Type that marks Capability to create new `Item`s. - struct AdminCap has key { id: UID } + public struct AdminCap has key { id: UID } /// Custom NFT-like type. - struct Item has key, store { id: UID, name: String } + public struct Item has key, store { id: UID, name: String } /// Module initializer is called once on module publish. /// Here we create only one instance of `AdminCap` and send it to the publisher. diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns/hot-potato.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns/hot-potato.mdx index ca4fd9c63d4..6d34ca266d8 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns/hot-potato.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns/hot-potato.mdx @@ -27,12 +27,12 @@ module examples::trade_in { const EIncorrectAmount: u64 = 2; /// A phone; can be purchased or traded in for a newer model - struct Phone has key, store { id: UID, model: u8 } + public struct Phone has key, store { id: UID, model: u8 } /// Payable receipt. Has to be paid directly or paid with a trade-in option. /// Cannot be stored, owned or dropped - has to be used to select one of the /// options for payment: `trade_in` or `pay_full`. - struct Receipt { price: u64 } + public struct Receipt { price: u64 } /// Get a phone, pay later. /// Receipt has to be passed into one of the functions that accept it: @@ -71,4 +71,4 @@ module examples::trade_in { } ``` -The IOTA repository includes [several examples](https://github.com/iotaledger/iota/tree/main/examples/move) that demonstrate IOTA capabilities. The [Flash Loan](https://github.com/iotaledger/iota/blob/main/examples/move/flash_lender/sources/example.move) code in those examples demonstrates the pattern this topic describes. +The Iota repository includes [several examples](https://github.com/iotaledger/iota/tree/main/examples/move) that demonstrate Iota capabilities. The [Flash Loan](https://github.com/iotaledger/iota/blob/main/examples/move/flash_lender/sources/example.move) code in those examples demonstrates the pattern this topic describes. diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns/id-pointer.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns/id-pointer.mdx index b188787e7e1..b82617cbb07 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns/id-pointer.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns/id-pointer.mdx @@ -8,7 +8,7 @@ ID pointer is a technique that separates the main data (an object) and its acces - Splitting dynamic data and static (for example, an NFT and its collection information) - Avoiding unnecessary type linking (and witness requirement) in generic applications (LP token for a `LiquidityPool`) -The following example implements basic `Lock` and `Key` mechanics on IOTA where `Lock` is a shared object that can contain any object, and `Key` is an owned object, which is required to get access to the contents of the lock. +The following example implements basic `Lock` and `Key` mechanics on Iota where `Lock` is a shared object that can contain any object, and `Key` is an owned object, which is required to get access to the contents of the lock. `Key` is linked to its `Lock` using an `ID` field. This check allows off-chain discovery of the target, as well as splits the dynamic transferable capability and the 'static' contents. Another benefit of this approach is that the target asset is always discoverable, while you can wrap its `Key` into another object (such as a marketplace listing). @@ -29,14 +29,14 @@ module examples::lock_and_key { const ELockIsFull: u64 = 2; /// Lock that stores any content inside it. - struct Lock has key { + public struct Lock has key { id: UID, locked: Option } /// A key that is created with a Lock; is transferable /// and contains all the needed information to open the Lock. - struct Key has key, store { + public struct Key has key, store { id: UID, for: ID, } diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns/transferrable-witness.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns/transferrable-witness.mdx index cdb54c06589..aba4f715d16 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns/transferrable-witness.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns/transferrable-witness.mdx @@ -1,8 +1,8 @@ --- -title: Transferrable Witness +title: Transferable Witness --- -The transferrable witness pattern is based on a combination of capability and witness patterns. Because you should be careful with the witness pattern, you should allow only authorized users to spawn it (ideally only once). Some scenarios, however, require type authorization by module X to be used in another module Y. Or, possibly, there's a case where authorization should be performed after some time. +The transferable witness pattern is based on a combination of capability and witness patterns. Because you should be careful with the witness pattern, you should allow only authorized users to spawn it (ideally only once). Some scenarios, however, require type authorization by module X to be used in another module Y. Or, possibly, there's a case where authorization should be performed after some time. For these rather rare scenarios, a storable witness is a good solution. @@ -14,11 +14,11 @@ module examples::transferable_witness { /// Witness now has a `store` that allows us to store it inside a wrapper. - struct WITNESS has store, drop {} + public struct WITNESS has store, drop {} /// Carries the witness type. Can be used only once to get a Witness. - struct WitnessCarrier has key { id: UID, witness: WITNESS } + public struct WitnessCarrier has key { id: UID, witness: WITNESS } /// Send a `WitnessCarrier` to the module publisher. diff --git a/docs/content/developer/iota-101/iota-move-concepts/patterns/witness.mdx b/docs/content/developer/iota-101/iota-move-concepts/patterns/witness.mdx index 779ef3b170e..ff8aa967acc 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/patterns/witness.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/patterns/witness.mdx @@ -13,7 +13,7 @@ module examples::guardian { /// Phantom parameter T can only be initialized in the `create_guardian` /// function. But the types passed here must have `drop`. - struct Guardian has key, store { + public struct Guardian has key, store { id: UID } @@ -35,7 +35,7 @@ module examples::peace_guardian { use 0x0::guardian; /// This type is intended to be used only once. - struct PEACE has drop {} + public struct PEACE has drop {} /// Module initializer is the best way to ensure that the /// code is called only once. With `Witness` pattern it is diff --git a/docs/content/developer/iota-101/iota-move-concepts/strings.mdx b/docs/content/developer/iota-101/iota-move-concepts/strings.mdx index db2cb408762..68b29f26f54 100644 --- a/docs/content/developer/iota-101/iota-move-concepts/strings.mdx +++ b/docs/content/developer/iota-101/iota-move-concepts/strings.mdx @@ -13,7 +13,7 @@ module examples::strings { use std::string::{Self, String}; /// A dummy Object that holds a String type - struct Name has key, store { + public struct Name has key, store { id: UID, /// Here it is - the String type @@ -37,7 +37,7 @@ module examples::strings { Define string literals in Move as byte strings. To do so, prepend `b` to your string. ```move -const IMAGE_URL: vector = b"https://api.capy.art/capys/"; +const IMAGE_URL: vector = b"https://example.com/image/"; let keys = vector[ utf8(b"name"), diff --git a/docs/content/developer/iota-101/objects/dynamic-fields/dynamic-fields.mdx b/docs/content/developer/iota-101/objects/dynamic-fields/dynamic-fields.mdx index e68db1b9294..f6c85ca0a30 100644 --- a/docs/content/developer/iota-101/objects/dynamic-fields/dynamic-fields.mdx +++ b/docs/content/developer/iota-101/objects/dynamic-fields/dynamic-fields.mdx @@ -1,6 +1,6 @@ --- title: Dynamic (Object) Fields -description: Dynamic fields and dynamic object fields on IOTA are added and removed dynamically, affect gas only when accessed, and store heterogeneous values. +description: Dynamic fields and dynamic object fields on Iota are added and removed dynamically, affect gas only when accessed, and store heterogeneous values. --- There are various ways to use object fields to store primitive data and other objects (wrapping), but there are a few limitations to these: @@ -9,7 +9,7 @@ There are various ways to use object fields to store primitive data and other ob 2. An object can become very large if it wraps several other objects. Larger objects can lead to higher gas fees in transactions. In addition, there is an upper bound on object size. 3. There are use cases where you need to store a collection of objects of heterogeneous types. Because the Move `vector` type must be instantiated with one single type ``, it is not suitable for this. -Fortunately, IOTA provides *dynamic fields* with arbitrary names (not just identifiers), added and removed on-the-fly (not fixed at publish), which only affect gas when they are accessed, and can store heterogeneous values. Use the libraries in this topic to interact with this kind of field. +Fortunately, Iota provides *dynamic fields* with arbitrary names (not just identifiers), added and removed on-the-fly (not fixed at publish), which only affect gas when they are accessed, and can store heterogeneous values. Use the libraries in this topic to interact with this kind of field. ### Fields versus object fields @@ -57,11 +57,11 @@ These functions add a field with name `name` and value `value` to `object`. To s First, define two object types for the parent and the child: ```move -struct Parent has key { +public struct Parent has key { id: UID, } -struct Child has key, store { +public struct Child has key, store { id: UID, count: u64, } @@ -194,4 +194,4 @@ Similar to borrowing a field, a transaction that attempts to remove a non-existe It is possible to delete an object that has (potentially non-`drop`) dynamic fields still defined on it. Because field values can be accessed only via the dynamic field's associated object and field name, deleting an object that has dynamic fields still defined on it renders them all inaccessible to future transactions. This is true regardless of whether the field's value has the `drop` ability. This might not be a concern when adding a small number of statically known additional fields to an object, but is particularly undesirable for on-chain collection types that could be holding unboundedly many key-value pairs as dynamic fields. -IOTA provides `Table` and `Bag` collections built using dynamic fields, but with additional support to count the number of entries they contain to protect against accidental deletion when non-empty. To learn more, see [Tables and Bags](tables-bags.mdx). +Iota provides `Table` and `Bag` collections built using dynamic fields, but with additional support to count the number of entries they contain to protect against accidental deletion when non-empty. To learn more, see [Tables and Bags](tables-bags.mdx). diff --git a/docs/content/developer/iota-101/objects/dynamic-fields/tables-bags.mdx b/docs/content/developer/iota-101/objects/dynamic-fields/tables-bags.mdx index ef3d2a681ed..37bc3e016e1 100644 --- a/docs/content/developer/iota-101/objects/dynamic-fields/tables-bags.mdx +++ b/docs/content/developer/iota-101/objects/dynamic-fields/tables-bags.mdx @@ -1,13 +1,13 @@ --- title: Table and Bag -description: IOTA provides `Table` and `Bag` collections built using dynamic fields, but with additional support to count the number of entries they contain to protect against accidental deletion when non-empty. +description: Iota provides `Table` and `Bag` collections built using dynamic fields, but with additional support to count the number of entries they contain to protect against accidental deletion when non-empty. --- You can extend existing objects using [dynamic fields](dynamic-fields.mdx). Note that it's possible to delete an object that still has (potentially non-drop) dynamic fields. This might not be a concern when adding a small number of statically known additional fields to an object, but is particularly undesirable for on-chain collection types that could be holding unboundedly many key-value pairs as dynamic fields. This topic describes two such collections -- Table and Bag -- built using dynamic fields, but with additional support to count the number of entries they contain, and protect against accidental deletion when non-empty. -The types and function discussed in this section are built into the IOTA framework in modules [`table`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/table.move) and [`bag`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/bag.move). As with dynamic fields, there is also an `object_` variant of both: `ObjectTable` in [`object_table`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object_table.move) and `ObjectBag` in [`object_bag`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object_bag.move). The relationship between `Table` and `ObjectTable`, and `Bag` and `ObjectBag` are the same as between a field and an object field: The former can hold any `store` type as a value, but objects stored as values are hidden when viewed from external storage. The latter can only store objects as values, but keeps those objects visible at their ID in external storage. +The types and function discussed in this section are built into the Iota framework in modules [`table`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/table.move) and [`bag`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/bag.move). As with dynamic fields, there is also an `object_` variant of both: `ObjectTable` in [`object_table`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object_table.move) and `ObjectBag` in [`object_bag`](https://github.com/iotaledger/iota/tree/main/crates/iota-framework/packages/iota-framework/sources/object_bag.move). The relationship between `Table` and `ObjectTable`, and `Bag` and `ObjectBag` are the same as between a field and an object field: The former can hold any `store` type as a value, but objects stored as values are hidden when viewed from external storage. The latter can only store objects as values, but keeps those objects visible at their ID in external storage. ### Tables @@ -15,7 +15,7 @@ The types and function discussed in this section are built into the IOTA framewo ```move module iota::table { -struct Table has key, store { /* ... */ } +public struct Table has key, store { /* ... */ } public fun new( ctx: &mut TxContext, @@ -33,7 +33,7 @@ See `iota::object_table::ObjectTable` for the object-preserving version of `Tabl ```move module iota::bag { -struct Bag has key, store { /* ... */ } +public struct Bag has key, store { /* ... */ } public fun new(ctx: &mut TxContext): Bag; diff --git a/docs/content/developer/iota-101/objects/events.mdx b/docs/content/developer/iota-101/objects/events.mdx index 56cc5437917..6071def626c 100644 --- a/docs/content/developer/iota-101/objects/events.mdx +++ b/docs/content/developer/iota-101/objects/events.mdx @@ -22,12 +22,12 @@ module examples::donuts_with_events { const ENotEnough: u64 = 0; /// Capability that grants an owner the right to collect profits. - struct ShopOwnerCap has key { id: UID } + public struct ShopOwnerCap has key { id: UID } /// A purchasable Donut. For simplicity's sake we ignore implementation. - struct Donut has key { id: UID } + public struct Donut has key { id: UID } - struct DonutShop has key { + public struct DonutShop has key { id: UID, price: u64, balance: Balance @@ -36,12 +36,12 @@ module examples::donuts_with_events { // ====== Events ====== /// For when someone has purchased a donut. - struct DonutBought has copy, drop { + public struct DonutBought has copy, drop { id: ID } /// For when DonutShop owner has collected profits. - struct ProfitsCollected has copy, drop { + public struct ProfitsCollected has copy, drop { amount: u64 } diff --git a/docs/content/developer/iota-101/objects/object-model.mdx b/docs/content/developer/iota-101/objects/object-model.mdx index 633295d663a..bdc129b3ce3 100644 --- a/docs/content/developer/iota-101/objects/object-model.mdx +++ b/docs/content/developer/iota-101/objects/object-model.mdx @@ -1,12 +1,12 @@ --- title: Object Model -description: Everything on the IOTA blockchain is an object, with metadata, type of ownership, and a referencing scheme. +description: Everything on the Iota blockchain is an object, with metadata, type of ownership, and a referencing scheme. --- -The basic unit of storage in IOTA is the object. In contrast to many other blockchains where storage is centered around accounts containing key-value stores, IOTA's storage is centered around objects addressable on-chain by unique IDs. A smart contract is an object (called a IOTA Move package), and these smart contracts manipulate objects on the IOTA network: +The basic unit of storage in Iota is the object. In contrast to many other blockchains where storage is centered around accounts containing key-value stores, Iota's storage is centered around objects addressable on-chain by unique IDs. A smart contract is an object (called a Iota Move package), and these smart contracts manipulate objects on the Iota network: -- IOTA Move Package: a set of IOTA Move bytecode modules. Each module has a name that's unique within the containing package. The combination of the package's on-chain ID and the name of a module uniquely identify the module. When you publish smart contracts to IOTA, a package is the unit of publishing. After you publish a package object, it is immutable and can never be changed or removed. A package object can depend on other package objects that were previously published to IOTA. -- IOTA Move Object: typed data governed by a particular IOTA Move module from a IOTA Move package. Each object value is a struct with fields that can contain primitive types (such as integers and addresses), other objects, and non-object structs. +- Iota Move Package: a set of Iota Move bytecode modules. Each module has a name that's unique within the containing package. The combination of the package's on-chain ID and the name of a module uniquely identify the module. When you publish smart contracts to Iota, a package is the unit of publishing. After you publish a package object, it can be only upgraded with the right permissions. A package object can depend on other package objects that were previously published to Iota. +- Iota Move Object: typed data governed by a particular Iota Move module from a Iota Move package. Each object value is a struct with fields that can contain primitive types (such as integers and addresses), other objects, and non-object structs. ## Object metadata @@ -31,17 +31,17 @@ There are a few different ways to concisely refer to an object without specifyin ## The transaction-object DAG: Relating objects and transactions -Transactions take objects as input, read/write/mutate these inputs, and produce mutated or freshly created objects as output. Each object knows the (hash of the) last transaction that produced it as an output. Thus, a natural way to represent the relationship between objects and transactions is a directed acyclic graph (DAG) where: +Transactions take objects as input, read/write/mutate these inputs, and produce mutated or newly created objects as output. Each object knows the (hash of the) last transaction that produced it as an output. Thus, a natural way to represent the relationship between objects and transactions is a directed acyclic graph (DAG) where: - Nodes are transactions. - Directed edges go from transaction `A` to transaction `B` if an output object of `A` is an input object of `B`. They are labeled by the reference of the object in question (which specifies the exact version of the object created by `A` and used by `B`). The root of this DAG is a genesis transaction that takes no inputs and produces the objects that exist in the system's initial state. The DAG can be extended by identifying mutable transaction outputs that have not yet been consumed by any committed transaction and sending a new transaction that takes these outputs (and optionally, immutable transaction outputs) as inputs. -The set of objects that are available to be taken as input by a transaction are the live objects, and the global state maintained by IOTA consists of the totality of such objects. The live objects for a particular IOTA address A are all objects owned by A, along with all shared and immutable objects in the system. +The set of objects that are available to be taken as input by a transaction are the live objects, and the global state maintained by Iota consists of the totality of such objects. The live objects for a particular Iota address A are all objects owned by A, along with all shared and immutable objects in the system. When this DAG contains all committed transactions in the system, it forms a complete (and cryptographically auditable) view of the system's state and history. In addition, you can use the scheme above to construct a DAG of the relevant history for a subset of transactions or objects (for example, the objects owned by a single address). ## Limits on transactions, objects, and data -IOTA has some limits on transactions and data used in transactions, such as a maximum size and number of objects used. \ No newline at end of file +Iota has some limits on transactions and data used in transactions, such as a maximum size and number of objects used. \ No newline at end of file diff --git a/docs/content/developer/iota-101/objects/object-ownership/address-owned.mdx b/docs/content/developer/iota-101/objects/object-ownership/address-owned.mdx index 44d03a761da..60154e29ee9 100644 --- a/docs/content/developer/iota-101/objects/object-ownership/address-owned.mdx +++ b/docs/content/developer/iota-101/objects/object-ownership/address-owned.mdx @@ -1,6 +1,6 @@ --- title: Address-Owned Objects -description: Address-owned objects are owned by a IOTA 32-byte address, which can either be an account address or an object ID. Learn how to create and access these objects. +description: Address-owned objects are owned by a Iota 32-byte address, which can either be an account address or an object ID. Learn how to create and access these objects. --- An address-owned object is owned by a specific 32-byte address that is either an account address (derived from a particular signature scheme) or an object ID. An address-owned object is accessible only to its owner and no others. @@ -22,7 +22,7 @@ After you declare an object as address-owned, its ownership can change over the ## Accessing address-owned objects -You can access address-owned objects in two different ways, depending on whether or not the address owner of the object corresponds to an object ID. +You can access address-owned objects in two different ways, depending on whether the address owner of the object corresponds to an object ID. If the address owner of the object corresponds to an object ID, then you must access and dynamically authenticate it during the execution of the transaction using the mechanisms defined in [Transfer to Object](../transfers/transfer-to-object.mdx). @@ -30,7 +30,7 @@ If the address owner of the object is a signature-derived address (an account ad ## When to use address-owned objects -Use address-owned objects in cases where you want or need only a single owner for the object at any point in time. When designing, you should generally prefer address-owned objects over shared objects as address-owned objects whenever it is reasonable or possible to do so. Owned objects do not need to be sequenced through consensus, and are therefore less prone to throughput bottlenecks if the object is being used extensively. +Use address-owned objects in cases where you want or need only a single owner for the object at any point in time. When designing, you should generally prefer address-owned objects to shared objects as address-owned objects whenever it is reasonable or possible to do so. Owned objects do not need to be sequenced through consensus, and are therefore less prone to throughput bottlenecks if the object is being used extensively. ## Example diff --git a/docs/content/developer/iota-101/objects/object-ownership/immutable.mdx b/docs/content/developer/iota-101/objects/object-ownership/immutable.mdx index da8363f28f0..f0321a1e5e2 100644 --- a/docs/content/developer/iota-101/objects/object-ownership/immutable.mdx +++ b/docs/content/developer/iota-101/objects/object-ownership/immutable.mdx @@ -2,7 +2,7 @@ title: Immutable Objects --- -Objects in IOTA can have different types of ownership, with two broad categories: immutable objects and mutable objects. An immutable object is an object that can't be mutated, transferred, or deleted. Immutable objects have no owner, so anyone can use them. +Objects in Iota can have different types of ownership, with two broad categories: immutable objects and mutable objects. An immutable object is an object that can't be mutated, transferred, or deleted. Immutable objects have no owner, so anyone can use them. ## Create immutable object @@ -43,8 +43,8 @@ This function creates a new `ColorObject` and immediately makes it immutable bef ## Use immutable object -After an object becomes immutable, the rules of who can use this object in IOTA Move calls change: -You can only pass an immutable object as a read-only, immutable reference to IOTA Move entry functions as `&T`. +After an object becomes immutable, the rules of who can use this object in Iota Move calls change: +You can only pass an immutable object as a read-only, immutable reference to Iota Move entry functions as `&T`. Anyone can use immutable objects. @@ -123,7 +123,7 @@ export ADDR=`iota client active-address` iota client objects $ADDR ``` -Publish the `ColorObject` code on-chain using the IOTA Client CLI: +Publish the `ColorObject` code on-chain using the Iota Client CLI: ```shell iota client publish $ROOT/examples/move/color_object --gas-budget diff --git a/docs/content/developer/iota-101/objects/object-ownership/object-ownership.mdx b/docs/content/developer/iota-101/objects/object-ownership/object-ownership.mdx index 9653e1a0127..4f450b040c8 100644 --- a/docs/content/developer/iota-101/objects/object-ownership/object-ownership.mdx +++ b/docs/content/developer/iota-101/objects/object-ownership/object-ownership.mdx @@ -12,7 +12,7 @@ Go to [Address-Owned Objects](address-owned.mdx). ## Dynamic fields -Dynamic fields and dynamic object fields on IOTA are added and removed dynamically, affect gas only when accessed, and store heterogeneous values. +Dynamic fields and dynamic object fields on Iota are added and removed dynamically, affect gas only when accessed, and store heterogeneous values. Go to [Dynamic (Object) Fields](../dynamic-fields/dynamic-fields.mdx). diff --git a/docs/content/developer/iota-101/objects/object-ownership/shared.mdx b/docs/content/developer/iota-101/objects/object-ownership/shared.mdx index 1d5a73ddd01..3eb3895f0ab 100644 --- a/docs/content/developer/iota-101/objects/object-ownership/shared.mdx +++ b/docs/content/developer/iota-101/objects/object-ownership/shared.mdx @@ -1,6 +1,6 @@ --- title: Shared Objects -description: Anyone can access shared objects on the IOTA network, so care must be taken to secure access, if needed. +description: Anyone can access shared objects on the Iota network, so care must be taken to secure access, if needed. --- A shared object is an object that is shared using the `iota::transfer::share_object` function and is accessible to everyone. Unlike owned objects, anyone can access shared ones on the network. Extended functionality and accessibility of this kind of objects requires additional effort by securing access, if needed. @@ -24,13 +24,13 @@ module examples::donuts { const ENotEnough: u64 = 0; /// Capability that grants an owner the right to collect profits. - struct ShopOwnerCap has key { id: UID } + public struct ShopOwnerCap has key { id: UID } /// A purchasable Donut. For simplicity's sake we ignore implementation. - struct Donut has key { id: UID } + public struct Donut has key { id: UID } /// A shared object. `key` ability is required. - struct DonutShop has key { + public struct DonutShop has key { id: UID, price: u64, balance: Balance diff --git a/docs/content/developer/iota-101/objects/object-ownership/wrapped.mdx b/docs/content/developer/iota-101/objects/object-ownership/wrapped.mdx index 586e8be6ac1..cc6eb0bdd4f 100644 --- a/docs/content/developer/iota-101/objects/object-ownership/wrapped.mdx +++ b/docs/content/developer/iota-101/objects/object-ownership/wrapped.mdx @@ -5,49 +5,49 @@ title: Wrapped Objects In many programming languages, you organize data structures in layers by nesting complex data structures in another data structure. In Move, you can organize data structures by putting a field of `struct` type in another, like the following: ```move -struct Foo has key { +public struct Foo has key { id: UID, bar: Bar, } -struct Bar has store { +public struct Bar has store { value: u64, } ``` -To embed a struct type in a IOTA object struct (with a `key` ability), the struct type must have the `store` ability. +To embed a struct type in an object struct (with a `key` ability), the struct type must have the `store` ability. -In the preceding example, `Bar` is a normal struct, but it is not a IOTA object since it doesn't have the `key` ability. +In the preceding example, `Bar` is a normal struct, but it is not an object since it doesn't have the `key` ability. The following code turns `Bar` into an object, which you can still wrap in `Foo`: ```move -struct Bar has key, store { +public struct Bar has key, store { id: UID, value: u64, } ``` -Now `Bar` is also a IOTA object type. If you put a IOTA object of type `Bar` into a IOTA object of type `Foo`, the object type `Foo` wraps the object type `Bar`. The object type `Foo` is the wrapper or wrapping object. +Now `Bar` is also an object type. If you put an object of type `Bar` into an object of type `Foo`, the object type `Foo` wraps the object type `Bar`. The object type `Foo` is the wrapper or wrapping object. -There are some interesting consequences of wrapping a IOTA object into another. When an object is wrapped, the object no longer exists independently on-chain. You can no longer look up the object by its ID. The object becomes part of the data of the object that wraps it. Most importantly, you can no longer pass the wrapped object as an argument in any way in IOTA Move calls. The only access point is through the wrapping object. +There are some interesting consequences of wrapping an object into another. When an object is wrapped, the object no longer exists independently on-chain. You can no longer look up the object by its ID. The object becomes part of the data of the object that wraps it. Most importantly, you can no longer pass the wrapped object as an argument in any way in Iota Move calls. The only access point is through the wrapping object. It is not possible to create circular wrapping behavior, where A wraps B, B wraps C, and C also wraps A. At some point, you can then take out the wrapped object and transfer it to an address, modify it, delete it, or freeze it. This is called **unwrapping**. When an object is **unwrapped**, it becomes an independent object again, and can be accessed directly on-chain. There is also an important property about wrapping and unwrapping: the object's ID stays the same across wrapping and unwrapping. -There are a few ways to wrap a IOTA object into another IOTA object, and their use cases are typically different. This section describes three different ways to wrap a IOTA object with typical use cases. +There are a few ways to wrap an object into another object, and their use cases are typically different. This section describes three different ways to wrap an object with typical use cases. ### Direct wrapping -If you put a IOTA object type directly as a field in another IOTA object type (as in the preceding example), it is called _direct wrapping_. The most important property achieved through direct wrapping is that the wrapped object cannot be unwrapped unless the wrapping object is destroyed. In the preceding example, to make `Bar` a standalone object again, unpack (and hence delete) the `Foo` object. Direct wrapping is the best way to implement object locking, which is to lock an object with constrained access. You can unlock it only through specific contract calls. +If you put an object type directly as a field in another object type (as in the preceding example), it is called _direct wrapping_. The most important property achieved through direct wrapping is that the wrapped object cannot be unwrapped unless the wrapping object is destroyed. In the preceding example, to make `Bar` a standalone object again, unpack (and hence delete) the `Foo` object. Direct wrapping is the best way to implement object locking, which is to lock an object with constrained access. You can unlock it only through specific contract calls. The following example implementation of a trusted swap demonstrates how to use direct wrapping. Assume there is an NFT-style `Object` type that has `scarcity` and `style`. In this example, `scarcity` determines how rare the object is (presumably the more scarce the higher its market value), and `style` determines the object content/type or how it's rendered. If you own some of these objects and want to trade your objects with others, you want to make sure it's a fair trade. You are willing to trade an object only with another one that has identical `scarcity`, but want a different `style` (so that you can collect more styles). First, define such an object type: ```move -struct Object has key, store { +public struct Object has key, store { id: UID, scarcity: u8, style: u8, @@ -63,14 +63,14 @@ public fun new(scarcity: u8, style: u8, ctx: &mut TxContext): Object { ``` -You can also enable a swap/trade between your object and others' objects. For example, define a function that takes two objects from two addresses and swaps their ownership. But this doesn't work in IOTA. Only object owners can send a transaction to mutate the object. So one person cannot send a transaction that would swap their own object with someone else's object. +You can also enable a swap/trade between your object and others' objects. For example, define a function that takes two objects from two addresses and swaps their ownership. But this doesn't work in Iota. Only object owners can send a transaction to mutate the object. So one person cannot send a transaction that would swap their own object with someone else's object. -Another common solution is to send your object to a pool - such as an NFT marketplace or a staking pool - and perform the swap in the pool (either right away, or later when there is demand). Other chapters explore the concept of shared objects that can be mutated by anyone, and show how it enables anyone to operate in a shared object pool. This chapter focuses on how to achieve the same effect using owned objects. Transactions using only owned objects are faster and less expensive (in terms of gas) than using shared objects, since they do not require consensus in IOTA. +Another common solution is to send your object to a pool - such as an NFT marketplace or a staking pool - and perform the swap in the pool (either right away, or later when there is demand). Other chapters explore the concept of shared objects that can be mutated by anyone, and show how it enables anyone to operate in a shared object pool. This chapter focuses on how to achieve the same effect using owned objects. Transactions using only owned objects are faster and less expensive (in terms of gas) than using shared objects, since they do not require consensus in Iota. To swap objects, the same address must own both objects. Anyone who wants to swap their object can send their objects to the third party, such as a site that offers swapping services, and the third party helps perform the swap and send the objects to the appropriate owner. To ensure that you retain custody of your objects (such as coins and NFTs) and not give full custody to the third party, use direct wrapping. To define a wrapper object type: ```move -struct SwapRequest has key { +public struct SwapRequest has key { id: UID, owner: address, object: Object, @@ -78,7 +78,7 @@ struct SwapRequest has key { } ``` -`SwapRequest` defines a IOTA object type, wraps the `object` to swap, and tracks the original `owner` of the object. You might need to also pay the third party some fee for this swap. To define an interface to request a swap by someone who owns an `Object`: +`SwapRequest` defines an object type, wraps the `object` to swap, and tracks the original `owner` of the object. You might need to also pay the third party some fee for this swap. To define an interface to request a swap by someone who owns an `Object`: ```move public fun request_swap( @@ -101,7 +101,7 @@ public fun request_swap( ``` -In the preceding function, you must pass the object by value so that it's fully consumed and wrapped into `SwapRequest` to request swapping an `object`. The example also provides a fee (in the type of `Coin`) and checks that the fee is sufficient. The example turns `Coin` into `Balance` when it's put into the `wrapper` object. This is because `Coin` is a IOTA object type and used only to pass around as IOTA objects (such as transaction inputs or objects sent to addresses). For coin balances that need to be embedded in other structs, use `Balance` instead because to avoid the overhead of carrying around an unnecessary `UID` field. +In the preceding function, you must pass the object by value so that it's fully consumed and wrapped into `SwapRequest` to request swapping an `object`. The example also provides a fee (in the type of `Coin`) and checks that the fee is sufficient. The example turns `Coin` into `Balance` when it's put into the `wrapper` object. This is because `Coin` is an object type and used only to pass around as objects (such as transaction inputs or objects sent to addresses). For coin balances that need to be embedded in other structs, use `Balance` instead because to avoid the overhead of carrying around an unnecessary `UID` field. The wrapper object is then sent to the service operator, with the address specified in the call as `service`. @@ -158,12 +158,12 @@ To view a more complex example of how to use direct wrapping, see the [escrow](h ### Wrapping through `Option` -When IOTA object type `Bar` is directly wrapped into `Foo`, there is not much flexibility: a `Foo` object must have a `Bar` object in it, and to take out the `Bar` object you must destroy the `Foo` object. However, for more flexibility, the wrapping type might not always have the wrapped object in it, and the wrapped object might be replaced with a different object at some point. +When object type `Bar` is directly wrapped into `Foo`, there is not much flexibility: a `Foo` object must have a `Bar` object in it, and to take out the `Bar` object you must destroy the `Foo` object. However, for more flexibility, the wrapping type might not always have the wrapped object in it, and the wrapped object might be replaced with a different object at some point. To demonstrate this use case, design a simple game character: A warrior with a sword and shield. A warrior might have a sword and shield, or might not have either. The warrior should be able to add a sword and shield, and replace the current ones at any time. To design this, define a `SimpleWarrior` type: ```move -struct SimpleWarrior has key { +public struct SimpleWarrior has key { id: UID, sword: Option, shield: Option, @@ -173,12 +173,12 @@ struct SimpleWarrior has key { Each `SimpleWarrior` type has an optional `sword` and `shield` wrapped in it, defined as: ```move -struct Sword has key, store { +public struct Sword has key, store { id: UID, strength: u8, } -struct Shield has key, store { +public struct Shield has key, store { id: UID, armor: u8, } @@ -211,7 +211,7 @@ public fun equip_sword(warrior: &mut SimpleWarrior, sword: Sword, ctx: &mut TxCo The function in the preceding example passes a `warrior` as a mutable reference of `SimpleWarrior`, and passes a `sword` by value to wrap it into the `warrior`. -Note that because `Sword` is a IOTA object type without `drop` ability, if the warrior already has a sword equipped, the warrior can't drop that sword. If you call `option::fill` without first checking and taking out the existing sword, an error occurs. In `equip_sword`, first check whether there is already a sword equipped. If so, remove it out and send it back to the sender. To a player, this returns an equipped sword to their inventory when they equip the new sword. +Note that because `Sword` is an object type without `drop` ability, if the warrior already has a sword equipped, the warrior can't drop that sword. If you call `option::fill` without first checking and taking out the existing sword, an error occurs. In `equip_sword`, first check whether there is already a sword equipped. If so, remove it out and send it back to the sender. To a player, this returns an equipped sword to their inventory when they equip the new sword. Find the source code in the [simple_warrior](https://github.com/iotaledger/iota/tree/main/examples/move/simple_warrior) example. @@ -219,17 +219,17 @@ To view a more complex example, see [hero](https://github.com/iotaledger/iota/tr ### Wrapping through `vector` -The concept of wrapping objects in a vector field of another IOTA object is very similar to wrapping through `Option`: an object can contain 0, 1, or many of the wrapped objects of the same type. +The concept of wrapping objects in a vector field of another object is very similar to wrapping through `Option`: an object can contain 0, 1, or many of the wrapped objects of the same type. Wrapping through vector resembles: ```move -struct Pet has key, store { +public struct Pet has key, store { id: UID, cuteness: u64, } -struct Farm has key { +public struct Farm has key { id: UID, pets: vector, } diff --git a/docs/content/developer/iota-101/objects/transfers/custom-rules.mdx b/docs/content/developer/iota-101/objects/transfers/custom-rules.mdx index 2baa9d1e343..bc56fb18475 100644 --- a/docs/content/developer/iota-101/objects/transfers/custom-rules.mdx +++ b/docs/content/developer/iota-101/objects/transfers/custom-rules.mdx @@ -1,14 +1,14 @@ --- title: Custom Transfer Rules -description: Custom transfer rules enable you to define a set of rules that must be met before IOTA considers a transfer operation valid. +description: Custom transfer rules enable you to define a set of rules that must be met before Iota considers a transfer operation valid. --- -Every IOTA object must have the `key` ability. The `store` ability, on the other hand, is an optional ability you can add to IOTA objects. Objects with the `store` ability: +Every Iota object must have the `key` ability. The `store` ability, on the other hand, is an optional ability you can add to Iota objects. Objects with the `store` ability: - are transferable by anyone using the `iota::transfer::public_transfer` function; and - are able to be wrapped in other objects. -Importantly for custom transfer rules, if the IOTA object `O` does not have the `store` ability, you cannot call the `iota::transfer::public_transfer` function to transfer it. The Move module that defines `O` is the only entity that can transfer objects of that type using the `iota::transfer::transfer` function. Consequently, the module that defines the object `O` can define a custom transfer function for `O` that can take any number of arguments, and enforce any restrictions desired for performing a transfer operation (for example, a fee must be paid in order to transfer the object). +Importantly for custom transfer rules, if the Iota object `O` does not have the `store` ability, you cannot call the `iota::transfer::public_transfer` function to transfer it. The Move module that defines `O` is the only entity that can transfer objects of that type using the `iota::transfer::transfer` function. Consequently, the module that defines the object `O` can define a custom transfer function for `O` that can take any number of arguments, and enforce any restrictions desired for performing a transfer operation (for example, a fee must be paid in order to transfer the object). ## The store ability and transfer rules @@ -16,10 +16,10 @@ Custom transfer rules for objects enable you to define the transfer conditions t ## Example -This example creates an object type `O` that is transferrable only if the `unlocked` flag inside of it is set to `true`: +This example creates an object type `O` that is transferable only if the `unlocked` flag inside of it is set to `true`: ```move -struct O has key { +public struct O has key { id: UID, // An `O` object can only be transferred if this field is `true` unlocked: bool @@ -33,7 +33,7 @@ module examples::custom_transfer { // Error code for trying to transfer a locked object const EObjectLocked: u64 = 0; - struct O has key { + public struct O has key { id: UID, // An `O` object can only be transferred if this field is `true` unlocked: bool diff --git a/docs/content/developer/iota-101/objects/transfers/transfer-to-object.mdx b/docs/content/developer/iota-101/objects/transfers/transfer-to-object.mdx index 778558705fa..23662dee4c0 100644 --- a/docs/content/developer/iota-101/objects/transfers/transfer-to-object.mdx +++ b/docs/content/developer/iota-101/objects/transfers/transfer-to-object.mdx @@ -1,9 +1,9 @@ --- title: Transfer to Object -description: On IOTA, you can transfer objects to objects in the same way you can transfer objects to addresses. +description: On Iota, you can transfer objects to objects in the same way you can transfer objects to addresses. --- -You can transfer objects to an object ID in the same way you transfer objects to an address, using the same functions. This is because IOTA does not distinguish between the 32-byte ID of an address and the 32-byte ID of an object (which are guaranteed not to overlap). The transfer to object operation takes advantage of this feature, allowing you to provide an object ID as the address input of a transfer operation. +You can transfer objects to an object ID in the same way you transfer objects to an address, using the same functions. This is because Iota does not distinguish between the 32-byte ID of an address and the 32-byte ID of an object (which are guaranteed not to overlap). The transfer to object operation takes advantage of this feature, allowing you to provide an object ID as the address input of a transfer operation. Because of the identical ID structure, you can use an object ID for the address field when transferring an object. In fact, all functionality around address-owned objects works the same for objects owned by other objects, you just replace the address with the object ID. @@ -66,18 +66,18 @@ Transferring an object to an object ID results in the same result as if you tran After an object `c` has been sent to another object `p`, `p` must then receive `c` to do anything with it. To receive the object `c`, a `Receiving(o: ObjectRef)` argument type for programmable transaction blocks (PTBs) is used that takes an object reference containing the to-be-received object's `ObjectID`, `Version`, and `Digest` (just as owned object arguments for PTBs do). However, `Receiving` PTB arguments are not passed as an owned value or mutable reference within the transaction. -To explain further, look at the core of the receiving interface in Move, which is defined in the `iota::transfer` module in the IOTA framework: +To explain further, look at the core of the receiving interface in Move, which is defined in the `iota::transfer` module in the Iota framework: ```move module iota::transfer { /// Represents the ability to receive an object of type `T`. Cannot be stored. - struct Receiving has drop { ... } + public struct Receiving has drop { ... } /// Given mutable (i.e., locked) access to the `parent` and a `Receiving` /// object referencing an object owned by `parent` use the `Receiving` ticket /// and return the corresponding object. /// - /// This function has custom rules that the IOTA Move bytecode verifier enforces to ensure + /// This function has custom rules that the Iota Move bytecode verifier enforces to ensure /// that `T` is an object defined in the module where `receive` is invoked. Use /// `public_receive` to receive an object with `store` outside of its defining module. /// @@ -105,7 +105,7 @@ Because `iota::transfer::Receiving` has only the `drop` ability, the existence o ## Custom receiving rules -Just like with [custom transfer policies](custom-rules.mdx), IOTA allows for the definition of custom receivership rules for `key`-only objects. In particular, you can use the `iota::transfer::receive` function only on objects defined in the same module as the call to `iota::transfer::receive`--just like you can use the `iota::transfer::transfer` function only on objects defined in the module where it's being used. +Just like with [custom transfer policies](custom-rules.mdx), Iota allows for the definition of custom receivership rules for `key`-only objects. In particular, you can use the `iota::transfer::receive` function only on objects defined in the same module as the call to `iota::transfer::receive`--just like you can use the `iota::transfer::transfer` function only on objects defined in the module where it's being used. Similarly for objects that also have the `store` ability, anyone can use the `iota::transfer::public_receive` function to receive them--just like `iota::transfer::public_transfer` can transfer any objects that have the `store` ability on them. @@ -120,7 +120,7 @@ Just like with custom transfer policies, you can use and couple these restrictio ## Using SDKs -When creating transactions, you interact with `Receiving` transaction inputs almost exactly as you would with other object arguments in the IOTA TypeScript SDK. For example, if in the [Simple Account](#simple-account) example that follows you want to send a transaction that receives a coin object with ID `0xc0ffee` that was sent to your account at `0xcafe`, you can do the following using either the IOTA TypeScript SDK or IOTA Rust SDK: +When creating transactions, you interact with `Receiving` transaction inputs almost exactly as you would with other object arguments in the Iota TypeScript SDK. For example, if in the [Simple Account](#simple-account) example that follows you want to send a transaction that receives a coin object with ID `0xc0ffee` that was sent to your account at `0xcafe`, you can do the following using either the Iota TypeScript SDK or Iota Rust SDK: @@ -154,8 +154,8 @@ client "accept_payment", vec!["0x2::iota::IOTA"], vec![ - IOTAJsonValue::from_object_id("0xcafe"), - IOTAJsonValue::from_object_id("0xc0ffee") // 0xcoffee is turned into the `Receiving<...>` argument of `accept_payment` by the SDK + IotaJsonValue::from_object_id("0xcafe"), + IotaJsonValue::from_object_id("0xc0ffee") // 0xcoffee is turned into the `Receiving<...>` argument of `accept_payment` by the SDK ]) ... ``` @@ -184,7 +184,7 @@ module examples::shared_object_auth { const EAccessDenied: u64 = 0; const AuthorizedReceiverAddr: address = @0xB0B; - struct SharedObject has key { + public struct SharedObject has key { id: object::UID, counter: u64, } @@ -229,12 +229,12 @@ module examples::account { /// Account object that `Coin`s can be sent to. Balances of different types /// are held as dynamic fields indexed by the `Coin` type's `type_name`. - struct Account has key { + public struct Account has key { id: object::UID, } /// Dynamic field key representing a balance of a particular coin type. - struct AccountBalance has copy, drop, store { } + public struct AccountBalance has copy, drop, store { } /// This function will receive a coin sent to the `Account` object and then /// join it to the balance for each coin type. @@ -291,7 +291,7 @@ module examples::soul_bound { /// This object has `key` only -- if this had `store` we would not be /// able to ensure it is bound to whatever address we sent it to - struct SoulBound has key { + public struct SoulBound has key { id: UID, } @@ -300,7 +300,7 @@ module examples::soul_bound { /// execute the transaction you need to destroy this `ReturnReceipt` and /// the only way to do that is to transfer it back to the same object you /// received it from in the transaction using the `return_object` function. - struct ReturnReceipt { + public struct ReturnReceipt { // The object ID of the object that needs to be returned. // This field is required to prevent swapping of soul bound objects if // multiple are present in the same transaction. diff --git a/docs/content/developer/iota-101/objects/transfers/transfers.mdx b/docs/content/developer/iota-101/objects/transfers/transfers.mdx index 7bde653527b..23559e94fd3 100644 --- a/docs/content/developer/iota-101/objects/transfers/transfers.mdx +++ b/docs/content/developer/iota-101/objects/transfers/transfers.mdx @@ -2,16 +2,16 @@ title: Transfers --- -Everything on IOTA is an object and your smart contracts are inevitably going to need to move those objects around the network, transferring them from one owner to another. The topics in this section explore the options you have on IOTA around transferring objects on the network. +Everything on Iota is an object and your smart contracts are inevitably going to need to move those objects around the network, transferring them from one owner to another. The topics in this section explore the options you have on Iota around transferring objects on the network. ## Custom Transfer Rules -On IOTA, you can create custom transfer rules for objects that define the conditions that must be met for a valid transfer operation. The object you want to create custom transfer rules for cannot have the `store` ability, as that ability enables unrestricted transfers for the type via `iota::transfer::public_transfer` or the `TransferObjects` transaction command. +On Iota, you can create custom transfer rules for objects that define the conditions that must be met for a valid transfer operation. The object you want to create custom transfer rules for cannot have the `store` ability, as that ability enables unrestricted transfers for the type via `iota::transfer::public_transfer` or the `TransferObjects` transaction command. Go to [Custom Transfer Rules](custom-rules.mdx). ## Transfer to Object -On IOTA, you are not limited to only transferring objects to an address. You can transfer an object to another object, where the receiving object provides access control to the received object. +On Iota, you are not limited to only transferring objects to an address. You can transfer an object to another object, where the receiving object provides access control to the received object. Go to [Transfer to Object](transfer-to-object.mdx). \ No newline at end of file diff --git a/docs/content/developer/iota-101/objects/versioning.mdx b/docs/content/developer/iota-101/objects/versioning.mdx index f72edad07c6..4f8a429d76a 100644 --- a/docs/content/developer/iota-101/objects/versioning.mdx +++ b/docs/content/developer/iota-101/objects/versioning.mdx @@ -1,6 +1,6 @@ --- title: Object and Package Versioning -description: Versioning provides the ability to upgrade packages and objects on the IOTA network. +description: Versioning provides the ability to upgrade packages and objects on the Iota network. --- You reference every object stored on chain by an ID and version. When a transaction modifies an object, it writes the new contents to an on-chain reference with the same ID but a later version. This means that a single object (with ID `I`) might appear in multiple entries in the distributed store: @@ -17,7 +17,7 @@ Versions are strictly increasing and (ID, version) pairs are never re-used. This ## Move objects -IOTA uses [Lamport timestamps](https://en.wikipedia.org/wiki/Lamport_timestamp) in its versioning algorithm for objects. The use of Lamport timestamps guarantees that versions never get re-used as the new version for objects touched by a transaction is one greater than the latest version among all input objects to the transaction. For example, a transaction transferring an object `O` at version 5 using a gas object `G` at version 3 updates both `O` and `G` versions to `1 + max(5, 3) = 6` (version 6). +Iota uses [Lamport timestamps](https://en.wikipedia.org/wiki/Lamport_timestamp) in its versioning algorithm for objects. The use of Lamport timestamps guarantees that versions never get re-used as the new version for objects touched by a transaction is one greater than the latest version among all input objects to the transaction. For example, a transaction transferring an object `O` at version 5 using a gas object `G` at version 3 updates both `O` and `G` versions to `1 + max(5, 3) = 6` (version 6). The following sections detail the relevance of Lamport versions for maintaining the "no (ID, version) re-use" invariant or for accessing an object as a transaction input changes depending on that object's ownership. @@ -53,12 +53,12 @@ module example::wrapped { use iota::transfer; use iota::tx_context::{Self, TxContext}; - struct Inner has key, store { + public struct Inner has key, store { id: UID, x: u64, } - struct Outer has key { + public struct Outer has key { id: UID, inner: Inner, } @@ -130,7 +130,7 @@ One distinction dynamic fields have to wrapped objects is that if a transaction Adding a new dynamic field to a parent object also creates a `Field` object, responsible for associating the field name and value with that parent. Unlike other newly created objects, the ID for the resulting instance of `Field` is not created using `iota::object::new`. Instead, it is computed as a hash of the parent object ID and the type and value of the field name, so that you can use it to look-up the `Field` via its parent and name. -When you remove a field, IOTA deletes its associated `Field`, and if you add a new field with the same name, IOTA creates a new instance with the same ID. Versioning using Lamport timestamps, coupled with dynamic fields being only accessible through their parent object, ensures that (ID, version) pairs are not reused in the process: +When you remove a field, Iota deletes its associated `Field`, and if you add a new field with the same name, Iota creates a new instance with the same ID. Versioning using Lamport timestamps, coupled with dynamic fields being only accessible through their parent object, ensures that (ID, version) pairs are not reused in the process: - The transaction that deletes the original field increments the parent's version to be greater than the deleted field's version. - The transaction that creates the new version of the same field creates the field with a version that is greater than the parent's version. @@ -143,7 +143,7 @@ Move packages are also versioned and stored on chain, but follow a different ver ### User packages -Every time you publish or upgrade a package, IOTA generates a new ID. A newly published package has its version set to 1, whereas an upgraded package's version is one greater than the package it is upgrading. Unlike objects, older versions of a package remain accessible even after being upgraded. For example, imagine a package `P` that is published and upgraded twice. It might be represented in the store as: +Every time you publish or upgrade a package, Iota generates a new ID. A newly published package has its version set to 1, whereas an upgraded package's version is one greater than the package it is upgrading. Unlike objects, older versions of a package remain accessible even after being upgraded. For example, imagine a package `P` that is published and upgraded twice. It might be represented in the store as: ``` (0x17fb7f87e48622257725f584949beac81539a3f4ff864317ad90357c37d82605, 1) => P v1 @@ -157,6 +157,7 @@ In this example, all three versions of the same package are at different IDs. Th Framework packages (such as the Move standard library at `0x1`,the IOTA Framework at `0x2`, and IOTA System at `0x3`) are a special-case because their IDs must remain stable across upgrades. The network can upgrade framework packages while preserving their IDs via a system transaction, but can only perform this operation on epoch boundaries because they are considered immutable like other packages. New versions of framework packages retain the same ID as their predecessor, but increment their version by one: + ``` (0x1, 1) => MoveStdlib v1 (0x1, 2) => MoveStdlib v2 @@ -167,7 +168,7 @@ The prior example shows the on-chain representation of the first three versions ### Package versions -IOTA smart contracts are organized into upgradeable packages and, as a result, multiple versions of any given package can exist on chain. Before someone can use an on-chain package, you must publish its first, original version. When you upgrade a package, you create a new version of that package. Each upgrade of a package is based on the immediately preceding version of that package in the versions history. In other words, you can upgrade the `nth` version of a package from only the `nth - 1` version. For example, you can upgrade a package from version 1 to 2, but afterwards you can upgrade that package only from version 2 to 3; you're not allowed to upgrade from version 1 to 3. +Iota smart contracts are organized into upgradeable packages and, as a result, multiple versions of any given package can exist on chain. Before someone can use an on-chain package, you must publish its first, original version. When you upgrade a package, you create a new version of that package. Each upgrade of a package is based on the immediately preceding version of that package in the versions history. In other words, you can upgrade the `nth` version of a package from only the `nth - 1` version. For example, you can upgrade a package from version 1 to 2, but afterwards you can upgrade that package only from version 2 to 3; you're not allowed to upgrade from version 1 to 3. There is a notion of versioning in package manifest files, existing in both the package section and in the dependencies section. For example, consider the manifest code that follows: diff --git a/docs/content/developer/iota-101/transactions/gas-smashing.mdx b/docs/content/developer/iota-101/transactions/gas-smashing.mdx index 193d44f8111..72caf06945d 100644 --- a/docs/content/developer/iota-101/transactions/gas-smashing.mdx +++ b/docs/content/developer/iota-101/transactions/gas-smashing.mdx @@ -1,17 +1,17 @@ --- title: Gas Smashing -description: IOTA optimizes coin management by combining multiple coins into a single object to pay for gas fees. +description: Iota optimizes coin management by combining multiple coins into a single object to pay for gas fees. --- -Every transaction on IOTA has a gas fee associated with its execution that must be paid to successfully execute the transaction. Gas smashing enables you to pay for this gas fee using multiple coins instead of just one. This mechanism is especially helpful in scenarios where you might have a number of coins with smaller denominations, or if you simply want to minimize the number of IOTA coins under your account. Gas smashing is generally a useful tool for coin management, especially when coupled with the `GasCoin` programmable transaction block (PTB) argument. +Every transaction on Iota has a gas fee associated with its execution that must be paid to successfully execute the transaction. Gas smashing enables you to pay for this gas fee using multiple coins instead of just one. This mechanism is especially helpful in scenarios where you might have a number of coins with smaller denominations, or if you simply want to minimize the number of IOTA coins under your account. Gas smashing is generally a useful tool for coin management, especially when coupled with the `GasCoin` programmable transaction block (PTB) argument. ## Smashing gas -Gas smashing happens automatically in a transaction if you provide multiple coins to pay for the gas fee. When IOTA executes a transaction, IOTA combines, or "smashes", all of the coins you provide to pay for the gas into a single coin. The smashing occurs regardless of coin amounts or the gas budget provided with the transaction (as long as it is within the minimum and maximum gas budgets). IOTA deducts the gas fee from the single coin regardless of the execution status of the transaction. In particular, this means that even if the transaction fails to execute for some reason (such as an execution error) the coins that you provided as gas coins remain smashed after the transaction's execution. +Gas smashing happens automatically in a transaction if you provide multiple coins to pay for the gas fee. When Iota executes a transaction, Iota combines, or "smashes", all of the coins you provide to pay for the gas into a single coin. The smashing occurs regardless of coin amounts or the gas budget provided with the transaction (as long as it is within the minimum and maximum gas budgets). Iota deducts the gas fee from the single coin regardless of the execution status of the transaction. In particular, this means that even if the transaction fails to execute for some reason (such as an execution error) the coins that you provided as gas coins remain smashed after the transaction's execution. -Gas smashing is an efficient way to perform coin management, and to combine many smaller coins into one single coin that you can use to not only pay for gas fees, but also for other operations in the transaction that smashes the coins. In particular, you can use gas smashing to combine multiple coins to pay for the gas fee of the PTB, and then that same PTB can withdraw from the `GasCoin`. A special argument is available in PTBs that references the coin used to pay gas after IOTA deducts the gas fee from it, which you can use to transfer the remaining IOTA to another address. Because gas smashing happens automatically in a transaction if you provide multiple gas coins, you can combine multiple coins as part of other transactions to perform coin management in parallel with non-coin-management specific transactions. +Gas smashing is an efficient way to perform coin management, and to combine many smaller coins into one single coin that you can use to not only pay for gas fees, but also for other operations in the transaction that smashes the coins. In particular, you can use gas smashing to combine multiple coins to pay for the gas fee of the PTB, and then that same PTB can withdraw from the `GasCoin`. A special argument is available in PTBs that references the coin used to pay gas after Iota deducts the gas fee from it, which you can use to transfer the remaining IOTA to another address. Because gas smashing happens automatically in a transaction if you provide multiple gas coins, you can combine multiple coins as part of other transactions to perform coin management in parallel with non-coin-management specific transactions. -IOTA has a maximum of 256 coins that you can smash in a single PTB - the transaction is not processed if the number of gas coins exceeds this amount. Additionally, when you smash gas coins, IOTA deletes all but the first coin. Because of this, there is often a storage rebate associated with the deletion of these coins. As with other storage rebates, you can't use the resulting refund to pay for the gas fee of the transaction (and isn't credited to the coin until after the execution of the transaction), but it might result in a refund after the execution of the transaction. This refund, along with the remaining balance after the transaction's gas fee, resides in the first gas coin you provide in the transaction after execution. +Iota has a maximum of 256 coins that you can smash in a single PTB - the transaction is not processed if the number of gas coins exceeds this amount. Additionally, when you smash gas coins, IOTA deletes all but the first coin. Because of this, there is often a storage rebate associated with the deletion of these coins. As with other storage rebates, you can't use the resulting refund to pay for the gas fee of the transaction (and isn't credited to the coin until after the execution of the transaction), but it might result in a refund after the execution of the transaction. This refund, along with the remaining balance after the transaction's gas fee, resides in the first gas coin you provide in the transaction after execution. ## Running out of gas with a refund diff --git a/docs/content/developer/iota-101/transactions/ptb/prog-txn-blocks.mdx b/docs/content/developer/iota-101/transactions/ptb/prog-txn-blocks.mdx index 844f3f9b656..273e545c093 100644 --- a/docs/content/developer/iota-101/transactions/ptb/prog-txn-blocks.mdx +++ b/docs/content/developer/iota-101/transactions/ptb/prog-txn-blocks.mdx @@ -1,15 +1,15 @@ --- title: Programmable Transaction Blocks -description: Programmable transaction blocks are a group of commands that complete a transaction on IOTA. +description: Programmable transaction blocks are a group of commands that complete a transaction on Iota. --- -On IOTA, a transaction is more than a basic record of the flow of assets. Transactions on IOTA are composed of a number of commands that execute on inputs to define the result of the transaction. Termed programmable transaction blocks (PTBs), these groups of commands define all user transactions on IOTA. PTBs allow a user to call multiple Move functions, manage their objects, and manage their coins in a single transaction--without publishing a new Move package. Designed with automation and transaction builders in mind, PTBs are a lightweight and flexible way of generating transactions. More intricate programming patterns, such as loops, are not supported, however, and in those cases you must publish a new Move package. +On Iota, a transaction is more than a basic record of the flow of assets. Transactions on Iota are composed of a number of commands that execute on inputs to define the result of the transaction. Termed programmable transaction blocks (PTBs), these groups of commands define all user transactions on Iota. PTBs allow a user to call multiple Move functions, manage their objects, and manage their coins in a single transaction--without publishing a new Move package. Designed with automation and transaction builders in mind, PTBs are a lightweight and flexible way of generating transactions. More intricate programming patterns, such as loops, are not supported, however, and in those cases you must publish a new Move package. As mentioned, each PTB is comprised of individual transaction commands (sometimes referred to simply as transactions or commands). Each transaction command executes in order, and you can use the results from one transaction command in any subsequent transaction command. The effects, specifically object modifications or transfers, of all transaction commands in a block are applied atomically at the end of the transaction. If one transaction command fails, the entire block fails and no effects from the commands are applied. A PTB can perform up to 1,024 unique operations in a single execution, whereas transactions on traditional blockchains would require 1,024 individual executions to accomplish the same result. The structure also promotes cheaper gas fees. The cost of facilitating individual transactions is always more than the cost of those same transactions blocked together in a PTB. -The remainder of this topic covers the semantics of the execution of the transaction commands. It assumes familiarity with the IOTA object model and the Move language. For more information on those topics, see the following documents: +The remainder of this topic covers the semantics of the execution of the transaction commands. It assumes familiarity with the Iota object model and the Move language. For more information on those topics, see the following documents: - [Object model](../../objects/object-model.mdx) - [Move Concepts](../../iota-move-concepts/iota-move-concepts.mdx) @@ -44,7 +44,7 @@ The inputs and results can be seen as populating an array of values. For inputs, ### Inputs -Input arguments to a PTB are broadly categorized as either objects or pure values. The direct implementation of these arguments is often obscured by transaction builders or SDKs. This section describes information or data the IOTA network needs when specifying the list of inputs, `[Input]`. Each `Input` is either an object, `Input::Object(ObjectArg)`, which contains the necessary metadata to specify to object being used, or a pure value, `Input::Pure(PureArg)`, which contains the bytes of the value. +Input arguments to a PTB are broadly categorized as either objects or pure values. The direct implementation of these arguments is often obscured by transaction builders or SDKs. This section describes information or data the Iota network needs when specifying the list of inputs, `[Input]`. Each `Input` is either an object, `Input::Object(ObjectArg)`, which contains the necessary metadata to specify to object being used, or a pure value, `Input::Pure(PureArg)`, which contains the bytes of the value. For object inputs, the metadata needed differs depending on the type of [ownership of the object](../../objects/object-ownership/object-ownership.mdx). The data for the `ObjectArg` enum follows: @@ -115,7 +115,7 @@ Each transaction command is then executed in order. First, examine the rules aro You can use each argument by-reference or by-value. The usage is based on the type of the argument and the type signature of the command. - If the signature expects an `&mut T`, the runtime checks the argument has type `T` and it is then mutably borrowed. - If the signature expects an `&T`, the runtime checks the argument has type `T` and it is then immutably borrowed. - - If the signature expects a `T`, the runtime checks the argument has type `T` and it is copied if `T: copy` and moved otherwise. No object in IOTA has `copy` because the unique ID field `iota::object::UID` present in all objects does not have the `copy` ability. + - If the signature expects a `T`, the runtime checks the argument has type `T` and it is copied if `T: copy` and moved otherwise. No object in Iota has `copy` because the unique ID field `iota::object::UID` present in all objects does not have the `copy` ability. The transaction fails if an argument is used in any form after being moved. There is no way to restore an argument to its position (its input or result index) after it is moved. @@ -237,7 +237,7 @@ For results, the following checks are performed: Any remaining IOTA deducted from the gas coin at the beginning of execution is returned to the coin, even if the owner has changed. In other words, the maximum possible gas is deducted at the beginning of execution, and then the unused gas is returned at the end of execution (all in IOTA). Because you can take the gas coin only by-value with `TransferObjects`, it will not have been wrapped or deleted. -The total effects (which contain the created, mutated, and deleted objects) are then passed out of the execution layer and are applied by the IOTA network. +The total effects (which contain the created, mutated, and deleted objects) are then passed out of the execution layer and are applied by the Iota network. ## Example diff --git a/docs/content/developer/iota-101/transactions/sign-and-send-txn.mdx b/docs/content/developer/iota-101/transactions/sign-and-send-txn.mdx index 5b3224d2fcd..79b9613e71b 100644 --- a/docs/content/developer/iota-101/transactions/sign-and-send-txn.mdx +++ b/docs/content/developer/iota-101/transactions/sign-and-send-txn.mdx @@ -8,9 +8,9 @@ Inputs can either be an object reference (either to an owned object, an immutabl The signature is provided with the private key owned by the wallet, and its public key must be consistent with the transaction sender's IOTA address. -IOTA uses a `IOTAKeyPair` to produce the signature, which commits to the Blake2b hash digest of the intent message (`intent || bcs bytes of tx_data`). The signature schemes currently supported are `Ed25519 Pure`, `ECDSA Secp256k1`, `ECDSA Secp256r1`, `Multisig`, and `zkLogin`. +IOTA uses a `IOTAKeyPair` to produce the signature, which commits to the Blake2b hash digest of the intent message (`intent || bcs bytes of tx_data`). The signature schemes currently supported are `Ed25519 Pure`, `ECDSA Secp256k1`, `ECDSA Secp256r1` and `Multisig`. -You can instantiate `Ed25519 Pure`, `ECDSA Secp256k1`, and `ECDSA Secp256r1` using `IOTAKeyPair` and use it to sign transactions. Note that this guide does not apply to `Multisig` and `zkLogin`, please refer to their own pages ([Multisig](../../cryptography/explanations/transaction-auth/multisig.mdx) and [zkLogin](https://docs.iota.io../cryptography/explanations/zklogin) respectively) for instructions. +You can instantiate `Ed25519 Pure`, `ECDSA Secp256k1`, and `ECDSA Secp256r1` using `IOTAKeyPair` and use it to sign transactions. Note that this guide does not apply to `Multisig`, please refer to it's [own page](../../cryptography/explanations/transaction-auth/multisig.mdx) for instructions. With a signature and the transaction bytes, a transaction can be submitted to be executed. @@ -255,7 +255,6 @@ iota client execute-signed-tx --tx-bytes $TX_BYTES --signatures $SERIALIZED_SIGN ### Notes 1. This guide demonstrates how to sign with a single private key. Refer to [Multisig](../../cryptography/explanations/transaction-auth/multisig.mdx) when it is preferred to set up more complex signing policies. -2. Similarly, native zkLogin does not follow the above steps, see [the docs](../../cryptography/explanations/zklogin.mdx) to understand how to derive a zkLogin address, and produce a zkLogin signature with an ephemeral key pair. -3. If you decide to implement your own signing mechanisms instead of using the previous tools, see the [Signatures](../../cryptography/explanations/transaction-auth/signatures.mdx) doc on the accepted signature specifications for each scheme. -4. Flag is one byte that differentiates signature schemes. See supported schemes and its flag in [Signatures](../../cryptography/explanations/transaction-auth/signatures.mdx). -5. The `execute_transaction_block` endpoint takes a list of signatures, so it should contain exactly one user signature, unless you are using sponsored transaction that a second signature for the gas object can be provided. See [Sponsored Transactions](sponsored-transactions.mdx) for more information. +2. If you decide to implement your own signing mechanisms instead of using the previous tools, see the [Signatures](../../cryptography/explanations/transaction-auth/signatures.mdx) doc on the accepted signature specifications for each scheme. +3. Flag is one byte that differentiates signature schemes. See supported schemes and its flag in [Signatures](../../cryptography/explanations/transaction-auth/signatures.mdx). +4. The `execute_transaction_block` endpoint takes a list of signatures, so it should contain exactly one user signature, unless you are using sponsored transaction that a second signature for the gas object can be provided. See [Sponsored Transactions](sponsored-transactions.mdx) for more information. diff --git a/docs/content/developer/iota-101/transactions/sponsored-transactions.mdx b/docs/content/developer/iota-101/transactions/sponsored-transactions.mdx index 259832978cf..e4c203b9014 100644 --- a/docs/content/developer/iota-101/transactions/sponsored-transactions.mdx +++ b/docs/content/developer/iota-101/transactions/sponsored-transactions.mdx @@ -2,18 +2,18 @@ title: Sponsored Transactions --- -A IOTA sponsored transaction is one where a IOTA address (the sponsor's) pays the gas fees for a transaction that another address (the user's) initializes. You can use sponsored transactions to cover the fees for users on your site or app so that they don't get charged for them. This removes a significant obstacle that web 2.0 users encounter when entering web3, as they often have to purchase tokens to perform a transaction on chain. For example, you could sponsor gamers' early transactions to increase conversion rates. +An Iota sponsored transaction is one where an Iota address (the sponsor's) pays the gas fees for a transaction that another address (the user's) initializes. You can use sponsored transactions to cover the fees for users on your site or app so that they don't get charged for them. This removes a significant obstacle that web 2.0 users encounter when entering web3, as they often have to purchase tokens to perform a transaction on chain. For example, you could sponsor gamers' early transactions to increase conversion rates. Sponsored transactions also facilitate asset management as you don't need to maintain multiple accounts with IOTA tokens to transfer funds. -You can use IOTA sponsored transactions to: +You can use Iota sponsored transactions to: - Sponsor (pay gas fees for) a transaction a user initiates. - Sponsor transactions you initiate as the sponsor. - Provide a wildcard `GasData` object to users. The object covers the gas fees for a user transaction. The `GasData` object covers any fee amount determined for the transaction as long as the budget is sufficient. ## Potential risks using sponsored transactions -The most significant potential risk when using sponsored transactions is [equivocation](/references/iota-glossary.mdx#equivocation). In some cases under certain conditions, a sponsored transaction can result in all associated owned objects, including gas in a locked state when examined by IOTA validators. To avoid double spending, validators lock objects as they validate transactions. An equivocation occurs when an owned object's pair (`ObjectID`, `SequenceNumber`) is concurrently used in multiple non-finalized transactions. +The most significant potential risk when using sponsored transactions is [equivocation](/references/iota-glossary.mdx#equivocation). In some cases under certain conditions, a sponsored transaction can result in all associated owned objects, including gas in a locked state when examined by Iota validators. To avoid double spending, validators lock objects as they validate transactions. An equivocation occurs when an owned object's pair (`ObjectID`, `SequenceNumber`) is concurrently used in multiple non-finalized transactions. To equivocate, either the user or the sponsor signs and submits another transaction that attempts to manipulate an owned object in the original transaction. Because only the object owner can use an owned object, only the user and sponsor can cause this condition. @@ -25,7 +25,7 @@ A user-initiated sponsored transaction involves the following steps: 1. The user sends `GasLessTransactionData` to the sponsor. 1. The sponsor validates the transaction, constructs `TransactionData` with gas fees, and then signs `TransactionData`. 1. The sponsor sends the signed `TransactionData` and the sponsor `Signature` back to the user. - 1. The user verifies and then signs `TransactionData` and sends the dual-signed transaction to IOTA network through a Full node or the sponsor. + 1. The user verifies and then signs `TransactionData` and sends the dual-signed transaction to Iota network through a Full node or the sponsor. ### GasLessTransactionData @@ -36,7 +36,7 @@ The following example constructs a `GasLessTransactionData` object. ```rust pub struct GasLessTransactionData { pub kind: TransactionKind, - sender: IOTAAddress, + sender: IotaAddress, … } ``` @@ -46,7 +46,7 @@ pub struct GasLessTransactionData { A sponsor-initiated sponsored transaction involves the following steps: 1. A sponsor constructs a `TransactionData` object that contains the transaction details and associated gas fee data. The sponsor signs it to generate a `Signature` before sending it to a user. You can send the unsigned `TransactionData` via email, SMS, or an application interface. 1. The user checks the transaction and signs it to generate the second `Signature` for the transaction. - 1. The user submits the dual-signed transaction to a IOTA Full node or sponsor to execute it. + 1. The user submits the dual-signed transaction to a Iota Full node or sponsor to execute it. You can use a sponsor-initiated sponsored transaction as an advertiser, or to incentivize specific user actions without requiring the user to pay for gas fees. @@ -61,9 +61,9 @@ To use a `GasData` object to sponsor the gas fees for a transaction, create a `G 1. The sponsor confirms the `TransactionData` and then signs it. 1. The sponsor submits the dual-signed `TransactionData` to a Full node to execute the transaction. -## Create a IOTA gas station +## Create an Iota gas station -On IOTA, a gas station is a concept to describe where you set up processes to sponsor user transactions. You can customize a IOTA gas station to support the specific user-facing functionality you need. Some example use cases for a IOTA gas station include: +On Iota, a gas station is a concept to describe where you set up processes to sponsor user transactions. You can customize a Iota gas station to support the specific user-facing functionality you need. Some example use cases for a IOTA gas station include: - Monitor real-time gas prices on the network to determine the gas price that the station provides. - Track usage of gas provided to users on the network. @@ -80,9 +80,9 @@ Depending on the nature of your gas station, you can apply different authorizati For all gas objects that you provide as a sponsor, you should track if users ever try to equivocate and lock objects. If you detect such behavior, block the user or requester accordingly. -## Code examples to create a IOTA gas station +## Code examples to create a Iota gas station -The following Rust SDK code examples demonstrate how to implement a IOTA gas station that supports each of the sponsored transaction types described previously. +The following Rust SDK code examples demonstrate how to implement a Iota gas station that supports each of the sponsored transaction types described previously. ### User-initiated sponsored transactions @@ -118,14 +118,14 @@ For user and sponsor-initiated transactions, users can submit the dual-signed tr ## Sponsored transaction data structure -The following code block describes the `TransactionData` structure for sponsored transactions and `GasObject`. You can view the [source code](https://github.com/iotaledger/iota/blob/main/crates/iota-types/src/messages.rs) in the IOTA GitHub repository. +The following code block describes the `TransactionData` structure for sponsored transactions and `GasObject`. You can view the [source code](https://github.com/iotaledger/iota/blob/main/crates/iota-types/src/messages.rs) in the Iota GitHub repository. **`TransactionData` Structure** ```rust #[derive(Debug, PartialEq, Eq, Hash, Clone, Serialize, Deserialize)] pub struct TransactionData { pub kind: TransactionKind, - pub sender: IOTAAddress, + pub sender: IotaAddress, pub gas_data: GasData, } ``` @@ -135,10 +135,10 @@ pub struct TransactionData { #[derive(Debug, PartialEq, Eq, Hash, Clone, Serialize, Deserialize)] pub struct GasData { pub payment: ObjectRef, - pub owner: IOTAAddress, + pub owner: IotaAddress, pub price: u64, pub budget: u64, } ``` -To learn more about transactions in IOTA, see [Transactions](transactions.mdx). +To learn more about transactions in Iota, see [Transactions](transactions.mdx). diff --git a/docs/content/developer/iota-101/transactions/transactions.mdx b/docs/content/developer/iota-101/transactions/transactions.mdx index 48d05e1468a..58c474a46d8 100644 --- a/docs/content/developer/iota-101/transactions/transactions.mdx +++ b/docs/content/developer/iota-101/transactions/transactions.mdx @@ -2,27 +2,27 @@ title: Transactions --- -All updates to the IOTA database happen via transactions. This topic describes the transaction types supported by IOTA and explains how their execution changes the ledger. There are only two kinds of transactions on IOTA: +All updates to the Iota database happen via transactions. This topic describes the transaction types supported by Iota and explains how their execution changes the ledger. ´There are only two kinds of transactions on Iota: - Programmable transaction blocks, which anyone can submit on the network. For information on these transactions, see [Programmable Transaction Blocks](ptb/prog-txn-blocks.mdx). - System transactions, which only validators can directly submit and are responsible for keeping the network running (changing epochs, starting checkpoints, and so on). ## Transaction metadata -All IOTA transactions have the following common metadata: +All Iota transactions have the following common metadata: - **Sender address:** The [address](../../getting-started/get-address.mdx) of the user sending this transaction. -- **Gas input:** An object reference pointing to the object that will be used to pay for this transaction's execution and storage. This object must be owned by the user and must be of type `iota::coin::Coin` (i.e., the IOTA native currency). +- **Gas input:** An object reference pointing to the object that will be used to pay for this transaction's execution and storage. This object must be owned by the user and must be of type `iota::coin::Coin` (i.e., the Iota native currency). - **Gas price:** An unsigned integer specifying the number of native tokens per gas unit this transaction will pay. The gas price must always be nonzero. - **Maximum gas budget:** The maximum number of gas units that can be expended by executing this transaction. If this budget is exceeded, transaction execution will abort and have no effects other than debiting the gas input object. Consequently, the gas input object must have a value higher than the gas price multiplied by the max gas, and this product is the maximum amount that the gas input object will be debited for the transaction. -- **Epoch:** The IOTA epoch this transaction is intended for. +- **Epoch:** The Iota epoch this transaction is intended for. - **Type:** A call, publish, or native transaction and its type-specific-data (see below). - **Authenticator:** A cryptographic signature and a public key that both verifies against the signature and is cryptographically committed to by the sender address. - **Expiration:** An epoch reference that sets a deadline after which validators will no longer consider the transaction valid. The optional expiration epoch reference enables users to define transactions that either execute and commit by a set time (current epoch less than or equal to expiration epoch), or never execute after the deadline passes. By default, there is no deadline for when a transaction must execute. ## Transactions flow - example -Here's an example showing how objects and transactions are connected to each other in IOTA. +Here's an example showing how objects and transactions are connected to each other in Iota. In the following example there are two objects: - Object A is a coin of type IOTA with a total balance of 5 IOTA @@ -59,4 +59,4 @@ flowchart LR ## Limits on transactions, objects, and data -IOTA has some limits on transactions and the data used in them, such as a maximum size and number of objects used. You can find the these limits in the [`iota-protocol-config` crate](https://github.com/iotaledger/iota/blob/main/crates/iota-protocol-config/src/lib.rs) of the IOTA repo. The limits are defined in the `ProtocolConfig` struct and values set in the `get_for_version_impl` function. +Iota has some limits on transactions and the data used in them, such as a maximum size and number of objects used. You can find the these limits in the [`iota-protocol-config` crate](https://github.com/iotaledger/iota/blob/main/crates/iota-protocol-config/src/lib.rs) of the Iota repo. The limits are defined in the `ProtocolConfig` struct and values set in the `get_for_version_impl` function. diff --git a/docs/content/sidebars/about-iota.js b/docs/content/sidebars/about-iota.js index 987107f8cc6..487764ae823 100644 --- a/docs/content/sidebars/about-iota.js +++ b/docs/content/sidebars/about-iota.js @@ -45,8 +45,6 @@ const aboutIota = [ 'about-iota/tokenomics/validators-staking', 'about-iota/tokenomics/staking-unstaking', 'about-iota/tokenomics/iota-coin', - 'about-iota/tokenomics/iota-bridging', - 'about-iota/tokenomics/storage-fund', 'about-iota/tokenomics/gas-pricing', 'about-iota/tokenomics/gas-in-iota', ], diff --git a/docs/content/sidebars/developer.js b/docs/content/sidebars/developer.js index 98b81a4ab14..8f894090efe 100644 --- a/docs/content/sidebars/developer.js +++ b/docs/content/sidebars/developer.js @@ -224,15 +224,6 @@ const developer = [ 'developer/cryptography/explanations/transaction-auth/intent-signing', ], }, - { - type: 'category', - label: 'zkLogin', - link: { - type: 'doc', - id: 'developer/cryptography/explanations/zklogin', - }, - items: ['developer/cryptography/explanations/zklogin/zklogin-example'], - }, 'developer/cryptography/explanations/system/checkpoint-verification', ], },