diff --git a/README.md b/README.md index 681eb8a50b..220bf01d62 100644 --- a/README.md +++ b/README.md @@ -588,11 +588,11 @@ The [Ecosystem Helper](https://mvw4g-yiaaa-aaaam-abnva-cai.icp0.io/) is an oncha ### Asset guidelines -| Asset | | Requirements | Format | Notes | -|-------------|----------|--------------|--------------|-----------------------------------------------------------------------------------| -| logo | required | 112x112px | webp/svg/png | Currently displayed 56x56px | -| screenshots | optional | 1024x576px | webp/jpg | The schema supports multiple files, but only the first one will be displayed | -| video | optional | max 10MB | webm/mp4 | If there is a video file specified, it will be displayed instead of a screenshot. | +| Asset | | Requirements | Format | Notes | +|-------------|----------|---------------------------------|---------------------------|----------------------------------------------------------------------------------------| +| logo | required | 112x112px (1:1 aspect ratio) | svg(recommended)/png/webp | Optimize file size with [SVGOMG](https://svgomg.net) or [TinyPNG](https://tinypng.com) | +| screenshots | optional | 1024x576px | webp/jpg | The schema supports multiple files, but only the first one will be displayed | +| video | optional | max 10MB | webm/mp4 | If there is a video file specified, it will be displayed instead of a screenshot. | ### Tags diff --git a/blog/features/vetkey-primer.md b/blog/features/vetkey-primer.md index 47dbd496d3..224bc23bb3 100644 --- a/blog/features/vetkey-primer.md +++ b/blog/features/vetkey-primer.md @@ -63,7 +63,7 @@ Considering that blockchains are very public places where transparency has been Note that we care most about the secret ***key derivation*** here, as that is the most sensitive part which we want to protect from one central (potentially untrusted, unauthorized, or compromised) party, and hence the **KD** in VETKD. To deal with the centralization point, we need to move into the distributed setting. Assuming there is no one trusted party, we distribute trust amongst multiple parties, and require that some *threshold* of them collaborate on shares of the master secret key to derive decryption keys. How do parties **get shares** of the master secret key? This is done by leveraging a distributed key generation (DKG) protocol, where a threshold of honest parties (or nodes) work together to obtain a set of master key shares. Assuming no collusion between nodes, at no point does any one node hold the full private key. -Click around to learn more about [threshold cryptography]( https://en.wikipedia.org/wiki/Threshold_cryptosystem), [DKG](https://en.wikipedia.org/wiki/Distributed_key_generation) and chapter 22 in the [Boneh-Shoup book](http://toc.cryptobook.us/). +Click around to learn more about [threshold cryptography]( https://en.wikipedia.org/wiki/Threshold_cryptosystem), [DKG](https://en.wikipedia.org/wiki/Distributed_key_generation) and chapter 22 in the [Boneh-Shoup book](https://toc.cryptobook.us/). It’s clear from above that we don't want a centralised key derivation process and this is why we need the **T** for the KD process, but what about **V** and **E**? Perhaps this is best highlighted by a scenario. @@ -100,7 +100,7 @@ At a first glance, we could guess that we will need a distributed key generation Crucially, An observation buried in [BF01] gives us the answer. Moni Naor noted that an IBE scheme can be directly converted into a signature scheme. Considering the key derivation of Boneh-Franklin IBE specifically, the resulting signature scheme happens to be BLS. ### BLS signatures -Digital signatures are used everywhere in cryptography and in the blockchain world to attest to the authenticity of a message, transaction, or other pieces of information. As they are so prevalent, it’s really worth spending time getting to know them. You can get a high level view on wikipedia ([Digital Signatures](https://en.wikipedia.org/wiki/Digital_signature) and [BLS](https://en.wikipedia.org/wiki/BLS_digital_signature)), and dive into the [Boneh-Shoup book](http://toc.cryptobook.us/) when you want more formal details. +Digital signatures are used everywhere in cryptography and in the blockchain world to attest to the authenticity of a message, transaction, or other pieces of information. As they are so prevalent, it’s really worth spending time getting to know them. You can get a high level view on wikipedia ([Digital Signatures](https://en.wikipedia.org/wiki/Digital_signature) and [BLS](https://en.wikipedia.org/wiki/BLS_digital_signature)), and dive into the [Boneh-Shoup book](https://toc.cryptobook.us/) when you want more formal details. BLS signatures are a particular type of digital signature introduced in by Dan Boneh, Ben Lynn, and Hovav Shacham in 2001. @@ -132,7 +132,7 @@ This page contains a high level view and description of VETKD and its building b It also shows one possible way of building VETKD, there are others, some with fancy features, that are described more in the paper. There are many use cases and motivations for building VETKD, these are discussed in [the video](https://youtu.be/baM6jHnmMq8) and can be written up if you like. There are also extensions that could be built depending on what is needed in the community. Finally, note that this page is hosted onchain. ## References -* [BS23](http://toc.cryptobook.us/) - The Boneh-Shoup Book. +* [BS23](https://toc.cryptobook.us/) - The Boneh-Shoup Book. * [BF01](https://crypto.stanford.edu/~dabo/papers/bfibe.pdf) - The IBE paper. * [BLS01](https://www.iacr.org/archive/asiacrypt2001/22480516.pdf) - The BLS paper. * [DH76](https://ee.stanford.edu/~hellman/publications/24.pdf) - Diffie and Hellman's New Directions paper. diff --git a/blog/news-and-updates/2023-12-06-update.mdx b/blog/news-and-updates/2023-12-06-update.mdx index 9932cab04c..da5a0ab057 100644 --- a/blog/news-and-updates/2023-12-06-update.mdx +++ b/blog/news-and-updates/2023-12-06-update.mdx @@ -15,7 +15,7 @@ Hello developers and welcome back to developer weekly! This week, we have some v On Friday, December 1st, the NNS proposals to enable ckETH on ICP went live. We're excited to announce that all proposals were passed by the NNS, and ckETH is now live on the mainnet! -ckETH has been added to the ICP dashboard, which you can view [here](http://dashboard.internetcomputer.org/ethereum). You can learn how to interact with ckETH by reviewing the ckETH minter documentation [here](https://github.com/dfinity/ic/blob/master/rs/ethereum/cketh/minter/README.adoc). +ckETH has been added to the ICP dashboard, which you can view [here](https://dashboard.internetcomputer.org/ethereum). You can learn how to interact with ckETH by reviewing the ckETH minter documentation [here](https://github.com/dfinity/ic/blob/master/rs/ethereum/cketh/minter/README.adoc). ckETH support is also live in the ICRC-1 wallet, which includes ckETH has a pre-defined token. The index canister has been integrated, allowing you to mint directly to your principal. The ICRC-1 wallet canister can be found [here](https://e4hv6-7yaaa-aaaao-a2ida-cai.icp0.io/) diff --git a/blog/news-and-updates/2024-08-14-update.mdx b/blog/news-and-updates/2024-08-14-update.mdx index 326605868f..19a6175e1a 100644 --- a/blog/news-and-updates/2024-08-14-update.mdx +++ b/blog/news-and-updates/2024-08-14-update.mdx @@ -27,7 +27,7 @@ The digital assets section of the developer docs has gotten an overhaul! Before, - [Token standards](/docs/current/developer-docs/defi/tokens/token-standards) -- [Asset flow](/docs/current/developer-docs/defi/tokens/asset_flow/) +- [Asset flow](/docs/current/developer-docs/defi/overview) - [Ledger integration options](/docs/current/developer-docs/defi/tokens/advanced/direct_integration) diff --git a/blog/news-and-updates/2024-10-09-update.mdx b/blog/news-and-updates/2024-10-09-update.mdx index dbd6623103..40e3630da4 100644 --- a/blog/news-and-updates/2024-10-09-update.mdx +++ b/blog/news-and-updates/2024-10-09-update.mdx @@ -40,7 +40,7 @@ Developer office hours are back in the ICP developer Discord server! Every Wedne Be sure to drop in to the session and ask questions, share your project, or simply listen in on the discussion. -[Join the ICP developer Discord server](https://discord.gg/RMZNkGMp8N). +[Join the ICP developer Discord server](https://discord.internetcomputer.org). ## Community spotlight: KongSwap @@ -50,4 +50,4 @@ You can [try KongSwap yourself](https://www.kongswap.io/?viewtab=swap&pool=ICP_c That'll wrap up this week. Tune back in next week for more developer updates! --DFINITY \ No newline at end of file +-DFINITY diff --git a/blog/news-and-updates/2024-12-04-update.mdx b/blog/news-and-updates/2024-12-04-update.mdx new file mode 100644 index 0000000000..e4f2792748 --- /dev/null +++ b/blog/news-and-updates/2024-12-04-update.mdx @@ -0,0 +1,42 @@ +--- +title: Developer weekly update December 4, 2024 +description: This week we have a new release of dfx, an important update about the Bitcoin integration, and an update from the community project Juno. +tags: [Devs] +image: /img/blog/dev-update-blog-dec-4.jpg +--- + +# Developer weekly update December 4, 2024 + +![December 4 2024](../../static/img/blog/dev-update-blog-dec-4.jpg) + +Hello developers, and welcome to this week's developer weekly update! This week we have a new release of `dfx`, an important update about the Bitcoin integration, and an update from the community project Juno. Let's get started! + +## dfx v0.24.3 + +The latest version of `dfx` is now promoted! This latest update includes new features such as: + +- PocketIC now supports Bitcoin through the `--enable-bitcoin` and `--bitcoin-node` flags. + +- The canisters for the ICP, ckBTC, and ckETH ledger canisters can now be pulled. + +- The frontend canister now supports setting canister permissions in the init arguments. + +- Output for `dfx start` and `dfx cycles` have been improved. + +[Read the full release notes](https://github.com/dfinity/sdk/releases/tag/0.24.3). + +## Bitcoin integration updates + +The Bitcoin Testnet API is being migrated from Testnet v3 to Testnet v4. To support this work, the ckTestBTC minter has been stopped and the Bitcoin Testnet API has been disabled. Once the migration has finished, these features will be re-enabled. + +You can stay up to date on the status via the [forum](https://forum.dfinity.org/t/direct-integration-with-bitcoin/6147/743?u=cryptoschindler). + +## Juno v0.0.39 + +A new version of Juno has been released! This latest version introduces backups to Juno through the new ICP canister snapshot feature. Backups are available through both the Juno API and the Juno CLI tool. + +[Learn more in the Juno release notes](https://github.com/junobuild/juno/releases/tag/v0.0.39). + +That'll wrap up this week. Tune back in next week for more developer updates! + +-DFINITY \ No newline at end of file diff --git a/blog/news-and-updates/team-spotlight-sdk.mdx b/blog/news-and-updates/team-spotlight-sdk.mdx index bc127d5054..6ffa92964b 100644 --- a/blog/news-and-updates/team-spotlight-sdk.mdx +++ b/blog/news-and-updates/team-spotlight-sdk.mdx @@ -67,7 +67,7 @@ Hey devs and welcome to this edition of ICP team spotlight! In this issue, we sa **The SDK team is pretty involved with the dev community on the forum and Discord server, which I'm sure has lead to features derived as a result of community feedback. What are some of the improvements made as a direct result of developer feedback?** -*Lots! We built the [developer feedback board](http://dx.internetcomputer.org) a while back, and every two weeks, our internal focus group meets to go over the latest items and check-in on the progress we’ve made addressing others. One thing that's come as a result of the feedback received is the `dfx` version manager. Developers expressed that they want a way to switch `dfx` versions easily. We spent some time working out how best to accomplish that, and the `dfx` version manager was born. Another example is the Cycles Ledger - we heard feedback that the Cycles Wallet was a pain to use and developers wanted a better solution. We are continuously looking for ways to improve our tooling, so keep the feedback coming!* +*Lots! We built the [developer feedback board](https://dx.internetcomputer.org) a while back, and every two weeks, our internal focus group meets to go over the latest items and check-in on the progress we’ve made addressing others. One thing that's come as a result of the feedback received is the `dfx` version manager. Developers expressed that they want a way to switch `dfx` versions easily. We spent some time working out how best to accomplish that, and the `dfx` version manager was born. Another example is the Cycles Ledger - we heard feedback that the Cycles Wallet was a pain to use and developers wanted a better solution. We are continuously looking for ways to improve our tooling, so keep the feedback coming!* **Where should developers look for the latest SDK updates?** diff --git a/docs/developer-docs/defi/tokens/asset_flow/_category_.yml b/docs/developer-docs/defi/tokens/asset_flow/_category_.yml deleted file mode 100644 index 947103ef9c..0000000000 --- a/docs/developer-docs/defi/tokens/asset_flow/_category_.yml +++ /dev/null @@ -1,3 +0,0 @@ -label: 'Asset Flow' -position: 7 -collapsed: true \ No newline at end of file diff --git a/docs/developer-docs/defi/tokens/asset_flow/index.mdx b/docs/developer-docs/defi/tokens/asset_flow/index.mdx deleted file mode 100644 index 0750563296..0000000000 --- a/docs/developer-docs/defi/tokens/asset_flow/index.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -keywords: [intermediate, tokens, tutorial, ledger, asset flow] ---- - -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"; - - -# Asset flow - - - -## Overview - -When interacting with the [ICP or ICRC-1 ledgers](/docs/developer-docs/defi/tokens/ledger/overview.mdx), there are different asset flow operations that can be executed. These operations are: - -* **Transfer**: A simple transfer between two entities. -* **Approve**: Approving tokens to be spent by another entity. -* **Mint**: Creating new tokens (**Requires minting account privileges**). -* **Burn**: Destroying tokens. -* **TransferFrom**: Spend approved tokens on behalf of another entity. - -Both ledger types support these operations. There are several ways on how to create transactions corresponding to each asset flow operation. This guide will demonstrate how to use `dfx` using `Rust` code. - -### Prerequisites - -* Download and install [`dfx`](/docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-parent). - -* Setup an [ICP Rust agent](https://crates.io/crates/ic-agent). - -## Transfer tokens - -To transfer tokens, your transaction will need the following required fields: - -* `to`: The account that will receive the tokens. -* `amount`: The amount of tokens to be sent. - -Additionally, the transaction takes the following optional fields: - -* `from_subaccount`: The subaccount of the approver. -* `fee`: The fee paid by the sender for the transfer. If not set, the default fee will have to be paid. -* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness. -* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication). - -### dfx -Here is an example command for a `Transfer` transaction using `dfx`: -```bash -dfx canister call icrc1_ledger_canister icrc1_transfer "(record { to = record { owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";}; amount = 10_000;})" -``` - -### Rust -Here is an example Rust code snippet for making a `Transfer` transaction: -```bash -let to = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None}; -let amount = candid::Nat::from(500u64); -let transfer_arg = icrc_ledger_types::icrc1::transfer::TransferArg{ - from_subaccount: None, - to, - amount, - fee: None, - memo: : None, - created_at_time: : None, -} -candid::Decode!(&ic_agent.update("icrc1_transfer", &candid::Encode!(&transfer_arg)?).await.unwrap(), Result).unwrap(); -``` -:::info -Mint and burn operations are technically speaking also transfers. They work exactly like regular transfers with certain conditions that have to be met. They are the following: -* For **mint** operations, the sender of the transfer has to be the minter account. This means that if you want to make mint transactions, you will need to know the private key of the minter account. The recipient will receive the newly minted tokens. -* For **burn** operations, the receiver needs to be set to the mint account while the sender can be any account. You can request the minter account by calling the `icrc1_minting_account` endpoint of the ledger. -::: - -## Approve tokens -To approve tokens, your transaction will need the following required fields: - -* `spender`: The account that is allowed to spend the tokens. -* `amount`: The maximum amount of tokens to be spent by the spender. - -Additionally, the transaction takes the following optional fields: - -* `from_subaccount`: The subaccount of the approver. -* `expected_allowance`: If set, this field serves as a guarantee that before the new approved amount is set, the expected allowance reflects the previously set approved amount. -* `expires_at`: The timestamp at which the allowance will expire. -* `fee`: The fee paid by the approver for the approval. If not set, the default fee will have to be paid. -* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness. -* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication). - -### dfx -Here is an example command for an `Approve` transaction using `dfx`: -```bash -dfx canister call icrc1_ledger_canister icrc2_approve "(record { amount = 500; spender = record{owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";} })" -``` - -### Rust -Here is an example Rust code snippet for making an `Approve` transaction: -```bash -let spender = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None}; -let amount = candid::Nat::from(500u64); -let approve_args = icrc_ledger_types::icrc1::approve::ApproveArgs{ - from_subaccount: None, - spender, - amount, - expected_allowance: None, - expires_at: None, - fee: None, - memo: : None, - created_at_time: : None, -} -candid::Decode!(&ic_agent.update("icrc2_approve", &candid::Encode!(&approve_args)?).await.unwrap(), Result).unwrap(); -``` - -## Transferring approved tokens -To transfer approved tokens, your transaction will need the following required fields: -* `to`: The account that will receive the tokens. -* `from`: The approvers account who's tokens will be transferred. -* `amount`: The amount of tokens to be sent. -Additionally, the transaction takes the following optional fields: -* `spender_subaccount`: The subaccount of the spender. -* `fee`: The fee paid by the sender for the transfer. If not set the default fee will have to be paid. -* `memo`: An arbitrary 32 bytes array to ensure transaction hash uniqueness. -* `created_at_time`: A timestamp that is used to trigger the [deduplication mechanism](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md#transaction_deduplication). - -### dfx -Here is an example command for a `TransferFrom` transaction using `dfx`: -```bash -dfx canister call icrc1_ledger_canister icrc2_transfer_from "(record { from = record { owner = principal \"ltyfs-qiaaa-aaaak-aan3a-cai\";}; to = record { owner = principal \"sckqo-e2vyl-4rqqu-5g4wf-pqskh-iynjm-46ixm-awluw-ucnqa-4sl6j-mqe\";}; amount = 500;})" -``` - -### Rust -Here is an example Rust code snippet for making a `TransferFrom` transaction: -```bash -let to = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[1, 2, 3, 4]) , subaccount: None}; -let from = icrc_ledger_types::icrc1::account::Account{ owner:ic_principal::Principal::from_slice(&[5, 6, 7, 8]) , subaccount: None}; -let amount = candid::Nat::from(500u64); -let transfer_from_arg = icrc_ledger_types::icrc1::transfer_from::TransferFromArgs{ - spender_subaccount: None, - from, - to, - amount, - fee: None, - memo: : None, - created_at_time: : None, -} -candid::Decode!(&ic_agent.update("icrc2_transfer_from", &candid::Encode!(&transfer_from_arg)?).await.unwrap(), Result).unwrap(); -``` \ No newline at end of file diff --git a/docs/developer-docs/defi/tokens/ledger/overview.mdx b/docs/developer-docs/defi/tokens/ledger/overview.mdx deleted file mode 100644 index 3700da07a1..0000000000 --- a/docs/developer-docs/defi/tokens/ledger/overview.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -keywords: [intermediate, rosetta, tutorial, accountidentifier] ---- -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Ledger overview - -In this section, you will learn about the different types of ledgers that exist on the Internet Computer. This guide will go into detail about what the different ledgers are, what their purposes are, and how they differ from ledgers you may be familiar with from other blockchains. - -## ICP ledger -The ICP ledger is a canister that is responsible for keeping track of ICP balances, processing new transactions, and providing clients with data about the history of transactions. It stores all data onchain. For every transaction, a single block is created, which points to its parent block by storing the parent block's hash. - -The ICP ledger uses `AccountIdentifiers` as its internal account representation. It is compatible with the ICRC-1 standard; however, due to the fact that it uses `AccountIdentifiers` instead of `Accounts'` it stores information in a different block format than ICRC-1 ledgers. The same is true for the minting account of the ICP ledger. - -It runs on the NNS subnet, as it is part of the NNS, and its controller is the governance canister. Upgrades to the ICP ledger have to be approved by the NNS, making the process decentralized. - -## ICRC-1 ledgers -ICRC-1 ledgers are a standardized version of ledgers on the Internet Computer. While [ICRC-1](/docs/current/developer-docs/defi/tokens/token-standards) is the network standard defining how ledger canisters should behave, an ICRC-1 ledger is a single implementation of the ICRC-1 standard. It differs from the ICP ledger as it uses `Accounts` as its internal representation. - -ICRC-1 ledgers are stand-alone implementations, but in many cases, they are part of a larger software structure, such as an SNS or chain-key token implementation. - -## Differences from other blockchains -One of the biggest differences between ledgers deployed on ICP and ledgers deployed on other blockchains is that most account-based blockchains have the balances of accounts baked into their base protocol (e.g., Ethereum). This is not the case with either the ICP or ICRC-1 ledgers. - -The ICP ledger canister sits on the application layer of the network rather than the protocol level. Consensus on the Internet Computer is independent of the existence of the ICP ledger. Nevertheless, the ICP ledger is fundamentally important to the way the network functions, especially due to its importance as a part of the NNS. - -Since the ICP ledger runs on the application layer, transfers of the ICP token do not happen at the protocol level as they do on other chains. All ICP token transactions go through this canister. Any information gathered about historic ICP token transactions originates from the ICP ledger canister. This includes the ICP index canister, which fetches blocks periodically from the ICP ledger canister. - -ICRC-1 ledgers are very similar in this regard; however, they resemble tokens that can often be found on other blockchains more closely. They are also run by a canister that runs the ICRC-1 ledger code, and all transactions of the ICRC-1 token go through an ICRC-1 ledger canister. - - diff --git a/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx b/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx index 313893e937..19b9dfc9a6 100644 --- a/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx +++ b/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx @@ -33,11 +33,11 @@ If using `dfx` version 0.17.1 or newer, choose 'Motoko' for the backend language ### Step 3: Determine ledger file locations. -Go to the [releases overview](https://dashboard.internetcomputer.org/releases) and copy the latest replica binary revision. At the time of writing, this is `aba60ffbc46acfc8990bf4d5685c1360bd7026b9`. +Search for [ledger-suite-icrc releases](https://github.com/dfinity/ic/releases?q=ledger-suite-icrc&expanded=false) and select the latest ICRC ledger suite release. At the time of writing, this is [`ledger-suite-icrc-2024-11-28`](https://github.com/dfinity/ic/releases/tag/ledger-suite-icrc-2024-11-28). -The URL for the ledger Wasm module is `https://download.dfinity.systems/ic//canisters/ic-icrc1-ledger.wasm.gz`, so with the above revision it would be `https://download.dfinity.systems/ic/aba60ffbc46acfc8990bf4d5685c1360bd7026b9/canisters/ic-icrc1-ledger.wasm.gz`. +The URL for the ledger Wasm module is `https://github.com/dfinity/ic/releases/download//ic-icrc1-ledger.wasm.gz`, so with the above release it would be `https://github.com/dfinity/ic/releases/download/ledger-suite-icrc-2024-11-28/ic-icrc1-ledger.wasm.gz`. -The URL for the ledger .did file is `https://raw.githubusercontent.com/dfinity/ic//rs/ledger_suite/icrc1/ledger/ledger.did`, so with the above revision it would be `https://raw.githubusercontent.com/dfinity/ic/aba60ffbc46acfc8990bf4d5685c1360bd7026b9/rs/ledger_suite/icrc1/ledger/ledger.did`. +The URL for the ledger .did file is `https://github.com/dfinity/ic/releases/download//ledger.did`, so with the above release it would be `https://github.com/dfinity/ic/releases/download/ledger-suite-icrc-2024-11-28/ledger.did`. #### Optional: @@ -51,15 +51,15 @@ chmod +x download_latest_icrc1_ledger.sh These files will be used by the `dfx.json` file as described in the next step. ### Step 4: Configure the `dfx.json` file. -Open the `dfx.json` file in your project's directory. Replace the existing content with the following and make sure you replace `` in the `candid` and `wasm` URLs as shown in step 3: +Open the `dfx.json` file in your project's directory. Replace the existing content with the following and make sure you replace `` in the `candid` and `wasm` URLs as shown in step 3: ``` json { "canisters": { "icrc1_ledger_canister": { "type": "custom", - "candid": "https://raw.githubusercontent.com/dfinity/ic//rs/ledger_suite/icrc1/ledger/ledger.did", - "wasm": "https://download.dfinity.systems/ic//canisters/ic-icrc1-ledger.wasm.gz" + "candid": "https://github.com/dfinity/ic/releases/download//ledger.did", + "wasm": "https://github.com/dfinity/ic/releases/download//ic-icrc1-ledger.wasm.gz" } }, "defaults": { diff --git a/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx b/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx deleted file mode 100644 index e466f691fc..0000000000 --- a/docs/developer-docs/defi/tokens/ledger/setup/overview.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -keywords: [intermediate, rosetta, tutorial, accountidentifier] ---- -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Ledger setup - -## Overview - -In this section you will learn how to setup a local instance of a ledger. This guide will go into depth on how to install, deploy and initialize two types of ledgers: -* [ICP Ledger Setup](/docs/developer-docs/defi/tokens/ledger/setup/icp_ledger_setup.mdx) -* [ICRC-1 Ledger Setup](/docs/developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup.mdx) diff --git a/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx b/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx deleted file mode 100644 index 50b8f356e2..0000000000 --- a/docs/developer-docs/defi/tokens/ledger/usage/overview.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -keywords: [intermediate, rosetta, tutorial, accountidentifier] ---- -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Ledger usage - -## Overview - -In this section you will learn how to use a ledger. This guide will go into depth on how to interact with two types of ledgers: -* [Using the ICP ledger](/docs/developer-docs/defi/tokens/ledger/usage/icp_ledger_usage.mdx) -* [Using the ICRC-1 ledger](/docs/developer-docs/defi/tokens/ledger/usage/icrc1_ledger_usage.mdx) diff --git a/docs/developer-docs/getting-started/tokens-and-cycles.mdx b/docs/developer-docs/getting-started/tokens-and-cycles.mdx index 14f2fef3d2..e773172e10 100644 --- a/docs/developer-docs/getting-started/tokens-and-cycles.mdx +++ b/docs/developer-docs/getting-started/tokens-and-cycles.mdx @@ -50,9 +50,9 @@ The Internet Computer supports creating and deploying custom fungible or non-fun ## What is a ledger? -A [**ledger**](/docs/current/developer-docs/defi/tokens/ledger/overview) is a system canister used to store accounts and their transactions. Each token on the Internet Computer has its **own** ledger. This means that there are separate ledgers for ICP tokens, cycles, and every ICRC token that has been deployed on the network. +A [**ledger**](/docs/current/developer-docs//defi/overview) is a system canister used to store accounts and their transactions. Each token on the Internet Computer has its **own** ledger. This means that there are separate ledgers for ICP tokens, cycles, and every ICRC token that has been deployed on the network. -[Learn more about ledgers](/docs/current/developer-docs/defi/tokens/ledger/overview). +[Learn more about ledgers](/docs/current/developer-docs//defi/overview). ## Obtaining cycles diff --git a/docs/developer-docs/identity/authentication/email-password.mdx b/docs/developer-docs/identity/authentication/email-password.mdx deleted file mode 100644 index 0f8dd90b6f..0000000000 --- a/docs/developer-docs/identity/authentication/email-password.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -keywords: [intermediate, tutorial, user sign in, user login, email password, nfid] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Email & password - - - -## Overview - -For some dapps, authenticating with a traditional email and password method may be desired. To support this workflow, [NFID](https://nfid.one/) can be used. NFID is a form of digital identity with a backend built entirely on ICP. It supports authentication with dapps through an email and password login or an existing Google account. - -[Learn how to use NFID](nfid.mdx). - -## Resources - -- [How NFID works](https://docs.nfid.one/embed/how-it-works/overview). - -- [NFID documentation](https://docs.nfid.one/embed/integration/quickstart). - -- [NFID playground](https://playground.nfid.one/). - -- [NFID Medium blog post](https://medium.com/dfinity/nfid-the-digital-identity-protocol-7d8a39f7ac85). \ No newline at end of file diff --git a/docs/developer-docs/identity/authentication/msq.mdx b/docs/developer-docs/identity/authentication/msq.mdx deleted file mode 100644 index 6e9cd8b6ef..0000000000 --- a/docs/developer-docs/identity/authentication/msq.mdx +++ /dev/null @@ -1,140 +0,0 @@ ---- -keywords: [authentication, msq, integration] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# MSQ - - - -## Overview - -[MSQ](https://icp.msq.tech/) is a [MetaMask Snap](https://metamask.io/snaps/) designed to allow users to use Metamask to authenticate with dapps deployed on ICP. MSQ uses a scoped-identity architecture, meaning each user gets a unique and dedicated identity for each domain they interact with. Scoped-identity architectures help protect users from signature-stealing attacks. - -I'll let you decide what is the best way to explain this! - -Response from MSQ team: https://forum.dfinity.org/t/msq-hits-the-metamask-snap-store/30499/23 - -It provides two primary features: - -- User authorization: Web services can sign arbitrary data with a user's scoped key pair. - -- ICRC-1 payments: Users can request to perform ICRC-1 transfers to pay for goods or services. - -## Installation - -Insall the `msq` package with the command: - -``` -npm install @fort-major/msq-client -``` - -Then, import it into your project's `package.json` file: - -```json title="package.json" -"dependencies": { - ... - "@fort-major/msq-client": "^0.3", - ... -} -``` - -Users will need to connect to MetaMask and the MSQ Snap. - -The MSQ client library does this using the following function. For example, a user who interacts with a frontend element (e.g., button) that triggers the function will be prompted to connect using Metamask and install the MSQ Snap. - -```typescript title="src/frontend/index.tsx" -const result = await MsqClient.create(); - -if (!("Ok" in result)) { - // handle possible errors -} -``` - -Then, retrieve the client with the following code: - -```typescript title="src/frontend/index.tsx" -import { TMsqCreateOk, MsqClient } from "@fort-major/msq-client"; - -const msq: MsqClient = (result as TMsqCreateOk).Ok; -``` - -The MSQ client library version correlates with the respective Snap version. For example, the client library version `0.2.4` works with Snap version `0.2.x` or `0.3.x`, but does not work with `1.x.x`. - -## User authorization - -To enable users to authorize with MSQ and interact with your dapp, you can call the `requestLogin()` function of the client: - -```typescript title="src/frontend/index.tsx" -import { Identity } from "@dfinity/identity"; - -const identity: Identity | null = await msq.requestLogin(); - -if (identity === null) { - // the user has rejected to log in -} -``` - -This function returns an identity object which can then be supplied to an agent's `HttpAgent` constructor which can then be used to call canisters on a user's behalf: - -```typescript title="src/frontend/index.tsx" -import { HttpAgent } from "@dfinity/agent"; - -const agent = new HttpAgent({ identity }); -``` - -Authorization for a user lasts indefinitely unless explicitly ended. The following code can be used to check if a user's session exists: - -```typescript title="src/frontend/index.tsx" -if (msq.isAuthorized()) { -} -``` - -To stop the user's session, use the `requestLogout()` function: - -```typescript title="src/frontend/index.tsx" -if (await msq.requestLogout()) { -} else { -} -``` - -You can learn more about user authentication in the [MSQ documentation](https://github.com/fort-major/msq/blob/master/documentation/integration.md). - -## ICRC-1 payments - -MSQ enables users to make payments using a pre-defined ICRC-1 account through the `requestICRC1Payment()` function: - -```typescript -const blockId: bigint | null = await msq.requestICRC1Payment({ - if (blockId === null) { - renderErrorScreen("Payment failed"); - }, - // A canister ID of the valid `ICRC-1` token: - tokenCanisterId, - to: { - // Payment recipient's `principal` ID - owner, - // Payment recipient's `subaccount` ID - subaccount, - }, - // An amount of tokens that the user needs to transfer to the recipient - amount, - // An optional ICRC-1 memo - memo, -}); -``` - -This function returns either a `bigint` or `null`. A `bigint` response will indicate the block number of the executed ICRC-1 transaction and means that the payment was successful. That block number can then be used to query the token canister, verify the payment, and execute some business logic. - -MSQ supports ICRC-1 token payments by default through a series of whitelisted ICRC-1 tokens. If you accept payment of a whitelisted token, your workflow will execute as expected. However, if you accept a token that isn't currently whitelisted, the user will be prompted to add the token to their personal whitelist. - -[View the MSQ documentation for the full list of whitelisted ICRC-1 tokens](https://github.com/fort-major/msq/blob/master/documentation/integration.md#icrc-1-payments). - -## Resources - -- [MSQ GitHub repo](https://github.com/fort-major/msq/blob/master/) - -- [MSQ documentation](https://github.com/fort-major/msq/blob/master/documentation/integration.md) - -- [MSQ MetaMask Snap](https://snaps.metamask.io/snap/npm/fort-major/msq/) diff --git a/docs/developer-docs/identity/authentication/nfid.mdx b/docs/developer-docs/identity/authentication/nfid.mdx deleted file mode 100644 index e086bb819a..0000000000 --- a/docs/developer-docs/identity/authentication/nfid.mdx +++ /dev/null @@ -1,302 +0,0 @@ ---- -keywords: [intermediate, tutorial, user sign in, user login, nfid] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; -import '/src/components/CenterImages/center.scss'; - - -# NFID - - - -## Overview - -[NFID](https://nfid.one/) is a form of digital identity built on ICP. Similar to Internet Identity, NFID allows users to sign into services without downloading an app or extension and can be used across several different dapps. - -NFID is different from Internet Identity, however, in the fact that is allows you to sign in to a dapp using your email or Google account. With Internet Identity, these log in options aren't available. This makes NFID a great option for those that want to use email or Google authentication methods. - -NFID also supports signing in with a passkey stored on a mobile device or local keychain, which is the same method used by Internet Identity. - -## Using NFID - -### Prerequisites - -Before starting the guide, verify the following: - -- [x] You have `Node.js` `16.0.0` or newer installed for frontend development and can install packages using `npm install` in your project. For information about installing node for your local operating system and package manager, see the [Node](https://nodejs.org/en/) website. - -- [x] You have downloaded and installed the IC SDK package as described in the [download and install](/docs/current/developer-docs/getting-started/install) page. - -Check out the [GitHub repo for this project](https://github.com/internet-identity-labs/motoko-bootcamp/tree/main) to clone and deploy the project quickly. - -### Create a new project - -First, create a new project with the `dfx new` command: - -``` -dfx new NFID_project -``` - -If using `dfx` v0.17.0 and newer, select 'Motoko' and 'Vanilla JS' when prompted. - -### Edit the backend canister - -Replace the default Motoko backend canister code (`src/NFID_backend/main.mo`) with the following: - -```motoko title="src/NFID_backend/main.mo" -import Principal "mo:base/Principal"; - -actor { - public shared query({caller}) func greet(name : Text) : async Text { - return "Hello, " # name # "! " # "Your PrincipalId is: " # Principal.toText(caller); - }; -}; -``` - -### Update the project's `dfx.json` file. - -Replace the `dfx.json` file's content with the following configuration: - -```json title="dfx.json" -{ - "canisters": { - "NFID_backend": { - "main": "src/NFID_backend/main.mo", - "type": "motoko" - }, - "NFID_frontend": { - "dependencies": [ - "NFID_backend" - ], - "frontend": { - "entrypoint": "src/NFID_frontend/src/index.html" - }, - "source": [ - "src/NFID_frontend/assets" - ], - "type": "assets" - } - }, - "defaults": { - "build": { - "args": "", - "packtool": "" - } - }, - "version": 1 -} -``` - -### Install the `auth-client` package. - -Install the DFINITY `auth-client` package with the command: - -``` -npm install --save @dfinity/auth-client -``` - -### Create a file called `index.html` in the subdirectory `src/NFID_frontend/src/`. - -Insert the following code into the `index.html` file: - -```html title="src/NFID_frontend/src/index.html" - - - - - - NFID example - - - - - -
- DFINITY logo -
-
-
- -
-
-
- - - -
-
-
- - -``` - -### Create an `index.js` file in the `src/NFID_frontend/src` subdirectory. - -Insert the following code into this new `index.js` file: - -```javascript title="src/NFID_frontend/src/index.js" -import { Actor } from "@dfinity/agent"; -import { AuthClient } from "@dfinity/auth-client"; -import { NFID_backend } from "../../declarations/NFID_backend"; - -let authClient = null; - -async function init() { - authClient = await AuthClient.create(); -} - -document.querySelector("form").addEventListener("submit", async (e) => { - e.preventDefault(); - const button = e.target.querySelector("button"); - - const name = document.getElementById("name").value.toString(); - - button.setAttribute("disabled", true); - - // Interact with foo actor, calling the greet method - const greeting = await NFID_backend.greet(name); - - button.removeAttribute("disabled"); - - document.getElementById("greeting").innerText = greeting; - - return false; -}); - -function handleSuccess() { - const principalId = authClient.getIdentity().getPrincipal().toText(); - - document.getElementById( - "principalId" - ).innerText = `Your PrincipalId: ${principalId}`; -} - -document.getElementById("login").addEventListener("click", async (e) => { - if (!authClient) throw new Error("AuthClient not initialized"); - - authClient.login({ - onSuccess: handleSuccess, - }); -}); - -init(); -``` - -### Deploy your project - -Deploy the project with the command: - -```bash -dfx deploy -``` - -You will receive the URL for the frontend and backend canisters running locally: - -```bash -Deployed canisters. -URLs: - Frontend canister via browser - NFID_frontend: http://127.0.0.1:4943/?canisterId=br5f7-7uaaa-aaaaa-qaaca-cai - Backend canister via Candid interface: - NFID_backend: http://127.0.0.1:4943/?canisterId=bw4dl-smaaa-aaaaa-qaacq-cai&id=be2us-64aaa-aaaaa-qaabq-cai -``` - -Open the `NFID_frontend` URL in your web browser. You'll see the following UI: - -![UI](../_attachments/default-ui.png) - -### Configure NFID - -Currently, the `Log me in` button doesn't have any functionality when clicked. Let's configure it to use NFID. - -Replace the existing `index.js` code with the following: - -```javascript title="src/NFID_frontend/src/index.js" -import { Actor } from "@dfinity/agent"; -import { AuthClient } from "@dfinity/auth-client"; -import { NFID_backend } from "../../declarations/NFID_backend"; - -let authClient = null; - -async function init() { - authClient = await AuthClient.create(); -} - -document.querySelector("form").addEventListener("submit", async (e) => { - e.preventDefault(); - const button = e.target.querySelector("button"); - - const name = document.getElementById("name").value.toString(); - - button.setAttribute("disabled", true); - - // Interact with foo actor, calling the greet method - const greeting = await NFID_backend.greet(name); - - button.removeAttribute("disabled"); - - document.getElementById("greeting").innerText = greeting; - - return false; -}); - -function handleSuccess() { - const principalId = authClient.getIdentity().getPrincipal().toText(); - - document.getElementById( - "principalId" - ).innerText = `Your PrincipalId: ${principalId}`; - - Actor.agentOf(NFID_backend).replaceIdentity( - authClient.getIdentity() - ); -} - -document.getElementById("login").addEventListener("click", async (e) => { - if (!authClient) throw new Error("AuthClient not initialized"); - - const APP_NAME = "NFID example"; - const APP_LOGO = "https://nfid.one/icons/favicon-96x96.png"; - const CONFIG_QUERY = `?applicationName=${APP_NAME}&applicationLogo=${APP_LOGO}`; - - const identityProvider = `https://nfid.one/authenticate${CONFIG_QUERY}`; - - authClient.login({ - identityProvider, - onSuccess: handleSuccess, - windowOpenerFeatures: ` - left=${window.screen.width / 2 - 525 / 2}, - top=${window.screen.height / 2 - 705 / 2}, - toolbar=0,location=0,menubar=0,width=525,height=705 - `, - }); -}); - -init(); -``` - - -### Redeploy the canisters - -To implement the changes, redeploy the canisters with `dfx deploy`. - -Now, when you click 'Log me in', you'll get an NFID login prompt: - -![NFID login](../_attachments/nfid-ui.png) - -## Resources - -- [GitHub repo for this project](https://github.com/internet-identity-labs/motoko-bootcamp/tree/main). - -- [Video tutorial for this project](https://www.youtube.com/watch?v=jqNQQf6V6zg). - -- [How NFID works](https://docs.nfid.one/embed/how-it-works/overview). - -- [NFID documentation](https://docs.nfid.one/embed/integration/quickstart). - -- [NFID playground](https://playground.nfid.one/). - -- [NFID Medium blog post](https://medium.com/dfinity/nfid-the-digital-identity-protocol-7d8a39f7ac85). - - diff --git a/docs/developer-docs/identity/authentication/overview.mdx b/docs/developer-docs/identity/authentication/overview.mdx index 69a38f69fb..0531a84618 100644 --- a/docs/developer-docs/identity/authentication/overview.mdx +++ b/docs/developer-docs/identity/authentication/overview.mdx @@ -20,9 +20,9 @@ Authentication methods available on ICP include: - [Internet Identity](/docs/current/developer-docs/identity/internet-identity/overview): ICP's native identity service that uses a cryptographic public/private key pair for authentication. -- [Email and password](email-password.mdx): Authentication with an email and password. +- [Email and password](https://nfid.one): Authentication with an email and password. -- [NFID](nfid.mdx): A digital form of identity that allows users to use an email and password or their Google account. +- [NFID](https://nfid.one/): A digital form of identity that allows users to use an email and password or their Google account. - [`ic-auth`](https://github.com/id-daniel-mccoy/ic-auth): A modular tool to integrate wallet providers into ICP apps. Supports Stoic, Plug, Internet Identity, and NFID. @@ -30,12 +30,12 @@ Authentication methods available on ICP include: The following tools enable authenticating with ICP dapps using wallet addresses from other chains and ecosystems: -- [Sign in with Bitcoin](siwb.mdx): An authentication standard that enables Bitcoin wallet-based authentication for ICP applications. +- [Sign in with Bitcoin](https://github.com/AstroxNetwork/ic-siwb): An authentication standard that enables Bitcoin wallet-based authentication for ICP applications. -- [Sign in with Ethereum](siwe.mdx): An authentication standard that enables Ethereum wallet-based authentication for ICP applications. +- [Sign in with Ethereum](https://github.com/kristoferlund/ic-siwe-react-demo-rust): An authentication standard that enables Ethereum wallet-based authentication for ICP applications. -- [Sign in with Solana](siws.mdx): An authentication standard that enables Solana wallet-based authentication for ICP applications. +- [Sign in with Solana](https://github.com/kristoferlund/ic-siws): An authentication standard that enables Solana wallet-based authentication for ICP applications. -- [MSQ library](msq.mdx): A client library for dapps to enable user interaction with ICP solely via their existing MetaMask wallet using the [Metamask Snaps](https://metamask.io/snaps/) feature. +- [MSQ library](https://icp.msq.tech/): A client library for dapps to enable user interaction with ICP solely via their existing MetaMask wallet using the [Metamask Snaps](https://metamask.io/snaps/) feature. diff --git a/docs/developer-docs/identity/authentication/siwb.mdx b/docs/developer-docs/identity/authentication/siwb.mdx deleted file mode 100644 index db240c12a0..0000000000 --- a/docs/developer-docs/identity/authentication/siwb.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -keywords: [advanced, bitcoin, sign in, bitcoin sign in] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Sign in with Bitcoin - - - -## Overview - -Sign in with Bitcoin (SIWB) is a fork of the [sign in with Ethereum](siwe.mdx) package that enables dapps to provide users with the option to authenticate with their Bitcoin wallet address. - -SIWB supports the popular BTC wallets [Wizz](https://wizzwallet.io/) and [Unisat](https://unisat.io/). - -### Key features - -- Consistent principal generation: Ensures that logging in with a BTC wallet will produce the same principal consistently. - -- Session identity uniqueness: Each session identity is specific to the application's context, avoiding cross-app identity exploits. - -- Direct BTC-to-principal mapping: Each BTC address has a 1:1 correlation with a principal. - -- Timebound sessions: Developers can set session expiration times for control and security enhancement. - -- Prebuilt identity provider: A prebuilt canister to integrate into any existing ICP dapp. - -## Usage - -The SIWB package can be downloaded from its [GitHub repo](https://github.com/AstroxNetwork/ic-siwb.git) which includes an example integration. - -To use the example integration, clone the repo, then deploy the included pre-built canisters: - -``` -git clone https://github.com/AstroxNetwork/ic-siwb.git -cd ic-siwb -dfx start --clean --background -npm install -dfx deploy -``` - -This example deploys the prebuild `ic_siwb_provider` canister alongside an example `ic_siwb_test_canister`. - -:::caution - -If you are deploying on a Mac OS X machine and receive an error such as: - -``` -secp256k1-sys@0.8.1: error: unable to create target: 'No available targets are compatible with triple "wasm32-unknown-unknown"' -error: failed to run custom build command for `secp256k1-sys v0.8.1` -``` - -This is due to the default Mac OS X clang compiler not supporting compiling to target wasm32-unknown-unknown. - -You can remedy this error by installing another compiler using `brew` that does support wasm32-unknown-unknown: - -``` -brew install llvm -export PATH="/opt/homebrew/opt/llvm/bin:$PATH" &&  export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" && export CPPFLAGS="-I/opt/homebrew/opt/llvm/include" -cargo build --target wasm32-unknown-unknown --release -``` -::: - - -As part of the canisters' deployment, both will require initialization arguments. The first is the `ic_siwb_provider` canister. Before initialization, this canister's ID will be printed on the terminal in a line such as: - -``` -Installing canisters... -Installing code for canister ic_siwb_provider, with canister ID bkyz2-fmaaa-aaaaa-qaaaq-cai -This canister requires an initialization argument. -``` - -Copy the canister's ID. Then, configure the initialization arguments as prompted: - -- URI: The full URL, such as `http://localhost:3000`. -- Salt: A string used to generate seed that uniquely identifies each user principal. -- Domain: The domain name, such as `localhost`. -- Optional runtime feature enabled: Select yes to enable and no to disable. -- Optional statement: A message presented to the user by the Bitcoin wallet. -- Optional scheme: The scheme used to serve the frontend that uses SIWB. Defaults to "https". -- Optional network: Defaults to the Bitcoin mainnet.  -- Optional session expiration time: Time to live for a session in nanoseconds. -- Optional target: All canisters for which the identity delegation is allowed. Defaults to None. -- Optional sign in expiration time: Time to live for a sign in message in nanoseconds. - -An example of the canister's initialization configuration can be found below: - -``` -( -  record { -    uri = "http://localhost:3000"; -    runtime_features = null; -    domain = "localhost"; -    statement = null; -    scheme = null; -    salt = "test"; -    network = null; -    session_expires_in = null; -    targets = null; -    sign_in_expires_in = null; -  }, -) -``` - -Next, you will need to pass the canister ID for `ic_siwb_provider` to the `ic_siwb_test_canister` as its initialization argument when prompted: - -``` -Installing code for canister ic_siwb_test_canister, with canister ID bd3sg-teaaa-aaaaa-qaaba-cai -This canister requires an initialization argument. -✔ Enter a text (type :e to use editor) · bkyz2-fmaaa-aaaaa-qaaaq-cai -Sending the following argument: -("bkyz2-fmaaa-aaaaa-qaaaq-cai") -``` - -Once both canisters have been installed, initialized, and deployed, you will receive the local URLs for both canisters: - -``` -URLs: -  Backend canister via Candid interface: -    ic_siwb_provider: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bkyz2-fmaaa-aaaaa-qaaaq-cai -    ic_siwb_test_canister: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bd3sg-teaaa-aaaaa-qaaba-cai -``` - -You can view the full frontend example in the [project's repo](https://github.com/AstroxNetwork/ic-siwb/tree/main/examples/frontend). - -## Resources - -- [View this project on GitHub](https://github.com/AstroxNetwork/ic-siwb/tree/main) - -- [Join the forum conversation for this project](https://forum.dfinity.org/t/sign-in-with-bitcoin-on-icp/32734) diff --git a/docs/developer-docs/identity/authentication/siwe.mdx b/docs/developer-docs/identity/authentication/siwe.mdx deleted file mode 100644 index 2241ad0234..0000000000 --- a/docs/developer-docs/identity/authentication/siwe.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -keywords: [advanced, ethereum, sign in, ethereum sign in] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Sign in with Ethereum - - - -## Overview - -The [SIWE](https://eips.ethereum.org/EIPS/eip-4361) standard defines a protocol for off-chain authentication of Ethereum accounts. This protocol is designed to enable Ethereum wallet-based authentication for applications on other platforms, such as the Internet Computer (ICP). - -By integrating the third party library [ic_siwe](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe) or adding the pre-built [ic_siwe_provider](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe_provider) canister to your project, you can enable users to sign into your application using their Ethereum wallets. - -The goal of the `ic_siwe` project is to enhance the interoperability between Ethereum and ICP, enabling developers to build applications that leverage the strengths of both platforms. - -### Key features - -- **Ethereum Wallet Sign-In**: Enables Ethereum wallet sign-in for ICP applications. Sign in with any Ethereum wallet to generate an ICP identity and session. -- **Session identity uniqueness**: Ensures that session identities are specific to each application's context, preventing cross-app identity misuse. -- **Consistent principal generation**: Guarantees that logging in with an Ethereum wallet consistently produces the same principal, irrespective of the client used. -- **Direct Ethereum address to principal mapping**: Creates a 1:1 correlation between Ethereum addresses and principals within the scope of the current application. -- **Timebound sessions**: Allows developers to set expiration times for sessions, enhancing security and control. - -## Usage - -While the `ic_siwe` library can be integrated with any Rust-based ICP project, using the pre-built [ic-siwe-provider](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic_siwe_provider) canister is the easiest way to integrate Ethereum wallet authentication into an ICP app built using any language. - -The canister is designed as a plug-and-play solution for developers, enabling easy integration into existing ICP applications with minimal coding requirements. By adding the pre built `ic_siwe_provider` canister to the `dfx.json` of an ICP project, developers can quickly enable Ethereum wallet-based authentication for their applications. The canister simplifies the authentication flow by managing the creation and verification of SIWE messages and handling user session management. - -## React demo application - -A demo application that uses the `ic_siwe_provider` canister to demonstrate the full login flow is available in two versions: -- [ic-siwe-react-demo-rust](https://github.com/kristoferlund/ic-siwe-react-demo-rust) -- [ic-siwe-react-demo-ts](https://github.com/kristoferlund/ic-siwe-react-demo-ts) - -The demo uses another package from the `ic-siwe` project, [ic-use-siwe-identity](https://github.com/kristoferlund/ic-siwe/tree/main/packages/ic-use-siwe-identity), a React hook and context provider for easy frontend integration with SIWE enabled ICP canisters. \ No newline at end of file diff --git a/docs/developer-docs/identity/authentication/siws.mdx b/docs/developer-docs/identity/authentication/siws.mdx deleted file mode 100644 index ca1fe8472e..0000000000 --- a/docs/developer-docs/identity/authentication/siws.mdx +++ /dev/null @@ -1,58 +0,0 @@ ---- -keywords: [advanced, solana sign in, solana sign in] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Sign in with Solana - - - -## Overview - -The `ic-siws` (SIWS) project provides ICP dapps with a way to enable Solana-based authentication. The project's goal is to enhance the interoperability between ICP and Solana by enabling developers to build dapps that can use both chains. - -The [`ic-siwe` (SIWE)](siwe.mdx) project is also available for enabling Ethereum-based authentication. - -You can try the deployed demo here: https://guidq-3qaaa-aaaal-qiteq-cai.icp0.io - -### Key features - -- **Solana Wallet Sign-In**: Enables any Solana wallet to generate an ICP identity and sign into ICP dapps. - -- **Prebuilt identity solution**: Provides a prebuilt canister that can be integrated into any ICP project, independent of the project's programming language. - -- **Direct Solana wallet address to `Principal` mapping**: Uses a 1:1 correlation between Solana addresses and `Principals`. - -- **Consistent principal generation**: Ensures each Solana wallet produces the same `Principal`. - -- **Session identity uniqueness**: Verifies that each session identity is specific to each application's context. - -- **Timebound sessions**: Developers can set expiration times for sessions to enhance control and security. - - -## Usage - -To use SIWS, developers have two possible workflows: - -1. Use the prebuilt [ic_siws_provider](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws_provider)**: The pre-built identity provider canister can be integrated with any ICP project by adding the canister's information to the project's `dfx.json` file. When using the pre-built canister solution, the following login workflow is used: - -- An ICP dapp requests a SIWS message on behalf of a user from the `ic_siws_provider` canister. - -- The dapp displays the SIWS message to the user who must sign it with their Solana wallet. - -- The dapp sends the signed SIWS message to the `ic_siws_provider` canister. The canister verifies the signature and creates an ICP Principal for the user. - -- The dapp retrieves the Principal from the `ic_siws_provider` canister and can now use the new Principal to make authenticated calls for the user. - -2. **Use the [ic_siws](https://crates.io/crates/ic_siws) Rust library directly**: Provides developers with full control over the SIWS integration through the `ic_swis` library. - -## Resources - -- [ic_siws Rust library](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws) - -- [`ic-siws-provider` prebuilt canister](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic_siws_provider) - -- [ic-siws-react-demo-rust](https://github.com/kristoferlund/ic-siws-react-demo-rust): A demo dapp written in Rust that demonstrates how to integrate SIWS. - -- [ic-use-siws-identity](https://github.com/kristoferlund/ic-siws/tree/main/packages/ic-use-siws-identity): A React hook and context provider for enabling frontend integration with SIWS-enabled canisters. diff --git a/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx b/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx index 6d676c3016..e1bd07ef5c 100644 --- a/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx +++ b/docs/developer-docs/multi-chain/ethereum/using-eth/eth-dev-workflow.mdx @@ -41,7 +41,7 @@ Additional sample projects can be found in the [EVM RPC](../evm-rpc/samples.mdx) ## Integrating with Ethereum -The Ethereum integration can be incorporated into dapps for several purposes, such as authentication, as shown in the [Sign In With Ethereum (SIWE)](/docs/current/developer-docs/identity/authentication/siwe) example. The SIWE example showcases how to use an Ethereum wallet to sign into ICP applications. It creates a 1:1 correlation between Ethereum addresses and ICP principals within the scope of the application. It also guarantees that logging in with an Ethereum wallet will consistently produce the same principal regardless of the client used. +The Ethereum integration can be incorporated into dapps for several purposes, such as authentication, as shown in the [Sign In With Ethereum (SIWE)](https://github.com/kristoferlund/ic-siwe) example. The SIWE example showcases how to use an Ethereum wallet to sign into ICP applications. It creates a 1:1 correlation between Ethereum addresses and ICP principals within the scope of the application. It also guarantees that logging in with an Ethereum wallet will consistently produce the same principal regardless of the client used. ## Using ckETH diff --git a/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx b/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx index 939b722ae8..5f4796e3b2 100644 --- a/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx +++ b/docs/developer-docs/security/security-best-practices/inter-canister-calls.mdx @@ -153,7 +153,7 @@ To address issues around message ordering that can lead to bugs, one usually emp The locks would usually be released in the callback. That bears the risk that the lock may never be released in case the callback traps, as we discussed in [securely handle traps in callbacks](#securely-handle-traps-in-callbacks). The code examples below shows how one can securely implement a lock per caller. - In Rust, one can use the drop pattern where each caller lock (`CallerGuard` struct) implementats the `Drop` trait to release the lock. From Rust CDK version `0.5.1`, any local variables still go out of scope if the callback traps, so the lock on the caller is released even in that case. Technically, the CDK calls into the `ic0.call_on_cleanup` API to release these resources. Recall that `ic0.call_on_cleanup` is executed if the `reply` or the `reject` callback executed and trapped. -- In Motoko, one can use the [`try`/`finally`](docs/current/motoko/main/reference/language-manual/#try) control flow construct. This construct guarantees that the lock is released in the `finally` block regardless of any errors or traps in the `try` or `catch` blocks. +- In Motoko, one can use the [`try`/`finally`](/docs/current/motoko/main/reference/language-manual/#try) control flow construct. This construct guarantees that the lock is released in the `finally` block regardless of any errors or traps in the `try` or `catch` blocks. diff --git a/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx b/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx index 1fd17a237b..123fa74c0d 100644 --- a/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx +++ b/docs/developer-docs/smart-contracts/best-practices/troubleshooting.mdx @@ -28,9 +28,9 @@ If your canister is running on a subnet that has a consistently high load and th ### Recommendation: Use query calls instead of update calls when possible. -[Query calls](/docs/current/developer-docs/web-apps/design-dapps#using-query-calls) are executed on a single node within a subnet and do not go through consensus, therefore they can be returned much faster than an update call. For some applications, query calls can be used in place of update calls to reduce latency. +[Query calls](/docs/current/developer-docs/smart-contracts/call/overview/#query-calls) are executed on a single node within a subnet and do not go through consensus, therefore they can be returned much faster than an update call. For some applications, query calls can be used in place of update calls to reduce latency. -However, the security trade-offs of query calls must be considered. Since query calls do not go through consensus, it is not recommended that they are used for retrieving sensitive information that requires data assurance. For example, returning financial data on a decentralized exchange dapp should not use basic query calls, as it is important the call return data that has been validated through the subnet's consensus. As an alternative, [certified queries](/docs/current/developer-docs/web-apps/design-dapps#using-query-calls) may be used. +However, the security trade-offs of query calls must be considered. Since query calls do not go through consensus, it is not recommended that they are used for retrieving sensitive information that requires data assurance. For example, returning financial data on a decentralized exchange dapp should not use basic query calls, as it is important the call return data that has been validated through the subnet's consensus. As an alternative, [certified queries](/docs/current/developer-docs/smart-contracts/call/overview/#query-calls) may be used. ### Recommendation: Use efficient query calls. diff --git a/docs/developer-docs/smart-contracts/write/overview.mdx b/docs/developer-docs/smart-contracts/write/overview.mdx index fdc353021e..fb24557f70 100644 --- a/docs/developer-docs/smart-contracts/write/overview.mdx +++ b/docs/developer-docs/smart-contracts/write/overview.mdx @@ -58,7 +58,7 @@ The typical development workflow of the frontend is: 3. The developer deploys the project. `dfx` will compile the frontend asset files into an asset canister. 4. Users open the application in the browser by navigating to the URL `https://.icp0.io` or a [custom domain](/docs/current/developer-docs/web-apps/custom-domains/using-custom-domains) if one has been registered for the canister. 5. The canister serves the web assets to the browser via its `http_request` endpoint that gets invoked for each HTTP request. -6. When the JS code runs in the browser, it can call the backend canister endpoints using the [ICP JavaScript agent](/docs/current/developer-docs/web-apps/browser-js/js-request-api) library, which is analogous to `web3.js` and `ethers.js` of Ethereum. +6. When the JS code runs in the browser, it can call the backend canister endpoints using the [ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) library, which is analogous to `web3.js` and `ethers.js` of Ethereum. #### Limitations Server-side rendering (SSR) does not work in canisters because they require JS code that is not built into canisters. @@ -107,7 +107,7 @@ Navigate into your project directory: cd hello ``` -For projects created with `dfx new`, the project structure will resemble the following. If you are using an ICP Ninja project or other sample project, project structure may vary. +For projects created with `dfx new`, the project structure will resemble the following. If you are using an ICP Ninja project or other sample project, project structure may vary. @@ -226,7 +226,7 @@ In this directory, the following files and directories are notable: ### Reviewing the default program code -Open the backend canister source code file in your code editor. The backend canister's code will be located in the `src/hello_backend` subdirectory. For projects created with `dfx new`, the default backend code will resemble the following. If you are using an ICP Ninja project or other sample project, program code will vary. +Open the backend canister source code file in your code editor. The backend canister's code will be located in the `src/hello_backend` subdirectory. For projects created with `dfx new`, the default backend code will resemble the following. If you are using an ICP Ninja project or other sample project, program code will vary. diff --git a/docs/developer-docs/web-apps/application-frontends/overview.mdx b/docs/developer-docs/web-apps/application-frontends/overview.mdx index e2283a9d12..3c88956dad 100644 --- a/docs/developer-docs/web-apps/application-frontends/overview.mdx +++ b/docs/developer-docs/web-apps/application-frontends/overview.mdx @@ -21,7 +21,7 @@ Application frontends exist in the following forms: - A frontend canister that communicates with backend canister(s) to provide a full-stack dapp. -- Backend canisters that communicate with an external frontend application that isn't hosted on ICP. To facilitate this communication, [the ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) can be used. [Learn more about the JS request API](/docs/current/developer-docs/web-apps/browser-js/js-request-api). +- Backend canisters that communicate with an external frontend application that isn't hosted on ICP. To facilitate this communication, [the ICP JavaScript agent](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent) can be used. [Learn more about the JS request API](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent). - A frontend canister that doesn't communicate with any backend canisters and only provides web assets. diff --git a/docs/developer-docs/web-apps/browser-js/js-request-api.mdx b/docs/developer-docs/web-apps/browser-js/js-request-api.mdx deleted file mode 100644 index 2e27a28d9a..0000000000 --- a/docs/developer-docs/web-apps/browser-js/js-request-api.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -keywords: [intermediate, browser js, javascript, ICP JavaScript agent, agents] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# JavaScript request API - - - -## Overview - -To make API calls to ICP endpoints and canisters from a JavaScript program, the ICP JavaScript agent can be used. It provides call, query, and readState methods to an actor. - -## Install the ICP JavaScript agent - -To install the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) with `npm`, use the command: - -``` -npm i --save @dfinity/agent -``` - -## Import the ICP JavaScript agent in the browser - -To import the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) in the browser, use the import statement: - -``` -import * as agent from "@dfinity/agent"; -``` - -You can also use individual exports: - -``` -import { Actor, HttpAgent } from '@dfinity/agent'; -``` - -## Making API calls - -To make API calls, the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent) uses the [`fetch`](https://www.npmjs.com/package/isomorphic-fetch) API. Here is an example: - -```javascript -import fetch from 'isomorphic-fetch'; -import { HttpAgent } from '@dfinity/agent'; - -const host = process.env.DFX_NETWORK === 'local' ? 'http://127.0.0.1:4943' : 'https://icp-api.io'; - -const agent = new HttpAgent({ fetch, host }); -``` - -This example includes a `host` option, since the agent will not be able to determine the host using the global context. - -You can also pass `fetchOptions` to the agent's constructor, such as a custom header: - -```javascript -import fetch from 'isomorphic-fetch'; -import { HttpAgent } from '@dfinity/agent'; - -const host = process.env.DFX_NETWORK === 'local' ? 'http://127.0.0.1:4943' : 'https://ic0.app'; - -/** - * @type {RequestInit} - */ -const fetchOptions = { - headers: { - 'X-Custom-Header': 'value', - }, -}; - -const agent = new HttpAgent({ fetch, host, fetchOptions }); -``` -## ICP JavaScript agent documentation - -To learn more about the [ICP JavaScript agent](https://www.npmjs.com/package/@dfinity/agent), check out the [ICP JavaScript agent documentation page](/docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent). - - -## Resources - -You can learn more about using the ICP JavaScript agent to make API calls in the [API documentation](https://agent-js.icp.xyz/agent/index.html). \ No newline at end of file diff --git a/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx b/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx index cdc3f73de0..d5ab678687 100644 --- a/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx +++ b/docs/developer-docs/web-apps/custom-domains/dns-setup.mdx @@ -58,7 +58,7 @@ The resulting configuration should look similar to the following screenshot: ![DNS Configuration for `example.ic-domain.live` on Namecheap](namecheap-subdomain.png) -Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes). +Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes). ## GoDaddy @@ -171,7 +171,7 @@ The resulting configuration should look similar to the following screenshot: ![DNS Configuration for `example.ic-domain.live` on GoDaddy](godaddy-subdomain.png) -Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes). +Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes). ## Amazon Route 53 @@ -201,4 +201,4 @@ The resulting configuration should look similar to the following screenshot: ![DNS Configuration for `example.ic-domain.live` on Amazon Route 53](route53-subdomain.png) -Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](using-custom-domains#custom-domains-on-the-boundary-nodes). +Now, you are all set to register your custom domain with the boundary nodes, and you can continue with step 2 of the [general custom domains instructions](./using-custom-domains#custom-domains-on-the-boundary-nodes). diff --git a/docs/developer-docs/web-apps/design-dapps.mdx b/docs/developer-docs/web-apps/design-dapps.mdx deleted file mode 100644 index 8709825343..0000000000 --- a/docs/developer-docs/web-apps/design-dapps.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -keywords: [beginner, concept, dapp design, design considerations] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Dapp design considerations - - - -## Overview - -As you come up with ideas for dapps, you are going to make many design decisions about how to structure and organize your project. On the Internet Computer, there are a few design decisions that you should pay particular attention to as you plan the implementation for your app. - -## Single or multiple canister architecture - -One of the first decisions you might want to consider when designing your dapp is whether it should be encapsulated in a single canister or consist of multiple canisters. - -For example, if you are writing a simple service with no frontend, you might want to use a single canister to simplify project management and maintenance and focus on adding features. If your dapp has both frontend assets and backend business logic, your project is likely to consist of at least two canisters, with one canister for managing user interface components and another canister for the backend services the application provides. - -In planning, you might also consider placing some common reusable services in their own canister so that they can be imported and called from other more-specialized canisters or made available for other developers to use. The [LinkedUp](https://github.com/dfinity/linkedup) sample dapp illustrates this approach by splitting the professional service dapp into two canisters. In the LinkedUp example, the functions that establish social connections are defined in the `connectd` canister and separate from the functions used to set up professional profiles that are defined in the `linkedup` canister. It is easy to imagine extending the dapp with a third canister, for example to schedule events based on profile attributes or shared connections. - -## Segregating actors from types and utilities - -In planning the architecture for your project, one common practice is to place the code for the main actor in one file with separate additional files for defining the types you program uses and utility functions that don’t require an actor. - -For example, you might set up the backend logic for your dapp to consist of the following files: - -- `Main.mo` or `main.rs` with the functions that require an actor to send query and update calls. - -- `Util.mo` or `util.rs` with helper functions that can be imported for the actor to use. - -- `Types.mo` or `types.rs` with all of the data type definitions for your dapp. - -## Using query calls - -As discussed in [query and update methods](/docs/current/concepts/canisters-code#query-update), queries return results faster than update calls. Therefore, explicitly marking a function as a `query` is an effective strategy for improving application performance. In the planning and design phase, you should consider how best to use query calls instead of functions that can perform queries or updates. - -That is a good general rule to follow and can be applied broadly to most categories of dapps. However, you should also consider the security and performance trade-off that queries don’t go through consensus and do not appear on the blockchain. For some dapps, that trade-off might be appropriate. For example, if you are developing a blogging platform, queries that retrieve articles matching a tag probably don’t warrant going through consensus to ensure that a majority of nodes agree on the results. However, if your dapp is retrieving sensitive information—like financial data—you might want more assurance about your results than a basic query provides. - -As an alternative to basic queries, the Internet Computer also supports **certified queries**. Certified queries enable you to receive **authenticated responses** that end users can trust. Using certified queries is an advanced technique that is not covered in the tutorials or other developer-focused documentation, but you can learn about how the authentication works and what you need to do to configure your program to return certified data in response to queries in the [IC interface specification](/references/ic-interface-spec.md). - -## Data storage and retrieval - -The Internet Computer enables you to use **stable memory** to handle long-term data storage—often referred to as orthogonal persistence—and to use **query calls** to retrieve your data. Efficiently retrieving data using one or more keys can typically be achieved by using data structures like hash tables. It is also possible to implement a more traditional database inside a canister. diff --git a/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx b/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx index fb53b2f504..4136775964 100644 --- a/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx +++ b/docs/developer-docs/web-apps/independently-verifying-ic-signatures.mdx @@ -44,17 +44,17 @@ The call is calculated using the content record, which allows the signature to b A transaction's signature can be delegated from one key to another. If delegation is used, the `sender_delegation` field contains an array of delegations with the following fields: -- `delegation` (`map`): A map containing the fields: +`delegation` (`map`): A map containing the fields: -    - `pubkey` (`blob`): A public key. +   - `pubkey` (`blob`): A public key. -    - `expiration` (`nat`): The delegation's expiration, defined in nanoseconds analogously to the `ingress_expiry`. +   - `expiration` (`nat`): The delegation's expiration, defined in nanoseconds analogously to the `ingress_expiry`. -    - `targets` (`array` of `CanisterId`, optional): Sets the delegation to apply only for requests sent to the canisters within the canister list; has a maximum of 1000 canisters. +   - `targets` (`array` of `CanisterId`, optional): Sets the delegation to apply only for requests sent to the canisters within the canister list; has a maximum of 1000 canisters. -    - `senders` (`array` of `Principal`, optional): Sets the delegation to only apply for requests originating from the principals in the list. +   - `senders` (`array` of `Principal`, optional): Sets the delegation to only apply for requests originating from the principals in the list. -    - `signature` (`blob`): The signature for the `32-byte` delegation field map, using the 27 bytes `\x1Aic-request-auth-delegation` as the domain separator. +   - `signature` (`blob`): The signature for the `32-byte` delegation field map, using the 27 bytes `\x1Aic-request-auth-delegation` as the domain separator. The first delegation in the array has a signature created using the public key corresponding to the `sender_pubkey` field. All subsequent delegations are signed with the public key corresponding to the key contained in the preceding delegation. @@ -64,15 +64,9 @@ The `sender_sig` field is calculated by concatenating the domain separator, `\x0 To verify a signature with an agent, an accepted identity is required. The following are accepted identity and signature types: -- Ed25519 and ECDSA signatures. +- Ed25519 and ECDSA signatures: Plain signatures are supported for these schemes. -    - Plain signatures are supported for the schemes. - -- Ed25519 or ECDSA on curve P-256 (also known as secp256r1). - -    - Using SHA-256 as a hash function. - -    - Using the Koblitz curve in secp256k1. +- Ed25519 or ECDSA on curve P-256 (also known as secp256r1): Support for using SHA-256 as a hash function or using the Koblitz curve in secp256k1. When these identities are encoded as a `Principal`, an agent will attach a suffix byte, which indicates whether the identity is anonymous or self-authenticating. @@ -125,7 +119,7 @@ match result { [Reference the crate's implementation logic](https://sourcegraph.com/github.com/dfinity/ic/-/blob/rs/validator/src/ingress_validation.rs?L605) for additional context. -## Verifying signatures with the library `@dfinity/standalone-sig-verifier-web` +## Verifying signatures with the JavaScript/TypeScript wrapper `@dfinity/standalone-sig-verifier-web` An `npm` library has been created as a JavaScript/TypeScript wrapper for the [`ic-standalone-sig-verifier`](https://github.com/dfinity/ic/tree/master/rs/crypto/standalone-sig-verifier) Rust crate. diff --git a/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx b/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx deleted file mode 100644 index f973f38922..0000000000 --- a/docs/developer-docs/web-apps/obtain-verify-ic-pubkey.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -keywords: [intermediate, tutorial, verifying public key, obtaining public key, public key, ic public key] ---- - -import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow"; - -# Verifying the public key - - - -## Overview - -When a user or canister receives a response from ICP, that response will have a certificate that validates the response has not been altered or changed. This certificate is signed by the root of trust, which is the ICP root public key. This public key can be used to additionally verify that a user or canister is interacting with a version of ICP that has not been tampered with, verifying that the response's certificate is valid. - -### Local - -In a local canister execution environment, the key can be fetched via the [`/api/v2/status`](/docs/current/references/ic-interface-spec#api-status) endpoint. - -### Mainnet - -On the mainnet, you can use [the ICP JavaScript agent](https://github.com/dfinity/agent-js) or [agent-rs](https://github.com/dfinity/agent-rs) to fetch the public key, as these agents have the root key [hard-coded](https://github.com/dfinity/agent-js/blob/main/packages/agent/src/agent/proxy.ts#L244C1-L250C2). - -## Verifying the public key - -Once you have obtained the public key, you can validate it is correct by using `dfx` to ping the network you're using, such as: - -```bash -dfx ping ic // mainnet -dfx ping local // local canister execution -``` - -This ping command will return the public root key of the network specified: - -```json -{ - "ic_api_version": "0.18.0" "replica_health_status": "healthy" "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174] -} -``` - - diff --git a/docs/other/updates/release-notes/0.9.2-rn.md b/docs/other/updates/release-notes/0.9.2-rn.md index 0eb30dbd45..0a29147c98 100644 --- a/docs/other/updates/release-notes/0.9.2-rn.md +++ b/docs/other/updates/release-notes/0.9.2-rn.md @@ -2,7 +2,7 @@ An overview of the 0.9.2 release: -Be sure to see the [0.9.0 Release Notes](0.9.0-rn) and follow the instructions due to breaking changes since dfx 0.8.4. +Be sure to see the [0.9.0 Release Notes](./0.9.0-rn) and follow the instructions due to breaking changes since dfx 0.8.4. ## Changes to DFX diff --git a/docs/references/id-encoding-spec.mdx b/docs/references/id-encoding-spec.mdx index 2b0d3ba3ff..f758d88d5d 100644 --- a/docs/references/id-encoding-spec.mdx +++ b/docs/references/id-encoding-spec.mdx @@ -57,10 +57,10 @@ Links describing our CRC32 function (resp. the polynomial used therein): * Table entry “CRC-32” on [Wikipedia](https://en.wikipedia.org/wiki/Cyclic_redundancy_check). * Row “IEEE 802.3; CRC-32” in [Koopman's database](https://users.ece.cmu.edu/~koopman/crc/crc32.html). -* Entry “CRC-32/ISO-HDLC” in the [CRC catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm). +* Entry “CRC-32/ISO-HDLC” in the [CRC catalogue](https://reveng.sourceforge.net/crc-catalogue/all.htm). * Row labeled “CRC-32” in this [online calculator](https://crccalc.com/). -Our CRC32 function is defined by the following parameters in the [CRC catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm) and [online calculator](https://crccalc.com/): +Our CRC32 function is defined by the following parameters in the [CRC catalogue](https://reveng.sourceforge.net/crc-catalogue/all.htm) and [online calculator](https://crccalc.com/): ``` 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 394d081e66..cbfb3be778 100644 --- a/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx +++ b/docs/tutorials/developer-journey/level-0/01-ic-overview.mdx @@ -148,7 +148,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 567d03bc8a..dcfd9fffdd 100644 --- a/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx +++ b/docs/tutorials/developer-journey/level-0/02-ic-terms.mdx @@ -108,7 +108,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 21aaca9694..9c0d9e6fca 100644 --- a/docs/tutorials/developer-journey/level-0/03-dev-env.mdx +++ b/docs/tutorials/developer-journey/level-0/03-dev-env.mdx @@ -144,7 +144,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 96cfc37437..ef433d13b7 100644 --- a/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx +++ b/docs/tutorials/developer-journey/level-0/04-intro-canisters.mdx @@ -110,7 +110,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 a32c27562a..64942b9790 100644 --- a/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx +++ b/docs/tutorials/developer-journey/level-0/05-intro-languages.mdx @@ -140,7 +140,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 b20ca4c355..9363851f66 100644 --- a/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx +++ b/docs/tutorials/developer-journey/level-0/06-intro-dfx.mdx @@ -273,7 +273,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 19ade8ec07..45048c1422 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 @@ -187,7 +187,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 fc9780c46a..1bd3fa8fe4 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 @@ -326,9 +326,9 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - [Upcoming hackathons](https://dfinity.org/hackathons/). -- [Weekly developer office hours](https://discord.gg/4a7SZzRk?event=1164114241893187655) to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. +- Weekly developer office hours, hosted on the [ICP Discord](https://discord.internetcomputer.org) server to ask questions, get clarification, and chat with other developers live via voice chat. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 bf3df76b22..6c600cf950 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 @@ -1035,7 +1035,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 0b751df45e..3e860517f8 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 @@ -252,7 +252,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 c15abce0e1..a7908ef799 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 @@ -153,7 +153,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 bc3408e826..ed868ae122 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 @@ -429,7 +429,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 c569b1273e..1fdb682f73 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 @@ -266,7 +266,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 c08daf44e4..a33395e8bb 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 @@ -284,7 +284,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 a89f1576bd..08f6bb4838 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 @@ -220,7 +220,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 d732fae54f..aff7247042 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 @@ -378,7 +378,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 d8f5710824..2f17abc20b 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 @@ -477,7 +477,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps 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 68b9daf376..fd256620d3 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 @@ -451,7 +451,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx b/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx index 670751d230..62aa662f97 100644 --- a/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx +++ b/docs/tutorials/developer-journey/level-3/3.1-package-managers.mdx @@ -236,7 +236,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx b/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx index 9c1a657229..2252d3bf31 100644 --- a/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx +++ b/docs/tutorials/developer-journey/level-3/3.2-https-outcalls.mdx @@ -847,7 +847,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx b/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx index 162459fd29..54cf4234af 100644 --- a/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx +++ b/docs/tutorials/developer-journey/level-3/3.3-certified-data.mdx @@ -380,7 +380,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx b/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx index 8163f35a1c..f69860c7a2 100644 --- a/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx +++ b/docs/tutorials/developer-journey/level-3/3.4-intro-to-agents.mdx @@ -274,7 +274,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx b/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx index e592315991..74e931c1e3 100644 --- a/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx +++ b/docs/tutorials/developer-journey/level-3/3.5-identities-and-auth.mdx @@ -386,7 +386,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx b/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx index 417aaa827b..1381c7e081 100644 --- a/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx +++ b/docs/tutorials/developer-journey/level-3/3.6-motoko-lvl3.mdx @@ -640,7 +640,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx b/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx index b15fe0ce6b..1de4aa6288 100644 --- a/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx +++ b/docs/tutorials/developer-journey/level-4/4.1-icp-ledger.mdx @@ -348,7 +348,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx b/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx index 3edcdd6ce0..a23fdeb212 100644 --- a/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx +++ b/docs/tutorials/developer-journey/level-4/4.2-icrc-tokens.mdx @@ -511,7 +511,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx b/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx index 7acc981d66..38d44f0ecb 100644 --- a/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx +++ b/docs/tutorials/developer-journey/level-4/4.3-ckbtc-and-bitcoin.mdx @@ -362,7 +362,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx b/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx index c1263b3ff6..c50a3b4068 100644 --- a/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx +++ b/docs/tutorials/developer-journey/level-4/4.4-nns-governance.mdx @@ -305,7 +305,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx b/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx index 811d8d9991..35f5ba8437 100644 --- a/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx +++ b/docs/tutorials/developer-journey/level-4/4.5-using-quill.mdx @@ -457,7 +457,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx b/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx index 9b1294ef31..6a306ce0eb 100644 --- a/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx +++ b/docs/tutorials/developer-journey/level-4/4.6-motoko-lvl4.mdx @@ -641,7 +641,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx index e44b24c627..15aa03d90e 100644 --- a/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx +++ b/docs/tutorials/developer-journey/level-5/5.1-vetKeys-tutorial.mdx @@ -780,7 +780,7 @@ Then, you can see the note has been saved in the 'Your notes' section: - [The first Community Conversation](https://youtu.be/baM6jHnmMq8). -- [vetKeys primer blog post](ttps://internetcomputer.org/blog/features/vetkey-primer). +- [vetKeys primer blog post](https://internetcomputer.org/blog/features/vetkey-primer). - [vetKeys research paper](https://eprint.iacr.org/2023/616.pdf). @@ -807,7 +807,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx index 4156d4d955..16c6e83584 100644 --- a/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx +++ b/docs/tutorials/developer-journey/level-5/5.2-ICP-ETH-tutorial.mdx @@ -377,7 +377,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx index c18f873932..3cb68ccaf7 100644 --- a/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx +++ b/docs/tutorials/developer-journey/level-5/5.3-token-swap-tutorial.mdx @@ -828,7 +828,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx index 0fa48340e9..3b994efeae 100644 --- a/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx +++ b/docs/tutorials/developer-journey/level-5/5.4-NFT-tutorial.mdx @@ -593,7 +593,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx b/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx index 93dbb9dbe9..4de9493fde 100644 --- a/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx +++ b/docs/tutorials/developer-journey/level-5/5.5-auction-tutorial.mdx @@ -390,7 +390,7 @@ Did you get stuck somewhere in this tutorial, or feel like you need additional h - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). ## Next steps diff --git a/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx b/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx index 31e72e963a..7f54573111 100644 --- a/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx +++ b/docs/tutorials/developer-journey/level-5/5.6-next-steps.mdx @@ -106,4 +106,4 @@ Several of ICP's repositories are open-source, and external contributions are en - Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on the [Discord](https://discord.internetcomputer.org) server. -- Submit your feedback to the [ICP Developer feedback board](http://dx.internetcomputer.org). +- Submit your feedback to the [ICP Developer feedback board](https://dx.internetcomputer.org). diff --git a/docusaurus.config.js b/docusaurus.config.js index 3dc633f7ff..ca75c2206d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -38,6 +38,14 @@ const snsDataPlugin = require("./plugins/sns-data"); const airtablePlugin = require("./plugins/airtable"); const youtubePlugin = require("./plugins/youtube"); +const remarkPlugins = [ + math, + simplePlantUML, + require("remark-code-import"), + require("./plugins/remark/validate-links.js"), +]; +const rehypePlugins = [katex]; + const isDeployPreview = !!process.env.PREVIEW_CANISTER_ID; if (process.env.PREVIEW_CANISTER_ID) { @@ -86,17 +94,6 @@ const subnavItems = [ }, ], }, - { - type: "dropdown", - position: "left", - label: "Frameworks", - items: [ - { - label: "Juno", - href: "/docs/current/developer-docs/web-apps/frameworks/juno", - }, - ], - }, { type: "dropdown", position: "left", @@ -654,16 +651,16 @@ const config = { }, sidebarPath: require.resolve("./sidebars.js"), - remarkPlugins: [math, simplePlantUML, require("remark-code-import")], - rehypePlugins: [katex], + remarkPlugins, + rehypePlugins, editUrl: "https://github.com/dfinity/portal/edit/master/", }, blog: { path: "blog", blogSidebarCount: "ALL", postsPerPage: "ALL", - remarkPlugins: [math, simplePlantUML, require("remark-code-import")], - rehypePlugins: [katex], + remarkPlugins, + rehypePlugins, }, theme: { customCss: require.resolve("./src/css/custom.scss"), diff --git a/plugins/airtable.js b/plugins/airtable.js index ac40986094..822eb98ff9 100644 --- a/plugins/airtable.js +++ b/plugins/airtable.js @@ -156,11 +156,21 @@ async function fetchAirtableRecords({ apiKey, baseId, tableName, viewId }) { } async function processEventsData(records) { + const endDateCutoff = new Date(Date.now() - 6 * 30 * 24 * 60 * 60 * 1000) + .toISOString() + .split("T")[0]; + + const today = new Date().toISOString().split("T")[0]; + records = await Promise.all( records.map(async (record) => { const parsedRecord = parseAirtableData(record); - let imageUrl = await fetchShareImage(parsedRecord.eventLink); + // Only fetch share image for current/future events + let imageUrl = null; + if (parsedRecord.endDate >= today) { + imageUrl = await fetchShareImage(parsedRecord.eventLink); + } // If no share image is found, use a default image if (!imageUrl) { @@ -171,10 +181,6 @@ async function processEventsData(records) { }) ); - const endDatecutoff = new Date(Date.now() - 6 * 30 * 24 * 60 * 60 * 1000) - .toISOString() - .split("T")[0]; - records = records.filter((rec) => { if (!rec.startDate || new Date(rec.startDate) == "Invalid Date") { logger.warn("Invalid event, no start date: " + rec.eventName); @@ -186,7 +192,7 @@ async function processEventsData(records) { return false; } - if (rec.endDate < endDatecutoff) { + if (rec.endDate < endDateCutoff) { // old event return false; } diff --git a/plugins/remark/validate-links.js b/plugins/remark/validate-links.js new file mode 100644 index 0000000000..c7fb6f2022 --- /dev/null +++ b/plugins/remark/validate-links.js @@ -0,0 +1,35 @@ +// Validate links for Kapa.ai + +const visit = require("unist-util-visit"); + +function isExpectedLink(url) { + return ( + url.startsWith("https://") || + url.startsWith("http://localhost") || + url.startsWith("http://127.0.0.1") || + (url.startsWith("http://") && url.includes(".localhost")) || + url.startsWith("chrome://") || + url.startsWith("mailto:") || + url.startsWith("/") || + url.startsWith("#") || + url.startsWith(".") + ); +} + +module.exports = function validateLinks() { + return async (ast) => { + visit(ast, "link", (node) => { + const url = node.url; + if (url.startsWith("docs/developer-docs/")) { + throw new Error( + `Link requires a leading \`/\` character: \`${url}\` (plugins/remark/validate-links.js)` + ); + } + if (!isExpectedLink(url)) { + console.warn( + `Unexpected link: \`${url}\` (plugins/remark/validate-links.js)` + ); + } + }); + }; +}; diff --git a/plugins/utils/redirects.js b/plugins/utils/redirects.js index c9b8f85822..3217b7a205 100644 --- a/plugins/utils/redirects.js +++ b/plugins/utils/redirects.js @@ -83,7 +83,7 @@ const redirects = ` /docs/current/developer-docs/build/languages/rust/* /docs/current/developer-docs/backend/rust/ /docs/current/developer-docs/build/project-setup/cycles-wallet /docs/current/developer-docs/defi/cycles/cycles-wallet /docs/current/developer-docs/build/project-setup/manage-canisters /docs/current/developer-docs/smart-contracts/maintain/settings - /docs/current/developer-docs/build/project-setup/design-dapps /docs/current/developer-docs/web-apps/design-dapps + /docs/current/developer-docs/build/project-setup/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction /docs/current/developer-docs/build/troubleshooting /docs/current/developer-docs/getting-started/troubleshooting /docs/current/developer-docs/build/agents/ /docs/current/developer-docs/developer-tools/off-chain/agents/overview /docs/current/developer-docs/build/agents/javascript/javascript-intro /docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent @@ -100,7 +100,7 @@ const redirects = ` /docs/developers-guide/concepts/concepts-intro /docs/current/developer-docs/getting-started/network-overview /docs/developers-guide/customize-projects /docs/current/developer-docs/smart-contracts/compile /docs/developers-guide/default-wallet /docs/current/developer-docs/defi/cycles/cycles-wallet - /docs/developers-guide/design-apps /docs/current/developer-docs/web-apps/design-dapps + /docs/developers-guide/design-apps /docs/current/developer-docs/smart-contracts/overview/introduction /docs/developers-guide/glossary /docs/current/references/glossary /docs/developers-guide/install-upgrade-remove /docs/current/developer-docs/getting-started/install /docs/developers-guide/lang-service-ide /docs/current/developer-docs/developer-tools/ide/vs-code @@ -345,7 +345,7 @@ const redirects = ` /docs/current/developer-docs/frontend/existing-frontend /docs/current/developer-docs/web-apps/application-frontends/existing-frontend /docs/current/developer-docs/production/custom-domain/ /docs/current/developer-docs/web-apps/custom-domains/using-custom-domains /docs/current/developer-docs/production/custom-domain/dns-setup /docs/current/developer-docs/web-apps/custom-domains/dns-setup - /docs/current/developer-docs/backend/design-dapps /docs/current/developer-docs/web-apps/design-dapps + /docs/current/developer-docs/backend/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction /docs/current/developer-docs/integrations/independently-verifying-ic-signatures /docs/current/developer-docs/web-apps/independently-verifying-ic-signatures /docs/current/developer-docs/integrations/internet-identity/overview /docs/current/developer-docs/identity/internet-identity/overview /docs/current/developer-docs/integrations/internet-identity/creating-ii /docs/current/developer-docs/identity/internet-identity/creating-ii @@ -419,7 +419,7 @@ const redirects = ` /docs/current/developer-docs/integrations/bitcoin/local-development /docs/current/developer-docs/multi-chain/bitcoin/using-btc/local-development /docs/current/developer-docs/integrations/ethereum/overview /docs/current/developer-docs/multi-chain/ethereum/overview /docs/current/developer-docs/integrations/ethereum/evm-rpc /docs/current/developer-docs/multi-chain/ethereum/evm-rpc/evm-rpc-canister - /docs/current/developer-docs/integrations/ethereum/siwe /docs/current/developer-docs/identity/authentication/siwe + /docs/current/developer-docs/integrations/ethereum/siwe /docs/current/developer-docs/identity/authentication/overview /docs/current/developer-docs/integrations/bitcoin/bitcoin-how-it-works /docs/current/references/bitcoin-how-it-works /docs/current/developer-docs/integrations/bitcoin/ckbtc-reference /docs/current/references/ckbtc-reference /docs/current/developer-docs/integrations/https-outcalls/https-outcalls-how-it-works /docs/current/references/https-outcalls-how-it-works @@ -445,7 +445,7 @@ const redirects = ` /docs/current/developer-docs/smart-contracts/overview/development-cycle /docs/current/developer-docs/smart-contracts/overview/canister-lifecycle /docs/current/developer-docs/web-apps/user-login/internet-identity/integrate-identity /docs/current/developer-docs/identity/internet-identity/integrate-internet-identity /docs/current/developer-docs/multi-chain/ethereum/cketh /docs/current/developer-docs/multi-chain/chain-key-tokens/cketh/overview - /docs/current/developer-docs/multi-chain/ethereum/siwe /docs/current/developer-docs/identity/authentication/siwe + /docs/current/developer-docs/multi-chain/ethereum/siwe /docs/current/developer-docs/identity/authentication/overview /docs/current/developer-docs/multi-chain/bitcoin/ckbtc /docs/current/developer-docs/multi-chain/chain-key-tokens/ckbtc/overview /docs/current/developer-docs/multi-chain/bitcoin/read-state /docs/current/developer-docs/multi-chain/bitcoin/using-btc/read-state /docs/current/developer-docs/multi-chain/bitcoin/submit-transactions /docs/current/developer-docs/multi-chain/bitcoin/using-btc/submit-transactions @@ -522,9 +522,9 @@ const redirects = ` /docs/current/developer-docs/web-apps/user-login/internet-identity/creating-ii /docs/current/developer-docs/identity/internet-identity/creating-ii /docs/current/developer-docs/web-apps/user-login/internet-identity/integrate-internet-identity /docs/current/developer-docs/identity/internet-identity/integrate-internet-identity /docs/current/developer-docs/web-apps/user-login/internet-identity/alternative-origins /docs/current/developer-docs/identity/internet-identity/alternative-origins - /docs/current/developer-docs/web-apps/user-login/nfid /docs/current/developer-docs/identity/authentication/nfid - /docs/current/developer-docs/web-apps/user-login/email-password /docs/current/developer-docs/identity/authentication/email-password - /docs/current/developer-docs/multi-chain/ethereum/using-eth/siwe /docs/current/developer-docs/identity/authentication/siwe + /docs/current/developer-docs/web-apps/user-login/nfid /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/web-apps/user-login/email-password /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/multi-chain/ethereum/using-eth/siwe /docs/current/developer-docs/identity/authentication/overview /docs/current/developer-docs/build/cdks/motoko-dfinity/motoko/ /docs/current/motoko/main/getting-started/motoko-introduction /docs/current/developer-docs/defi/icrc-1/icrc1-index-setup /docs/current/developer-docs/defi/tokens/indexes /docs/current/defi/icp-tokens/icp-index-local-setup /docs/current/developer-docs/defi/tokens/indexes @@ -644,6 +644,19 @@ const redirects = ` /docs/current/developer-docs/smart-contracts/advanced-features/serving-http-request /docs/current/developer-docs/smart-contracts/advanced-features/handling-get-post-requests /docs/current/developer-docs/smart-contracts/write/default-template /docs/current/developer-docs/smart-contracts/write/overview /developers /docs/current/home + /docs/current/developer-docs/identity/authentication/email-password /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/identity/authentication/nfid /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/identity/authentication/siwb /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/identity/authentication/siwe /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/identity/authentication/siws /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/identity/authentication/msq /docs/current/developer-docs/identity/authentication/overview + /docs/current/developer-docs/web-apps/browser-js/js-request-api /docs/current/developer-docs/developer-tools/off-chain/agents/javascript-agent + /docs/current/developer-docs/defi/tokens/asset_flow/index /docs/current/developer-docs/defi/overview + /docs/current/developer-docs/defi/tokens/ledger/overview /docs/current/developer-docs/defi/overview + /docs/current/developer-docs/defi/tokens/ledger/setup/overview /docs/current/developer-docs/defi/overview + /docs/current/developer-docs/defi/tokens/ledger/usage/overview /docs/current/developer-docs/defi/overview + /docs/current/developer-docs/web-apps/obtain-verify-ic-pubkey /docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-ping + /docs/current/developer-docs/web-apps/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction ` .split(/[\r\n]+/) .map((line) => line.trim().replace(/^#.*$/, "").trim()) diff --git a/roadmap/entries/data-decentralization.json b/roadmap/entries/data-decentralization.json index d44f59a9b9..bf2f768e0e 100644 --- a/roadmap/entries/data-decentralization.json +++ b/roadmap/entries/data-decentralization.json @@ -14,21 +14,23 @@ "in_beta": false }, { - "title": "API Boundary Nodes (NNS controlled)", - "overview": "In the new boundary-node architecture, API boundary nodes are placed under the full control of the NNS and function as the edge of the IC.", - "status": "in_progress", + "title": "HTTP Gateways", + "overview": "The HTTP Gateway becomes a standalone component as part of the new Boundary Node architecture.", "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562", "proposal": "https://dashboard.internetcomputer.org/proposal/35671", "docs": "", + "eta": "", + "status": "in_progress", "is_community": false, "in_beta": false, - "milestone_id": "Solenoid" + "milestone_id": "Solenoid", + "imported": true }, { - "title": "HTTP Gateways", - "overview": "The HTTP Gateway becomes a standalone component as part of the new Boundary Node architecture.", - "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562", - "proposal": "https://dashboard.internetcomputer.org/proposal/35671", + "title": "Incident Handling under the New Boundary Node Architecture", + "overview": "To protect the core of the Internet Computer, processes must be established to configure temporary rate limits at API boundary nodes during incidents.", + "forum": "https://forum.dfinity.org/t/incident-handling-with-the-new-boundary-node-architecture/36390", + "proposal": "https://dashboard.internetcomputer.org/proposal/134031", "docs": "", "eta": "", "status": "in_progress", @@ -42,9 +44,9 @@ "overview": "As part of the new boundary-node architecture, the HTTP gateway is turned into a standalone service, which is easily deployable by anyone, including end users.", "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562", "proposal": "https://dashboard.internetcomputer.org/proposal/35671", - "docs": "", + "docs": "https://github.com/dfinity/ic-gateway", "eta": "", - "status": "upcoming", + "status": "in_progress", "is_community": false, "in_beta": false, "milestone_id": "Solenoid" @@ -55,8 +57,8 @@ "description": "ICP is accessible through a decentralized edge infrastructure, which is split into NNS-controlled API Boundary Nodes and HTTP Gateways. The NNS will appoint node machines to run API Boundary Nodes and anyone will be able to run HTTP Gateways, enabling a much more decentralized ICP edge infrastructure with a diverse set of service providers.", "milestone_id": "Solenoid", "status": "in_progress", - "eta": "Q2 2024", - "eta_to_render": "December 2024" + "eta": "Q1 2025", + "eta_to_render": "January 2025" }, { "title": "SEV-SNP-protected API Boundary Nodes", @@ -113,17 +115,6 @@ "is_community": false, "in_beta": false }, - { - "title": "Public access to a subset of node metrics", - "overview": "Giving node providers access to a subnet of node metrics to help them find out what is failing in case of node issues.", - "forum": "", - "proposal": "", - "docs": "", - "eta": "", - "status": "in_progress", - "is_community": false, - "in_beta": false - }, { "title": "Off-chain observability stack for Node Providers", "overview": "Observability solution for Node Providers to enable them to independently triage node health and take corrective action in case of problems.", @@ -137,16 +128,15 @@ "imported": true }, { - "title": "Alerting of NP in case of Node Failure", - "overview": "Alert Node Providers if one of their nodes starts misbehaving or underperforming.", - "forum": "", + "title": "Performance-based node provider rewards", + "overview": "Node rewards are awarded according to the node's contributions to the protocol, based on trustworthy node metrics, which are provided and signed by the IC network itself. This creates a cryptoeconomic incentive to encourage honest node provider behaviour.", + "forum": "https://forum.dfinity.org/t/performance-based-node-rewards/35208", "proposal": "", "docs": "", "eta": "", "status": "in_progress", - "is_community": true, - "in_beta": false, - "imported": true + "is_community": false, + "in_beta": false }, { "title": "HTTP Asset Caching", @@ -218,18 +208,7 @@ { "title": "Strengthened node provider checks and audits", "overview": "Strengthening the checks of entities intending to join ICP as node providers. May also include node provider audits.", - "forum": "", - "proposal": "", - "docs": "", - "eta": "", - "status": "", - "is_community": false, - "in_beta": false - }, - { - "title": "Penalties for non-compliant node providers", - "overview": "Non-compliant node providers are penalized economically or excluded from future network participation. This creates a cryptoeconomic incentive to encourage honest node provider behaviour.", - "forum": "", + "forum": "https://forum.dfinity.org/t/technical-working-group-node-providers/30255", "proposal": "", "docs": "", "eta": "", @@ -270,18 +249,6 @@ "is_community": false, "in_beta": false }, - { - "title": "Decentralized virtual personhood validation", - "overview": "Scalable, decentralized, virtual proof of personhood to distinguish people from machines.", - "forum": "https://forum.dfinity.org/t/long-term-r-d-people-parties-proof-of-human-proposal/9636", - "proposal": "https://dashboard.internetcomputer.org/proposal/35668", - "docs": "", - "eta": "", - "status": "", - "is_community": false, - "in_beta": false, - "imported": true - }, { "title": "Public contributions to IC repository", "overview": "Allowing for contributions by the public to the IC source code repository.", diff --git a/roadmap/entries/data-digital_assets.json b/roadmap/entries/data-digital_assets.json index 83836b7ef8..4febddec6f 100644 --- a/roadmap/entries/data-digital_assets.json +++ b/roadmap/entries/data-digital_assets.json @@ -84,7 +84,7 @@ "milestone_id": "Poloidal", "status": "in_progress", "eta": "", - "eta_to_render": "January 2025" + "eta_to_render": "February 2025" }, { "title": "Rosetta for ICRC ledgers", diff --git a/roadmap/entries/data-governance.json b/roadmap/entries/data-governance.json index 481bc3aa19..36a28319ba 100644 --- a/roadmap/entries/data-governance.json +++ b/roadmap/entries/data-governance.json @@ -9,7 +9,7 @@ "milestone_id": "Plasma", "status": "in_progress", "eta": "", - "eta_to_render": "November 2024" + "eta_to_render": "January 2025" }, { @@ -132,7 +132,7 @@ "proposal": "", "docs": "", "eta": "", - "status": "in_progress", + "status": "deployed", "is_community": true, "in_beta": false, "milestone_id": "Plasma" diff --git a/roadmap/entries/deployed-decentralization.json b/roadmap/entries/deployed-decentralization.json index ea6d97aa36..7dd642dd7b 100644 --- a/roadmap/entries/deployed-decentralization.json +++ b/roadmap/entries/deployed-decentralization.json @@ -119,6 +119,40 @@ "is_community": false, "in_beta": false, "imported": true + }, + { + "title": "Alerting of Node Providers in case of Node Failure", + "overview": "Alert Node Providers if one of their nodes starts misbehaving or underperforming.", + "forum": "", + "proposal": "", + "docs": "https://wiki.internetcomputer.org/wiki/Node_Provider_Alerting_Options", + "eta": "", + "status": "deployed", + "is_community": true, + "in_beta": false, + "imported": true + }, + { + "title": "Public access to a subset of node metrics", + "overview": "Giving node providers access to a subset of node metrics to help them find out in a fully decentralized manner whether nodes are behaving well, and to roughly compare node performance.", + "forum": "https://forum.dfinity.org/t/public-internet-computer-ic-node-metrics-available-now/32961", + "proposal": "", + "docs": "https://github.com/dfinity/ic-observability-stack", + "eta": "", + "status": "deployed", + "is_community": false, + "in_beta": false + }, + { + "title": "API Boundary Nodes (NNS controlled)", + "overview": "In the new boundary-node architecture, API boundary nodes are placed under the full control of the NNS and function as the edge of the IC.", + "status": "deployed", + "forum": "https://forum.dfinity.org/t/boundary-node-roadmap/15562", + "proposal": "https://dashboard.internetcomputer.org/proposal/35671", + "docs": "https://github.com/dfinity/ic/tree/master/rs/boundary_node/ic_boundary", + "is_community": false, + "in_beta": false, + "milestone_id": "Solenoid" } ] -} \ No newline at end of file +} diff --git a/scripts/clean-showcase.sh b/scripts/clean-showcase.sh new file mode 100755 index 0000000000..ee568cb178 --- /dev/null +++ b/scripts/clean-showcase.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# The objective of this script is to flag entries to be removed by a human reviewer. +# An entry is flagged if it meets one of the next requirements: +# 1. The `usesInternetIdentity` field is set to `true` and the `website` field is a GitHub URL. +# 2. The website is unreachable (HTTP status code in the 4XX or 5XX range). + +# Input JSON file +INPUT_FILE="showcase.json" + +# Temporary file to store intermediate results +TEMP_FILE="temp.json" +TEMP_FILE_2="temp2.json" + +# Substitute `usesInternetIdentity: true` with `usesInternetIdentity: false` for all entries with a GitHub URL instead of a website. +jq '[.[] | if (.usesInternetIdentity == true) and ((.website // "") | test("^https://github.com/")) then .usesInternetIdentity = false else . end]' "$INPUT_FILE" > "$TEMP_FILE" + +# Function to check the status of a website +check_canister_website() { + local url=$1 + # Get the HTTP headers and extract the status code + local response_status + response_status=$(curl -s -o /dev/null -I -w "%{http_code}" "$url") + + echo "HTTP status: $response_status" + + # If the status is in the 4XX or 5XX range, return failure + if [[ "$response_status" -ge 400 && "$response_status" -lt 600 ]]; then + echo "HTTP $response_status error detected for $url" + return 1 + fi + + return 0 +} + +# Start output as an empty array +echo "[" > "$TEMP_FILE_2" + +# Process each entry in the filtered JSON +first_item=true +jq -c '.[]' "$TEMP_FILE" | while read -r item; do + website=$(echo "$item" | jq -r '.website') + echo "Processing $website" + + # Check if the header is present for the website + if check_canister_website "$website"; then + # Add valid entries to the output file, handling comma placement + if [ "$first_item" = true ]; then + first_item=false + echo "$item" >> "$TEMP_FILE_2" + else + echo ",$item" >> "$TEMP_FILE_2" + fi + fi +done + +# Close the JSON array +echo "]" >> "$TEMP_FILE_2" + +jq '.' "$TEMP_FILE_2" > "$INPUT_FILE" + +# Clean up temporary files +rm -f "$TEMP_FILE" +rm -f "$TEMP_FILE_2" + +echo "Showcase file has been cleaned up successfullly." diff --git a/showcase.json b/showcase.json index c3b18d15a8..038f2b67a8 100644 --- a/showcase.json +++ b/showcase.json @@ -372,28 +372,27 @@ ], "youtube": "https://www.youtube.com/@junobuild" }, - -{ - "id": "oisy", - "name": "OISY Wallet", - "oneLiner": "Browser-based multi-chain wallet", - "website": "https://oisy.com", - "github": "https://github.com/dfinity/oisy-wallet", - "display": "Large", - "tags": [ - "Ethereum", - "DeFi", - "Wallet", - "Chain Fusion" - ], - "twitter": "https://x.com/oisy", - "description": "OISY Wallet is a new browser-based multi-chain wallet, powered by Internet Computer’s chain fusion technology. It is fully on-chain and implements network custody, an innovative approach that leverages the Internet Computer’s advanced cryptography to eliminate the need for you to handle private keys directly.", - "usesInternetIdentity": true, - "logo": "/img/showcase/oisy_logo.svg", - "screenshots": [ - "/img/showcase/oisy-preview.webp" - ] -}, + { + "id": "oisy", + "name": "OISY Wallet", + "oneLiner": "Browser-based multi-chain wallet", + "website": "https://oisy.com", + "github": "https://github.com/dfinity/oisy-wallet", + "display": "Large", + "tags": [ + "Ethereum", + "DeFi", + "Wallet", + "Chain Fusion" + ], + "twitter": "https://x.com/oisy", + "description": "OISY Wallet is a new browser-based multi-chain wallet, powered by Internet Computer’s chain fusion technology. It is fully on-chain and implements network custody, an innovative approach that leverages the Internet Computer’s advanced cryptography to eliminate the need for you to handle private keys directly.", + "usesInternetIdentity": true, + "logo": "/img/showcase/oisy_logo.svg", + "screenshots": [ + "/img/showcase/oisy-preview.webp" + ] + }, { "id": "kinic", "name": "Kinic", @@ -742,25 +741,6 @@ "/img/showcase/internetidentity_screenshot_0.gif" ] }, - { - "id": "Arth", - "name": "Arth", - "tags": [ - "DeFi", - "Wallet", - "Bitcoin", - "Chain Fusion" - ], - "description": "The mobile payments app that combines the power of Bitcoin with the convenience of mobile payments. With ckBTC, you can easily swap ckBTC from Bitcoin, view balances, and seamlessly make payments using QR codes.", - "usesInternetIdentity": true, - "website": "https://play.google.com/store/apps/details?id=com.foo.arth&pli=1", - "display": "Normal", - "logo": "/img/showcase/arth_logo.png", - "screenshots": [ - "/img/showcase/arth_ss.webp" - ], - "submittableId": "36143434" - }, { "id": "astrox", "name": "AstroX ME", @@ -1816,19 +1796,6 @@ "logo": "/img/showcase/dbox_logo.png", "submittableId": "22737412" }, - { - "id": "icadashboard", - "name": "ICA Dashboard", - "website": "https://dashboard.internetcomputer.org/", - "tags": [ - "Tools / Infrastructure" - ], - "description": "The Internet Computer Association maintains a public dashboard where anyone can track the latest statistics for the Internet Computer blockchain. Tracking everything from blocks per second, to NNS proposals and their information and voting record, as well the latest state of the network, and transaction data. ", - "oneLiner": "ICA Official Dashboard", - "display": "Normal", - "logo": "/img/showcase/icadashboard_logo.webp", - "screenshots": [] - }, { "id": "icpcoins", "name": "ICP Coins", @@ -1920,19 +1887,6 @@ "/img/showcase/welcomeintothemetaverse_screenshot_0.webp" ] }, - { - "id": "lo-fiplayer", - "name": "Lo-Fi Player", - "website": "https://hl2zz-gyaaa-aaaad-qas3a-cai.raw.ic0.app/", - "tags": [ - "Games" - ], - "description": "Lo-Fi Player is a dapp hosted on the Internet Computer that lets users listen to relaxing beats delivered by blockchain. The back-end is using machine learning to build and develop the AI produced tunes, and users can interact within the player to change the sound to their liking. ", - "logo": "/img/showcase/lo-fiplayer_logo.webp", - "screenshots": [ - "/img/showcase/lo-fiplayer_screenshot_0.webp" - ] - }, { "id": "reversi", "name": "Reversi", @@ -2500,24 +2454,6 @@ "twitter": "https://twitter.com/Faceless_Proj", "submittableId": "35639090" }, - { - "name": "Sama Network", - "description": "SAMA network, with its original designed consensus and business sharding separation, builds a highly secure and private distributed computational system. It provides data security and computational power for the World Wide Web without altering users’ habits.", - "website": "https://sama.network/", - "logo": "/img/showcase/sama_network_logo.png", - "display": "Normal", - "id": "sama_network", - "oneLiner": "A blockchain OS with high throughput, business data full-stack encryption, and distributed computing capabilities.", - "stats": "Private alpha testnet has been launched; the network and user interface are ready for operation.", - "tags": [ - "Tools / Infrastructure", - "Enterprise" - ], - "usesInternetIdentity": false, - "twitter": "https://twitter.com/sama_network", - "youtube": "https://www.youtube.com/@sama_network", - "submittableId": "40741075" - }, { "name": "221Bravo App", "description": "Home for ICP Data-Detectives. Token Stats, Visual Explorer, Account Searching and more.", @@ -2671,27 +2607,6 @@ "youtube": "https://www.youtube.com/channel/UCrCMtg7PhCHX1tKpw5NIU7g", "submittableId": "44034269" }, - { - "id": "taxlint", - "name": "TaxLint", - "oneLiner": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.", - "website": "https://www.taxlint.online/", - "tags": [ - "DeFi", - "Tools / Infrastructure" - ], - "description": "A decentralised, private, and secure automated Tax Report aimed to help users to count ICP and ICRC1 token transactions.", - "usesInternetIdentity": true, - "logo": "/img/showcase/taxlint_logo.png", - "github": "https://github.com/TaxLintDAO/taxlint", - "twitter": "https://twitter.com/taxlint", - "display": "Normal", - "stats": "150+ users", - "screenshots": [ - "/img/showcase/taxlint_screenshot.png" - ], - "submittableId": "43956470" - }, { "name": "InheritX", "description": "InheritX is a blockchain-based application developed on Internet Computer (ICP) that allows users to create a digital will and bequeath their assets to designated beneficiaries in the event of their death.", @@ -2869,7 +2784,7 @@ ], "description": "POC of a decentralized secret management solution that leverages Internet Computer (IC) technology. It aims to provide a means for services to share secrets in a flexible, transparent, and secure way. It simplifies the flow of secret management between consumers in the cluster as well as rotate secrets based on config for added security.", "stats": "100% on chain ACL", - "usesInternetIdentity": true, + "usesInternetIdentity": false, "github": "https://github.com/Zondax/vault-k8s-canister", "youtube": "https://youtu.be/99MahI1SO7c", "twitter": "https://twitter.com/_zondax_", @@ -2921,7 +2836,7 @@ "Tools / Infrastructure" ], "description": "POC of a decentralized mind and body data management tooling that leverages Internet Computer (IC) technology. This POC provides methods and interface to submit HTTP Outcall requests to a proxy API that interfaces with a Firebase FIrestore database. It provides an example front end react application that interacts with a motoko backend.", - "usesInternetIdentity": true, + "usesInternetIdentity": false, "github": "https://github.com/blueberryxtech/ic-mind-body-canister", "submittableId": "44190088" }, @@ -3450,22 +3365,6 @@ "logo": "/img/showcase/gamebloc_logo.png", "submittableId": "44503915" }, - { - "id": "allkinds", - "name": "AllKinds", - "oneLiner": "A web3 social network where people find more meaningful connections.", - "website": "https://allkinds.xyz/", - "github": "https://github.com/AllKinds/AllkindsICP", - "twitter": "https://twitter.com/Allkindsxyz", - "tags": [ - "SocialFi" - ], - "description": "A web3 social network where people find more meaningful connections.", - "usesInternetIdentity": true, - "display": "Normal", - "logo": "/img/showcase/allkinds_logo.svg", - "submittableId": "43688836" - }, { "id": "dmail-network", "name": "Dmail Network", @@ -3553,23 +3452,6 @@ "logo": "/img/showcase/frontrow_logo.png", "submittableId": "43814286" }, - { - "id": "myordinalsloan", - "name": "MyOrdinals.Loan", - "oneLiner": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.", - "website": "https://myordinals.loan/", - "tags": [ - "Bitcoin", - "DeFi", - "Chain Fusion" - ], - "twitter": "https://twitter.com/MyOrdinalsLoan", - "description": "Peer-to-peer Bitcoin lending using ckBTC. Users borrow or lend ckBTC, securing transactions with unique Ordinal Inscriptions (Ordinals) as collateral.", - "usesInternetIdentity": false, - "display": "Normal", - "logo": "/img/showcase/myordinalsloan_logo.png", - "submittableId": "41341564" - }, { "id": "icto", "name": "ICTO", @@ -4646,22 +4528,6 @@ "github": "https://github.com/NeutronStarDAO/icecube", "twitter": "https://x.com/icecubeapp" }, - { - "id": "bridge-23-app", - "name": "Bridge 23", - "oneLiner": "Bridge 23 is a fully featured data marketplace running on ICP where everyone can sell their data directly to merchants, companies and institutions.", - "description": "Bridge 23 is a fully featured data marketplace running on ICP where everyone can sell their data directly to merchants, companies and institutions.", - "stats": "5000+ waitlist, 100+ users, 4000+ tokenized products", - "website": "https://alpha.bridge23.app/login", - "logo": "/img/showcase/bridge23_logo.png", - "display": "Normal", - "tags": [ - "Tools / Infrastructure" - ], - "usesInternetIdentity": true, - "github": "https://github.com/bridge-23/Bridge23app.0.1.0-alpha", - "twitter": "https://x.com/bridge23inc" - }, { "id": "event-hub-attention-dao", "name": "Event Hub", @@ -4822,28 +4688,6 @@ "github": "https://github.com/supaIC/Cipher-AI-Vault", "website": "https://qehbq-rqaaa-aaaan-ql2iq-cai.icp0.io/" }, - { - "id": "scoge", - "name": "SCOGÉ Universe", - "oneLiner": "T.A.O.S City’s finest distributor of Luxury Fashion and Consumer goods", - "website": "https://uqjdj-siaaa-aaaag-aaoxq-cai.icp0.io", - "tags": [ - "NFT", - "Metaverse", - "Games" - ], - "description": "SCOGÉ is a cutting-edge fashion-centric gamified metaverse platform that revolutionizes the way styles are born, stories are told, and interaction between users. Users embark on an enthralling journey, wielding unique powers to craft thrilling experiences while discovering T.A.O.S City and the evolving SCOGÉ Universe.", - "logo": "/img/showcase/scoge_logo.webp", - "display": "Normal", - "usesInternetIdentity": false, - "twitter": "https://twitter.com/_scoge_", - "screenshots": [ - "/img/showcase/scoge_screenshots.webp" - ], - "video": "/img/showcase/scoge_video.mp4", - "videoContentType": "video/mp4", - "submittableId": "34276514" - }, { "id": "zkLama", "name": "zkLama", @@ -4998,4 +4842,4 @@ "github": "https://github.com/tolgayayci/dfx-dashboard", "website": "https://dfx-dashboard-docs.netlify.app/" } -] \ No newline at end of file +] diff --git a/sidebars.js b/sidebars.js index a2efbe15a6..bbff85da62 100644 --- a/sidebars.js +++ b/sidebars.js @@ -127,6 +127,17 @@ const sidebars = { label: "Overview", id: "developer-docs/smart-contracts/call/overview", }, + { + type: "doc", + label: "Async code & inter-canister calls", + id: "developer-docs/smart-contracts/advanced-features/async-code", + }, + { + type: "doc", + label: "Composite queries", + id: "developer-docs/smart-contracts/advanced-features/composite-query", + }, + "developer-docs/smart-contracts/advanced-features/query-stats", { type: "category", label: "Candid", @@ -191,55 +202,52 @@ const sidebars = { type: "category", label: "Advanced features", items: [ - { - type: "doc", - label: "Async code & inter-canister calls", - id: "developer-docs/smart-contracts/advanced-features/async-code", - }, - { - type: "doc", - label: "Composite queries", - id: "developer-docs/smart-contracts/advanced-features/composite-query", - }, - { - type: "doc", - label: "HTTP gateways & incoming requests", - id: "developer-docs/smart-contracts/advanced-features/handling-get-post-requests", - }, - { - type: "category", - label: "HTTPS outcalls", - items: [ - { - label: "Overview", - type: "doc", - id: "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview", - }, - "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-how-to-use", - "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-get", - "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-post", - ], - }, { type: "category", - label: "HTTP certification", - items: [ + label: "HTTP/HTTPS", + items: + [ { type: "doc", - id: "developer-docs/web-apps/http-compatible-canisters/custom-http-canisters", - label: "Custom HTTP canisters", + label: "HTTP gateways & incoming requests", + id: "developer-docs/smart-contracts/advanced-features/handling-get-post-requests", }, { - type: "doc", - id: "developer-docs/web-apps/http-compatible-canisters/serving-json-over-http", - label: "Serving JSON over HTTP", + type: "category", + label: "HTTPS outcalls", + items: [ + { + label: "Overview", + type: "doc", + id: "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview", + }, + "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-how-to-use", + "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-get", + "developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-post", + ], }, { - type: "doc", - id: "developer-docs/web-apps/http-compatible-canisters/serving-static-assets-over-http", - label: "Serving static assets over HTTP", + type: "category", + label: "HTTP certification", + items: [ + { + type: "doc", + id: "developer-docs/web-apps/http-compatible-canisters/custom-http-canisters", + label: "Custom HTTP canisters", + }, + { + type: "doc", + id: "developer-docs/web-apps/http-compatible-canisters/serving-json-over-http", + label: "Serving JSON over HTTP", + }, + { + type: "doc", + id: "developer-docs/web-apps/http-compatible-canisters/serving-static-assets-over-http", + label: "Serving static assets over HTTP", + }, + ], }, - ], + ] }, { type: "doc", @@ -273,12 +281,11 @@ const sidebars = { "developer-docs/smart-contracts/signatures/signing-messages-t-schnorr", ], }, + "developer-docs/web-apps/independently-verifying-ic-signatures", ], }, "developer-docs/smart-contracts/advanced-features/periodic-tasks", - "developer-docs/smart-contracts/advanced-features/query-stats", "developer-docs/smart-contracts/advanced-features/simd", - "developer-docs/smart-contracts/advanced-features/system-canisters", "developer-docs/smart-contracts/advanced-features/time-and-timestamps", ], }, @@ -532,17 +539,9 @@ const sidebars = { ], }, { - type: "category", - label: "Browser JS", - items: [ - "developer-docs/web-apps/browser-js/js-frameworks", - "developer-docs/web-apps/browser-js/js-request-api", - ], - }, - { - type: "category", - label: "Frameworks", - items: ["developer-docs/web-apps/frameworks/juno"], + type: "doc", + label: "JS frameworks", + id: "developer-docs/web-apps/browser-js/js-frameworks", }, { type: "category", @@ -552,9 +551,7 @@ const sidebars = { "developer-docs/web-apps/custom-domains/using-custom-domains", ], }, - "developer-docs/web-apps/design-dapps", - "developer-docs/web-apps/independently-verifying-ic-signatures", - "developer-docs/web-apps/obtain-verify-ic-pubkey", + "developer-docs/web-apps/frameworks/juno", ], }, { @@ -759,10 +756,6 @@ const sidebars = { ], }, { - type: "category", - label: "Identity", - items: [ - { type: "category", label: "Authentication", items: [ @@ -771,7 +764,6 @@ const sidebars = { type: "doc", id: "developer-docs/identity/authentication/overview", }, - { type: "category", label: "Internet Identity (II)", @@ -786,14 +778,6 @@ const sidebars = { "developer-docs/identity/internet-identity/alternative-origins", ], }, - "developer-docs/identity/authentication/email-password", - "developer-docs/identity/authentication/nfid", - "developer-docs/identity/authentication/siwb", - "developer-docs/identity/authentication/siwe", - "developer-docs/identity/authentication/siws", - "developer-docs/identity/authentication/msq", - ], - }, { type: "category", label: "Verifiable credentials", @@ -824,23 +808,13 @@ const sidebars = { label: "Tokens", items: [ "developer-docs/defi/tokens/token-standards", - "developer-docs/defi/tokens/asset_flow/index", { type: "category", label: "Ledgers", items: [ - { - type: "doc", - label: "Overview", - id: "developer-docs/defi/tokens/ledger/overview", - }, { type: "category", label: "Setup", - link: { - type: "doc", - id: "developer-docs/defi/tokens/ledger/setup/overview", - }, items: [ "developer-docs/defi/tokens/ledger/setup/icp_ledger_setup", "developer-docs/defi/tokens/ledger/setup/icrc1_ledger_setup" @@ -849,10 +823,6 @@ const sidebars = { { type: "category", label: "Usage", - link: { - type: "doc", - id: "developer-docs/defi/tokens/ledger/usage/overview", - }, items: [ "developer-docs/defi/tokens/ledger/usage/icp_ledger_usage", "developer-docs/defi/tokens/ledger/usage/icrc1_ledger_usage" @@ -875,7 +845,7 @@ const sidebars = { }, { type: "category", - label: "Advanced", + label: "Rosetta", items: [ { type: "category", @@ -1211,101 +1181,6 @@ const sidebars = { }, ], }, - { - type: "category", - label: "Sample apps", - items: [ - "samples/overview", - { - type: "category", - label: "Hosting", - items: [ - "references/samples/hosting/godot-html5-template/README", - "references/samples/hosting/photo-storage/README", - "references/samples/hosting/static-website/README", - "references/samples/hosting/unity-webgl-template/README", - ], - }, - { - type: "category", - label: "Motoko", - items: [ - "references/samples/motoko/basic_bitcoin/README", - "references/samples/motoko/basic_dao/README", - "references/samples/motoko/cert-var/README", - "references/samples/motoko/classes/README", - "references/samples/motoko/composite_query/README", - "references/samples/motoko/counter/README", - { - type: "doc", - label: "CRUD example", - id: "references/samples/motoko/superheroes/README", - }, - "references/samples/motoko/encrypted-notes-dapp-vetkd/README", - "references/samples/motoko/encrypted-notes-dapp/README", - "references/samples/motoko/life/README", - "references/samples/motoko/hello_cycles/README", - "references/samples/motoko/send_http_get/README", - "references/samples/motoko/send_http_post/README", - "references/samples/motoko/ic-pos/README", - "references/samples/motoko/icrc2-swap/README", - "references/samples/motoko/internet_identity_integration/README", - "references/samples/motoko/minimal-counter-dapp/README", - "references/samples/motoko/parallel_calls/README", - "references/samples/motoko/pub-sub/README", - "references/samples/motoko/random_maze/README", - "references/samples/motoko/threshold-ecdsa/README", - "references/samples/motoko/token_transfer/README", - "references/samples/motoko/token_transfer_from/README", - "references/samples/motoko/vetkd/README", - ], - }, - { - type: "category", - label: "Rust", - items: [ - "references/samples/rust/basic_bitcoin/README", - "references/samples/rust/basic_dao/README", - "references/samples/rust/canister-info/README", - "references/samples/rust/composite_query/README", - "references/samples/rust/counter/README", - "references/samples/rust/defi/src/frontend/README", - "references/samples/rust/encrypted-notes-dapp-vetkd/README", - "references/samples/rust/encrypted-notes-dapp/README", - "references/samples/rust/icp_transfer/README", - "references/samples/rust/nft-wallet/README", - "references/samples/rust/parallel_calls/README", - "references/samples/rust/performance_counters/README", - "references/samples/rust/periodic_tasks/README", - "references/samples/rust/pub-sub/README", - "references/samples/rust/qrcode/README", - "references/samples/rust/send_http_get/README", - "references/samples/rust/send_http_post/README", - "references/samples/rust/threshold-ecdsa/README", - "references/samples/rust/token_transfer/README", - "references/samples/rust/token_transfer_from/README", - "references/samples/rust/vetkd/README", - ], - }, - { - type: "category", - label: "Native dapps", - items: [ - "references/samples/native-apps/unity_ii_applink/README", - "references/samples/native-apps/unity_ii_deeplink/README", - "references/samples/native-apps/unity_ii_deeplink/ii_integration_dapp/README", - ], - }, - { - type: "category", - label: "Svelte", - items: [ - "references/samples/svelte/svelte-motoko-starter/README", - "references/samples/svelte/svelte-starter/README", - ], - }, - ], - }, { type: "category", label: "References", @@ -1407,6 +1282,7 @@ const sidebars = { label: "Ingress messages", id: "references/ingress-messages", }, + "developer-docs/smart-contracts/advanced-features/system-canisters", { type: "category", label: "Node providers", diff --git a/static/img/blog/dev-update-blog-dec-4.jpg b/static/img/blog/dev-update-blog-dec-4.jpg new file mode 100644 index 0000000000..992ddfff82 Binary files /dev/null and b/static/img/blog/dev-update-blog-dec-4.jpg differ diff --git a/static/img/showcase/Alphaday_logo.png b/static/img/showcase/Alphaday_logo.png index 0fff6a39f9..1ac171036e 100644 Binary files a/static/img/showcase/Alphaday_logo.png and b/static/img/showcase/Alphaday_logo.png differ diff --git a/static/img/showcase/Alphaday_screenshot.png b/static/img/showcase/Alphaday_screenshot.png index 8af6981fee..e18e46e0f0 100644 Binary files a/static/img/showcase/Alphaday_screenshot.png and b/static/img/showcase/Alphaday_screenshot.png differ diff --git a/static/img/showcase/Alphaday_video.mp4 b/static/img/showcase/Alphaday_video.mp4 index 1977dc82b7..8f368b64d0 100644 Binary files a/static/img/showcase/Alphaday_video.mp4 and b/static/img/showcase/Alphaday_video.mp4 differ diff --git a/static/img/showcase/BR-DAO_logo.svg b/static/img/showcase/BR-DAO_logo.svg index 83200a21b2..5addb51dc7 100644 --- a/static/img/showcase/BR-DAO_logo.svg +++ b/static/img/showcase/BR-DAO_logo.svg @@ -1,7 +1,4 @@ - - - - +VDA5OjI3OjE5LTA0OjAwFjPZAwAAAABJRU5ErkJggg=="/> \ No newline at end of file diff --git a/static/img/showcase/CaniPlay_logo.png b/static/img/showcase/CaniPlay_logo.png index 5941583c88..d4a55a58e2 100644 Binary files a/static/img/showcase/CaniPlay_logo.png and b/static/img/showcase/CaniPlay_logo.png differ diff --git a/static/img/showcase/DeVinci_logo.png b/static/img/showcase/DeVinci_logo.png index e834be404c..a0a82eed98 100644 Binary files a/static/img/showcase/DeVinci_logo.png and b/static/img/showcase/DeVinci_logo.png differ diff --git a/static/img/showcase/Gate23_logo.png b/static/img/showcase/Gate23_logo.png index 0a8ad42d06..c0de38f755 100644 Binary files a/static/img/showcase/Gate23_logo.png and b/static/img/showcase/Gate23_logo.png differ diff --git a/static/img/showcase/ICAP_logo.png b/static/img/showcase/ICAP_logo.png index 27cf346a17..d505fd2ca8 100644 Binary files a/static/img/showcase/ICAP_logo.png and b/static/img/showcase/ICAP_logo.png differ diff --git a/static/img/showcase/ICPulse_screenshot.jpg b/static/img/showcase/ICPulse_screenshot.jpg index 9decc5bfa6..7e29637010 100644 Binary files a/static/img/showcase/ICPulse_screenshot.jpg and b/static/img/showcase/ICPulse_screenshot.jpg differ diff --git a/static/img/showcase/ICSoccerWorld.png b/static/img/showcase/ICSoccerWorld.png index 7286926caf..087df2ed5e 100644 Binary files a/static/img/showcase/ICSoccerWorld.png and b/static/img/showcase/ICSoccerWorld.png differ diff --git a/static/img/showcase/Mapz_logo.png b/static/img/showcase/Mapz_logo.png index b8b9de9ee7..7e6c2e4c10 100644 Binary files a/static/img/showcase/Mapz_logo.png and b/static/img/showcase/Mapz_logo.png differ diff --git a/static/img/showcase/Mapz_screenshot.png b/static/img/showcase/Mapz_screenshot.png index 18efd32572..c1801b962a 100644 Binary files a/static/img/showcase/Mapz_screenshot.png and b/static/img/showcase/Mapz_screenshot.png differ diff --git a/static/img/showcase/Meddle_Logo.png b/static/img/showcase/Meddle_Logo.png index f96b039601..1ef7978e87 100644 Binary files a/static/img/showcase/Meddle_Logo.png and b/static/img/showcase/Meddle_Logo.png differ diff --git a/static/img/showcase/Outrank_logo.jpg b/static/img/showcase/Outrank_logo.jpg index 1fe2b8c6bf..2f71241e9b 100644 Binary files a/static/img/showcase/Outrank_logo.jpg and b/static/img/showcase/Outrank_logo.jpg differ diff --git a/static/img/showcase/PanoramaBlock_Logo.png b/static/img/showcase/PanoramaBlock_Logo.png index f8706c7a4d..71b18725cd 100644 Binary files a/static/img/showcase/PanoramaBlock_Logo.png and b/static/img/showcase/PanoramaBlock_Logo.png differ diff --git a/static/img/showcase/Raters_logo.png b/static/img/showcase/Raters_logo.png index 423bff9972..a8280c3877 100644 Binary files a/static/img/showcase/Raters_logo.png and b/static/img/showcase/Raters_logo.png differ diff --git a/static/img/showcase/Zoksh_logo.jpg b/static/img/showcase/Zoksh_logo.jpg index 9ab415297e..7a2a3c569c 100644 Binary files a/static/img/showcase/Zoksh_logo.jpg and b/static/img/showcase/Zoksh_logo.jpg differ diff --git a/static/img/showcase/aedile_screenshot_0.webp b/static/img/showcase/aedile_screenshot_0.webp index 70dafa5b84..92a6b1a901 100644 Binary files a/static/img/showcase/aedile_screenshot_0.webp and b/static/img/showcase/aedile_screenshot_0.webp differ diff --git a/static/img/showcase/agorapp-logo-small.svg b/static/img/showcase/agorapp-logo-small.svg index 2b212f2606..4ae5fd9209 100644 --- a/static/img/showcase/agorapp-logo-small.svg +++ b/static/img/showcase/agorapp-logo-small.svg @@ -1,15 +1 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/allkinds_logo.svg b/static/img/showcase/allkinds_logo.svg index e15891a4ba..a47046d40d 100644 --- a/static/img/showcase/allkinds_logo.svg +++ b/static/img/showcase/allkinds_logo.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/static/img/showcase/alpacafi_logo.png b/static/img/showcase/alpacafi_logo.png index 50468898d4..f6ed43a404 100644 Binary files a/static/img/showcase/alpacafi_logo.png and b/static/img/showcase/alpacafi_logo.png differ diff --git a/static/img/showcase/amplify_logo.png b/static/img/showcase/amplify_logo.png index 619e7f0586..3fddd31eed 100644 Binary files a/static/img/showcase/amplify_logo.png and b/static/img/showcase/amplify_logo.png differ diff --git a/static/img/showcase/arcmind_logo.svg b/static/img/showcase/arcmind_logo.svg index 87c2617e85..6d5a44e9a7 100644 --- a/static/img/showcase/arcmind_logo.svg +++ b/static/img/showcase/arcmind_logo.svg @@ -1,14 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/argonstudio_logo.webp b/static/img/showcase/argonstudio_logo.webp index 4845648be2..42bf106faa 100644 Binary files a/static/img/showcase/argonstudio_logo.webp and b/static/img/showcase/argonstudio_logo.webp differ diff --git a/static/img/showcase/asset-app.jpg b/static/img/showcase/asset-app.jpg index 54cecc29b3..1bfe62b74f 100644 Binary files a/static/img/showcase/asset-app.jpg and b/static/img/showcase/asset-app.jpg differ diff --git a/static/img/showcase/asset-app_logo.png b/static/img/showcase/asset-app_logo.png index 7b4fb4e960..1ae455f678 100644 Binary files a/static/img/showcase/asset-app_logo.png and b/static/img/showcase/asset-app_logo.png differ diff --git a/static/img/showcase/astroxme_logo.webp b/static/img/showcase/astroxme_logo.webp index ab638661c4..11a7b8e280 100644 Binary files a/static/img/showcase/astroxme_logo.webp and b/static/img/showcase/astroxme_logo.webp differ diff --git a/static/img/showcase/autoroyale_video.mp4 b/static/img/showcase/autoroyale_video.mp4 index a839b64f38..566b78c1fa 100644 Binary files a/static/img/showcase/autoroyale_video.mp4 and b/static/img/showcase/autoroyale_video.mp4 differ diff --git a/static/img/showcase/aviatelabs_logo.webp b/static/img/showcase/aviatelabs_logo.webp index 8443c14d8f..8c23bf1aad 100644 Binary files a/static/img/showcase/aviatelabs_logo.webp and b/static/img/showcase/aviatelabs_logo.webp differ diff --git a/static/img/showcase/azle_logo.svg b/static/img/showcase/azle_logo.svg index b6f255bf13..8fe3cae810 100644 --- a/static/img/showcase/azle_logo.svg +++ b/static/img/showcase/azle_logo.svg @@ -1,66 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/azle_screenshot_0.jpg b/static/img/showcase/azle_screenshot_0.jpg index b885ca97c6..5a9f90534f 100644 Binary files a/static/img/showcase/azle_screenshot_0.jpg and b/static/img/showcase/azle_screenshot_0.jpg differ diff --git a/static/img/showcase/bioniq-logo.jpeg b/static/img/showcase/bioniq-logo.jpeg index d175b3c382..96376e8f12 100644 Binary files a/static/img/showcase/bioniq-logo.jpeg and b/static/img/showcase/bioniq-logo.jpeg differ diff --git a/static/img/showcase/bioniq-screenshot-min.png b/static/img/showcase/bioniq-screenshot-min.png index bb7127fd7d..70beed99fe 100644 Binary files a/static/img/showcase/bioniq-screenshot-min.png and b/static/img/showcase/bioniq-screenshot-min.png differ diff --git a/static/img/showcase/bipQuantum_logo.jpg b/static/img/showcase/bipQuantum_logo.jpg index 82502effad..ec0fecd004 100644 Binary files a/static/img/showcase/bipQuantum_logo.jpg and b/static/img/showcase/bipQuantum_logo.jpg differ diff --git a/static/img/showcase/bitfinity_evm.png b/static/img/showcase/bitfinity_evm.png index db08327bb9..c7564c3dd0 100644 Binary files a/static/img/showcase/bitfinity_evm.png and b/static/img/showcase/bitfinity_evm.png differ diff --git a/static/img/showcase/bitomni_screenshot.png b/static/img/showcase/bitomni_screenshot.png index 8fc83872e1..de7f2ce835 100644 Binary files a/static/img/showcase/bitomni_screenshot.png and b/static/img/showcase/bitomni_screenshot.png differ diff --git a/static/img/showcase/blocklist.png b/static/img/showcase/blocklist.png index a5ff55f5e8..837e684662 100644 Binary files a/static/img/showcase/blocklist.png and b/static/img/showcase/blocklist.png differ diff --git a/static/img/showcase/blueband_logo.png b/static/img/showcase/blueband_logo.png index 25c83b64f0..e1fb77c13e 100644 Binary files a/static/img/showcase/blueband_logo.png and b/static/img/showcase/blueband_logo.png differ diff --git a/static/img/showcase/bridge23_logo.png b/static/img/showcase/bridge23_logo.png index 0845689fc9..944d61b47b 100644 Binary files a/static/img/showcase/bridge23_logo.png and b/static/img/showcase/bridge23_logo.png differ diff --git a/static/img/showcase/brownfiamm_logo.jpg b/static/img/showcase/brownfiamm_logo.jpg index 5189963d2c..4f8a665c70 100644 Binary files a/static/img/showcase/brownfiamm_logo.jpg and b/static/img/showcase/brownfiamm_logo.jpg differ diff --git a/static/img/showcase/candb_logo.png b/static/img/showcase/candb_logo.png index 9471a55244..7191f9d784 100644 Binary files a/static/img/showcase/candb_logo.png and b/static/img/showcase/candb_logo.png differ diff --git a/static/img/showcase/canister-store_screenshot_0.png b/static/img/showcase/canister-store_screenshot_0.png index e20a732e1e..7dd5f34e17 100644 Binary files a/static/img/showcase/canister-store_screenshot_0.png and b/static/img/showcase/canister-store_screenshot_0.png differ diff --git a/static/img/showcase/canscale_logo.webp b/static/img/showcase/canscale_logo.webp index c2d37b8c7d..26e67e2bf2 100644 Binary files a/static/img/showcase/canscale_logo.webp and b/static/img/showcase/canscale_logo.webp differ diff --git a/static/img/showcase/catalyze_screenshot.png b/static/img/showcase/catalyze_screenshot.png index 194fba1c44..4f96d5ce72 100644 Binary files a/static/img/showcase/catalyze_screenshot.png and b/static/img/showcase/catalyze_screenshot.png differ diff --git a/static/img/showcase/chainsight_screenshot.png b/static/img/showcase/chainsight_screenshot.png index 6ad69c38da..243ee3c8d8 100644 Binary files a/static/img/showcase/chainsight_screenshot.png and b/static/img/showcase/chainsight_screenshot.png differ diff --git a/static/img/showcase/cipherAI_logo.jpeg b/static/img/showcase/cipherAI_logo.jpeg index 3afa3a93d5..2b3a264bb6 100644 Binary files a/static/img/showcase/cipherAI_logo.jpeg and b/static/img/showcase/cipherAI_logo.jpeg differ diff --git a/static/img/showcase/cipherproxy_logo.webp b/static/img/showcase/cipherproxy_logo.webp index bcccc5a090..f6ca00b22e 100644 Binary files a/static/img/showcase/cipherproxy_logo.webp and b/static/img/showcase/cipherproxy_logo.webp differ diff --git a/static/img/showcase/civic_logo.png b/static/img/showcase/civic_logo.png index dd02969f65..8ea0a00863 100644 Binary files a/static/img/showcase/civic_logo.png and b/static/img/showcase/civic_logo.png differ diff --git a/static/img/showcase/codebase_logo.webp b/static/img/showcase/codebase_logo.webp index bc3f289775..e15e94dffd 100644 Binary files a/static/img/showcase/codebase_logo.webp and b/static/img/showcase/codebase_logo.webp differ diff --git a/static/img/showcase/communities_ooo_logo.png b/static/img/showcase/communities_ooo_logo.png index 4c0fd1d631..779531e390 100644 Binary files a/static/img/showcase/communities_ooo_logo.png and b/static/img/showcase/communities_ooo_logo.png differ diff --git a/static/img/showcase/cosmicrafts_logo.svg b/static/img/showcase/cosmicrafts_logo.svg index cc367e251c..5149426920 100644 --- a/static/img/showcase/cosmicrafts_logo.svg +++ b/static/img/showcase/cosmicrafts_logo.svg @@ -1,37 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/cosmicrafts_screenshot1.jpg b/static/img/showcase/cosmicrafts_screenshot1.jpg index 3a3b50c093..0057abae5c 100644 Binary files a/static/img/showcase/cosmicrafts_screenshot1.jpg and b/static/img/showcase/cosmicrafts_screenshot1.jpg differ diff --git a/static/img/showcase/crowdeats_logo.svg b/static/img/showcase/crowdeats_logo.svg index 3ecc638e9d..0fac08534b 100644 --- a/static/img/showcase/crowdeats_logo.svg +++ b/static/img/showcase/crowdeats_logo.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/cycleops_logo.png b/static/img/showcase/cycleops_logo.png index 53fe03c906..2dff4e9a86 100644 Binary files a/static/img/showcase/cycleops_logo.png and b/static/img/showcase/cycleops_logo.png differ diff --git a/static/img/showcase/dappbox_logo.png b/static/img/showcase/dappbox_logo.png index 88abbf5638..2447463908 100644 Binary files a/static/img/showcase/dappbox_logo.png and b/static/img/showcase/dappbox_logo.png differ diff --git a/static/img/showcase/dappradar_logo.png b/static/img/showcase/dappradar_logo.png index 0c17273330..33be903f8f 100644 Binary files a/static/img/showcase/dappradar_logo.png and b/static/img/showcase/dappradar_logo.png differ diff --git a/static/img/showcase/datanome-logo.png b/static/img/showcase/datanome-logo.png index d0e760595a..5db46b4ed1 100644 Binary files a/static/img/showcase/datanome-logo.png and b/static/img/showcase/datanome-logo.png differ diff --git a/static/img/showcase/datanome-screenshot.png b/static/img/showcase/datanome-screenshot.png index d4b739254e..332af75a2f 100644 Binary files a/static/img/showcase/datanome-screenshot.png and b/static/img/showcase/datanome-screenshot.png differ diff --git a/static/img/showcase/dcm_logo.svg b/static/img/showcase/dcm_logo.svg index b16bd01618..db71a943b5 100644 --- a/static/img/showcase/dcm_logo.svg +++ b/static/img/showcase/dcm_logo.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/static/img/showcase/deai_chat_logo.jpeg b/static/img/showcase/deai_chat_logo.jpeg index 4ae4787bd7..94db71dbe4 100644 Binary files a/static/img/showcase/deai_chat_logo.jpeg and b/static/img/showcase/deai_chat_logo.jpeg differ diff --git a/static/img/showcase/decideai_screenshot_0.png b/static/img/showcase/decideai_screenshot_0.png index ef53908927..8875219393 100644 Binary files a/static/img/showcase/decideai_screenshot_0.png and b/static/img/showcase/decideai_screenshot_0.png differ diff --git a/static/img/showcase/deland_labs.png b/static/img/showcase/deland_labs.png index 3fe236ab3c..1706f613b5 100644 Binary files a/static/img/showcase/deland_labs.png and b/static/img/showcase/deland_labs.png differ diff --git a/static/img/showcase/dflow_logo.png b/static/img/showcase/dflow_logo.png index 9828e906ae..c9fe42130d 100644 Binary files a/static/img/showcase/dflow_logo.png and b/static/img/showcase/dflow_logo.png differ diff --git a/static/img/showcase/dflow_screenshot.png b/static/img/showcase/dflow_screenshot.png index c4530365d5..bbe5ca4609 100644 Binary files a/static/img/showcase/dflow_screenshot.png and b/static/img/showcase/dflow_screenshot.png differ diff --git a/static/img/showcase/dfxdashboard_logo.svg b/static/img/showcase/dfxdashboard_logo.svg index dee24516d7..04173bf51b 100644 --- a/static/img/showcase/dfxdashboard_logo.svg +++ b/static/img/showcase/dfxdashboard_logo.svg @@ -1,29 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/distrikt.png b/static/img/showcase/distrikt.png index 7c1666c1bd..9c00424039 100644 Binary files a/static/img/showcase/distrikt.png and b/static/img/showcase/distrikt.png differ diff --git a/static/img/showcase/dmail-network_screenshots_0.png b/static/img/showcase/dmail-network_screenshots_0.png index 0dc0d2155b..22a24f3513 100644 Binary files a/static/img/showcase/dmail-network_screenshots_0.png and b/static/img/showcase/dmail-network_screenshots_0.png differ diff --git a/static/img/showcase/dmail-network_screenshots_1.png b/static/img/showcase/dmail-network_screenshots_1.png index a7cb577911..33fa6f1597 100644 Binary files a/static/img/showcase/dmail-network_screenshots_1.png and b/static/img/showcase/dmail-network_screenshots_1.png differ diff --git a/static/img/showcase/dmail-network_screenshots_2.png b/static/img/showcase/dmail-network_screenshots_2.png index 4364857d03..2cb3fceb50 100644 Binary files a/static/img/showcase/dmail-network_screenshots_2.png and b/static/img/showcase/dmail-network_screenshots_2.png differ diff --git a/static/img/showcase/dmail-network_screenshots_3.png b/static/img/showcase/dmail-network_screenshots_3.png index 81fd82a9f2..fad219d5c4 100644 Binary files a/static/img/showcase/dmail-network_screenshots_3.png and b/static/img/showcase/dmail-network_screenshots_3.png differ diff --git a/static/img/showcase/dmail-network_screenshots_4.png b/static/img/showcase/dmail-network_screenshots_4.png index 3ac4336a63..469cab7ba9 100644 Binary files a/static/img/showcase/dmail-network_screenshots_4.png and b/static/img/showcase/dmail-network_screenshots_4.png differ diff --git a/static/img/showcase/dscvr-logo.png b/static/img/showcase/dscvr-logo.png index 0d1a2e39c4..55f424637f 100644 Binary files a/static/img/showcase/dscvr-logo.png and b/static/img/showcase/dscvr-logo.png differ diff --git a/static/img/showcase/dscvr.png b/static/img/showcase/dscvr.png index 4d2cb6bd46..9d0ec49eec 100644 Binary files a/static/img/showcase/dscvr.png and b/static/img/showcase/dscvr.png differ diff --git a/static/img/showcase/dwitter_logo.png b/static/img/showcase/dwitter_logo.png index f8813094f6..0d8895b8ad 100644 Binary files a/static/img/showcase/dwitter_logo.png and b/static/img/showcase/dwitter_logo.png differ diff --git a/static/img/showcase/eimolad_logo.webp b/static/img/showcase/eimolad_logo.webp index 03136c10c5..fabd982122 100644 Binary files a/static/img/showcase/eimolad_logo.webp and b/static/img/showcase/eimolad_logo.webp differ diff --git a/static/img/showcase/elnaai_logo.png b/static/img/showcase/elnaai_logo.png index 265072a871..0cd59c6566 100644 Binary files a/static/img/showcase/elnaai_logo.png and b/static/img/showcase/elnaai_logo.png differ diff --git a/static/img/showcase/ember-cli-dfinity.png b/static/img/showcase/ember-cli-dfinity.png index 7b69e9a6c8..143e296a7f 100644 Binary files a/static/img/showcase/ember-cli-dfinity.png and b/static/img/showcase/ember-cli-dfinity.png differ diff --git a/static/img/showcase/emc_logo.svg b/static/img/showcase/emc_logo.svg index 0966bf6bfd..b160db7fa4 100644 --- a/static/img/showcase/emc_logo.svg +++ b/static/img/showcase/emc_logo.svg @@ -1,114 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/emc_screenshot.png b/static/img/showcase/emc_screenshot.png index c9ef962ab8..4638f8210f 100644 Binary files a/static/img/showcase/emc_screenshot.png and b/static/img/showcase/emc_screenshot.png differ diff --git a/static/img/showcase/expeera_logo.jpeg b/static/img/showcase/expeera_logo.jpeg index 2d2b49ccf6..147e2bf19c 100644 Binary files a/static/img/showcase/expeera_logo.jpeg and b/static/img/showcase/expeera_logo.jpeg differ diff --git a/static/img/showcase/faceless_logo.png b/static/img/showcase/faceless_logo.png index 686b12dd9e..d273f47eef 100644 Binary files a/static/img/showcase/faceless_logo.png and b/static/img/showcase/faceless_logo.png differ diff --git a/static/img/showcase/faefolk_logo.webp b/static/img/showcase/faefolk_logo.webp index 780293f11c..1c08d21c34 100644 Binary files a/static/img/showcase/faefolk_logo.webp and b/static/img/showcase/faefolk_logo.webp differ diff --git a/static/img/showcase/fleek.png b/static/img/showcase/fleek.png index d47d7ce5f8..001145f0cb 100644 Binary files a/static/img/showcase/fleek.png and b/static/img/showcase/fleek.png differ diff --git a/static/img/showcase/fort-major-dao_logo.svg b/static/img/showcase/fort-major-dao_logo.svg index a820689e2f..55f3f4c89e 100644 --- a/static/img/showcase/fort-major-dao_logo.svg +++ b/static/img/showcase/fort-major-dao_logo.svg @@ -1,11 +1 @@ - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/fpdao_screenshot.png b/static/img/showcase/fpdao_screenshot.png index 104d7d2f9b..666cd6303f 100644 Binary files a/static/img/showcase/fpdao_screenshot.png and b/static/img/showcase/fpdao_screenshot.png differ diff --git a/static/img/showcase/frontrow_logo.png b/static/img/showcase/frontrow_logo.png index 973e0b198d..3ced6c03da 100644 Binary files a/static/img/showcase/frontrow_logo.png and b/static/img/showcase/frontrow_logo.png differ diff --git a/static/img/showcase/gBridge_logo.png b/static/img/showcase/gBridge_logo.png index 0f182b9c65..b98121c61f 100644 Binary files a/static/img/showcase/gBridge_logo.png and b/static/img/showcase/gBridge_logo.png differ diff --git a/static/img/showcase/glue_logo.png b/static/img/showcase/glue_logo.png index 3b5a83695e..1b26bf58d0 100644 Binary files a/static/img/showcase/glue_logo.png and b/static/img/showcase/glue_logo.png differ diff --git a/static/img/showcase/goagent_logo.png b/static/img/showcase/goagent_logo.png index d6d98c3bde..9abd118155 100644 Binary files a/static/img/showcase/goagent_logo.png and b/static/img/showcase/goagent_logo.png differ diff --git a/static/img/showcase/golddao_logo.png b/static/img/showcase/golddao_logo.png index a7ea77d33d..798211998b 100644 Binary files a/static/img/showcase/golddao_logo.png and b/static/img/showcase/golddao_logo.png differ diff --git a/static/img/showcase/gotcha_logo.png b/static/img/showcase/gotcha_logo.png index 276c7d721c..e9f4d3440e 100644 Binary files a/static/img/showcase/gotcha_logo.png and b/static/img/showcase/gotcha_logo.png differ diff --git a/static/img/showcase/hashkeydid_logo.svg b/static/img/showcase/hashkeydid_logo.svg index 1e5fe8e212..591adaa242 100644 --- a/static/img/showcase/hashkeydid_logo.svg +++ b/static/img/showcase/hashkeydid_logo.svg @@ -1,28 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/helix_screenshot.png b/static/img/showcase/helix_screenshot.png index 4d26949e0d..1f67d2ff10 100644 Binary files a/static/img/showcase/helix_screenshot.png and b/static/img/showcase/helix_screenshot.png differ diff --git a/static/img/showcase/hexGL.png b/static/img/showcase/hexGL.png index b5a79441c4..928aebc106 100644 Binary files a/static/img/showcase/hexGL.png and b/static/img/showcase/hexGL.png differ diff --git a/static/img/showcase/hobbi_screenshot.png b/static/img/showcase/hobbi_screenshot.png index 46f34fa735..421437e404 100644 Binary files a/static/img/showcase/hobbi_screenshot.png and b/static/img/showcase/hobbi_screenshot.png differ diff --git a/static/img/showcase/ic_nft_creater_logo.png b/static/img/showcase/ic_nft_creater_logo.png index f17f141e90..90859c2342 100644 Binary files a/static/img/showcase/ic_nft_creater_logo.png and b/static/img/showcase/ic_nft_creater_logo.png differ diff --git a/static/img/showcase/ic_siwe_logo.png b/static/img/showcase/ic_siwe_logo.png index 9469819bcf..63028c3965 100644 Binary files a/static/img/showcase/ic_siwe_logo.png and b/static/img/showcase/ic_siwe_logo.png differ diff --git a/static/img/showcase/ic_siwe_screenshot.png b/static/img/showcase/ic_siwe_screenshot.png index ed55cad5a1..70aac2fa17 100644 Binary files a/static/img/showcase/ic_siwe_screenshot.png and b/static/img/showcase/ic_siwe_screenshot.png differ diff --git a/static/img/showcase/icda_logo.png b/static/img/showcase/icda_logo.png index 6af0531a5d..2790f60be1 100644 Binary files a/static/img/showcase/icda_logo.png and b/static/img/showcase/icda_logo.png differ diff --git a/static/img/showcase/icdevs.org_logo.webp b/static/img/showcase/icdevs.org_logo.webp index 0c6fde5577..daee7f5981 100644 Binary files a/static/img/showcase/icdevs.org_logo.webp and b/static/img/showcase/icdevs.org_logo.webp differ diff --git a/static/img/showcase/icdragon_logo.png b/static/img/showcase/icdragon_logo.png index 7ed6d75062..e518956af1 100644 Binary files a/static/img/showcase/icdragon_logo.png and b/static/img/showcase/icdragon_logo.png differ diff --git a/static/img/showcase/icdragon_screenshot.png b/static/img/showcase/icdragon_screenshot.png index 0893756d49..c10306d6ca 100644 Binary files a/static/img/showcase/icdragon_screenshot.png and b/static/img/showcase/icdragon_screenshot.png differ diff --git a/static/img/showcase/icevent_logo_112x112.png b/static/img/showcase/icevent_logo_112x112.png index c348191399..8ccb140c0b 100644 Binary files a/static/img/showcase/icevent_logo_112x112.png and b/static/img/showcase/icevent_logo_112x112.png differ diff --git a/static/img/showcase/icevent_screenshot.PNG b/static/img/showcase/icevent_screenshot.PNG index 934dc05c9f..f91194f492 100644 Binary files a/static/img/showcase/icevent_screenshot.PNG and b/static/img/showcase/icevent_screenshot.PNG differ diff --git a/static/img/showcase/icghost.png b/static/img/showcase/icghost.png index 17efd805c1..798ba17037 100644 Binary files a/static/img/showcase/icghost.png and b/static/img/showcase/icghost.png differ diff --git a/static/img/showcase/ichub_screenshot_0.jpeg b/static/img/showcase/ichub_screenshot_0.jpeg index fc9418231a..0a1dc57245 100644 Binary files a/static/img/showcase/ichub_screenshot_0.jpeg and b/static/img/showcase/ichub_screenshot_0.jpeg differ diff --git a/static/img/showcase/ichub_screenshot_1.jpeg b/static/img/showcase/ichub_screenshot_1.jpeg index e0d9f0b91c..01b2edba48 100644 Binary files a/static/img/showcase/ichub_screenshot_1.jpeg and b/static/img/showcase/ichub_screenshot_1.jpeg differ diff --git a/static/img/showcase/ichub_screenshot_2.jpeg b/static/img/showcase/ichub_screenshot_2.jpeg index a67dff9ed0..e7437caeeb 100644 Binary files a/static/img/showcase/ichub_screenshot_2.jpeg and b/static/img/showcase/ichub_screenshot_2.jpeg differ diff --git a/static/img/showcase/iclighthouse_logo.webp b/static/img/showcase/iclighthouse_logo.webp index 968c5522e7..d57d46a239 100644 Binary files a/static/img/showcase/iclighthouse_logo.webp and b/static/img/showcase/iclighthouse_logo.webp differ diff --git a/static/img/showcase/icp_canister_bridge_logo.png b/static/img/showcase/icp_canister_bridge_logo.png index 0fe5911624..d7015afde4 100644 Binary files a/static/img/showcase/icp_canister_bridge_logo.png and b/static/img/showcase/icp_canister_bridge_logo.png differ diff --git a/static/img/showcase/icpcc_logo.png b/static/img/showcase/icpcc_logo.png index de38a5d6e7..8cb293353d 100644 Binary files a/static/img/showcase/icpcc_logo.png and b/static/img/showcase/icpcc_logo.png differ diff --git a/static/img/showcase/icpcoins_logo.png b/static/img/showcase/icpcoins_logo.png index f51cf20bcf..55188d666d 100644 Binary files a/static/img/showcase/icpcoins_logo.png and b/static/img/showcase/icpcoins_logo.png differ diff --git a/static/img/showcase/icpcoins_screenshot_0.jpg b/static/img/showcase/icpcoins_screenshot_0.jpg index 7e1522bf29..7400474bf1 100644 Binary files a/static/img/showcase/icpcoins_screenshot_0.jpg and b/static/img/showcase/icpcoins_screenshot_0.jpg differ diff --git a/static/img/showcase/icpkit_logo.png b/static/img/showcase/icpkit_logo.png index adc289437d..612b8db7e6 100644 Binary files a/static/img/showcase/icpkit_logo.png and b/static/img/showcase/icpkit_logo.png differ diff --git a/static/img/showcase/icpodcast_logo.png b/static/img/showcase/icpodcast_logo.png index 22e50b9b09..e97f9a4367 100644 Binary files a/static/img/showcase/icpodcast_logo.png and b/static/img/showcase/icpodcast_logo.png differ diff --git a/static/img/showcase/icpodcast_screenshot.png b/static/img/showcase/icpodcast_screenshot.png index bccaebdda4..e2e7e364f4 100644 Binary files a/static/img/showcase/icpodcast_screenshot.png and b/static/img/showcase/icpodcast_screenshot.png differ diff --git a/static/img/showcase/icpp-pro-screenshot.1024x576.png b/static/img/showcase/icpp-pro-screenshot.1024x576.png index 74000f0b7e..089875f1e8 100644 Binary files a/static/img/showcase/icpp-pro-screenshot.1024x576.png and b/static/img/showcase/icpp-pro-screenshot.1024x576.png differ diff --git a/static/img/showcase/icpsig_logo.png b/static/img/showcase/icpsig_logo.png index 786be69c7d..cf611540b9 100644 Binary files a/static/img/showcase/icpsig_logo.png and b/static/img/showcase/icpsig_logo.png differ diff --git a/static/img/showcase/icpsig_screenshot.png b/static/img/showcase/icpsig_screenshot.png index 9fdf93df59..210bb7fa35 100644 Binary files a/static/img/showcase/icpsig_screenshot.png and b/static/img/showcase/icpsig_screenshot.png differ diff --git a/static/img/showcase/icpulse_logo.svg b/static/img/showcase/icpulse_logo.svg index 4d0ca7df64..dfc4172ed2 100644 --- a/static/img/showcase/icpulse_logo.svg +++ b/static/img/showcase/icpulse_logo.svg @@ -1,14 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/icto_screenshot_0.png b/static/img/showcase/icto_screenshot_0.png index a31d3faccf..18c0cb98d4 100644 Binary files a/static/img/showcase/icto_screenshot_0.png and b/static/img/showcase/icto_screenshot_0.png differ diff --git a/static/img/showcase/ictoolkit_logo.png b/static/img/showcase/ictoolkit_logo.png index f95a6e3812..e9ac534ef0 100644 Binary files a/static/img/showcase/ictoolkit_logo.png and b/static/img/showcase/ictoolkit_logo.png differ diff --git a/static/img/showcase/idempotent_proxy_logo.png b/static/img/showcase/idempotent_proxy_logo.png index 43fcee9b91..a056be05ab 100644 Binary files a/static/img/showcase/idempotent_proxy_logo.png and b/static/img/showcase/idempotent_proxy_logo.png differ diff --git a/static/img/showcase/ii-badge.svg b/static/img/showcase/ii-badge.svg index abfab393ed..0759c4e1ae 100644 --- a/static/img/showcase/ii-badge.svg +++ b/static/img/showcase/ii-badge.svg @@ -1,4 +1 @@ - - - + \ No newline at end of file diff --git a/static/img/showcase/in_logo.jpg b/static/img/showcase/in_logo.jpg index e47b5c2fb4..3d2da0ad53 100644 Binary files a/static/img/showcase/in_logo.jpg and b/static/img/showcase/in_logo.jpg differ diff --git a/static/img/showcase/incheonuniverse_logo.png b/static/img/showcase/incheonuniverse_logo.png index 9d62505007..ece852e44f 100644 Binary files a/static/img/showcase/incheonuniverse_logo.png and b/static/img/showcase/incheonuniverse_logo.png differ diff --git a/static/img/showcase/internetidentity_screenshot_0.gif b/static/img/showcase/internetidentity_screenshot_0.gif index af3ea5ad34..fabd1c3385 100644 Binary files a/static/img/showcase/internetidentity_screenshot_0.gif and b/static/img/showcase/internetidentity_screenshot_0.gif differ diff --git a/static/img/showcase/itoka_logo.svg b/static/img/showcase/itoka_logo.svg index 684ade9b20..90a9a5b063 100644 --- a/static/img/showcase/itoka_logo.svg +++ b/static/img/showcase/itoka_logo.svg @@ -1,10 +1 @@ - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/itoka_screanshot.svg b/static/img/showcase/itoka_screanshot.svg index b1a76bafd7..e96b9ac89d 100644 --- a/static/img/showcase/itoka_screanshot.svg +++ b/static/img/showcase/itoka_screanshot.svg @@ -1,12 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/jagad_logo.png b/static/img/showcase/jagad_logo.png index 2b31864378..61a4c2ceea 100644 Binary files a/static/img/showcase/jagad_logo.png and b/static/img/showcase/jagad_logo.png differ diff --git a/static/img/showcase/jobgrader_logo.png b/static/img/showcase/jobgrader_logo.png index e086897edb..e8216db514 100644 Binary files a/static/img/showcase/jobgrader_logo.png and b/static/img/showcase/jobgrader_logo.png differ diff --git a/static/img/showcase/joined-africa_logo.jpg b/static/img/showcase/joined-africa_logo.jpg index 49a269bbfb..4380d1e7d1 100644 Binary files a/static/img/showcase/joined-africa_logo.jpg and b/static/img/showcase/joined-africa_logo.jpg differ diff --git a/static/img/showcase/joined-africa_screenshot_0.jpeg b/static/img/showcase/joined-africa_screenshot_0.jpeg index d2ea551952..cd8bb0b309 100644 Binary files a/static/img/showcase/joined-africa_screenshot_0.jpeg and b/static/img/showcase/joined-africa_screenshot_0.jpeg differ diff --git a/static/img/showcase/joined-africa_screenshot_1.png b/static/img/showcase/joined-africa_screenshot_1.png index dfdff48c7a..7867a260a4 100644 Binary files a/static/img/showcase/joined-africa_screenshot_1.png and b/static/img/showcase/joined-africa_screenshot_1.png differ diff --git a/static/img/showcase/juno_logo.svg b/static/img/showcase/juno_logo.svg index ee8b6645e9..75e88b767b 100644 --- a/static/img/showcase/juno_logo.svg +++ b/static/img/showcase/juno_logo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/static/img/showcase/juno_social_image.jpg b/static/img/showcase/juno_social_image.jpg index 35bc48e268..12236108f9 100644 Binary files a/static/img/showcase/juno_social_image.jpg and b/static/img/showcase/juno_social_image.jpg differ diff --git a/static/img/showcase/kongswap_screenshot.png b/static/img/showcase/kongswap_screenshot.png index ed46309c40..0037d5d1ae 100644 Binary files a/static/img/showcase/kongswap_screenshot.png and b/static/img/showcase/kongswap_screenshot.png differ diff --git a/static/img/showcase/kybra_logo.svg b/static/img/showcase/kybra_logo.svg index e3114e06da..bcc76b0f30 100644 --- a/static/img/showcase/kybra_logo.svg +++ b/static/img/showcase/kybra_logo.svg @@ -1,65 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/kybra_screenshot_0.jpg b/static/img/showcase/kybra_screenshot_0.jpg index c627722c27..7dd420ec88 100644 Binary files a/static/img/showcase/kybra_screenshot_0.jpg and b/static/img/showcase/kybra_screenshot_0.jpg differ diff --git a/static/img/showcase/local_icp_logo.png b/static/img/showcase/local_icp_logo.png index 598091ef55..b8fb72a3ba 100644 Binary files a/static/img/showcase/local_icp_logo.png and b/static/img/showcase/local_icp_logo.png differ diff --git a/static/img/showcase/loka_icon.png b/static/img/showcase/loka_icon.png index 6fc28e8ea8..f94444421c 100644 Binary files a/static/img/showcase/loka_icon.png and b/static/img/showcase/loka_icon.png differ diff --git a/static/img/showcase/loka_screenshot.jpg b/static/img/showcase/loka_screenshot.jpg index 86e47337a9..fc6f880a35 100644 Binary files a/static/img/showcase/loka_screenshot.jpg and b/static/img/showcase/loka_screenshot.jpg differ diff --git a/static/img/showcase/medblock.svg b/static/img/showcase/medblock.svg index dbef7d3150..05db706493 100644 --- a/static/img/showcase/medblock.svg +++ b/static/img/showcase/medblock.svg @@ -1,27 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/metaforo-icp_screenshot_1.jpg b/static/img/showcase/metaforo-icp_screenshot_1.jpg index 18dc76903b..628e37dd86 100644 Binary files a/static/img/showcase/metaforo-icp_screenshot_1.jpg and b/static/img/showcase/metaforo-icp_screenshot_1.jpg differ diff --git a/static/img/showcase/metaforo-icp_screenshot_2.jpg b/static/img/showcase/metaforo-icp_screenshot_2.jpg index 0e5a97e8e4..c4ae37ca33 100644 Binary files a/static/img/showcase/metaforo-icp_screenshot_2.jpg and b/static/img/showcase/metaforo-icp_screenshot_2.jpg differ diff --git a/static/img/showcase/metaforo-icp_screenshot_3.jpg b/static/img/showcase/metaforo-icp_screenshot_3.jpg index 393b868a2a..8eb15d23ff 100644 Binary files a/static/img/showcase/metaforo-icp_screenshot_3.jpg and b/static/img/showcase/metaforo-icp_screenshot_3.jpg differ diff --git a/static/img/showcase/metaviz_logo.png b/static/img/showcase/metaviz_logo.png index 228928d8d8..4b2aab8ae3 100644 Binary files a/static/img/showcase/metaviz_logo.png and b/static/img/showcase/metaviz_logo.png differ diff --git a/static/img/showcase/mnist.png b/static/img/showcase/mnist.png index 466bd73678..4e18d57d26 100644 Binary files a/static/img/showcase/mnist.png and b/static/img/showcase/mnist.png differ diff --git a/static/img/showcase/momint_logo.png b/static/img/showcase/momint_logo.png index 491fcaa4a4..50a3f15f05 100644 Binary files a/static/img/showcase/momint_logo.png and b/static/img/showcase/momint_logo.png differ diff --git a/static/img/showcase/mora_banner.jpg b/static/img/showcase/mora_banner.jpg index aac3fe4652..81ad3bca05 100644 Binary files a/static/img/showcase/mora_banner.jpg and b/static/img/showcase/mora_banner.jpg differ diff --git a/static/img/showcase/motoko-book_logo.png b/static/img/showcase/motoko-book_logo.png index 46d5bfeb89..d2a1ee5a47 100644 Binary files a/static/img/showcase/motoko-book_logo.png and b/static/img/showcase/motoko-book_logo.png differ diff --git a/static/img/showcase/motoko_sns_logo.png b/static/img/showcase/motoko_sns_logo.png index 218fdea6a4..d9fb99c2b3 100644 Binary files a/static/img/showcase/motoko_sns_logo.png and b/static/img/showcase/motoko_sns_logo.png differ diff --git a/static/img/showcase/motokopilot_screenshot.jpg b/static/img/showcase/motokopilot_screenshot.jpg index 76c9340086..ca11156288 100644 Binary files a/static/img/showcase/motokopilot_screenshot.jpg and b/static/img/showcase/motokopilot_screenshot.jpg differ diff --git a/static/img/showcase/msq-safe-icp-wallet_logo.svg b/static/img/showcase/msq-safe-icp-wallet_logo.svg index 8a7e7b9a8f..1f1af4c51e 100644 --- a/static/img/showcase/msq-safe-icp-wallet_logo.svg +++ b/static/img/showcase/msq-safe-icp-wallet_logo.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/myordinalsloan_logo.png b/static/img/showcase/myordinalsloan_logo.png index b33b2aff0a..5e9178cf77 100644 Binary files a/static/img/showcase/myordinalsloan_logo.png and b/static/img/showcase/myordinalsloan_logo.png differ diff --git a/static/img/showcase/nfididentitykit_logo.svg b/static/img/showcase/nfididentitykit_logo.svg index c64d390962..cef66eb10b 100644 --- a/static/img/showcase/nfididentitykit_logo.svg +++ b/static/img/showcase/nfididentitykit_logo.svg @@ -1,30 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/nnscat_logo.png b/static/img/showcase/nnscat_logo.png index 2a2d21ee8d..0efe14fabe 100644 Binary files a/static/img/showcase/nnscat_logo.png and b/static/img/showcase/nnscat_logo.png differ diff --git a/static/img/showcase/nnscat_screenshot_0.jpg b/static/img/showcase/nnscat_screenshot_0.jpg index 36d8d543c3..f12c992705 100644 Binary files a/static/img/showcase/nnscat_screenshot_0.jpg and b/static/img/showcase/nnscat_screenshot_0.jpg differ diff --git a/static/img/showcase/nnsdao_logo.png b/static/img/showcase/nnsdao_logo.png index de77a2248e..9930f0b502 100644 Binary files a/static/img/showcase/nnsdao_logo.png and b/static/img/showcase/nnsdao_logo.png differ diff --git a/static/img/showcase/nx_governance_logo.png b/static/img/showcase/nx_governance_logo.png index 00bc23956d..1a0af0255d 100644 Binary files a/static/img/showcase/nx_governance_logo.png and b/static/img/showcase/nx_governance_logo.png differ diff --git a/static/img/showcase/oisy_logo.svg b/static/img/showcase/oisy_logo.svg index 571c331979..2deb5b3b72 100644 --- a/static/img/showcase/oisy_logo.svg +++ b/static/img/showcase/oisy_logo.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/static/img/showcase/omnia_logo.png b/static/img/showcase/omnia_logo.png index 7576931a2c..c0718c8622 100644 Binary files a/static/img/showcase/omnia_logo.png and b/static/img/showcase/omnia_logo.png differ diff --git a/static/img/showcase/omnic_logo.webp b/static/img/showcase/omnic_logo.webp index 5a50cfea00..782e43fa4a 100644 Binary files a/static/img/showcase/omnic_logo.webp and b/static/img/showcase/omnic_logo.webp differ diff --git a/static/img/showcase/omnic_screenshot_0.webp b/static/img/showcase/omnic_screenshot_0.webp index 1e77b6c260..e7aca820b1 100644 Binary files a/static/img/showcase/omnic_screenshot_0.webp and b/static/img/showcase/omnic_screenshot_0.webp differ diff --git a/static/img/showcase/omnity_screenshot.png b/static/img/showcase/omnity_screenshot.png index f8b1ca584b..4d0eba26af 100644 Binary files a/static/img/showcase/omnity_screenshot.png and b/static/img/showcase/omnity_screenshot.png differ diff --git a/static/img/showcase/omnitynetwork_logo.jpeg b/static/img/showcase/omnitynetwork_logo.jpeg index adfd4c41dd..96fdbbc4c5 100644 Binary files a/static/img/showcase/omnitynetwork_logo.jpeg and b/static/img/showcase/omnitynetwork_logo.jpeg differ diff --git a/static/img/showcase/oneblock.png b/static/img/showcase/oneblock.png index f4d90882cb..552e7ad340 100644 Binary files a/static/img/showcase/oneblock.png and b/static/img/showcase/oneblock.png differ diff --git a/static/img/showcase/onicai_logo.png b/static/img/showcase/onicai_logo.png index 5ef048b899..ab37ccde92 100644 Binary files a/static/img/showcase/onicai_logo.png and b/static/img/showcase/onicai_logo.png differ diff --git a/static/img/showcase/open-internet-metaverse_logo.webp b/static/img/showcase/open-internet-metaverse_logo.webp index 97c10ef572..463011e88d 100644 Binary files a/static/img/showcase/open-internet-metaverse_logo.webp and b/static/img/showcase/open-internet-metaverse_logo.webp differ diff --git a/static/img/showcase/orally-network_logo.png b/static/img/showcase/orally-network_logo.png index 42508a971d..71c4b5e803 100644 Binary files a/static/img/showcase/orally-network_logo.png and b/static/img/showcase/orally-network_logo.png differ diff --git a/static/img/showcase/origyn.png b/static/img/showcase/origyn.png index 8cc56617a0..bc6e3fa0c2 100644 Binary files a/static/img/showcase/origyn.png and b/static/img/showcase/origyn.png differ diff --git a/static/img/showcase/pass_logo.svg b/static/img/showcase/pass_logo.svg index a8275950bd..7efc479f43 100644 --- a/static/img/showcase/pass_logo.svg +++ b/static/img/showcase/pass_logo.svg @@ -1,27 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/phasma_logo.webp b/static/img/showcase/phasma_logo.webp index a65fb56b2a..2abbde2fe6 100644 Binary files a/static/img/showcase/phasma_logo.webp and b/static/img/showcase/phasma_logo.webp differ diff --git a/static/img/showcase/pluralfinance_logo.png b/static/img/showcase/pluralfinance_logo.png index 6c946a3e84..51058053a3 100644 Binary files a/static/img/showcase/pluralfinance_logo.png and b/static/img/showcase/pluralfinance_logo.png differ diff --git a/static/img/showcase/pochi_logo.png b/static/img/showcase/pochi_logo.png index 3840db852e..2fddfc11c4 100644 Binary files a/static/img/showcase/pochi_logo.png and b/static/img/showcase/pochi_logo.png differ diff --git a/static/img/showcase/polycrypt_logo.webp b/static/img/showcase/polycrypt_logo.webp index 8991d93e58..49a5d544e6 100644 Binary files a/static/img/showcase/polycrypt_logo.webp and b/static/img/showcase/polycrypt_logo.webp differ diff --git a/static/img/showcase/pyor_logo.png b/static/img/showcase/pyor_logo.png index 7e6395a1b0..1429e9f15b 100644 Binary files a/static/img/showcase/pyor_logo.png and b/static/img/showcase/pyor_logo.png differ diff --git a/static/img/showcase/querio_screenshot.png b/static/img/showcase/querio_screenshot.png index 55d83eb16e..c9abc75209 100644 Binary files a/static/img/showcase/querio_screenshot.png and b/static/img/showcase/querio_screenshot.png differ diff --git a/static/img/showcase/reblock_logo.png b/static/img/showcase/reblock_logo.png index dd4e6586f3..2e49926213 100644 Binary files a/static/img/showcase/reblock_logo.png and b/static/img/showcase/reblock_logo.png differ diff --git a/static/img/showcase/reblock_screenshot.jpg b/static/img/showcase/reblock_screenshot.jpg index f519e0b687..7388da8b88 100644 Binary files a/static/img/showcase/reblock_screenshot.jpg and b/static/img/showcase/reblock_screenshot.jpg differ diff --git a/static/img/showcase/relation_logo.png b/static/img/showcase/relation_logo.png index 11997dddda..67d3a9191c 100644 Binary files a/static/img/showcase/relation_logo.png and b/static/img/showcase/relation_logo.png differ diff --git a/static/img/showcase/relinkdxyz.png b/static/img/showcase/relinkdxyz.png index f95d625cfa..9bb1d0afeb 100644 Binary files a/static/img/showcase/relinkdxyz.png and b/static/img/showcase/relinkdxyz.png differ diff --git a/static/img/showcase/rentspace_logo.png b/static/img/showcase/rentspace_logo.png index b033f36e29..7c3cf40b85 100644 Binary files a/static/img/showcase/rentspace_logo.png and b/static/img/showcase/rentspace_logo.png differ diff --git a/static/img/showcase/rolodex_logo.png b/static/img/showcase/rolodex_logo.png index 7722962d2a..307c7ffb25 100644 Binary files a/static/img/showcase/rolodex_logo.png and b/static/img/showcase/rolodex_logo.png differ diff --git a/static/img/showcase/rubaru_dapp_screenshot.png b/static/img/showcase/rubaru_dapp_screenshot.png index e15baa120b..12d6faab6a 100644 Binary files a/static/img/showcase/rubaru_dapp_screenshot.png and b/static/img/showcase/rubaru_dapp_screenshot.png differ diff --git a/static/img/showcase/sama_network_logo.png b/static/img/showcase/sama_network_logo.png index 679c0b9e6c..256c04d1f5 100644 Binary files a/static/img/showcase/sama_network_logo.png and b/static/img/showcase/sama_network_logo.png differ diff --git a/static/img/showcase/satoshi_notes_logo.png b/static/img/showcase/satoshi_notes_logo.png index a3e69e171d..51b7b36a75 100644 Binary files a/static/img/showcase/satoshi_notes_logo.png and b/static/img/showcase/satoshi_notes_logo.png differ diff --git a/static/img/showcase/scinet_logo.png b/static/img/showcase/scinet_logo.png index 04c850cc27..de9ad68dc3 100644 Binary files a/static/img/showcase/scinet_logo.png and b/static/img/showcase/scinet_logo.png differ diff --git a/static/img/showcase/scinet_logo.webp b/static/img/showcase/scinet_logo.webp index c30ff37272..5a3b3a00eb 100644 Binary files a/static/img/showcase/scinet_logo.webp and b/static/img/showcase/scinet_logo.webp differ diff --git a/static/img/showcase/secure_guard_escrow_logo.png b/static/img/showcase/secure_guard_escrow_logo.png index 0a5a73e7ed..bd1b5faef7 100644 Binary files a/static/img/showcase/secure_guard_escrow_logo.png and b/static/img/showcase/secure_guard_escrow_logo.png differ diff --git a/static/img/showcase/sly_logo.svg b/static/img/showcase/sly_logo.svg index 1e03df276a..8eab1e8da2 100644 --- a/static/img/showcase/sly_logo.svg +++ b/static/img/showcase/sly_logo.svg @@ -1,12 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/sneed.png b/static/img/showcase/sneed.png index d7062ed820..759b0a673c 100644 Binary files a/static/img/showcase/sneed.png and b/static/img/showcase/sneed.png differ diff --git a/static/img/showcase/spinnercash_logo.webp b/static/img/showcase/spinnercash_logo.webp index 729f33ae3b..9e2e99a753 100644 Binary files a/static/img/showcase/spinnercash_logo.webp and b/static/img/showcase/spinnercash_logo.webp differ diff --git a/static/img/showcase/spotlabs_logo.png b/static/img/showcase/spotlabs_logo.png index 4ae96d158f..4543c293b2 100644 Binary files a/static/img/showcase/spotlabs_logo.png and b/static/img/showcase/spotlabs_logo.png differ diff --git a/static/img/showcase/swimming_pool_logo.png b/static/img/showcase/swimming_pool_logo.png index 336761f6c9..560e86a493 100644 Binary files a/static/img/showcase/swimming_pool_logo.png and b/static/img/showcase/swimming_pool_logo.png differ diff --git a/static/img/showcase/talerdao_logo.jpeg b/static/img/showcase/talerdao_logo.jpeg index 2e4ad89989..fa8a0380d4 100644 Binary files a/static/img/showcase/talerdao_logo.jpeg and b/static/img/showcase/talerdao_logo.jpeg differ diff --git a/static/img/showcase/tapprotocol_logo.svg b/static/img/showcase/tapprotocol_logo.svg index e7aed67075..a81e8e1018 100644 --- a/static/img/showcase/tapprotocol_logo.svg +++ b/static/img/showcase/tapprotocol_logo.svg @@ -1,19 +1 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/static/img/showcase/taurus_logo.png b/static/img/showcase/taurus_logo.png index 3d262ff810..ab03d1452d 100644 Binary files a/static/img/showcase/taurus_logo.png and b/static/img/showcase/taurus_logo.png differ diff --git a/static/img/showcase/taxlint_logo.png b/static/img/showcase/taxlint_logo.png index d3a7a50b6b..6535b94304 100644 Binary files a/static/img/showcase/taxlint_logo.png and b/static/img/showcase/taxlint_logo.png differ diff --git a/static/img/showcase/taxlint_taxlint_screenshot.png b/static/img/showcase/taxlint_taxlint_screenshot.png index 78362ba540..b7b77a426e 100644 Binary files a/static/img/showcase/taxlint_taxlint_screenshot.png and b/static/img/showcase/taxlint_taxlint_screenshot.png differ diff --git a/static/img/showcase/tezsign_logo.png b/static/img/showcase/tezsign_logo.png index 2f34fdcb26..eda5c51a76 100644 Binary files a/static/img/showcase/tezsign_logo.png and b/static/img/showcase/tezsign_logo.png differ diff --git a/static/img/showcase/tswaanda_logo.jpg b/static/img/showcase/tswaanda_logo.jpg index 0638f5bf29..9b5a3e767d 100644 Binary files a/static/img/showcase/tswaanda_logo.jpg and b/static/img/showcase/tswaanda_logo.jpg differ diff --git a/static/img/showcase/tswaanda_screenshot_0.png b/static/img/showcase/tswaanda_screenshot_0.png index c370bd011e..07ef9293e7 100644 Binary files a/static/img/showcase/tswaanda_screenshot_0.png and b/static/img/showcase/tswaanda_screenshot_0.png differ diff --git a/static/img/showcase/tswaanda_screenshot_1.png b/static/img/showcase/tswaanda_screenshot_1.png index 9e4282f6bd..d9fc55e443 100644 Binary files a/static/img/showcase/tswaanda_screenshot_1.png and b/static/img/showcase/tswaanda_screenshot_1.png differ diff --git a/static/img/showcase/vault-k8s.jpg b/static/img/showcase/vault-k8s.jpg index 71185bd47a..c10998ac86 100644 Binary files a/static/img/showcase/vault-k8s.jpg and b/static/img/showcase/vault-k8s.jpg differ diff --git a/static/img/showcase/vaultbet_logo.webp b/static/img/showcase/vaultbet_logo.webp index 8f3ccf9171..66f596ef86 100644 Binary files a/static/img/showcase/vaultbet_logo.webp and b/static/img/showcase/vaultbet_logo.webp differ diff --git a/static/img/showcase/vfans_logo.png b/static/img/showcase/vfans_logo.png index 1367467c0e..f3904b665b 100644 Binary files a/static/img/showcase/vfans_logo.png and b/static/img/showcase/vfans_logo.png differ diff --git a/static/img/showcase/vibeverse_logo.png b/static/img/showcase/vibeverse_logo.png index 5a169083e0..91b3b9a301 100644 Binary files a/static/img/showcase/vibeverse_logo.png and b/static/img/showcase/vibeverse_logo.png differ diff --git a/static/img/showcase/vibeverse_screenshot_0.png b/static/img/showcase/vibeverse_screenshot_0.png index 2e99fd5c8d..d17a1cb135 100644 Binary files a/static/img/showcase/vibeverse_screenshot_0.png and b/static/img/showcase/vibeverse_screenshot_0.png differ diff --git a/static/img/showcase/vibeverse_screenshot_1.png b/static/img/showcase/vibeverse_screenshot_1.png index 48912565eb..6c194a2c19 100644 Binary files a/static/img/showcase/vibeverse_screenshot_1.png and b/static/img/showcase/vibeverse_screenshot_1.png differ diff --git a/static/img/showcase/virtuaseal.png b/static/img/showcase/virtuaseal.png index 534ac15677..3f891e0713 100644 Binary files a/static/img/showcase/virtuaseal.png and b/static/img/showcase/virtuaseal.png differ diff --git a/static/img/showcase/w3ns_logo.png b/static/img/showcase/w3ns_logo.png index fd83a8dc17..e7f0a0b364 100644 Binary files a/static/img/showcase/w3ns_logo.png and b/static/img/showcase/w3ns_logo.png differ diff --git a/static/img/showcase/waterneuron_screenshot.png b/static/img/showcase/waterneuron_screenshot.png index c005c6be6e..ce429f8224 100644 Binary files a/static/img/showcase/waterneuron_screenshot.png and b/static/img/showcase/waterneuron_screenshot.png differ diff --git a/static/img/showcase/yral_logo.png b/static/img/showcase/yral_logo.png index ba9c0ab006..a54eb54766 100644 Binary files a/static/img/showcase/yral_logo.png and b/static/img/showcase/yral_logo.png differ diff --git a/static/img/showcase/yuku_logo.png b/static/img/showcase/yuku_logo.png index e8e5f7626c..0981cd274a 100644 Binary files a/static/img/showcase/yuku_logo.png and b/static/img/showcase/yuku_logo.png differ diff --git a/static/img/showcase/zCloak_logo.svg b/static/img/showcase/zCloak_logo.svg index 28824f1c4b..2983b81b5f 100644 --- a/static/img/showcase/zCloak_logo.svg +++ b/static/img/showcase/zCloak_logo.svg @@ -1,13 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/showcase/zcloak_screenshot.png b/static/img/showcase/zcloak_screenshot.png index 7af7ba3281..808bc9cf36 100644 Binary files a/static/img/showcase/zcloak_screenshot.png and b/static/img/showcase/zcloak_screenshot.png differ diff --git a/static/img/showcase/zkllama_logo.png b/static/img/showcase/zkllama_logo.png index de5dcd7c03..53b15d660f 100644 Binary files a/static/img/showcase/zkllama_logo.png and b/static/img/showcase/zkllama_logo.png differ diff --git a/submodules/internetidentity b/submodules/internetidentity index 29f7f61ae3..766795bf2f 160000 --- a/submodules/internetidentity +++ b/submodules/internetidentity @@ -1 +1 @@ -Subproject commit 29f7f61ae375ab2a0250db9df3e94efff1ad23b7 +Subproject commit 766795bf2f289685c1b66b9078b2aa54c5b6eb08 diff --git a/submodules/motoko b/submodules/motoko index 074ffca17f..6603c0ac25 160000 --- a/submodules/motoko +++ b/submodules/motoko @@ -1 +1 @@ -Subproject commit 074ffca17f95a3da876d8d0dda4d123cd5c16674 +Subproject commit 6603c0ac25df0ae7527b8abd3b563b0714c9b027 diff --git a/submodules/quill b/submodules/quill index 88158f521f..5a5a9ad4a7 160000 --- a/submodules/quill +++ b/submodules/quill @@ -1 +1 @@ -Subproject commit 88158f521f5f777bfe3ce68e5b21e1f2bc9fcadd +Subproject commit 5a5a9ad4a72ea9fa9f0adad5c3b11b00ced78db9 diff --git a/submodules/response-verfication b/submodules/response-verfication index 58770d8ae3..7e3f70d69f 160000 --- a/submodules/response-verfication +++ b/submodules/response-verfication @@ -1 +1 @@ -Subproject commit 58770d8ae39b99bfa5bb5ddd341e422f76552839 +Subproject commit 7e3f70d69fa5e238d1be81af58f89cb2a012abe7 diff --git a/submodules/samples b/submodules/samples index 24aca5b979..daf9a06654 160000 --- a/submodules/samples +++ b/submodules/samples @@ -1 +1 @@ -Subproject commit 24aca5b979fd7f3690ee31890b466c19f45a027d +Subproject commit daf9a06654785c59ec273df1df459bb1b03b85cf diff --git a/submodules/sdk b/submodules/sdk index 0cf8c452a5..3405dc6933 160000 --- a/submodules/sdk +++ b/submodules/sdk @@ -1 +1 @@ -Subproject commit 0cf8c452a5e51fddb73f9cf0a8d1878b122fcce8 +Subproject commit 3405dc693391c144c97ab77d8a67cf70a3606343