From 607b6e3e203759b324864954dfc8818119ce4cb0 Mon Sep 17 00:00:00 2001 From: 0xZensh Date: Fri, 28 Jun 2024 09:14:56 +0800 Subject: [PATCH 1/9] Update Dogecoin Integration --- docs/developer-docs/multi-chain/supported-chains.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer-docs/multi-chain/supported-chains.mdx b/docs/developer-docs/multi-chain/supported-chains.mdx index adf21da63d..58b2f94fe0 100644 --- a/docs/developer-docs/multi-chain/supported-chains.mdx +++ b/docs/developer-docs/multi-chain/supported-chains.mdx @@ -76,7 +76,7 @@ but they are supported in the same way as Ethereum through the EVM RPC canister. | Bitcoin | [ECDSA, Schnorr](/docs/current/developer-docs/multi-chain/bitcoin/using-btc/generate-addresses) | Direct | [ckBTC](/docs/developer-docs/multi-chain/chain-key-tokens/ckbtc/overview.mdx) | | | Cardano | [ECDSA, EdDSA, Schnorr ](https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0049/) | [RPC via HTTPS outcalls](/docs/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview.mdx) | | | Cosmos | [ECDSA, EdDSA](https://docs.cosmos.network/v0.50/learn/beginner/accounts) | [RPC via HTTPS outcalls](docs/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview.mdx) | | -| Dogecoin | ECDSA | [RPC via HTTPS outcalls](docs/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview.mdx) | | +| Dogecoin | ECDSA | [CK-Doge Canister](https://github.com/ldclabs/ck-doge) | | | Ethereum | [ECDSA](/docs/current/developer-docs/multi-chain/ethereum/using-eth/generating-addresses) | [EVM RPC](/docs/developer-docs/multi-chain/ethereum/evm-rpc/overview.mdx), [ic-web3-rs](https://github.com/horizonx-tech/ic-web3-rs) | [ckETH](/docs/developer-docs/multi-chain/chain-key-tokens/cketh/overview.mdx), [ckERC20](/docs/developer-docs/multi-chain/chain-key-tokens/ckerc20/overview.mdx) | | Filecoin | [ECDSA](https://spec.filecoin.io/algorithms/crypto/signatures/)| [RPC via HTTPS outcalls](/docs/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview.mdx) | | | Hedera | [ECDSA, EdDSA](https://docs.hedera.com/hedera/core-concepts/keys-and-signatures)| [RPC via HTTPS outcalls](/docs/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview.mdx) | | From a4e7d2e7890d91d5d11c01f2fd61d3fcef8b796a Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Fri, 28 Jun 2024 09:32:12 -0500 Subject: [PATCH 2/9] Add tooltips to Digital Assets docs --- .../converting_icp_tokens_into_cycles.mdx | 4 +- .../defi/cycles/cycles-ledger.mdx | 8 +- .../defi/cycles/cycles-wallet.mdx | 4 +- .../defi/exchange-rate-canister.mdx | 2 +- .../defi/icp-tokens/account-trimming.mdx | 5 +- .../defi/nfts/nft-collections.mdx | 7 +- docs/developer-docs/defi/nfts/overview.mdx | 3 +- docs/developer-docs/defi/overview.mdx | 7 +- .../defi/token_integrations/index.mdx | 10 +- docs/developer-docs/defi/tokens/create.mdx | 7 +- docs/developer-docs/defi/tokens/indexes.mdx | 8 +- .../defi/tokens/token-standards.mdx | 10 +- sidebars.js | 273 +++++++++--------- static/glossary.txt | 3 +- submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 22 files changed, 193 insertions(+), 174 deletions(-) diff --git a/docs/developer-docs/defi/cycles/converting_icp_tokens_into_cycles.mdx b/docs/developer-docs/defi/cycles/converting_icp_tokens_into_cycles.mdx index 4f5080bd87..536c727e0b 100644 --- a/docs/developer-docs/defi/cycles/converting_icp_tokens_into_cycles.mdx +++ b/docs/developer-docs/defi/cycles/converting_icp_tokens_into_cycles.mdx @@ -18,7 +18,7 @@ To convert ICP tokens into cycles, you first dfx ledger account-id ``` -This will display your account number on the ICP ledger. It looks similar to this: +This will display your account number on the ICP ledger. It looks similar to this: ``` e213184a548871a47fb526f3cba24e2ee2fbbc8129c4ab497ef2ce535130a0a4 @@ -28,7 +28,7 @@ e213184a548871a47fb526f3cba24e2ee2fbbc8129c4ab497ef2ce535130a0a4 There are a few different ways you might acquire ICP tokens. For example, you might: -- Purchase ICP tokens directly through an exchange that lists ICP tokens available for trade. To see all available places to purchase ICP tokens, check out this [page](https://coinmarketcap.com/currencies/internet-computer/markets/). +- Purchase ICP tokens directly through an exchange that lists ICP tokens available for trade. [See all available places to purchase ICP tokens](https://coinmarketcap.com/currencies/internet-computer/markets/). - Receive tokens as rewards for participating in the governance of the Internet Computer. diff --git a/docs/developer-docs/defi/cycles/cycles-ledger.mdx b/docs/developer-docs/defi/cycles/cycles-ledger.mdx index b6edcca39d..5d2ec72b51 100644 --- a/docs/developer-docs/defi/cycles/cycles-ledger.mdx +++ b/docs/developer-docs/defi/cycles/cycles-ledger.mdx @@ -13,15 +13,15 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; When developing and deploying canisters on the Internet Computer, developers need to have cycles to pay for the resources used by their canisters. The **cycles ledger** canister has been developed as an alternative to the **cycles wallet** canister for cycles management. -The biggest difference between the cycles ledger and cycles wallet is that the cycles ledger is a single global ledger canister, whereas the cycles wallet canister must be deployed separately for every developer to be used. Additionally, the cycles wallet has some downsides that the cycles ledger remedies. Some of these are: +The biggest difference between the cycles ledger and cycles wallet is that the cycles ledger is a single global ledger canister, whereas the cycles wallet canister must be deployed separately for every developer to be used. Additionally, the cycles wallet has some downsides that the cycles ledger remedies. Some of these are: -- Cycles wallets are a complex solution to associate cycles with principal IDs. +- Cycles wallets are a complex solution to associate cycles with principal IDs. - Cycles wallets consume cycles themselves, meaning developers need to pay cycles to store cycles. - If a cycles wallet canister ID is lost, the cycles in that cycles wallet canister are also lost. In short, the cycles ledger simplifies cycle management by providing the ability for principal IDs to hold cycles. -The cycles ledger currently complies with the ICRC-1, ICRC-2, and ICRC-3 standards. In addition to standard ledger functionality, the cycles ledger also interacts with the NNS canisters and user canisters to provide cycles ledger-specific functions, such as: +The cycles ledger currently complies with the ICRC-1, ICRC-2, and ICRC-3 standards. In addition to standard ledger functionality, the cycles ledger also interacts with the NNS canisters and user canisters to provide cycles ledger-specific functions, such as: - Accepting incoming cycles sent from other canisters. - Sending cycles to other canisters. @@ -152,7 +152,7 @@ Replace `CANISTER_NAME` with a name for the new canister. With these two commands, there are two **optional** flags that can be used: -- `dfx create canister CANISTER_NAME --next-to CANISTER_ID:` The new canister will be installed on the same subnet as the canister provided. +- `dfx create canister CANISTER_NAME --next-to CANISTER_ID:` The new canister will be installed on the same subnet as the canister provided. - `dfx create canister CANISTER_NAME --subnet SUBNET_ID`: The new canister will be installed on the given subnet. If no flag is specified and there aren't any canisters that exist in the project, a random subnet is used. diff --git a/docs/developer-docs/defi/cycles/cycles-wallet.mdx b/docs/developer-docs/defi/cycles/cycles-wallet.mdx index ebb91ebb5f..9d531ab8fd 100644 --- a/docs/developer-docs/defi/cycles/cycles-wallet.mdx +++ b/docs/developer-docs/defi/cycles/cycles-wallet.mdx @@ -16,10 +16,10 @@ As discussed in [tokens and cycles](/docs/current/concepts/tokens-cycles), ICP t Unlike ICP tokens, cycles are only associated with canisters and not with user or developer principals. Because only canisters require cycles to perform operations and pay for the resources they use, users and developers can manage the distribution and ownership of cycles through a special type of canister called a **cycles wallet**. :::caution -Please note that the cycles wallet will be removed from dfx in a future release. We recommend using the cycles ledger feature instead, which simplifies the cycles management workflow. +Please note that the cycles wallet will be removed from dfx in a future release. We recommend using the [cycles ledger](cycles-ledger.mdx) feature instead, which simplifies the cycles management workflow. ::: -The cycles wallet holds the cycles required to perform operations such as creating new canisters. These operations are executed using the canister principal of the cycles wallet instead of your user principal. +The cycles wallet holds the cycles required to perform operations such as creating new canisters. These operations are executed using the canister principal of the cycles wallet instead of your user principal. For the purposes of using the local canister execution environment, the SDK automatically creates a default cycles wallet for you in every project and most of the operations performed using the cycles wallet happen behind the scenes. For example, the cycles wallet acts on your behalf to register canister principals and deploy canisters in the local canister execution environment. diff --git a/docs/developer-docs/defi/exchange-rate-canister.mdx b/docs/developer-docs/defi/exchange-rate-canister.mdx index 239a6e4a28..3d3e71bdf5 100644 --- a/docs/developer-docs/defi/exchange-rate-canister.mdx +++ b/docs/developer-docs/defi/exchange-rate-canister.mdx @@ -13,7 +13,7 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; The exchange rate canister, referred to as the XRC, is a canister that runs on the **uzr34 system subnet**. The XRC uses [HTTPS outcalls](https://internetcomputer.org/https-outcalls/) to fetch data from major cryptocurrency exchanges by using the exchange's public API to retrieve real time or historical cryptocurrency pricing information. The XRC also queries the public APIs for foreign exchange data providers around the world periodically in order to get forex rates. -The XRC canister can be used by dapps such as decentralized exchanges (DEXs) to provide functionality such as comparing exchange rates against market rates to determine the value of assets that are held in a canister smart contract. For example, the cycle minting canister of the NNS uses the XRC to obtain the current ICP/XDR exchange rates, which it requires for the conversion of ICP to cycles. +The XRC canister can be used by dapps such as decentralized exchanges (DEXs) to provide functionality such as comparing exchange rates against market rates to determine the value of assets that are held in a canister smart contract. For example, the cycle minting canister of the NNS uses the XRC to obtain the current ICP/XDR exchange rates, which it requires for the conversion of ICP to cycles. The XRC provides this data in response to requests made by other canisters. A request made by another canister is composed of a base asset, a quote asset, and an optional UNIX epoch timestamp. diff --git a/docs/developer-docs/defi/icp-tokens/account-trimming.mdx b/docs/developer-docs/defi/icp-tokens/account-trimming.mdx index f6297625a7..8dbace8a12 100644 --- a/docs/developer-docs/defi/icp-tokens/account-trimming.mdx +++ b/docs/developer-docs/defi/icp-tokens/account-trimming.mdx @@ -2,15 +2,16 @@ keywords: [intermediate, tokens, concept, defi] --- - import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # Account trimming ## Overview -Even if the ledger can index a large number of accounts, it has a finite capacity. +Even if the ledger can index a large number of accounts, it has a finite capacity. To avoid saturation and maintain good performance, some accounts are trimmed if the ledger capacity is reaching a threshold. This mechanism prevents dust (i.e. accounts with balance too small to be spent) from accumulating in the ledger. diff --git a/docs/developer-docs/defi/nfts/nft-collections.mdx b/docs/developer-docs/defi/nfts/nft-collections.mdx index caae17c7fc..484aa0530c 100644 --- a/docs/developer-docs/defi/nfts/nft-collections.mdx +++ b/docs/developer-docs/defi/nfts/nft-collections.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, tutorial, nft collection, create an nft, icrc-7, icrc-3 --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # Creating an NFT collection @@ -41,7 +42,7 @@ git clone https://github.com/PanIndustrial-Org/icrc_nft.mo.git cd icrc_nft.mo ``` -### Step 2: Start the local replica. +### Step 2: Start the local replica. Start `dfx` with the command: @@ -51,7 +52,7 @@ dfx start --clean background ### Step 3: Create new local identities. -Create two new identities to be used with the NFT canister: `alice` and `icrc7_deployer`. The `alice` identity will be used to demonstrate the approve workflow, and `icrc7_deployer` will be used as the canister's admin controller. +Create two new identities to be used with the NFT canister: `alice` and `icrc7_deployer`. The `alice` identity will be used to demonstrate the approve workflow, and `icrc7_deployer` will be used as the canister's admin controller. ``` @@ -283,7 +284,7 @@ dfx canister call icrc7 icrc7_owner_of '(vec {0;1;2})' --query ) ``` -You can see that the canister's principal owns all of the minted tokens. To see if your admin principal is approved to spend tokens, make the following canister call: +You can see that the canister's principal owns all of the minted tokens. To see if your admin principal is approved to spend tokens, make the following canister call: ``` dfx canister call icrc7 icrc37_is_approved "(vec{record { spender=record {owner = principal \"$ADMIN_PRINCIPAL\"; subaccount = null;}; from_subaccount=null; token_id=0;}})" --query diff --git a/docs/developer-docs/defi/nfts/overview.mdx b/docs/developer-docs/defi/nfts/overview.mdx index 6b7edca25a..e983d4dab7 100644 --- a/docs/developer-docs/defi/nfts/overview.mdx +++ b/docs/developer-docs/defi/nfts/overview.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, concept, nfts] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # NFT overview @@ -20,7 +21,7 @@ NFTs are deployed on-chain using smart contracts to provide a transparent record - Recording documents such as education certificates or awards. -NFTs are created by recording the token's data on-chain through a process known as minting. On ICP, minting is done through a canister smart contract that defines the NFT's ownership, data, and metadata. It also enables the NFT to be sold or transferred to another account. +NFTs are created by recording the token's data on-chain through a process known as minting. On ICP, minting is done through a canister smart contract that defines the NFT's ownership, data, and metadata. It also enables the NFT to be sold or transferred to another account. Each NFT is assigned a unique identifier that is publicly accessible, along with the NFT's data, metadata, and transaction history. NFTs can be part of a large collection, such as '1 of 1_000', or they can be '1 of 1' tokens. '1 of 1' NFTs are often used for original art, education certificates, or property records, while '1 of 1_000' can be used to provide equal benefits to each NFT holder, such as membership to a website or tickets to an event. diff --git a/docs/developer-docs/defi/overview.mdx b/docs/developer-docs/defi/overview.mdx index 216b6a7e6b..0bd6817878 100644 --- a/docs/developer-docs/defi/overview.mdx +++ b/docs/developer-docs/defi/overview.mdx @@ -3,10 +3,11 @@ keywords: [intermediate, defi, overview, tokens, icrc-1, icrc ledger, icrc index --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # Digital assets overview - + A digital asset is an electronically-stored item that has value and can be owned, sold, traded, or transferred. @@ -18,7 +19,7 @@ Digital assets can take many forms, such as: On ICP, digital assets come in three primary forms: ICP tokens, ICRC tokens, and chain-key tokens. -ICP tokens are the network's native utility token. They are used for different actions on the network, such as being converted into [cycles](/docs/current/developer-docs/getting-started/cycles/overview) to pay for a canister's resources, or being staked in a neuron to receive voting power on the [NNS](/docs/current/developer-docs/daos/nns/overview). +ICP tokens are the network's native utility token. They are used for different actions on the network, such as being converted into [cycles](/docs/current/developer-docs/getting-started/cycles/overview) to pay for a canister's resources, or being staked in a neuron to receive voting power on the [NNS](/docs/current/developer-docs/daos/nns/overview). [ICRC](https://github.com/dfinity/ICRC) stands for `Internet Computer Request for Comments` and is a working group for various topics. ICRC standards can be created for anything, not just token types. Currently, the protocol supports the ICRC token standards ICRC-1, ICRC-2, ICRC-3, and ICRC-7, with several more in the process of being drafted and developed. @@ -30,7 +31,7 @@ Each token standard is elaborated on in the [token standards documentation](/doc ## Terminology -- **Principal**: An entity that can be authenticated by ICP. Principals are used to identify canisters, individuals, services, ledger accounts, or other components deployed on ICP. A principal can have multiple accounts because you can change the bytes of the subaccount. Principals are ICP's representation of a public key of a user. +- **Principal**: An entity that can be authenticated by ICP. Principals are used to identify canisters, individuals, services, ledger accounts, or other components deployed on ICP. A principal can have multiple accounts because you can change the bytes of the subaccount. Principals are ICP's representation of a public key of a user. - **Subaccount**: A optional 32-byte array. Together a principal and a subaccount form an account according to the ICRC-1 standard. diff --git a/docs/developer-docs/defi/token_integrations/index.mdx b/docs/developer-docs/defi/token_integrations/index.mdx index f76977a710..c928351a73 100644 --- a/docs/developer-docs/defi/token_integrations/index.mdx +++ b/docs/developer-docs/defi/token_integrations/index.mdx @@ -4,11 +4,11 @@ keywords: [intermediate, defi, overview, tokens, icrc-1, icrc ledger, token inte import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import '/src/components/CenterImages/center.scss'; - +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # Ledger integration options - + Developers have several options for integrating with the ICP or ICRC-1 ledgers. They can use either the ICRC Rosetta or ICP Rosetta implementations, which is commonly recommended, it might be useful for certain workflows to directly integrate with these ledgers. This section will describe what a direct integration means, how it can be achieved, and how it differs to using Rosetta. @@ -23,7 +23,7 @@ Tokens on ICP are managed by smart contracts. The ICP ledger canister manages th Smart contract tokens other than ICP, e.g. ckBTC or CHAT, follow the ICRC suite of standards (ICRC-1, ICRC-3, etc) and can be integrated in the similar manner as the main ICP token. For differences in detail, see below. ::: -:::Info +:::info Transactions that are executed by ICP are reported on the dashboard under the [Transactions panel](https://dashboard.internetcomputer.org/). This panel distinguishes between update and query calls. The ICP transactions, i.e. the transactions executed by the ICP ledger, appear on the dashboard under the [ICP tab](https://dashboard.internetcomputer.org/transactions). ::: @@ -66,9 +66,9 @@ To implement a direct integration, you will need to: - [Call a method of a canister](#http-call-overview): Calling canister methods is done by constructing a message which specifies among other things the canister, the method and its parameters, and submitting this message to the network. -- Make a call to a canister: To interact with a canister on the Internet Computer, an ingress message is constructed. This message specifies the target canister, the method to be invoked, and the call's payload. Additional parameters include an ingress expiration time, an optional nonce, and the caller's principal identifier. The API of most canisters, including token ledgers, are defined using a [Candid Interface Definition Language (IDL)](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/candid/candid-concepts). Calls can be executed either replicated, or non-replicated, depending on the endpoint where they are submitted. +- Make a call to a canister: To interact with a canister on the Internet Computer, an ingress message is constructed. This message specifies the target canister, the method to be invoked, and the call's payload. Additional parameters include an ingress expiration time, an optional nonce, and the caller's principal identifier. The API of most canisters, including token ledgers, are defined using a [Candid Interface Definition Language (IDL)](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/candid/candid-concepts). Calls can be executed either replicated, or non-replicated, depending on the endpoint where they are submitted. -- Read the result of a replicated call: The outcome of a replicated call's execution is temporarily stored in the public ingress history of the respective subnet. To access the result, a read state request is submitted, including the previously generated request ID. Given the asynchronous nature of this execution, results must be actively polled. Results are maintained in the ingress history for a brief period (5 minutes post-execution). Therefore, canisters may provide alternative methods for result retrieval that access the canister's internal state directly, such as ledger canisters offering transaction history and balance book access. +- Read the result of a replicated call: The outcome of a replicated call's execution is temporarily stored in the public ingress history of the respective subnet. To access the result, a read state request is submitted, including the previously generated request ID. Given the asynchronous nature of this execution, results must be actively polled. Results are maintained in the ingress history for a brief period (5 minutes post-execution). Therefore, canisters may provide alternative methods for result retrieval that access the canister's internal state directly, such as ledger canisters offering transaction history and balance book access. diff --git a/docs/developer-docs/defi/tokens/create.mdx b/docs/developer-docs/defi/tokens/create.mdx index 77d5366da9..172ec65621 100644 --- a/docs/developer-docs/defi/tokens/create.mdx +++ b/docs/developer-docs/defi/tokens/create.mdx @@ -3,10 +3,11 @@ keywords: [intermediate, defi, overview, tokens, deploy a token, create a token, --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # Create a token - + ## Overview @@ -18,7 +19,7 @@ This guide will provide a quickstart on how you can create and deploy your own c ## Setup a local ICRC-1 ledger -To create a new ICRC-1 token, you will need to first download and configure a local project for the ICRC-1 ledger canister. This is because each token will need its own ledger canister to record the token's balances and transactions. [Follow the ICRC-1 ledger documentation for instructions](/docs/current/developer-docs/defi/icrc-1/icrc1-ledger-setup). +To create a new ICRC-1 token, you will need to first download and configure a local project for the ICRC-1 ledger canister. This is because each token will need its own ledger canister to record the token's balances and transactions. [Follow the ICRC-1 ledger documentation for instructions](/docs/current/developer-docs/defi/icrc-1/icrc1-ledger-setup). ## Export token settings @@ -48,7 +49,7 @@ export TRANSFER_FEE=10_000 #### `ARCHIVE_CONTROLLER` -The [controller principal](/docs/current/developer-docs/defi/cycles/cycles-wallet#controller-and-custodian-roles) of the archive canisters. +The [controller principal](/docs/current/developer-docs/defi/cycles/cycles-wallet#controller-and-custodian-roles) of the archive canisters. ``` dfx identity new archive_controller diff --git a/docs/developer-docs/defi/tokens/indexes.mdx b/docs/developer-docs/defi/tokens/indexes.mdx index 8868df81d4..4dc2289a15 100644 --- a/docs/developer-docs/defi/tokens/indexes.mdx +++ b/docs/developer-docs/defi/tokens/indexes.mdx @@ -5,6 +5,8 @@ keywords: [intermediate, tokens, tutorial, index] import TabItem from "@theme/TabItem"; import { AdornedTabs } from "/src/components/Tabs/AdornedTabs"; import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # Index canisters @@ -12,7 +14,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -On ICP, an index canister is used in conjunction with a ledger canister to provide the ability for transactions to be queried for a specific account. Without an index canister, a ledger's transaction history cannot easily be parsed and used by applications, as the entire transaction history of a ledger would need to be processed. +On ICP, an index canister is used in conjunction with a ledger canister to provide the ability for transactions to be queried for a specific account. Without an index canister, a ledger's transaction history cannot easily be parsed and used by applications, as the entire transaction history of a ledger would need to be processed. An index canister can be used to: @@ -32,7 +34,7 @@ This guide displays how to deploy an index canister locally and use it in conjun ## Wasm and Candid files -Go to the [releases overview](https://dashboard.internetcomputer.org/releases) and copy the latest replica binary revision (IC_VERSION). At the time of writing, this is `b9a0f18dd5d6019e3241f205de797bca0d9cc3f8`. +Go to the [releases overview](https://dashboard.internetcomputer.org/releases) and copy the latest replica binary revision (IC_VERSION). At the time of writing, this is `b9a0f18dd5d6019e3241f205de797bca0d9cc3f8`. @@ -275,7 +277,7 @@ Depending on how many mint operations you created while setting up your ICRC-1 l You can check that the synchronization of the index is working by creating a transaction on the ICP ledger and then checking the status of that transaction. If you followed the guide on setting up an ICP ledger locally your default identity should have some ICP to be send. -Send some ICP to any principal with the command: +Send some ICP to any principal with the command: ``` dfx canister call ryjl3-tyaaa-aaaaa-aaaba-cai icrc1_transfer '(record { to = record { owner = principal "npki3-wdfh4-siaeq-orwh4-bh5of-r7mxr-i35lm-6f2eh-rtmwp-dmzmn-tae";}; amount = 100000:nat;})' diff --git a/docs/developer-docs/defi/tokens/token-standards.mdx b/docs/developer-docs/defi/tokens/token-standards.mdx index f53c5c7dd8..039d4b8562 100644 --- a/docs/developer-docs/defi/tokens/token-standards.mdx +++ b/docs/developer-docs/defi/tokens/token-standards.mdx @@ -3,6 +3,8 @@ keywords: [intermediate, defi, overview, tokens, icrc-1, icrc-2, icrc-3] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # Token standards @@ -12,7 +14,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; Tokens deployed on ICP must adhere to a standard. The network's native token, ICP, adheres to its own standard as it is unique on the network in the sense that it is used for network utility and governance. Tokens created for other purposes on the network typically adhere to one of the ICRC standards. -[ICRC](https://github.com/dfinity/ICRC) stands for `Internet Computer Request for Comments'. ICRC standards are proposed by the community working group and are not specific to tokens; they can be created for anything on ICP, such as services, canister calls, or authentication methods. However, this documentation will detail the ICRC standards that are specific to tokens. +[ICRC](https://github.com/dfinity/ICRC) stands for `Internet Computer Request for Comments'. ICRC standards are proposed by the community working group and are not specific to tokens; they can be created for anything on ICP, such as services, canister calls, or authentication methods. However, this documentation will detail the ICRC standards that are specific to tokens. In the past, the [DIP-721](#dip-721) standard was promoted and used by projects on the network for deploying non-fungible tokens. The ICRC-7 standard has since been developed as a newer alternative to the DIP-721 standard. @@ -24,7 +26,7 @@ In the past, the [DIP-721](#dip-721) standard was promoted and used by projects - The proposal is refined through improvement iterations by the working group. -- Once the proposal is deemed ready for implementation by the working group, it is proposed to the NNS through an NNS proposal. +- Once the proposal is deemed ready for implementation by the working group, it is proposed to the NNS through an NNS proposal. - The ICRC standard is either adopted or rejected by the NNS. @@ -42,7 +44,7 @@ View an example dapp for [ICP transfers](https://github.com/dfinity/examples/tre ## ICRC-1 -The ICRC-1 standard is for fungible tokens on ICP. It uses an `Account` value that corresponds to the pair `(principal, subaccount)`, where a principal can have multiple accounts, and each subaccount of a principal is identified by a 32-byte string. +The ICRC-1 standard is for fungible tokens on ICP. It uses an `Account` value that corresponds to the pair `(principal, subaccount)`, where a principal can have multiple accounts, and each subaccount of a principal is identified by a 32-byte string. The ICRC-1 standard is considered the 'base' standard and intentionally excludes certain features and functions, such as: @@ -84,7 +86,7 @@ The ICRC-2 standard is an extension of the ICRC-1 standard that enables addition The approve and transfer from workflow uses two steps: -1. First, the account owner allows another user to transfer up to X tokens from their account (A) by calling the ledger's `icrc2_approve` method. +1. First, the account owner allows another user to transfer up to X tokens from their account (A) by calling the ledger's `icrc2_approve` method. 2. The user transfers up to X tokens from account A to any account through the `icrc2_transfer_from` method. The number of transfers is not limited as long as the total amount spent is below X. diff --git a/sidebars.js b/sidebars.js index b4979c2ced..20f8587bcb 100644 --- a/sidebars.js +++ b/sidebars.js @@ -813,12 +813,14 @@ const sidebars = { label: "Tokens", items: [ "developer-docs/defi/tokens/token-standards", + "developer-docs/defi/token_integrations/index", "developer-docs/defi/icp-tokens/ledger-local-setup", + "developer-docs/defi/icrc-1/icrc1-ledger-setup", "developer-docs/defi/tokens/indexes", "developer-docs/defi/icp-tokens/using-the-ledger", + "developer-docs/defi/icrc-1/using-icrc1-ledger", "developer-docs/defi/icp-tokens/account-trimming", "developer-docs/defi/tokens/create", - "developer-docs/defi/icrc-1/icrc1-ledger-setup", { type: "category", label: "Cycles", @@ -828,172 +830,179 @@ const sidebars = { "developer-docs/defi/cycles/converting_icp_tokens_into_cycles", ] }, - ], - }, - { - type: "category", - label: "Wallets", - items: [ - "developer-docs/defi/wallets/overview", { type: "category", - label: "Self-custody", - items: [ - "developer-docs/defi/wallets/self-custody/self-custody-quickstart", - "developer-docs/defi/wallets/self-custody/hardware-wallet-cli", - ], - }, - ], - }, - { - type: "doc", - label: "Exchange rate canister", - id: "developer-docs/defi/exchange-rate-canister", - }, - { - type: "category", - label: "ICP Rosetta implementation", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/index", - }, - items: [ - { - type: "category", - label: "Data API", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/data_api/index", - }, - items: [ - "developer-docs/defi/rosetta/icp_rosetta/data_api/network", - "developer-docs/defi/rosetta/icp_rosetta/data_api/balances", - "developer-docs/defi/rosetta/icp_rosetta/data_api/blocks", - "developer-docs/defi/rosetta/icp_rosetta/data_api/transactions", - "developer-docs/defi/rosetta/icp_rosetta/data_api/list_known_neurons", - "developer-docs/defi/rosetta/icp_rosetta/data_api/get_pending_proposals", - "developer-docs/defi/rosetta/icp_rosetta/data_api/get_proposal_info", - ], - }, - { - type: "category", - label: "Construction API", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/index", - }, + label: "Advanced", items: [ { type: "category", - label: "Flow of operations", + label: "ICP Rosetta implementation", link: { type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/index", + id: "developer-docs/defi/rosetta/icp_rosetta/index", }, items: [ - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/derive", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/preprocess", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/metadata", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/payloads", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/combine", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/submit", + { + type: "category", + label: "Data API", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icp_rosetta/data_api/index", + }, + items: [ + "developer-docs/defi/rosetta/icp_rosetta/data_api/network", + "developer-docs/defi/rosetta/icp_rosetta/data_api/balances", + "developer-docs/defi/rosetta/icp_rosetta/data_api/blocks", + "developer-docs/defi/rosetta/icp_rosetta/data_api/transactions", + "developer-docs/defi/rosetta/icp_rosetta/data_api/list_known_neurons", + "developer-docs/defi/rosetta/icp_rosetta/data_api/get_pending_proposals", + "developer-docs/defi/rosetta/icp_rosetta/data_api/get_proposal_info", + ], + }, + { + type: "category", + label: "Construction API", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/index", + }, + items: [ + { + type: "category", + label: "Flow of operations", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/index", + }, + items: [ + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/derive", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/preprocess", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/metadata", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/payloads", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/combine", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/operations_flow/submit", + ], + }, + { + type: "category", + label: "Staking and neuron management", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/index", + }, + items: [ + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/neuron_info", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/derive_neuron_id", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/stake_icp", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/lock_neuron", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/dissolve", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/stake_maturity", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/change_auto_stake_maturity", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/spawn", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/disburse", + ], + }, + { + type: "category", + label: "Voting and following", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/index", + }, + items: [ + "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/vote", + "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/follow", + ], + }, + ], + }, ], }, { type: "category", - label: "Staking and neuron management", + label: "ICRC Rosetta implementation", link: { type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/index", + id: "developer-docs/defi/rosetta/icrc_rosetta/index", }, items: [ - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/neuron_info", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/derive_neuron_id", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/stake_icp", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/lock_neuron", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/dissolve", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/stake_maturity", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/change_auto_stake_maturity", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/spawn", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/staking/disburse", + { + type: "category", + label: "Data API", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icrc_rosetta/data_api/index", + }, + items: [ + "developer-docs/defi/rosetta/icrc_rosetta/data_api/network", + "developer-docs/defi/rosetta/icrc_rosetta/data_api/balances", + "developer-docs/defi/rosetta/icrc_rosetta/data_api/blocks", + "developer-docs/defi/rosetta/icrc_rosetta/data_api/transactions", + ], + }, + { + type: "category", + label: "Construction API", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icrc_rosetta/construction_api/index", + }, + items: [ + { + type: "category", + label: "Asset transfer", + link: { + type: "doc", + id: "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/index", + }, + items: [ + "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/transfer", + "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/approve", + ], + }, + ], + }, ], }, + { - type: "category", - label: "Voting and following", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/index", - }, - items: [ - "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/vote", - "developer-docs/defi/rosetta/icp_rosetta/construction_api/voting/follow", - ], + type: "doc", + label: "Exchange rate canister", + id: "developer-docs/defi/exchange-rate-canister", }, - ], - }, + ] + } ], }, { type: "category", - label: "ICRC Rosetta implementation", - link: { + label: "NFTs", + items: [ + { type: "doc", - id: "developer-docs/defi/rosetta/icrc_rosetta/index", + label: "Overview", + id: "developer-docs/defi/nfts/overview", }, + "developer-docs/defi/nfts/nft-collections", + "developer-docs/defi/nfts/marketplaces" + ], + }, + { + type: "category", + label: "Wallets", items: [ + "developer-docs/defi/wallets/overview", { type: "category", - label: "Data API", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icrc_rosetta/data_api/index", - }, - items: [ - "developer-docs/defi/rosetta/icrc_rosetta/data_api/network", - "developer-docs/defi/rosetta/icrc_rosetta/data_api/balances", - "developer-docs/defi/rosetta/icrc_rosetta/data_api/blocks", - "developer-docs/defi/rosetta/icrc_rosetta/data_api/transactions", - ], - }, - { - type: "category", - label: "Construction API", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icrc_rosetta/construction_api/index", - }, + label: "Self-custody", items: [ - { - type: "category", - label: "Asset transfer", - link: { - type: "doc", - id: "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/index", - }, - items: [ - "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/transfer", - "developer-docs/defi/rosetta/icrc_rosetta/construction_api/asset_transfer/approve", - ], - }, + "developer-docs/defi/wallets/self-custody/self-custody-quickstart", + "developer-docs/defi/wallets/self-custody/hardware-wallet-cli", ], }, ], }, - "developer-docs/defi/token_integrations/index", - { - type: "category", - label: "NFTs", - items: [ - { - type: "doc", - label: "Overview", - id: "developer-docs/defi/nfts/overview", - }, - "developer-docs/defi/nfts/nft-collections", - "developer-docs/defi/nfts/marketplaces"], - }, - ], + ], }, { type: "category", diff --git a/static/glossary.txt b/static/glossary.txt index b2aa6c8d78..df3488b262 100644 --- a/static/glossary.txt +++ b/static/glossary.txt @@ -6,4 +6,5 @@ principals=An entity that can be authenticated by ICP - user, canister, etc. replica=The ICP software used to run a node. subnet=A collection of nodes that run their own instance of the ICP consensus algorithm. subnets=A collection of nodes that run their own instance of the ICP consensus algorithm. -NNS=The DAO that governs ICP. \ No newline at end of file +NNS=The DAO that governs ICP. +ledger=A smart contract that holds blocks, each containing a single transaction. \ No newline at end of file diff --git a/submodules/dfxvm b/submodules/dfxvm index 4b613418e2..f3a159e194 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 +Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab diff --git a/submodules/interface-spec b/submodules/interface-spec index eb6663a776..2f49b0e230 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 +Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d diff --git a/submodules/internetidentity b/submodules/internetidentity index 14607ee438..3f049ecd9e 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd +Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b diff --git a/submodules/motoko b/submodules/motoko index a4e39cac60..0d36eff4c5 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e +Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 diff --git a/submodules/quill b/submodules/quill index d649fb5658..07a6415af8 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 +Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 diff --git a/submodules/response-verfication b/submodules/response-verfication index 8d559e5a36..600b3d5339 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b +Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d diff --git a/submodules/samples b/submodules/samples index 294a2418ab..ee8f2382e7 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e +Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 diff --git a/submodules/sdk b/submodules/sdk index dad16fb75f..ef436da624 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 +Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f From 799437817fa3fa494603efe104439c38caf2df42 Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Fri, 28 Jun 2024 12:04:21 -0500 Subject: [PATCH 3/9] dex-overview-doc --- docs/developer-docs/defi/dex/overview.mdx | 29 +++++++++++++++++++++++ submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 9 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 docs/developer-docs/defi/dex/overview.mdx diff --git a/docs/developer-docs/defi/dex/overview.mdx b/docs/developer-docs/defi/dex/overview.mdx new file mode 100644 index 0000000000..c891f330e0 --- /dev/null +++ b/docs/developer-docs/defi/dex/overview.mdx @@ -0,0 +1,29 @@ +--- +keywords: [intermediate, defi, overview, dex, decentralized exchange, exchange] +--- + +import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; + +# Decentralized exchange overview + +A decentralized exchange, or DEX, is a peer-to-peer marketplace where transactions are executed directly between parties. There is no central intermediary that executes the transaction, such as a bank, broker, or other institution. Each transaction is recorded directly on-chain. DEXs are primarily used to trade or swap cryptocurrencies. + +## Centralized exchanges versus decentralized exchanges + +A centralized exchange allows for fiat currencies and cryptocurrencies to be exchanged for one another. On a centralized exchange such as Coinbase, you can trade ICP for its worth in USD, then transfer that USD directly to your bank. + +A decentralized exchange only allows for cryptocurrencies to be traded for other cryptocurrencies through crypto pairs. They may also support more advanced actions like limit orders and margin trades. Each transaction is handled by the decentralized exchange via an order book, which uses the current buy and sell orders for that token to establish the price. Decentralized exchanges use a set of smart contracts to establish the price of different cryptocurrencies against each other. They also use liquidity pools, where investors can facilitate trades by locking funds within an exchange in return for rewards. + +## ICP decentralized exchanges + +ICP enables decentralized exchanges and order books to run on-chain, utilizing ICP's cheap storage and computation. The DEX's internal balance and transactions can be stored in a canister, alongside user balances and data. + +Some examples of DEXs running on ICP include: + +- [Helix Markets](https://www.helixmarkets.io/) + +- [ICPSwap](https://icpswap.com/) + +- [ICDex](https://avjzx-pyaaa-aaaaj-aadmq-cai.raw.ic0.app/ICDex) + +- [Sonic](https://sonic.ooo/) \ No newline at end of file diff --git a/submodules/dfxvm b/submodules/dfxvm index 4b613418e2..f3a159e194 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 +Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab diff --git a/submodules/interface-spec b/submodules/interface-spec index eb6663a776..2f49b0e230 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 +Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d diff --git a/submodules/internetidentity b/submodules/internetidentity index 14607ee438..3f049ecd9e 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd +Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b diff --git a/submodules/motoko b/submodules/motoko index a4e39cac60..0d36eff4c5 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e +Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 diff --git a/submodules/quill b/submodules/quill index d649fb5658..07a6415af8 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 +Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 diff --git a/submodules/response-verfication b/submodules/response-verfication index 8d559e5a36..600b3d5339 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b +Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d diff --git a/submodules/samples b/submodules/samples index 294a2418ab..ee8f2382e7 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e +Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 diff --git a/submodules/sdk b/submodules/sdk index dad16fb75f..ef436da624 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 +Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f From b0485acd44ccb9fab1c72218a556a5debad32747 Mon Sep 17 00:00:00 2001 From: Jessie Mongeon <133128541+jessiemongeon1@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:10:07 -0500 Subject: [PATCH 4/9] Update using-the-ledger.mdx --- docs/developer-docs/defi/icp-tokens/using-the-ledger.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer-docs/defi/icp-tokens/using-the-ledger.mdx b/docs/developer-docs/defi/icp-tokens/using-the-ledger.mdx index ff9f3de9c6..36ea267117 100644 --- a/docs/developer-docs/defi/icp-tokens/using-the-ledger.mdx +++ b/docs/developer-docs/defi/icp-tokens/using-the-ledger.mdx @@ -4,7 +4,7 @@ keywords: [intermediate, tokens, tutorial, ledger] import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; -# Using the ledger +# Using the ICP ledger From e457b0b05a5070b4b2d72f3d10cb68fa03910e13 Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Fri, 28 Jun 2024 14:17:55 -0500 Subject: [PATCH 5/9] Add tooltips for first three Dev Journey levels --- .../developer-journey/level-0/01-ic-overview.mdx | 6 ++++-- .../developer-journey/level-0/02-ic-terms.mdx | 5 +++-- .../tutorials/developer-journey/level-0/03-dev-env.mdx | 3 ++- .../developer-journey/level-0/04-intro-canisters.mdx | 5 +++-- .../developer-journey/level-0/05-intro-languages.mdx | 3 ++- .../developer-journey/level-0/06-intro-dfx.mdx | 5 +++-- .../developer-journey/level-1/1.1-live-demo.mdx | 5 +++-- .../developer-journey/level-1/1.2-motoko-lvl1.mdx | 3 ++- .../developer-journey/level-1/1.3-first-dapp.mdx | 8 +++++--- .../developer-journey/level-1/1.4-using-cycles.mdx | 5 +++-- .../level-1/1.5-deploying-canisters.mdx | 2 +- .../level-1/1.6-managing-canisters.mdx | 10 ++++++---- .../level-2/2.1-storage-persistence.mdx | 7 ++++--- .../level-2/2.2-advanced-canister-calls.mdx | 5 +++-- .../level-2/2.3-third-party-canisters.mdx | 3 ++- .../developer-journey/level-2/2.4-intro-candid.mdx | 3 ++- .../developer-journey/level-2/2.5-unit-testing.mdx | 5 +++-- .../developer-journey/level-2/2.6-motoko-lvl2.mdx | 3 ++- submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 26 files changed, 61 insertions(+), 41 deletions(-) diff --git a/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx b/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx index 6ea05ab8e5..164d453af9 100644 --- a/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx +++ b/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx @@ -4,6 +4,8 @@ keywords: [beginner, tutorial, developer journey, introduction, overview] import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # 0.1 Overview of the Internet Computer @@ -15,7 +17,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; The **Internet Computer Protocol (ICP)** is a secure and transparent blockchain-based network that can be used to host data and programs. Programs and their data hosted on ICP are referred to as **decentralized applications**, often abbreviated to **dapps**. -Dapps are created by the development and deployment of **smart contracts**, which are known as **canisters** on ICP. Each canister is hosted on an independent blockchain network running on **nodes** called a **subnet**. +Dapps are created by the development and deployment of **smart contracts**, which are known as **canisters** on ICP. Each canister is hosted on an independent blockchain network running on **nodes** called a **subnet**. These terms will be explained a bit further in the next section, [Internet Computer terminology](/docs/current/tutorials/developer-journey/level-0/ic-terms). @@ -60,7 +62,7 @@ The message routing layer receives a block of messages from the consensus layer, The execution layer is responsible for executing canister smart contract code. Execution is done using WebAssembly (Wasm). There is a Wasm virtual machine that runs on each node that is responsible for this process. Wasm is used since Wasm bytecode can be executed deterministically. -Messages that have been inducted into canister queues on the subnet are executed by the execution layer until either all messages in the queue have been executed or until the cycles limit for the round has been reached. +Messages that have been inducted into canister queues on the subnet are executed by the execution layer until either all messages in the queue have been executed or until the cycles limit for the round has been reached. [Want to go further into this topic?](https://internetcomputer.org/how-it-works/execution-layer/) diff --git a/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx b/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx index 96451d6293..e983279231 100644 --- a/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx +++ b/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx @@ -3,6 +3,7 @@ keywords: [beginner, tutorial, developer journey, terminology, glossary] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 0.2 Internet Computer terminology @@ -20,11 +21,11 @@ This page introduces some of the most commonly used terminology that developers - **Agent:** An agent is a library used to make calls to the Internet Computer public interface. Examples of external agents include the JavaScript and Rust agents. -- **Certified variables:** A certified variable is a piece of data that a canister stores in the subnet's canonical state during the processing of an update or inter-canister call. This data is used when a query call is made, so that the canister can return a certificate to the user to prove the data's value. +- **Certified variables:** A certified variable is a piece of data that a canister stores in the subnet's canonical state during the processing of an update or inter-canister call. This data is used when a query call is made, so that the canister can return a certificate to the user to prove the data's value. - **Chain-key cryptography:** Chain-key cryptography is an array of advanced cryptographic mechanisms which allow ICP to achieve scalability and functionalities that aren't possible on other blockchain networks. These cryptographic protocols help orchestrate the nodes that make up ICP. One example of chain-key cryptography is ICP's single public key, which allows any device to verify the authenticity of artifacts from ICP. -- **Cycles**: A cycle in regards to ICP is a unit of measurement used for resources consumed by a canister. These resources include compute processing power, memory, storage, and network bandwidth. Cycles are consumed for every execution performed by a canister that has been deployed on the mainnet. The ICP's utility token ICP can be converted into cycles and transferred into a canister to be used to pay for that canister's consumed resources. ICP can be converted to cycles using the current price of ICP measured in [XDR](https://internetcomputer.org/docs/current/references/glossary#xdr), where one trillion cycles corresponds to one XDR. XDR is the currency code for special drawing rights (SDR), which are supplementary foreign exchange assets defined and maintained by the International Monetary Fund (IMF). +- **Cycles**: A cycle in regards to ICP is a unit of measurement used for resources consumed by a canister. These resources include compute processing power, memory, storage, and network bandwidth. Cycles are consumed for every execution performed by a canister that has been deployed on the mainnet. The ICP's utility token ICP can be converted into cycles and transferred into a canister to be used to pay for that canister's consumed resources. ICP can be converted to cycles using the current price of ICP measured in [XDR](https://internetcomputer.org/docs/current/references/glossary#xdr), where one trillion cycles corresponds to one XDR. XDR is the currency code for special drawing rights (SDR), which are supplementary foreign exchange assets defined and maintained by the International Monetary Fund (IMF). - **Decentralized application (dapp):** A decentralized application (dapp) refers to a canister or several interoperable canisters that provide a program or service that has been deployed on the Internet Computer. diff --git a/docs/tutorials/developer-journey/level-0/03-dev-env.mdx b/docs/tutorials/developer-journey/level-0/03-dev-env.mdx index 2037c5a5d2..3e4e4d0f61 100644 --- a/docs/tutorials/developer-journey/level-0/03-dev-env.mdx +++ b/docs/tutorials/developer-journey/level-0/03-dev-env.mdx @@ -3,6 +3,7 @@ keywords: [beginner, tutorial, developer journey, dev env, developer environment --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 0.3 Developer environment setup @@ -24,7 +25,7 @@ To follow along with the developer journey and develop on the Internet Computer, #### Why does this matter? -You will need an internet connection to download a few different tools and packages, as described further in this document. You will also need an internet connection whenever you plan to deploy your canister to the mainnet. You do not need an internet connection to deploy your canister to your local canister execution environment. +You will need an internet connection to download a few different tools and packages, as described further in this document. You will also need an internet connection whenever you plan to deploy your canister to the mainnet. You do not need an internet connection to deploy your canister to your local canister execution environment. ### Confirm you have access to a command line interface (CLI) on your local macOS or Linux computer diff --git a/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx b/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx index 9aeffef7a9..025c227b36 100644 --- a/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx +++ b/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx @@ -3,6 +3,7 @@ keywords: [beginner, tutorial, developer journey, introduction, canisters] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 0.4 Introduction to canisters @@ -12,7 +13,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -Smart contracts on the Internet Computer are known as **canisters**. A canister contains both the source code and software state. A canister's source code is compiled into a WebAssembly module and is associated with a module of stable memory. +Smart contracts on the Internet Computer are known as **canisters**. A canister contains both the source code and software state. A canister's source code is compiled into a WebAssembly module and is associated with a module of stable memory. When a dapp is written to be deployed on ICP, the source code is compiled into a WebAssembly module. Then, that WebAssembly module is deployed and executed inside of the canister. Once a canister is deployed, end-users can interact with the canister through the CLI or through a frontend client such as a web browser. @@ -73,7 +74,7 @@ Additionally, controllers can update the canister code by submitting a new Wasm ## Cycles and resource charges -A canister's controller is responsible for ensuring the canister contains enough **cycles**. Cycles are used to pay for the canister's resources, such as memory, computational power, and network bandwidth. Each operation that is performed by a canister on the mainnet has a cost of cycles. A canister has a local cycles account that is used to store the canister's cycles. +A canister's controller is responsible for ensuring the canister contains enough **cycles**. Cycles are used to pay for the canister's resources, such as memory, computational power, and network bandwidth. Each operation that is performed by a canister on the mainnet has a cost of cycles. A canister has a local cycles account that is used to store the canister's cycles. For memory usage, the system keeps track of all memory used by the canister and regularly charges the canister's cycles account. This charging happens at regular intervals for efficiency. diff --git a/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx b/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx index 5fead1cd8c..a415acddfe 100644 --- a/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx +++ b/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx @@ -3,6 +3,7 @@ keywords: [beginner, tutorial, developer journey, introduction, languages] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 0.5 Introduction to languages @@ -14,7 +15,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; When developing canisters, the most common development workflow is to use a software development kit (SDK). The Internet Computer SDK is the most commonly used, which natively supports Motoko and Rust out of the box. -Since ICP supports dapps that have been compiled into WebAssembly modules, many different programming languages can be used for canister development. However, a canister development kit (CDK) needs to be used. A CDK is an adapter used by the IC SDK that provides a programming language with the necessary features and tools required to create and manage canisters. The IC SDK comes bundled with CDKs for Motoko and Rust. Additionally, there are several community created CDKs for additional languages, such as Python and TypeScript, that can be installed separately. +Since ICP supports dapps that have been compiled into WebAssembly modules, many different programming languages can be used for canister development. However, a canister development kit (CDK) needs to be used. A CDK is an adapter used by the IC SDK that provides a programming language with the necessary features and tools required to create and manage canisters. The IC SDK comes bundled with CDKs for Motoko and Rust. Additionally, there are several community created CDKs for additional languages, such as Python and TypeScript, that can be installed separately. It is possible to use multiple languages within a single dapp's development. Different canisters can communicate to one another using the Candid language, which is an interface description language (IDL) used by ICP canisters, allowing for multiple canisters in different languages to share and exchange information. diff --git a/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx b/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx index e421550e11..b833999b94 100644 --- a/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx +++ b/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx @@ -4,6 +4,7 @@ keywords: [beginner, tutorial, developer journey, introduction, dfx] import DfxNewSnippet from "/src/components/Snippets/DfxNewSnippet.mdx"; import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 0.6 Introduction to dfx @@ -29,9 +30,9 @@ dfx [subcommand] [flag] The following is a list of the essential `dfx` subcommands that you'll be using throughout the developer journey series. For the full list of all possible subcommands, check out the [dfx reference documentation](/docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-parent). -- `build`: Used to build the canister output from the project's source code. +- `build`: Used to build the canister output from the project's source code. - `canister`: Used to manage deployed canisters. -- `cycles`: Used to manage the cycles balance for your identity. +- `cycles`: Used to manage the cycles balance for your identity. - `deploy`: Deploys one or all canisters from the project's source code. By default, all canisters are deployed. - `help`: Returns usage information for a specific subcommand. - `identity`: Used to create and manage identities. diff --git a/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx b/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx index ab02dc41ce..e9b57f72fd 100644 --- a/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx +++ b/docs/tutorials/developer-journey/level-1/1.1-live-demo.mdx @@ -7,6 +7,7 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; import '/src/components/CenterImages/center.scss'; + # 1.1 Exploring a live demo @@ -15,13 +16,13 @@ import '/src/components/CenterImages/center.scss'; ## Overview -In the previous segment of our developer journey, introduction to `dfx`, you created a new `dfx` project using the default 'Hello, world' template and looked into the project's structure and code. However, you didn't build or deploy the canister. +In the previous segment of our developer journey, introduction to `dfx`, you created a new `dfx` project using the default 'Hello, world' template and looked into the project's structure and code. However, you didn't build or deploy the canister. In this tutorial, you'll deploy the `hello_world_backend` canister from [0.6: Introduction to dfx](/docs/current/tutorials/developer-journey/level-0/intro-dfx) to the Motoko playground. ## What is the Motoko playground? -The Motoko playground is a development environment that hosts a 'canister pool' that canisters can be deployed to. When canisters are deployed to the Motoko playground, they temporarily borrow resources from the pool and are allotted a small amount of cycles that can be used during the canister's deployment. Canisters deployed to the playground can run for 20 minutes; after 20 minutes, the canister will be uninstalled and the resources borrowed are returned to the playground's canister pool. +The Motoko playground is a development environment that hosts a 'canister pool' that canisters can be deployed to. When canisters are deployed to the Motoko playground, they temporarily borrow resources from the pool and are allotted a small amount of cycles that can be used during the canister's deployment. Canisters deployed to the playground can run for 20 minutes; after 20 minutes, the canister will be uninstalled and the resources borrowed are returned to the playground's canister pool. :::info While the Motoko playground has 'Motoko' in the title, it can be used to deploy canisters written in any development language, not just Motoko. diff --git a/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx b/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx index f2de60f111..b517ecb376 100644 --- a/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx +++ b/docs/tutorials/developer-journey/level-1/1.2-motoko-lvl1.mdx @@ -3,6 +3,7 @@ keywords: [beginner, tutorial, developer journey, motoko] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 1.2 Motoko level 1 @@ -16,7 +17,7 @@ Motoko is a programming language that has been developed and optimized for creat ## Basic concepts and terms -In previous modules, you've been introduced to and briefly discussed actors, and how each canister smart contract is represented by an actor. Within Motoko, the term actor is used to refer to any canister, regardless of the canister's language (Motoko, Rust, etc.). Motoko is designed specifically to make actors easy to write and use once the canister has been deployed. +In previous modules, you've been introduced to and briefly discussed actors, and how each canister smart contract is represented by an actor. Within Motoko, the term actor is used to refer to any canister, regardless of the canister's language (Motoko, Rust, etc.). Motoko is designed specifically to make actors easy to write and use once the canister has been deployed. With actors in mind, the following terms and concepts are essential to be aware of. Many of these concepts apply to several different programming languages, though you'll be focusing on their application within Motoko. diff --git a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx index b69637b379..146ae85331 100644 --- a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx +++ b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx @@ -5,6 +5,8 @@ keywords: [beginner, tutorial, developer journey, first dapp] import DfxNewSnippet from "/src/components/Snippets/DfxNewSnippet.mdx"; import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import '/src/components/CenterImages/center.scss'; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # 1.3 Developing your first dapp @@ -14,7 +16,7 @@ import '/src/components/CenterImages/center.scss'; ## Overview -At this point in your developer journey, you've covered the fundamentals of canister development and deployed the default 'Hello, world' project template on the Motoko playground. It's time to get into writing code and developing your own first dapp! +At this point in your developer journey, you've covered the fundamentals of canister development and deployed the default 'Hello, world' project template on the Motoko playground. It's time to get into writing code and developing your own first dapp! For this tutorial, you'll be creating a poll dapp that includes both a backend canister and a frontend canister. To recap, backend canisters are used to host the dapp's smart contract code, while frontend canisters are used to host user interface assets, such as HTML and CSS. @@ -160,7 +162,7 @@ This `getQuestion` method takes the current value of the `question` variable and ### Query calls vs. update calls -A **query call** is executed on one node of a subnet. It is not possible to use query calls to alter data. +A **query call** is executed on one node of a subnet. It is not possible to use query calls to alter data. An **update call** is executed on all nodes of a subnet. The result must pass through consensus on the subnet and has the ability to alter data. @@ -795,7 +797,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h ## Next steps -In this tutorial, you only deployed our dapp to your local environment. In the next module, you'll acquire cycles in order for you to deploy your dapp to the Internet Computer mainnet. +In this tutorial, you only deployed our dapp to your local environment. In the next module, you'll acquire cycles in order for you to deploy your dapp to the Internet Computer mainnet. - [1.4 Acquiring and using cycles](/docs/current/tutorials/developer-journey/level-1/1.4-using-cycles). diff --git a/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx b/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx index e8d84a7572..813dbbe4f5 100644 --- a/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx +++ b/docs/tutorials/developer-journey/level-1/1.4-using-cycles.mdx @@ -4,6 +4,7 @@ keywords: [beginner, tutorial, developer journey, cycles, using cycles] import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import '/src/components/CenterImages/center.scss'; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 1.4 Acquiring and using cycles @@ -14,13 +15,13 @@ import '/src/components/CenterImages/center.scss'; ## Overview -If you recall from the previous module, [Internet Computer terminology](/docs/current/tutorials/developer-journey/level-0/ic-terms), cycles are used to measure the resources, such as memory, storage, and compute power, that are used by a canister. When a canister is deployed on the mainnet, cycles are 'charged' for every action that a canister performs. +If you recall from the previous module, [Internet Computer terminology](/docs/current/tutorials/developer-journey/level-0/ic-terms), cycles are used to measure the resources, such as memory, storage, and compute power, that are used by a canister. When a canister is deployed on the mainnet, cycles are 'charged' for every action that a canister performs. To obtain cycles, the Internet Computer Protocol's utility token, ICP, can be converted into cycles and transferred into a canister to be used to pay for that canister's consumed resources. Cycles have a fixed price in [XDR](https://internetcomputer.org/docs/current/references/glossary#xdr) in order to make canister costs predictable and independent of the price of ICP. One trillion cycles always correspond to one XDR. Since cycles are not a currency and are only used to pay for a canister's consumed resources, developers manage the distribution of cycles through a system canister called the **cycles ledger**. The cycles ledger provides functionality for developers to convert ICP into cycles, accept incoming cycles, send cycles to other canister, and create canisters with cycles. -A developer's cycles balance is associated with the principal identity. +A developer's cycles balance is associated with the principal identity. :::info Recall that a principal is an entity that can be authenticated by ICP. diff --git a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx index 219d792348..37e62b7530 100644 --- a/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx +++ b/docs/tutorials/developer-journey/level-1/1.5-deploying-canisters.mdx @@ -13,7 +13,7 @@ import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; ## Overview -Now that you have some cycles to pay for your canister's resources, you can deploy your dapp on the mainnet. When a canister is deployed to the mainnet, it's code will be hosted on the nodes that make up one of the mainnet's subnets. The canister will be hosted on these nodes until it is manually uninstalled by the developer, or until it runs out of cycles and is uninstalled automatically. +Now that you have some cycles to pay for your canister's resources, you can deploy your dapp on the mainnet. When a canister is deployed to the mainnet, it's code will be hosted on the nodes that make up one of the mainnet's subnets. The canister will be hosted on these nodes until it is manually uninstalled by the developer, or until it runs out of cycles and is uninstalled automatically. Once a dapp is deployed on the mainnet, it can be accessed from the canister's public URL by end-users and can communicate with other canisters that are deployed on the mainnet. diff --git a/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx b/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx index a1422de84f..bfddae54dd 100644 --- a/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx +++ b/docs/tutorials/developer-journey/level-1/1.6-managing-canisters.mdx @@ -3,6 +3,8 @@ keywords: [beginner, tutorial, developer journey, manage canisters] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; + # 1.6 Managing canisters @@ -12,13 +14,13 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -Now that you have canisters deployed on the mainnet, the next step is to learn how to manage those canisters. Managing a canister includes workflows such as obtaining information, setting an identity as the canister's owner, and deleting a canister. You'll dive into these different workflows and more in this guide to assure that you have the core fundamentals of how to maintain canisters. +Now that you have canisters deployed on the mainnet, the next step is to learn how to manage those canisters. Managing a canister includes workflows such as obtaining information, setting an identity as the canister's owner, and deleting a canister. You'll dive into these different workflows and more in this guide to assure that you have the core fundamentals of how to maintain canisters. ## The ICP management canister To enable canister management, the management canister exposes management functionality to end users and other canisters. While it is titled the 'management canister', it is not actually a canister that exists with an isolated state, Wasm code, etc; it is a facade. It is important to understand the management canister's role, however, in order to understand some of the advanced ICP features, such as threshold ECDSA and integrations like Bitcoin. -Management operations such as updating a canister, creating a canister, and stopping or starting a canister, are sent to the management canister and then executed. When executed, the messages are sent to the relevant subnet and intercepted by the execution environment, which triggers the execution of the operation. +Management operations such as updating a canister, creating a canister, and stopping or starting a canister, are sent to the management canister and then executed. When executed, the messages are sent to the relevant subnet and intercepted by the execution environment, which triggers the execution of the operation. ## Prerequisites @@ -71,7 +73,7 @@ To add another identity as an additional controller of the canister, first, let' dfx identity new ControllerExample ``` -Then, get the principal value for this new identity with the command: +Then, get the principal value for this new identity with the command: ```bash dfx identity use ControllerExample @@ -226,7 +228,7 @@ Starting code for canister poll_frontend, with canister_id 5h5yf-eiaaa-aaaaa-qaa ## Checking the cycles balance of a canister -To check a canister's cycles balance, you must be the controller of the canister. The cycles balance can be seen in the output of the `dfx canister status` command, such as: +To check a canister's cycles balance, you must be the controller of the canister. The cycles balance can be seen in the output of the `dfx canister status` command, such as: ```bash dfx canister status 5o6tz-saaaa-aaaaa-qaacq-cai --network ic diff --git a/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx b/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx index 296e11bfbb..8291f43445 100644 --- a/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx +++ b/docs/tutorials/developer-journey/level-2/2.1-storage-persistence.mdx @@ -5,6 +5,7 @@ keywords: [intermediate, tutorial, developer journey, canister upgrades, caniste import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import '/src/components/CenterImages/center.scss'; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.1 Canister upgrades, storage, and persistence @@ -15,9 +16,9 @@ import '/src/components/CenterImages/center.scss'; ## Overview -The Internet Computer handles persistent data storage using a feature known as **stable memory**. **Stable memory** is a unique feature of the Internet Computer that defines a data store separate from the canister's regular Wasm memory data store, which is known as **heap memory**. A canister's heap memory is not persistent storage and does not persist across canister upgrades; canister data and state stored in heap memory is removed when a canister is upgraded or reinstalled. For immutable canisters that use less than the heap memory limit of 4GiB, heap memory can be used. For larger canisters, and especially those that intend to be upgraded and changed over time, stable memory is important since it persists across canister upgrades, has a much larger storage capacity than heap memory, and is very beneficial for vertically scaling a dapp. +The Internet Computer handles persistent data storage using a feature known as **stable memory**. **Stable memory** is a unique feature of the Internet Computer that defines a data store separate from the canister's regular Wasm memory data store, which is known as **heap memory**. A canister's heap memory is not persistent storage and does not persist across canister upgrades; canister data and state stored in heap memory is removed when a canister is upgraded or reinstalled. For immutable canisters that use less than the heap memory limit of 4GiB, heap memory can be used. For larger canisters, and especially those that intend to be upgraded and changed over time, stable memory is important since it persists across canister upgrades, has a much larger storage capacity than heap memory, and is very beneficial for vertically scaling a dapp. -To use stable memory requires anticipating and indicating which canister data you want to be retained after a canister upgrade. For some canisters, this data might be all of the canister's data, while for others it may be only certain parts or none. By default, stable memory starts empty, and can hold up to 400GiB as long as the subnet the canister is running on has the available space. If a canister uses more stable memory than 400GiB, the canister will trap and become unrecoverable. +To use stable memory requires anticipating and indicating which canister data you want to be retained after a canister upgrade. For some canisters, this data might be all of the canister's data, while for others it may be only certain parts or none. By default, stable memory starts empty, and can hold up to 400GiB as long as the subnet the canister is running on has the available space. If a canister uses more stable memory than 400GiB, the canister will trap and become unrecoverable. ## Memory types and terms @@ -186,7 +187,7 @@ dfx deploy counter_backend ``` :::info -For this tutorial, you're using the local replica environment to deploy the canisters. You can deploy yours on the mainnet with the flag `--network ic`. Remember that deploying to the mainnet will cost cycles. +For this tutorial, you're using the local replica environment to deploy the canisters. You can deploy yours on the mainnet with the flag `--network ic`. Remember that deploying to the mainnet will cost cycles. ::: You can interact with the counter dapp through the Candid UI URL returned in the output of the `dfx deploy` command, such as: diff --git a/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx b/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx index a27b6f02ba..f7c2b3e625 100644 --- a/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx +++ b/docs/tutorials/developer-journey/level-2/2.2-advanced-canister-calls.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, tutorial, developer journey, advanced canister calls, q --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.2 Advanced canister calls @@ -12,11 +13,11 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -In the previous tutorial where you [created your first dapp](/docs/current/tutorials/developer-journey/level-1/1.3-first-dapp), the developer journey briefly discussed query and update canister calls. In this tutorial, you'll dive deeper into these types of canister calls, but also take a look at advanced canister calls such as composite queries, certified variables, and inter-canister calls. +In the previous tutorial where you [created your first dapp](/docs/current/tutorials/developer-journey/level-1/1.3-first-dapp), the developer journey briefly discussed query and update canister calls. In this tutorial, you'll dive deeper into these types of canister calls, but also take a look at advanced canister calls such as composite queries, certified variables, and inter-canister calls. Let's first define the different types of canister calls and how they differ from one another: -- **Query calls** are executed on a single node within a subnet. Query calls do not alter the state of a canister. They are executed synchronously and answered immediately once received. +- **Query calls** are executed on a single node within a subnet. Query calls do not alter the state of a canister. They are executed synchronously and answered immediately once received. - **Update calls** are able to alter the canister's state. They are executed on all nodes of a subnet, since the result must go through the subnet's consensus process. Update calls are submitted and answered asynchronously. diff --git a/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx b/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx index 35abb511be..99665bee38 100644 --- a/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx +++ b/docs/tutorials/developer-journey/level-2/2.3-third-party-canisters.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, tutorial, developer journey, dfx deps, pullable caniste --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.3 Using third-party canisters @@ -12,7 +13,7 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; ## Overview -Third-party canisters are canisters that provide a public service at a static canister ID. Some examples are the DFINITY NNS and Internet Identity canisters, but third-party canisters can also be made by community developers. Using third-party canisters can be a good way to add additional functionalities to your dapp. For example, by integrating the Internet Identity canister into your dapp, you can enable identity and authentication for the users of your application. +Third-party canisters are canisters that provide a public service at a static canister ID. Some examples are the DFINITY NNS and Internet Identity canisters, but third-party canisters can also be made by community developers. Using third-party canisters can be a good way to add additional functionalities to your dapp. For example, by integrating the Internet Identity canister into your dapp, you can enable identity and authentication for the users of your application. `dfx` enables a **dependency** workflow, where a canister can be configured to pull third-party canisters that it depends on into the local environment. This can be useful for developers who are looking to test the accuracy of their integration with the third-party canister and perform tests without paying cycles or using production environments. It also drastically simplifies the local deployment of canisters like the II canister, since you don't need to obtain the Wasm and Candid files for the canisters yourself - `dfx` takes care of it in the background for you. diff --git a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx index 22555f111d..249a975eb9 100644 --- a/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx +++ b/docs/tutorials/developer-journey/level-2/2.4-intro-candid.mdx @@ -4,6 +4,7 @@ keywords: [intermediate, tutorial, developer journey, candid, introduction candi import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; import '/src/components/CenterImages/center.scss'; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.4 Introduction to Candid @@ -14,7 +15,7 @@ import '/src/components/CenterImages/center.scss'; ## Overview -Candid is an interface description language that is used to describe the public interface of a service. A **service** is usually in the form of an application deployed as a canister on ICP. Public interfaces of canisters are used to interact with the canister. Candid supports interactions through the IC SDK via the terminal, through a web browser, or through the use of agents. It also provides a way to specify input argument values and display return values from different canister **methods**, regardless of the manner used to interact with the canister. Recall that a method is a piece of code specifying a task which declares a sequence of arguments and their associated result types. +Candid is an interface description language that is used to describe the public interface of a service. A **service** is usually in the form of an application deployed as a canister on ICP. Public interfaces of canisters are used to interact with the canister. Candid supports interactions through the IC SDK via the terminal, through a web browser, or through the use of agents. It also provides a way to specify input argument values and display return values from different canister **methods**, regardless of the manner used to interact with the canister. Recall that a method is a piece of code specifying a task which declares a sequence of arguments and their associated result types. Candid is language-agnostic, which is a key benefit since it allows for the inter-operation between canisters written in different languages, such as Motoko, Rust, and JavasScript, and client applications. diff --git a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx index e011ff89fc..6fca2e2d26 100644 --- a/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx +++ b/docs/tutorials/developer-journey/level-2/2.5-unit-testing.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, tutorial, developer journey, unit testing, e2e testing, --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.5 Unit, integration, and end2end testing @@ -92,7 +93,7 @@ actor { This unit test does the following: -- First, it imports a canister called `CanisterName`. This allows the result of functions within the canister to be tested. +- First, it imports a canister called `CanisterName`. This allows the result of functions within the canister to be tested. - Then, it imports the `Canister`, `Testable` and `Matchers` packages from the Motoko Matchers project. @@ -120,7 +121,7 @@ You may also consider the [DFINITY Rust guidelines on testing](https://docs.dfin ## Tests using PocketIC -PocketIC is a community-developed project that provides local canister testing using a Python library. Using PocketIC, developers can write tests for their canister in Python, then deploy the scripts to interact with their local ICP replica. An example test with PocketIC might look like: +PocketIC is a community-developed project that provides local canister testing using a Python library. Using PocketIC, developers can write tests for their canister in Python, then deploy the scripts to interact with their local ICP replica. An example test with PocketIC might look like: ```python from pocket_ic import PocketIC diff --git a/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx b/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx index 5335980f99..ca7a46aaf5 100644 --- a/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx +++ b/docs/tutorials/developer-journey/level-2/2.6-motoko-lvl2.mdx @@ -3,6 +3,7 @@ keywords: [intermediate, tutorial, developer journey, motoko] --- import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; +import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip"; # 2.6 Motoko level 2 @@ -220,7 +221,7 @@ Want to learn more about actor classes? Take a look at the documentation on [act ## Using multiple actors -Until this point in our developer journey, you've interacted with one actor defined in our `backend` canister Motoko file. Next, you're going to create a project that uses multiple actors. Remember that only one actor can be defined in a Motoko file, and a single actor is always compiled into a single canister. To create multiple actors, you'll create multiple Motoko files and build multiple canisters. To do this, you'll define two canisters in your project's `dfx.json` configuration file. +Until this point in our developer journey, you've interacted with one actor defined in our `backend` canister Motoko file. Next, you're going to create a project that uses multiple actors. Remember that only one actor can be defined in a Motoko file, and a single actor is always compiled into a single canister. To create multiple actors, you'll create multiple Motoko files and build multiple canisters. To do this, you'll define two canisters in your project's `dfx.json` configuration file. You'll create two actors unrelated to one another: diff --git a/submodules/dfxvm b/submodules/dfxvm index 4b613418e2..f3a159e194 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 +Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab diff --git a/submodules/interface-spec b/submodules/interface-spec index eb6663a776..2f49b0e230 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 +Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d diff --git a/submodules/internetidentity b/submodules/internetidentity index 14607ee438..3f049ecd9e 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd +Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b diff --git a/submodules/motoko b/submodules/motoko index a4e39cac60..0d36eff4c5 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e +Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 diff --git a/submodules/quill b/submodules/quill index d649fb5658..07a6415af8 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 +Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 diff --git a/submodules/response-verfication b/submodules/response-verfication index 8d559e5a36..600b3d5339 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b +Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d diff --git a/submodules/samples b/submodules/samples index 294a2418ab..ee8f2382e7 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e +Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 diff --git a/submodules/sdk b/submodules/sdk index dad16fb75f..ef436da624 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 +Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f From 9bec8426a56e063cb48b740fd92a4fe0e0cecad9 Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Mon, 1 Jul 2024 08:55:48 -0500 Subject: [PATCH 6/9] remove submodule updates --- submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/submodules/dfxvm b/submodules/dfxvm index f3a159e194..4b613418e2 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab +Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 diff --git a/submodules/interface-spec b/submodules/interface-spec index 2f49b0e230..eb6663a776 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d +Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 diff --git a/submodules/internetidentity b/submodules/internetidentity index 3f049ecd9e..14607ee438 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b +Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd diff --git a/submodules/motoko b/submodules/motoko index 0d36eff4c5..a4e39cac60 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 +Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e diff --git a/submodules/quill b/submodules/quill index 07a6415af8..d649fb5658 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 +Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 diff --git a/submodules/response-verfication b/submodules/response-verfication index 600b3d5339..8d559e5a36 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d +Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b diff --git a/submodules/samples b/submodules/samples index ee8f2382e7..294a2418ab 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 +Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e diff --git a/submodules/sdk b/submodules/sdk index ef436da624..dad16fb75f 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f +Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 From 427c75c8b77682d68aaf7bdc7f11f048835a1bc0 Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Mon, 1 Jul 2024 09:05:29 -0500 Subject: [PATCH 7/9] update sidebar --- sidebars.js | 11 +++++++++++ submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 9 files changed, 19 insertions(+), 8 deletions(-) diff --git a/sidebars.js b/sidebars.js index 3284c6557c..30d359b30b 100644 --- a/sidebars.js +++ b/sidebars.js @@ -987,6 +987,17 @@ const sidebars = { "developer-docs/defi/nfts/marketplaces" ], }, + { + type: "category", + label: "Decentralized exchanges", + items: [ + { + type: "doc", + label: "Overview", + id: "developer-docs/defi/dex/overview", + }, + ], + }, { type: "category", label: "Wallets", diff --git a/submodules/dfxvm b/submodules/dfxvm index f3a159e194..4b613418e2 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab +Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 diff --git a/submodules/interface-spec b/submodules/interface-spec index 2f49b0e230..eb6663a776 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d +Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 diff --git a/submodules/internetidentity b/submodules/internetidentity index 3f049ecd9e..14607ee438 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b +Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd diff --git a/submodules/motoko b/submodules/motoko index 0d36eff4c5..a4e39cac60 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 +Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e diff --git a/submodules/quill b/submodules/quill index 07a6415af8..d649fb5658 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 +Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 diff --git a/submodules/response-verfication b/submodules/response-verfication index 600b3d5339..8d559e5a36 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d +Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b diff --git a/submodules/samples b/submodules/samples index ee8f2382e7..294a2418ab 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 +Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e diff --git a/submodules/sdk b/submodules/sdk index ef436da624..dad16fb75f 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f +Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 From b47f6ed2c7120e10dc71afe60ff32b9d9ba338bb Mon Sep 17 00:00:00 2001 From: Jessie Mongeon Date: Mon, 1 Jul 2024 09:21:43 -0500 Subject: [PATCH 8/9] remove submodule changes --- submodules/dfxvm | 2 +- submodules/interface-spec | 2 +- submodules/internetidentity | 2 +- submodules/motoko | 2 +- submodules/quill | 2 +- submodules/response-verfication | 2 +- submodules/samples | 2 +- submodules/sdk | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/submodules/dfxvm b/submodules/dfxvm index 4b613418e2..f3a159e194 160000 --- a/submodules/dfxvm +++ b/submodules/dfxvm @@ -1 +1 @@ -Subproject commit 4b613418e27fa034e0fb74ae9b491a059a637d55 +Subproject commit f3a159e194e5b386509795c5c2088f4b0d9c08ab diff --git a/submodules/interface-spec b/submodules/interface-spec index eb6663a776..2f49b0e230 160000 --- a/submodules/interface-spec +++ b/submodules/interface-spec @@ -1 +1 @@ -Subproject commit eb6663a776ebe77270eac316ba37d28f40c57830 +Subproject commit 2f49b0e2304d3373fdd20aa501a2bc2e0e9ff18d diff --git a/submodules/internetidentity b/submodules/internetidentity index 14607ee438..3f049ecd9e 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 14607ee43877b1ccbbea18d17e5a36cda15480bd +Subproject commit 3f049ecd9e242f93a6f13e4125f1a0da5071115b diff --git a/submodules/motoko b/submodules/motoko index a4e39cac60..0d36eff4c5 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit a4e39cac605851edb89047192d323d8a62bbb12e +Subproject commit 0d36eff4c567b53ee0a6c654ff448ace8263ffc4 diff --git a/submodules/quill b/submodules/quill index d649fb5658..07a6415af8 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit d649fb5658d052bef811a6ce95d0ae0a9ff37685 +Subproject commit 07a6415af8a9fc9399b0451d805306e66508bda1 diff --git a/submodules/response-verfication b/submodules/response-verfication index 8d559e5a36..600b3d5339 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 8d559e5a3652098796e5f153987fe5af74e3212b +Subproject commit 600b3d5339381bbfe3454ce870a04afa79005c3d diff --git a/submodules/samples b/submodules/samples index 294a2418ab..ee8f2382e7 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit 294a2418aba13d7e33d0e9a5fa8db28be8d9974e +Subproject commit ee8f2382e7b5bba57cc807d7272d23313fb6af38 diff --git a/submodules/sdk b/submodules/sdk index dad16fb75f..ef436da624 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit dad16fb75f75c18a8e6af76a60ab73c9ab0035d6 +Subproject commit ef436da624261cff7458b1c1dfe2b2add906338f From 44189c7b6846a9ee1b5d25815f55662eb8a47bde Mon Sep 17 00:00:00 2001 From: Jessie Mongeon <133128541+jessiemongeon1@users.noreply.github.com> Date: Mon, 1 Jul 2024 09:36:16 -0500 Subject: [PATCH 9/9] Update overview.mdx --- docs/developer-docs/defi/dex/overview.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/developer-docs/defi/dex/overview.mdx b/docs/developer-docs/defi/dex/overview.mdx index c891f330e0..b0a5c5e3df 100644 --- a/docs/developer-docs/defi/dex/overview.mdx +++ b/docs/developer-docs/defi/dex/overview.mdx @@ -6,6 +6,8 @@ import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; # Decentralized exchange overview + + A decentralized exchange, or DEX, is a peer-to-peer marketplace where transactions are executed directly between parties. There is no central intermediary that executes the transaction, such as a bank, broker, or other institution. Each transaction is recorded directly on-chain. DEXs are primarily used to trade or swap cryptocurrencies. ## Centralized exchanges versus decentralized exchanges @@ -26,4 +28,4 @@ Some examples of DEXs running on ICP include: - [ICDex](https://avjzx-pyaaa-aaaaj-aadmq-cai.raw.ic0.app/ICDex) -- [Sonic](https://sonic.ooo/) \ No newline at end of file +- [Sonic](https://sonic.ooo/)