diff --git a/.migration/learn-hub/README.md b/.migration/learn-hub/README.md deleted file mode 100644 index cf0c9fed..00000000 --- a/.migration/learn-hub/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# ICP Learn Hub Migration - -This directory contains articles fetched from [learn.internetcomputer.org](https://learn.internetcomputer.org). - -## Article counts - -- **In-scope** (How does ICP work?): 57 articles -- **Out-of-scope** (What is ICP? + How can I use ICP?): 29 articles -- **Total**: 86 articles - -## In-scope articles - -These articles are candidates for migration into the developer docs. - -| File | Title | Original URL | -|------|-------|--------------| -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/blockchain-protocol.md` | Blockchain Protocol | [https://learn.internetcomputer.org/hc/en-us/articles/34206453538964-Blockchain-Protocol](https://learn.internetcomputer.org/hc/en-us/articles/34206453538964-Blockchain-Protocol) | -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/consensus.md` | Consensus | [https://learn.internetcomputer.org/hc/en-us/articles/34207558615956-Consensus](https://learn.internetcomputer.org/hc/en-us/articles/34207558615956-Consensus) | -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/execution-layer.md` | Execution Layer | [https://learn.internetcomputer.org/hc/en-us/articles/34208985618836-Execution-Layer](https://learn.internetcomputer.org/hc/en-us/articles/34208985618836-Execution-Layer) | -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/message-routing.md` | Message Routing | [https://learn.internetcomputer.org/hc/en-us/articles/34208241927316-Message-Routing](https://learn.internetcomputer.org/hc/en-us/articles/34208241927316-Message-Routing) | -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/peer-to-peer.md` | Peer to peer | [https://learn.internetcomputer.org/hc/en-us/articles/34207428453140-Peer-to-peer](https://learn.internetcomputer.org/hc/en-us/articles/34207428453140-Peer-to-peer) | -| `.migration/learn-hub/how-does-icp-work/blockchain-protocol/state-synchronization.md` | State Synchronization | [https://learn.internetcomputer.org/hc/en-us/articles/34471579767572-State-Synchronization](https://learn.internetcomputer.org/hc/en-us/articles/34471579767572-State-Synchronization) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/canister-control.md` | Canister Control | [https://learn.internetcomputer.org/hc/en-us/articles/34573932107796-Canister-Control](https://learn.internetcomputer.org/hc/en-us/articles/34573932107796-Canister-Control) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/canister-smart-contracts.md` | Canister Smart Contracts | [https://learn.internetcomputer.org/hc/en-us/articles/34210839162004-Canister-Smart-Contracts](https://learn.internetcomputer.org/hc/en-us/articles/34210839162004-Canister-Smart-Contracts) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/computational-model.md` | Computational Model | [https://learn.internetcomputer.org/hc/en-us/articles/34573860369172-Computational-Model](https://learn.internetcomputer.org/hc/en-us/articles/34573860369172-Computational-Model) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/cycles.md` | Cycles | [https://learn.internetcomputer.org/hc/en-us/articles/34573913497108-Cycles](https://learn.internetcomputer.org/hc/en-us/articles/34573913497108-Cycles) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/cycles-ledger.md` | Cycles Ledger | [https://learn.internetcomputer.org/hc/en-us/articles/45034096457748-Cycles-Ledger](https://learn.internetcomputer.org/hc/en-us/articles/45034096457748-Cycles-Ledger) | -| `.migration/learn-hub/how-does-icp-work/canister-smart-contracts/what-is-a-principal.md` | What is a Principal? | [https://learn.internetcomputer.org/hc/en-us/articles/34250491785108-What-is-a-Principal](https://learn.internetcomputer.org/hc/en-us/articles/34250491785108-What-is-a-Principal) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/bitcoin-checker-canister.md` | Bitcoin Checker Canister | [https://learn.internetcomputer.org/hc/en-us/articles/45033984570516-Bitcoin-Checker-Canister](https://learn.internetcomputer.org/hc/en-us/articles/45033984570516-Bitcoin-Checker-Canister) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/bitcoin-integration.md` | Bitcoin Integration | [https://learn.internetcomputer.org/hc/en-us/articles/34211154520084-Bitcoin-Integration](https://learn.internetcomputer.org/hc/en-us/articles/34211154520084-Bitcoin-Integration) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/chain-fusion.md` | Chain Fusion | [https://learn.internetcomputer.org/hc/en-us/articles/34329023770260-Chain-Fusion](https://learn.internetcomputer.org/hc/en-us/articles/34329023770260-Chain-Fusion) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/chain-key-tokens.md` | Chain-Key Tokens | [https://learn.internetcomputer.org/hc/en-us/articles/34211397080980-Chain-Key-Tokens](https://learn.internetcomputer.org/hc/en-us/articles/34211397080980-Chain-Key-Tokens) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/chain-key-bitcoin.md` | Chain-key Bitcoin | [https://learn.internetcomputer.org/hc/en-us/articles/44598021228564-Chain-key-Bitcoin](https://learn.internetcomputer.org/hc/en-us/articles/44598021228564-Chain-key-Bitcoin) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/dogecoin-integration.md` | Dogecoin Integration | [https://learn.internetcomputer.org/hc/en-us/articles/46782835018516-Dogecoin-Integration](https://learn.internetcomputer.org/hc/en-us/articles/46782835018516-Dogecoin-Integration) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/evm-rpc-canister.md` | EVM RPC Canister | [https://learn.internetcomputer.org/hc/en-us/articles/45550731488916-EVM-RPC-Canister](https://learn.internetcomputer.org/hc/en-us/articles/45550731488916-EVM-RPC-Canister) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/ethereum-integration.md` | Ethereum Integration | [https://learn.internetcomputer.org/hc/en-us/articles/34575019947668-Ethereum-Integration](https://learn.internetcomputer.org/hc/en-us/articles/34575019947668-Ethereum-Integration) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/exchange-rate-canister.md` | Exchange Rate Canister | [https://learn.internetcomputer.org/hc/en-us/articles/45038506066452-Exchange-Rate-Canister](https://learn.internetcomputer.org/hc/en-us/articles/45038506066452-Exchange-Rate-Canister) | -| `.migration/learn-hub/how-does-icp-work/chain-fusion/sol-rpc-canister.md` | SOL RPC Canister | [https://learn.internetcomputer.org/hc/en-us/articles/46782465439764-SOL-RPC-Canister](https://learn.internetcomputer.org/hc/en-us/articles/46782465439764-SOL-RPC-Canister) | -| `.migration/learn-hub/how-does-icp-work/chain-key-cryptography/certified-communication.md` | Certified Communication | [https://learn.internetcomputer.org/hc/en-us/articles/34214090576404-Certified-Communication](https://learn.internetcomputer.org/hc/en-us/articles/34214090576404-Certified-Communication) | -| `.migration/learn-hub/how-does-icp-work/chain-key-cryptography/chain-key-cryptography.md` | Chain-Key Cryptography | [https://learn.internetcomputer.org/hc/en-us/articles/34209486239252-Chain-Key-Cryptography](https://learn.internetcomputer.org/hc/en-us/articles/34209486239252-Chain-Key-Cryptography) | -| `.migration/learn-hub/how-does-icp-work/chain-key-cryptography/chain-key-signatures.md` | Chain-Key Signatures | [https://learn.internetcomputer.org/hc/en-us/articles/34209497587732-Chain-Key-Signatures](https://learn.internetcomputer.org/hc/en-us/articles/34209497587732-Chain-Key-Signatures) | -| `.migration/learn-hub/how-does-icp-work/chain-key-cryptography/subnet-keys-and-subnet-signatures.md` | Subnet Keys and Subnet Signatures | [https://learn.internetcomputer.org/hc/en-us/articles/34209540682644-Subnet-Keys-and-Subnet-Signatures](https://learn.internetcomputer.org/hc/en-us/articles/34209540682644-Subnet-Keys-and-Subnet-Signatures) | -| `.migration/learn-hub/how-does-icp-work/evolution-scaling/chain-evolution.md` | Chain Evolution | [https://learn.internetcomputer.org/hc/en-us/articles/34210120121748-Chain-Evolution](https://learn.internetcomputer.org/hc/en-us/articles/34210120121748-Chain-Evolution) | -| `.migration/learn-hub/how-does-icp-work/evolution-scaling/evolution-scaling.md` | Evolution & Scaling | [https://learn.internetcomputer.org/hc/en-us/articles/34576974172692-Evolution-Scaling](https://learn.internetcomputer.org/hc/en-us/articles/34576974172692-Evolution-Scaling) | -| `.migration/learn-hub/how-does-icp-work/evolution-scaling/fault-tolerance.md` | Fault Tolerance | [https://learn.internetcomputer.org/hc/en-us/articles/34210647901460-Fault-Tolerance](https://learn.internetcomputer.org/hc/en-us/articles/34210647901460-Fault-Tolerance) | -| `.migration/learn-hub/how-does-icp-work/evolution-scaling/subnet-creation.md` | Subnet Creation | [https://learn.internetcomputer.org/hc/en-us/articles/34209955782420-Subnet-Creation](https://learn.internetcomputer.org/hc/en-us/articles/34209955782420-Subnet-Creation) | -| `.migration/learn-hub/how-does-icp-work/icp-and-the-internet/asset-certification.md` | Asset Certification | [https://learn.internetcomputer.org/hc/en-us/articles/34276431179412-Asset-Certification](https://learn.internetcomputer.org/hc/en-us/articles/34276431179412-Asset-Certification) | -| `.migration/learn-hub/how-does-icp-work/icp-and-the-internet/http-gateway-protocol.md` | HTTP Gateway Protocol | [https://learn.internetcomputer.org/hc/en-us/articles/34211943471892-HTTP-Gateway-Protocol](https://learn.internetcomputer.org/hc/en-us/articles/34211943471892-HTTP-Gateway-Protocol) | -| `.migration/learn-hub/how-does-icp-work/icp-and-the-internet/https-outcalls.md` | HTTPS Outcalls | [https://learn.internetcomputer.org/hc/en-us/articles/34211194553492-HTTPS-Outcalls](https://learn.internetcomputer.org/hc/en-us/articles/34211194553492-HTTPS-Outcalls) | -| `.migration/learn-hub/how-does-icp-work/icp-and-the-internet/icp-edge-infrastructure.md` | ICP Edge Infrastructure | [https://learn.internetcomputer.org/hc/en-us/articles/34212818609684-ICP-Edge-Infrastructure](https://learn.internetcomputer.org/hc/en-us/articles/34212818609684-ICP-Edge-Infrastructure) | -| `.migration/learn-hub/how-does-icp-work/icp-and-the-internet/icp-and-the-internet.md` | ICP and the Internet | [https://learn.internetcomputer.org/hc/en-us/articles/34574399808788-ICP-and-the-Internet](https://learn.internetcomputer.org/hc/en-us/articles/34574399808788-ICP-and-the-Internet) | -| `.migration/learn-hub/how-does-icp-work/introduction/how-does-icp-work.md` | How does ICP work? | [https://learn.internetcomputer.org/hc/en-us/articles/33694833025172-How-does-ICP-work](https://learn.internetcomputer.org/hc/en-us/articles/33694833025172-How-does-ICP-work) | -| `.migration/learn-hub/how-does-icp-work/nns/neuron-attributes.md` | Neuron Attributes | [https://learn.internetcomputer.org/hc/en-us/articles/34140499557908-Neuron-Attributes](https://learn.internetcomputer.org/hc/en-us/articles/34140499557908-Neuron-Attributes) | -| `.migration/learn-hub/how-does-icp-work/nns/neurons.md` | Neurons | [https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons) | -| `.migration/learn-hub/how-does-icp-work/nns/neurons-fund-nf.md` | Neurons' Fund (NF) | [https://learn.internetcomputer.org/hc/en-us/articles/34084179554196-Neurons-Fund-NF](https://learn.internetcomputer.org/hc/en-us/articles/34084179554196-Neurons-Fund-NF) | -| `.migration/learn-hub/how-does-icp-work/nns/overview.md` | Overview | [https://learn.internetcomputer.org/hc/en-us/articles/33692645961236-Overview](https://learn.internetcomputer.org/hc/en-us/articles/33692645961236-Overview) | -| `.migration/learn-hub/how-does-icp-work/nns/proposal-topics-and-types.md` | Proposal Topics and Types | [https://learn.internetcomputer.org/hc/en-us/articles/34140518658068-Proposal-Topics-and-Types](https://learn.internetcomputer.org/hc/en-us/articles/34140518658068-Proposal-Topics-and-Types) | -| `.migration/learn-hub/how-does-icp-work/nns/proposals.md` | Proposals | [https://learn.internetcomputer.org/hc/en-us/articles/34084113508500-Proposals](https://learn.internetcomputer.org/hc/en-us/articles/34084113508500-Proposals) | -| `.migration/learn-hub/how-does-icp-work/nns/voting-rewards.md` | Voting Rewards | [https://learn.internetcomputer.org/hc/en-us/articles/34142993417108-Voting-Rewards](https://learn.internetcomputer.org/hc/en-us/articles/34142993417108-Voting-Rewards) | -| `.migration/learn-hub/how-does-icp-work/node-infrastructure/overview.md` | Overview | [https://learn.internetcomputer.org/hc/en-us/articles/46135518360212-Overview](https://learn.internetcomputer.org/hc/en-us/articles/46135518360212-Overview) | -| `.migration/learn-hub/how-does-icp-work/node-infrastructure/trusted-execution-environments.md` | Trusted Execution Environments | [https://learn.internetcomputer.org/hc/en-us/articles/46124920595988-Trusted-Execution-Environments](https://learn.internetcomputer.org/hc/en-us/articles/46124920595988-Trusted-Execution-Environments) | -| `.migration/learn-hub/how-does-icp-work/sns/dao-settings.md` | DAO Settings | [https://learn.internetcomputer.org/hc/en-us/articles/34142964565396-DAO-Settings](https://learn.internetcomputer.org/hc/en-us/articles/34142964565396-DAO-Settings) | -| `.migration/learn-hub/how-does-icp-work/sns/framework-and-architecture.md` | Framework and Architecture | [https://learn.internetcomputer.org/hc/en-us/articles/34140764336788-Framework-and-Architecture](https://learn.internetcomputer.org/hc/en-us/articles/34140764336788-Framework-and-Architecture) | -| `.migration/learn-hub/how-does-icp-work/sns/how-to-inspect-an-sns-and-its-dapp-canisters.md` | How to Inspect an SNS and Its Dapp Canisters | [https://learn.internetcomputer.org/hc/en-us/articles/46381576634772-How-to-Inspect-an-SNS-and-Its-Dapp-Canisters](https://learn.internetcomputer.org/hc/en-us/articles/46381576634772-How-to-Inspect-an-SNS-and-Its-Dapp-Canisters) | -| `.migration/learn-hub/how-does-icp-work/sns/launch.md` | Launch | [https://learn.internetcomputer.org/hc/en-us/articles/34141180048404-Launch](https://learn.internetcomputer.org/hc/en-us/articles/34141180048404-Launch) | -| `.migration/learn-hub/how-does-icp-work/sns/neurons.md` | Neurons | [https://learn.internetcomputer.org/hc/en-us/articles/34084687583252-Neurons](https://learn.internetcomputer.org/hc/en-us/articles/34084687583252-Neurons) | -| `.migration/learn-hub/how-does-icp-work/sns/proposals.md` | Proposals | [https://learn.internetcomputer.org/hc/en-us/articles/34146571133204-Proposals](https://learn.internetcomputer.org/hc/en-us/articles/34146571133204-Proposals) | -| `.migration/learn-hub/how-does-icp-work/sns/rewards.md` | Rewards | [https://learn.internetcomputer.org/hc/en-us/articles/34143058069396-Rewards](https://learn.internetcomputer.org/hc/en-us/articles/34143058069396-Rewards) | -| `.migration/learn-hub/how-does-icp-work/sns/sns-service-nervous-system.md` | SNS - Service Nervous System | [https://learn.internetcomputer.org/hc/en-us/articles/34084394684564-SNS-Service-Nervous-System](https://learn.internetcomputer.org/hc/en-us/articles/34084394684564-SNS-Service-Nervous-System) | -| `.migration/learn-hub/how-does-icp-work/sns/tokenomics.md` | Tokenomics | [https://learn.internetcomputer.org/hc/en-us/articles/34088279488660-Tokenomics](https://learn.internetcomputer.org/hc/en-us/articles/34088279488660-Tokenomics) | -| `.migration/learn-hub/how-does-icp-work/tokens-governance/how-token-ledgers-work-on-the-internet-computer.md` | How Token Ledgers Work on the Internet Computer | [https://learn.internetcomputer.org/hc/en-us/articles/44969820125972-How-Token-Ledgers-Work-on-the-Internet-Computer](https://learn.internetcomputer.org/hc/en-us/articles/44969820125972-How-Token-Ledgers-Work-on-the-Internet-Computer) | -| `.migration/learn-hub/how-does-icp-work/tokens-governance/tokenomics.md` | Tokenomics | [https://learn.internetcomputer.org/hc/en-us/articles/34090810571284-Tokenomics](https://learn.internetcomputer.org/hc/en-us/articles/34090810571284-Tokenomics) | -| `.migration/learn-hub/how-does-icp-work/tokens-governance/tokens-governance.md` | Tokens & Governance | [https://learn.internetcomputer.org/hc/en-us/articles/34574082263700-Tokens-Governance](https://learn.internetcomputer.org/hc/en-us/articles/34574082263700-Tokens-Governance) | - -## Out-of-scope articles - -These articles are from categories not relevant to developer documentation. - -| File | Title | Section | Original URL | -|------|-------|---------|--------------| -| `.migration/learn-hub/out-of-scope/what-is-icp/decentralization.md` | Decentralization | Decentralization | [https://learn.internetcomputer.org/hc/en-us/articles/44009922536852-Decentralization](https://learn.internetcomputer.org/hc/en-us/articles/44009922536852-Decentralization) | -| `.migration/learn-hub/out-of-scope/what-is-icp/icp-subsystems.md` | ICP subsystems | Decentralization | [https://learn.internetcomputer.org/hc/en-us/articles/44549459496596-ICP-subsystems](https://learn.internetcomputer.org/hc/en-us/articles/44549459496596-ICP-subsystems) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/community-built-dashboards.md` | Community-built dashboards | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/33152050043156-Community-built-dashboards](https://learn.internetcomputer.org/hc/en-us/articles/33152050043156-Community-built-dashboards) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-add-an-icp-sub-account.md` | How can I add an ICP (sub-)account? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42494280383252-How-can-I-add-an-ICP-sub-account](https://learn.internetcomputer.org/hc/en-us/articles/42494280383252-How-can-I-add-an-ICP-sub-account) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-configure-a-neuron.md` | How can I configure a neuron? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42755094620180-How-can-I-configure-a-neuron](https://learn.internetcomputer.org/hc/en-us/articles/42755094620180-How-can-I-configure-a-neuron) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-a-neuron.md` | How can I disburse a neuron? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42754712016148-How-can-I-disburse-a-neuron](https://learn.internetcomputer.org/hc/en-us/articles/42754712016148-How-can-I-disburse-a-neuron) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-maturity.md` | How can I disburse maturity? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/39755298701204-How-can-I-disburse-maturity](https://learn.internetcomputer.org/hc/en-us/articles/39755298701204-How-can-I-disburse-maturity) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-find-my-icp-token-accounts.md` | How can I find my (ICP) token accounts? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42493986016788-How-can-I-find-my-ICP-token-accounts](https://learn.internetcomputer.org/hc/en-us/articles/42493986016788-How-can-I-find-my-ICP-token-accounts) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-import-icrc-tokens.md` | How can I import ICRC tokens? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42529262055700-How-can-I-import-ICRC-tokens](https://learn.internetcomputer.org/hc/en-us/articles/42529262055700-How-can-I-import-ICRC-tokens) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-log-into-the-nns-dapp.md` | How can I log into the NNS dapp? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/39615237318548-How-can-I-log-into-the-NNS-dapp](https://learn.internetcomputer.org/hc/en-us/articles/39615237318548-How-can-I-log-into-the-NNS-dapp) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-receive-icp-tokens.md` | How can I receive ICP tokens? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42494789123092-How-can-I-receive-ICP-tokens](https://learn.internetcomputer.org/hc/en-us/articles/42494789123092-How-can-I-receive-ICP-tokens) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-send-icp-tokens.md` | How can I send ICP tokens? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42499104466324-How-can-I-send-ICP-tokens](https://learn.internetcomputer.org/hc/en-us/articles/42499104466324-How-can-I-send-ICP-tokens) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-a-neuron.md` | How can I stake a neuron? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42754119358484-How-can-I-stake-a-neuron](https://learn.internetcomputer.org/hc/en-us/articles/42754119358484-How-can-I-stake-a-neuron) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-and-auto-stake-maturity.md` | How can I stake and auto-stake maturity? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/39755363912724-How-can-I-stake-and-auto-stake-maturity](https://learn.internetcomputer.org/hc/en-us/articles/39755363912724-How-can-I-stake-and-auto-stake-maturity) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-top-up-a-neuron.md` | How can I top up a neuron? | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/42756506278804-How-can-I-top-up-a-neuron](https://learn.internetcomputer.org/hc/en-us/articles/42756506278804-How-can-I-top-up-a-neuron) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/internet-computer-dashboard.md` | Internet Computer dashboard | Governance | [https://learn.internetcomputer.org/hc/en-us/articles/33152081370260-Internet-Computer-dashboard](https://learn.internetcomputer.org/hc/en-us/articles/33152081370260-Internet-Computer-dashboard) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/cycle-burn.md` | Cycle burn | Network stats | [https://learn.internetcomputer.org/hc/en-us/articles/33152123370772-Cycle-burn](https://learn.internetcomputer.org/hc/en-us/articles/33152123370772-Cycle-burn) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/network-topology.md` | Network topology | Network stats | [https://learn.internetcomputer.org/hc/en-us/articles/33152148267412-Network-topology](https://learn.internetcomputer.org/hc/en-us/articles/33152148267412-Network-topology) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/tx-s.md` | tx/s | Network stats | [https://learn.internetcomputer.org/hc/en-us/articles/33152121376404-tx-s](https://learn.internetcomputer.org/hc/en-us/articles/33152121376404-tx-s) | -| `.migration/learn-hub/out-of-scope/what-is-icp/what-has-happened-so-far.md` | What Has Happened So Far? | Overview | [https://learn.internetcomputer.org/hc/en-us/articles/33152692358036-What-Has-Happened-So-Far](https://learn.internetcomputer.org/hc/en-us/articles/33152692358036-What-Has-Happened-So-Far) | -| `.migration/learn-hub/out-of-scope/what-is-icp/what-is-icp.md` | What is ICP? | Overview | [https://learn.internetcomputer.org/hc/en-us/articles/33152818663444-What-is-ICP](https://learn.internetcomputer.org/hc/en-us/articles/33152818663444-What-is-ICP) | -| `.migration/learn-hub/out-of-scope/what-is-icp/what-is-the-vision-behind-icp.md` | What is the Vision behind ICP? | Overview | [https://learn.internetcomputer.org/hc/en-us/articles/33624077003668-What-is-the-Vision-behind-ICP](https://learn.internetcomputer.org/hc/en-us/articles/33624077003668-What-is-the-Vision-behind-ICP) | -| `.migration/learn-hub/out-of-scope/what-is-icp/not-all-transactions-are-equal.md` | Not All Transactions Are Equal | Performance | [https://learn.internetcomputer.org/hc/en-us/articles/39158902116884-Not-All-Transactions-Are-Equal](https://learn.internetcomputer.org/hc/en-us/articles/39158902116884-Not-All-Transactions-Are-Equal) | -| `.migration/learn-hub/out-of-scope/what-is-icp/performance.md` | Performance | Performance | [https://learn.internetcomputer.org/hc/en-us/articles/39320190051348-Performance](https://learn.internetcomputer.org/hc/en-us/articles/39320190051348-Performance) | -| `.migration/learn-hub/out-of-scope/what-is-icp/performance-comparison.md` | Performance Comparison | Performance | [https://learn.internetcomputer.org/hc/en-us/articles/39314351721492-Performance-Comparison](https://learn.internetcomputer.org/hc/en-us/articles/39314351721492-Performance-Comparison) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-can-i-stake-icp-with-quill.md` | How can I stake ICP with quill? | Tokens & wallets | [https://learn.internetcomputer.org/hc/en-us/articles/43823123678100-How-can-I-stake-ICP-with-quill](https://learn.internetcomputer.org/hc/en-us/articles/43823123678100-How-can-I-stake-ICP-with-quill) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-set-up-an-air-gapped-wallet-with-quill.md` | How do I set up an air-gapped wallet with quill? | Tokens & wallets | [https://learn.internetcomputer.org/hc/en-us/articles/41523709355668-How-do-I-set-up-an-air-gapped-wallet-with-quill](https://learn.internetcomputer.org/hc/en-us/articles/41523709355668-How-do-I-set-up-an-air-gapped-wallet-with-quill) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-transfer-tokens-with-quill.md` | How do I transfer tokens with quill? | Tokens & wallets | [https://learn.internetcomputer.org/hc/en-us/articles/41526165816596-How-do-I-transfer-tokens-with-quill](https://learn.internetcomputer.org/hc/en-us/articles/41526165816596-How-do-I-transfer-tokens-with-quill) | -| `.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/icp-custody-options.md` | ICP Custody Options | Tokens & wallets | [https://learn.internetcomputer.org/hc/en-us/articles/42139140618516-ICP-Custody-Options](https://learn.internetcomputer.org/hc/en-us/articles/42139140618516-ICP-Custody-Options) | diff --git a/.migration/learn-hub/how-does-icp-work/icp-and-the-internet/https-outcalls.md b/.migration/learn-hub/how-does-icp-work/icp-and-the-internet/https-outcalls.md deleted file mode 100644 index 432e2977..00000000 --- a/.migration/learn-hub/how-does-icp-work/icp-and-the-internet/https-outcalls.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -learn_hub_id: 34211194553492 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/34211194553492-HTTPS-Outcalls" -learn_hub_title: "HTTPS Outcalls" -learn_hub_section: "ICP and the Internet" -learn_hub_category: "How does ICP work?" -migrated: false ---- - -# HTTPS Outcalls - -In today's Internet, most data and functionality is accessible through Web 2.0 APIs. This includes data such as stock prices, football scores, IoT-related data, or crypto exchange prices. It includes functionality like sending notifications or text messages. This data or functionality would often be useful to smart contracts. Most blockchains have no direct way of providing access to these APIs and resort to (often centralized) oracle services, which are in the hands of intermediaries, vulnerable to hacking, and subject to service fees. - -Canister HTTPS outcalls on ICP allow direct interaction with Web 2.0 and other blockchains without oracles. Canister smart contracts can make HTTPS outcalls to specified URLs to directly obtain off-chain data, or to interact with off-chain systems, such as Web 2.0 services or enterprise IT infrastructure. - -## Architecture - -The HTTPS outcalls feature allows canisters to make outgoing HTTP calls to conventional Web 2.0 HTTP servers. The response of the request can be safely used in computations of the canister, without the risk of state divergence between the replicas of the subnet. - -### How an HTTPS outcall is processed by ICP - -The canister HTTPS outcalls functionality involves several components on different layers. Let us follow different processing steps when a canister submits an outcalls request. - - 1. A canister makes an outgoing HTTP request by calling the management canister API using the `http_request` method. - 2. The request is stored temporarily in the replicated state of the subnet. - 3. Periodically (in each round) an adapter at the networking layer in each replica fetches the pending HTTPS outcalls from the replicated state. -(In fact, a ‘shim’ layer of the adapter that is inside the replica process does so as the adapter itself is sandboxed into a separate OS-level process for security reasons.) - 4. The adapter on each replica executes the HTTP request by sending it to the target server. - 5. The corresponding HTTP response from the server is received by the adapter on each replica of the subnet and provided to a component in the replica process. -The adapter limits the network response size. - 6. An optional transformation function implemented as part of the canister is invoked on the respective response on each replica to transform the response. - 7. The transformed response is handed over to consensus on each replica. - 8. ICP consensus agrees on a response if more than 2/3rd of the nodes in the subnet have the same response for the request as input. -In this case, consensus provides this response back to the management canister API, or an error if no consensus can be reached or in case of other problems. - 9. The management canister API provides the response or error back to the calling canister. - - - -![HTTPS outcalls high-level architecture](https://internetcomputer.org/assets/images/HTTPS_outcalls_HL_architecture-f6a0eb54aef1aae1bd0989456f5d2aee.jpg) - -The above figure shows a high-level view of how a canister interacts with the feature and the communication patterns of the subnet replicas with external servers. - -To summarize, to perform an HTTP request, each replica pushes an (optionally-transformed) instance of the received HTTP response from the external web server through the Internet Computer's consensus layer, so that the replicas of the subnet can agree on the response provided to the canister, based on all server responses received by the replicas. The optional transformation ensures that, if responses received on different replicas from the server are different in some parts, those differences are eliminated and the same transformed response is provided to consensus on every (honest) replica. This guarantees that on every replica the exact same response (or none at all) is used for canister execution, thereby ensuring that divergence does not happen when using this feature and the replicated state machine properties of the subnet are preserved. - -As you can see, the transformation function and the Internet Computer Protocol's consensus play a crucial role for this feature: The transformation function ensures that differences in the responses received by the replicas are removed and transformed responses on different replicas will be exactly the same, thus enabling consensus to provide the agreed-upon response to the calling canister. By running the responses received by the replicas through consensus, the Internet Computer ensures that every replica provides the same response to the smart contract Wasm execution environment. - diff --git a/.migration/learn-hub/how-does-icp-work/introduction/how-does-icp-work.md b/.migration/learn-hub/how-does-icp-work/introduction/how-does-icp-work.md deleted file mode 100644 index 8853e03b..00000000 --- a/.migration/learn-hub/how-does-icp-work/introduction/how-does-icp-work.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -learn_hub_id: 33694833025172 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33694833025172-How-does-ICP-work" -learn_hub_title: "How does ICP work?" -learn_hub_section: "Introduction" -learn_hub_category: "How does ICP work?" -migrated: false ---- - -# How does ICP work? - -This part explains how the Internet Computer Protocol works. It explains the different components of the protocol, how they interact with each other, and why they are designed this way. It targets readers who have some technical knowledge, but it does not require specialized knowledge on cloud or blockchain technology. - -## Content structure - -The articles in this section are divided into different topics and answer the following questions. - - * [Blockchain Protocol ](https://learn.internetcomputer.org/hc/en-us/articles/34206453538964)\- What are the core layers of the protocol and how do they make the Internet Computer tamperproof and unstoppable? - * [Canister Smart Contracts ](https://learn.internetcomputer.org/hc/en-us/articles/34210839162004)\- How are decentralized applications on the Internet Computer managed and executed? - * [Chain-Key Cryptography ](https://learn.internetcomputer.org/hc/en-us/articles/34209486239252)\- How do cryptographic protocols provide security and verifiability? - * [Tokenomics & Governance](https://learn.internetcomputer.org/hc/en-us/articles/34574082263700) \- What is behind the ICP token and how is the Internet Computer governed? - * [Chain Fusion](https://learn.internetcomputer.org/hc/en-us/articles/34329023770260) \- How can decentralized applications on the Internet Computer interact with blockchains like Ethereum and Bitcoin? - * [Evolution & Scaling](https://learn.internetcomputer.org/hc/en-us/articles/34576974172692) \- How can the Internet Computer extend its functionality and capacity? - * [The Internet Computer and the Internet ](https://learn.internetcomputer.org/hc/en-us/articles/34574399808788)\- How the Internet Computer interacts with its users and with traditional web2 servers? - - - -## Other resources - -For more information on the following topics, we kindly refer you to consult other resources: - - * In case you are a developer who is rather interested to **learn how to build applications on ICP** , please refer to the [developer documentation](https://internetcomputer.org/docs/current/home). - - * If you are curious to see more **live information about the Internet Computer** that is running, such as which node machines are participating, please refer to [Internet Computer Dashboard](https://dashboard.internetcomputer.org/). - - * If you want to learn what projects and applications have already been built on the Internet Computer, please refer to the [ecosystem page](https://internetcomputer.org/ecosystem). - - - - diff --git a/.migration/learn-hub/how-does-icp-work/sns/how-to-inspect-an-sns-and-its-dapp-canisters.md b/.migration/learn-hub/how-does-icp-work/sns/how-to-inspect-an-sns-and-its-dapp-canisters.md deleted file mode 100644 index 3131757a..00000000 --- a/.migration/learn-hub/how-does-icp-work/sns/how-to-inspect-an-sns-and-its-dapp-canisters.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -learn_hub_id: 46381576634772 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/46381576634772-How-to-Inspect-an-SNS-and-Its-Dapp-Canisters" -learn_hub_title: "How to Inspect an SNS and Its Dapp Canisters" -learn_hub_section: "SNS - Service Nervous System" -learn_hub_category: "How does ICP work?" -migrated: false ---- - -# How to Inspect an SNS and Its Dapp Canisters - -This guide explains how to discover and inspect all canisters that belong to a Service Nervous System (SNS), including governed dapps. - -You can interact with canisters in two ways: - - * **Internet Computer Dashboard** : [https://dashboard.internetcomputer.org](https://dashboard.internetcomputer.org/)[](https://dashboard.internetcomputer.org/) - - * **DFX command line tool** : - -[](https://internetcomputer.org/docs/current/developer-docs/build/install-upgrade-remove) - - - - -* * * - -## 1\. Start from the SNS Root Canister - -Each SNS has a **root canister** that controls the SNS system. - -### Verify the SNS root - -All deployed SNS root canisters are listed in the SNS-W canister: - -**SNS-W canister ID:** -`qaa6y-5yaaa-aaaaa-aaafa-cai` - -Call: - -`list_deployed_snses` - -**DFX example:** - - - dfx canister --network ic call qaa6y-5yaaa-aaaaa-aaafa-cai list_deployed_snses '(record {})' - - -In the Dashboard: - - 1. Search for the SNS-W canister ID - - 2. Click `list_deployed_snses` - - 3. Click **Call** - - - - -* * * - -## 2\. List All SNS and Dapp Canisters - -From the SNS root canister, call: - -`list_sns_canisters` - -This returns: - - * Governance canister - - * Ledger canister - - * Swap canister - - * Any governed dapp canisters - - - - -**DFX example:** - - - dfx canister --network ic call list_sns_canisters '(record {})' - - -* * * - -## 3\. Get Full Status and Controllers - -To inspect canister status, cycles balance, and controllers, call: - -`get_sns_canisters_summary` - -**DFX example:** - - - dfx canister --network ic call get_sns_canisters_summary '(record {})' - - -You can verify the controller hierarchy: - - * SNS root controls all SNS canisters except the swap canister - - * Swap is controlled by the NNS root - - * NNS root canister ID: -`r7inp-6aaaa-aaaaa-aaabq-cai` - - * SNS root itself is controlled by SNS governance - - - - -* * * - -## 4\. Start from a Dapp Instead - -If you only know the dapp canister ID: - - 1. Query its controller - - 2. If it is controlled by an SNS root, use that root canister ID - - 3. Follow the steps above - - - - -If you only have a URL ending in `.ic0.app`, remove `.ic0.app` to obtain the canister ID. - -* * * - -## 5\. Inspect SNS Governance Neurons - -To list neurons in SNS governance: - -Method: `list_neurons` - -This method is paginated using: - - * `limit` - - * `start_page_at` - - - - -**DFX example:** - - - dfx canister --network ic call list_neurons '(record { of_principal=null; limit=100: nat32; start_page_at=null })' - - -* * * - -## 6\. Check Token Balances - -### Tokens in the decentralization swap - -Call: - -`icrc1_balance_of` - -on the SNS ledger, using the swap canister as owner. - -### Tokens in the SNS treasury - -Call: - -`icrc1_balance_of` - -on the SNS ledger, using: - - * Owner = SNS governance canister - - * Subaccount = treasury subaccount - - - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/community-built-dashboards.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/community-built-dashboards.md deleted file mode 100644 index 3c24828e..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/community-built-dashboards.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -learn_hub_id: 33152050043156 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152050043156-Community-built-dashboards" -learn_hub_title: "Community-built dashboards" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# Community-built dashboards - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-add-an-icp-sub-account.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-add-an-icp-sub-account.md deleted file mode 100644 index e9f48251..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-add-an-icp-sub-account.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -learn_hub_id: 42494280383252 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42494280383252-How-can-I-add-an-ICP-sub-account" -learn_hub_title: "How can I add an ICP (sub-)account?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I add an ICP (sub-)account? - -Logging into the NNS dapp using an Internet Identity creates a [main account](https://learn.internetcomputer.org/hc/en-us/articles/42493986016788) for you in the ICP ledger. - -You can create one or more linked _sub-accounts_ or attach a hardware wallet to your account. - -#### Step 1: Go on the 'Tokens' tab in the left menu. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494309267860) - -#### Step 2: In the top table, select 'Internet Computer'. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494280371732) - -#### Step 3: Select 'Add Account'. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494309272084) - -#### Step 4: Select the type of account to add, which is 'New Account'. - - * **New Account** creates a new subaccount linked to your Main account address in the ledger. - * **New Account (Hardware Wallet)** adds a hardware wallet to your main account address in the ledger. - - - -#### Step 5: Enter an account name and hit 'Create'. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494309273492) - -#### You now have a new account with this name in your list. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494309276564) - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-configure-a-neuron.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-configure-a-neuron.md deleted file mode 100644 index 81f94ff9..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-configure-a-neuron.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -learn_hub_id: 42755094620180 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42755094620180-How-can-I-configure-a-neuron" -learn_hub_title: "How can I configure a neuron?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I configure a neuron? - -After you [created a neuron](https://learn.internetcomputer.org/hc/en-us/articles/42754119358484), you can set it up and modify it. These are some of the attributes you can modify that influence the neuron's [voting power](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692#h_01JJ26P5EEPSRQSN0Y3Q2Y975K) and state: - - * Start the dissolve delay timer by clicking **Start Unlock**. - * Increase the dissolve delay period by clicking **Increase Dissolve Delay**. - * Stop the dissolve delay after starting the unlock countdown by clicking **Lockup**. - - - -## How to start and stop dissolving the neuron - -Creating a new neuron does not automatically start the dissolve delay timer. If you want to start the timer countdown, you have to do so by explicitly clicking **Start Dissolving** on the neuron detail page. - -![](https://learn.internetcomputer.org/hc/article_attachments/42755787874452) - -For example, if you set a dissolve delay of 200 days and want to immediately begin the countdown, you should click 'Start Dissolving' as part of the process of creating the neuron. If you change your mind and want to stop a current countdown in progress, you can click **Stop Dissolving**. - -![](https://learn.internetcomputer.org/hc/article_attachments/42755787877908) - -After you click Stop Dissolving, you can click Start Dissolving again to resume the countdown without changing the existing dissolve delay period. - -If you start the dissolving of a neuron, the neuron's [age](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692#h_01JJ26P5EEPSRQSN0Y3Q2Y975K) is set back to zero. Therefore, starting dissolving and stopping it again does not result in exactly the same neuron. - -## How to increase a neuron's dissolve delay - -No matter if a neuron is dissolving or non-dissolving, you can increase the lockup period by clicking Increase Dissolve Delay then select a longer dissolve delay. - -![](https://learn.internetcomputer.org/hc/article_attachments/42755787881364) - - - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-a-neuron.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-a-neuron.md deleted file mode 100644 index 275b899e..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-a-neuron.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -learn_hub_id: 42754712016148 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42754712016148-How-can-I-disburse-a-neuron" -learn_hub_title: "How can I disburse a neuron?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I disburse a neuron? - -When the dissolve delay timer for a neuron reaches zero, it is **dissolved** and you can disburse the neuron’s stake and transfer its locked ICP utility token balance to the ledger account you specify. - -To disburse a neuron and return its ICP utility tokens: - -#### Step 1: On the [NNS dapp](https://nns.ic0.app/), go to the Neuron Staking tab and then the table Staked ICP. Then click on an dissolved neuron that has reach the ended of its dissolve delay period (indicated by 'Unlocked'). - -#### Step 2: Click **Disburse**. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756391479956) - -#### Step 3: Type an address or select an account to receive the ICP utility tokens. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756391484564) - -#### Step 4: Verify the transaction information, then click Confirm and Send. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756391486228) - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-maturity.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-maturity.md deleted file mode 100644 index d787af7a..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-disburse-maturity.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -learn_hub_id: 39755298701204 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/39755298701204-How-can-I-disburse-maturity" -learn_hub_title: "How can I disburse maturity?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I disburse maturity? - -## Overview - -This tutorial is focused on NNS neurons. In SNS DAOs with voting rewards the concepts are very similar and the same tutorial might be helpful. - -As you stake a neuron in the NNS and participate in governance, by voting directly or by delegating your voting power to others, your neuron receives voting rewards in the form of [maturity that can be _disbursed_ or _staked_.](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons#01JJ7BJX36NH538SCDQFHSJSVD) - -## Disburse maturity - -When you have at least 1.05 of maturity that is not staked, you can disburse it. This operation burns the maturity and schedules the minting of new ICP tokens. After 7 days, new ICP will be minted to the selected destination address. This process is subject to a maturity modulation function - refer to [Voting rewards & maturity](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons#01JJ7BJX36NH538SCDQFHSJSVD) for details. - -For neurons managed by a Ledger hardware wallet, disburse maturity is under development. You can use spawn neuron in the meantime (see below). - -### How to disburse the maturity of you neuron - -#### Step 1: On the [staking page](https://nns.ic0.app/neurons/?u=qoctq-giaaa-aaaaa-aaaea-cai), navigate to the neuron whose maturity you want to disburse. - -Click **Disburse** in the **Maturity** section. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755329006356) - -#### Step 2: In the form that opens, select the percentage of maturity to disburse and the destination account. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755298688660) - -You can choose one of your associated accounts or manually enter any NNS account identifier. Manual input is available either as plain text or via QR code (found by clicking the **Receive** button on the wallet page). - -![](https://learn.internetcomputer.org/hc/article_attachments/39755298688916) - -For a given account, you can copy the account identifier on the account page as follows. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755298690196) - -#### - -#### Step 3: After clicking **Disburse** , you see an overview where you can review and confirm the disbursement. - -#### ![](https://learn.internetcomputer.org/hc/article_attachments/39755298692116) - -#### Step 4: When a disbursement is in progress, a **View Active Disbursements** button appears in the **Maturity** section. - -#### ![](https://learn.internetcomputer.org/hc/article_attachments/39755329012116) - -This opens the **Active Disbursements** window, which shows all disbursements in progress, including their start time, destination address, and the amount of maturity being disbursed. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755329016084) - -You cannot have more than 10 ongoing disbursements. If you have 10, you need to wait for at least one disbursement to finish before adding another. - - -## -Spawn new neurons - - -The old way of converting maturity into ICP utility tokens is via spawning the newly minted ICP into a neuron from where you can extract the ICP after 7 days. - -In the NNS dapp you can only see the option to spawn for Ledger controlled neurons because disburse maturity is not yet supported by the Ledger device. Going forward, spawning neurons might be deprecated for all use cases. - -#### Step 1: In the NNS dapp, open the **Neuron Staking** section, then select the neuron that has reached the required maturity. - -#### Step 2: Click **Spawn Neuron** , then follow the prompts to complete the process. - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-find-my-icp-token-accounts.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-find-my-icp-token-accounts.md deleted file mode 100644 index 6cb3b595..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-find-my-icp-token-accounts.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -learn_hub_id: 42493986016788 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42493986016788-How-can-I-find-my-ICP-token-accounts" -learn_hub_title: "How can I find my (ICP) token accounts?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I find my (ICP) token accounts? - -Logging into the NNS dapp using an Internet Identity creates a main account for you in the ICP ledger as well as in the other ledgers you might want to interact with. - -We show you how you can find your token account on the example of the ICP token. - -#### Step 1: Go on the 'Tokens' tab in the left menu. - -![](https://learn.internetcomputer.org/hc/article_attachments/42493986007700) - -#### Step 2: Select the token you would like to see in the right table. In this case, select 'Internet Computer'. - -![](https://learn.internetcomputer.org/hc/article_attachments/42494006887828) - -#### Step 3: You now see your main ICP account. - -When you log in for the first time, most likely your main account displays 0.00 for your ICP utility token balance. - -You can now [receive tokens](https://learn.internetcomputer.org/hc/en-us/articles/42494789123092), [send tokens](https://learn.internetcomputer.org/hc/en-us/articles/42499104466324), or [add another account](https://learn.internetcomputer.org/hc/en-us/articles/42494280383252). - -#### - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-import-icrc-tokens.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-import-icrc-tokens.md deleted file mode 100644 index 2e1387b9..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-import-icrc-tokens.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -learn_hub_id: 42529262055700 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42529262055700-How-can-I-import-ICRC-tokens" -learn_hub_title: "How can I import ICRC tokens?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I import ICRC tokens? - -The [NNS dapp](https://nns.ic0.app/) focuses on providing a simple user interface where community members can interact with different on-chain governance systems deployed on the Internet Computer. - -If you want to hold tokens that are not in the default provided list, you can _import_ the token to your wallet. This is possible for any token that supports ICRC-1, which includes all ICRC-2 and ICRC-3 tokens. As a token is uniquely defined by its associated ledger, the first step in this process is to find the ledger's ID. - -## How do I find the relevant token ledger? - -The process of importing a token simply saves a list of token ledger canister IDs on your account, letting the NNS dapp know which tokens to fetch. Therefore, to import a token, you need the associated ledger canister ID. - -In addition, the NNS dapp relies on index canisters to display transaction histories. If your token has an index canister, you can also import the index canister ID, which will allow you to see the transaction history in the NNS dapp too. - -The NNS dapp accepts any token that supports the ICRC-1 standard. A token can pretend to be another token, so make sure to get the ledger canister ID from reputable places. - -There are several ways to find ledger canister IDs of ICRC-1 tokens. The tutorial video above mentions two. This is a more comprehensive list. - - * [ICPSwap](https://info.icpswap.com/swap): Curated list of tokens traded on ICPSwap updated by the ICPSwap SNS DAO. - * [ICP Tokens](https://www.icptokens.net/): Curated list of tokens traded on ICP-based DEXs updated by ICP Tokens. - * [ICP Dashboard](https://dashboard.internetcomputer.org/chain-fusion): List of all chain-key tokens (under Chain Fusion menu option) updated automatically. - * [nftGeek](https://t5t44-naaaa-aaaah-qcutq-cai.raw.icp0.io/tokens): Curated list of tokens traded on ICP-based DEXs updated by nftGeek. - * [CoinMarketCap](https://coinmarketcap.com/view/internet-computer-ecosystem/): The ICRC tokens that are listed on CoinMarketCap provide their ledger canister ID under 'Contract'. - * [CoinGecko](https://www.coingecko.com/en/categories/internet-computer-ecosystem): The ICRC tokens that are listed on CoinGecko provide their ledger canister ID under 'Contract'. - - - -## How do I import ICRC tokens? - -First, find the ledger canister ID of the token you want to import to your NNS dapp wallet. The list above covers most tokens deployed on the Internet Computer. Once you have its ledger canister ID, you may optionally look for its index canister to display the transaction history. - -Importing an index canister is completely optional. Many popular tokens do not have index canisters. - -#### Step 1: Sign into the NNS dapp and navigate to Tokens. In the table menu, click 'Import Token'. - -![](https://learn.internetcomputer.org/hc/article_attachments/42531028276628) - -If you want to hide the tokens you don't hold for better visibility, you can click the settings button at the top right corner of the table, and enable Hide zero balances. - -#### Step 2: Paste the ledger canister ID and optionally the index canister IDs to the corresponding input fields. - -If you don't provide the index canister ID now, you can add it any time in the future. - -![](https://learn.internetcomputer.org/hc/article_attachments/42531028279956) - -#### Step 3: Review and confirm that this is the token you wish to import. By clicking the link you can see the canister on the ICP dashboard. - -#### ![](https://learn.internetcomputer.org/hc/article_attachments/42531028282132) - - -Once your token was successfully imported, you can send tokens to your account. - -![](https://learn.internetcomputer.org/hc/article_attachments/42531028291348) - -Going back, you see all imported tokens in the Imported Tokens table. - -![](https://learn.internetcomputer.org/hc/article_attachments/42531056914708) - -## -How do I remove an imported token? - -You can add and remove tokens any time. - -Removing a token doesn't remove the asset itself. If you remove a token that has a balance above 0, you can always re-import it, and the asset will be accessible. However, the NNS dapp will not remember which tokens you imported and removed again, so you will need to remember any token you intend to re-import in the future. - -![](https://learn.internetcomputer.org/hc/article_attachments/42531028295188) - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-log-into-the-nns-dapp.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-log-into-the-nns-dapp.md deleted file mode 100644 index 538f155e..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-log-into-the-nns-dapp.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -learn_hub_id: 39615237318548 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/39615237318548-How-can-I-log-into-the-NNS-dapp" -learn_hub_title: "How can I log into the NNS dapp?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I log into the NNS dapp? - -## Overview - -There are different ways to interact with the NNS to stake ICP tokens and participate in governance. - -This guide demonstrates how to interface with the NNS through the [NNS dapp](https://nns.ic0.app). You can interact with the NNS through other tools, such as [quill ](https://github.com/dfinity/quill)and [ic-js](https://github.com/dfinity/ic-js/tree/main/packages/nns). - -This section starts with a tutorial on how to connect and log in to the NNS dapp. - -## -Connect to the NNS using the NNS dapp - -To connect to the NNS using the NNS dapp, follow these steps which are also explained in the first minutes of the following video. - -#### Step 1: Open a browser and navigate to the [NNS dapp](https://nns.ic0.app). - -![](https://learn.internetcomputer.org/hc/article_attachments/39615243724180) - -#### Step 2: Click **Login** to connect to [Internet Identity](https://identity.internetcomputer.org/). - -#### - -![](https://learn.internetcomputer.org/hc/article_attachments/39615243724564) - -If you haven’t previously registered, you can click **Register with Internet Identity** to register. - -It is recommended that you add multiple devices and authentication methods to your Internet Identity. For example, register multiple physical devices like your computer and phone with a security key and using the authentication options that those devices—and browsers running on them—support. - - -For more information about creating an Internet Identity, see [how to use Internet Identity](https://identitysupport.dfinity.org/hc/en-us/articles/15430677359124-How-do-I-create-an-Internet-Identity-on-my-mobile-device). - -After you have registered, you can click **Login** to authenticate using your anchor and the authentication method—for example, a security key or fingerprint—you have registered. - -#### Step 3: Click **Proceed** to access to the Network Nervous System (NNS) dapp. - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-receive-icp-tokens.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-receive-icp-tokens.md deleted file mode 100644 index d66dea19..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-receive-icp-tokens.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -learn_hub_id: 42494789123092 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42494789123092-How-can-I-receive-ICP-tokens" -learn_hub_title: "How can I receive ICP tokens?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I receive ICP tokens? - -When you log into the NNS dapp for the first time you will not yet have any ICP tokens in your wallet. Therefore, you first might want transfer some tokens to the NNS dapp wallet. This also the first step required for staking a neuron with the NNS dapp. - -## Get tokens from an exchange - -If you already have ICP tokens on an exchange, you can transfer some of them to your NNS dapp account as explained in this video. - -#### Step 1: Go on the Internet Computer Account page. - -![](https://learn.internetcomputer.org/hc/article_attachments/42496260016660) - -If you already [added sub-accounts](https://learn.internetcomputer.org/hc/en-us/articles/42494280383252), you now see the list of them. - -#### Step 2: Copy the ICP address of your account. - -You have two options how to find the address of one of your accounts, for example the 'Main' account. - - * You can click on the QR-code symbol next to the account 'Main'. This will lead you to the following window where you can copy the ICP address. - -![](https://learn.internetcomputer.org/hc/article_attachments/42496260020372) - - * You can use the 'Receive' button and select the account 'Main' at the top. You then see the option to copy the address. - -![](https://learn.internetcomputer.org/hc/article_attachments/42496302608276) - -#### Step 3: Go to your exchange and send tokens to the address you just copied. - -Using this, you can send tokens from any exchange that supports sending ICP. The tokens should be visible in your wallet within a few minutes. - -Not all exchanges support all features. It is advised to check with the exchange to be sure it supports the workflow described above. - -## Get tokens from a developer identity using the CLI - -This part explains how you can transfer ICP utility tokens from an account associated with your developer identity to your NNS dapp account. - -To transfer ICP utility tokens controlled by your developer identity: - -#### Step 1: Open a terminal shell on your local computer. - -#### Step 2: Check that you are using an identity with control over the ledger account by running the following command: - - - dfx identity whoami - -In most cases, you should see that you are currently using your `default` developer identity. For example: - - - default - -#### -Step 3: View the textual representation of the principal for your current identity by running the following command: - - - dfx identity get-principal - -This command displays output similar to the following: - - - tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe - -#### Step 4: Check the current balance in the ledger account associated with your identity by running the following command: - - - dfx ledger --network ic balance - -#### Step 5: Transfer ICP utility tokens to your Main account or a linked subaccount you create by running a command similar to the following: - - - dfx ledger --network ic transfer --icp --memo - -To find your account on the NNS dapp wallet, proceed as explained above. For example, assume your account is `0dff47055d84fd0d89cc55ff477c24026b5c2c9175f8fd36bcb66bb68cac81be` if you want to transfer 1 ICP utility token to this account, you can run the following command: - - - dfx ledger --network ic transfer 0dff47055d84fd0d89cc55ff477c24026b5c2c9175f8fd36bcb66bb68cac81be --memo 12345 --icp 1 - -This example illustrates how to transfer ICP utility tokens using a whole number with the `--icp` command line option. -You can also specify fractional units of ICP utility tokens—called **e8s** —using the `--e8s` option, either on its own or in conjunction with the `--icp` option. -Alternatively, you can use the `--amount` to specify the number of ICP utility tokens to transfer with fractional units up to 8 decimal places, for example, as `5.00000025`. - -The destination address can be any address in the ledger canister which might correspond to: - - * A wallet that is owned by a developer principal. - * An account you have added using the NNS dapp. - * An address for a wallet you have on an exchange. - - - - -If you transfer the ICP utility tokens to an account in the NNS dapp, you might need to refresh the browser to see the transaction reflected. - -For more information about using the `dfx ledger` command line options, see [dfx ledger](https://internetcomputer.org/docs/building-apps/developer-tools/dfx/dfx-ledger). - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-send-icp-tokens.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-send-icp-tokens.md deleted file mode 100644 index 9d821e2e..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-send-icp-tokens.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -learn_hub_id: 42499104466324 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42499104466324-How-can-I-send-ICP-tokens" -learn_hub_title: "How can I send ICP tokens?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I send ICP tokens? - -Once you have ICP tokens in your NNS dapp account, you can send them to other accounts by following these steps. - -#### Step 1: Go on the Internet Computer Account page. - -If you already [added sub-accounts](https://learn.internetcomputer.org/hc/en-us/articles/42494280383252), you now see the list of them. - -![](https://learn.internetcomputer.org/hc/article_attachments/42499429037076) - -#### Step 2: Click Send on the bottom of the window. - -![](https://learn.internetcomputer.org/hc/article_attachments/42499413481748) - -#### Step 3: Select one of your accounts, 'Main' or another one, as the source and input the destination address and the amount of ICP to send. - -![](https://learn.internetcomputer.org/hc/article_attachments/42499413489556) -Transactions are charged a ledger fee, which is independent from the NNS dapp and applies to any transaction. For ICP tokens, this fee is 0.0001 ICP. - -The maximum amount you can send is your token balance minus the ledger fee. The minimum amount you can send is 0.00000001 ICP. - -#### Step 4: Select Continue, review the transaction, and if you are happy with it press Send Now to send the transaction. - -The destination address can be any address in the ledger canister which might correspond to: - - * A wallet that is owned by a developer principal. - * An account you have added using the NNS dapp. - * An address for a wallet you have on an exchange. - - - -If you transfer the ICP utility tokens to an account in the NNS dapp, you might need to refresh the browser to see the transaction reflected. - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-a-neuron.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-a-neuron.md deleted file mode 100644 index d8471d8a..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-a-neuron.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -learn_hub_id: 42754119358484 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42754119358484-How-can-I-stake-a-neuron" -learn_hub_title: "How can I stake a neuron?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I stake a neuron? - -To participate in governance, users can lock ICP utility tokens in a [neuron](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692). This is also called **staking**. The balance of ICP utility tokens is locked for a given time which is called the **dissolve delay** and the tokens can only be unlocked by fully **dissolving** the neuron. The longer the tokens are locked, the more voting power a neuron has. See more details on [voting power](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692#h_01JJ26P5EEPSRQSN0Y3Q2Y975K). - -## How to Stake ICP utility tokens in a neuron - -After you transfer ICP utility tokens to the [NNS dapp](https://nns.ic0.app/), you can use it to create and manage neurons, vote on proposals, and create canisters on the Internet Computer. - -Neurons are required to participate in governance to earn rewards. To create a neuron, you must lock up some number of ICP utility tokens for a period of time. The minimum stake required to create a neuron is 1 ICP utility token. You can configure the period of time the stake is locked from 6 months up to a maximum of 8 years. - -To stake ICP utility tokens: - -#### Step 1: In the [NNS dapp](https://nns.ic0.app/), select Neuron Staking from the left navigation bar, then click Stake ICP in the Staked ICP table. - -#### ![](https://learn.internetcomputer.org/hc/article_attachments/42755015108756) -Step 2 : Select which wallet you'd like to use as the source, then type the number of ICP utility tokens to stake, then click Create. - -![](https://learn.internetcomputer.org/hc/article_attachments/42755021558036) - -Optionally, you can choose to make the neuron [public](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692#h_01JJ26QW42Z5QMGJPE2JFBJK92). - -#### Step 3: Set the dissolve delay for the neuron to control the length of time the stake is locked, then click Set Delay. - -![](https://learn.internetcomputer.org/hc/article_attachments/42755015112468) - -You can also skip this step and set the dissolve delay later. However, in that case your neuron is not yet eligible to vote and will not get any voting rewards. - -Once you staked a neuron, you can [configure it ](https://learn.internetcomputer.org/hc/en-us/articles/42755094620180)and use it for voting. - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-and-auto-stake-maturity.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-and-auto-stake-maturity.md deleted file mode 100644 index 7c838455..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-stake-and-auto-stake-maturity.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -learn_hub_id: 39755363912724 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/39755363912724-How-can-I-stake-and-auto-stake-maturity" -learn_hub_title: "How can I stake and auto-stake maturity?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I stake and auto-stake maturity? - -## Overview - -This tutorial is focused on NNS neurons. In SNS DAOs with voting rewards the concepts are very similar and the same tutorial might be helpful. - -As you stake a neuron in the NNS and participate in governance, by voting directly or by delegating your voting power to others, your neuron receives voting rewards in the form of [maturity that can be _disbursed_ or _staked_.](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons#01JJ7BJX36NH538SCDQFHSJSVD) - -## Stake maturity - -When you have available maturity, you can stake it. Staked maturity is viewed as part of the neuron's stake and contributes to the neuron's voting power. Find more information in [Voting rewards & maturity](https://learn.internetcomputer.org/hc/en-us/articles/34084120668692-Neurons#01JJ7BJX36NH538SCDQFHSJSVD). - -#### Step 1: On the [staking page](https://nns.ic0.app/neurons/?u=qoctq-giaaa-aaaaa-aaaea-cai), navigate to the neuron whose maturity you want to disburse. - -Click **Stake** in the **Maturity** section. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755822790804) - -#### Step 2: In the form that opens, select the percentage of maturity to stake. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755822791828) - -#### Step 3: After clicking **Stake** , you see an overview where you can review and confirm the action. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755783408788) - -#### Step 4: As a result of the operation, you see that now parts of your neuron's maturity is listed in the "Staked" section. - -![](https://learn.internetcomputer.org/hc/article_attachments/39755783409172) - -## Automatically stake maturity - -In order to not have to regularly perform the action of staking maturity, you can also choose to auto-stake a neuron's maturity. This means that all new maturity will automatically be added to the staked maturity. - - -#### Step 1: On the [staking page](https://nns.ic0.app/neurons/?u=qoctq-giaaa-aaaaa-aaaea-cai), navigate to the Advanced Details & Settings. - -Choose **Automatically stake new maturity**. - -#### ![](https://learn.internetcomputer.org/hc/article_attachments/39756773899028) -Step 2: In the form that opens, confirm the setting.![](https://learn.internetcomputer.org/hc/article_attachments/39756773899284) - -#### Step 3: As a result of the operation, you see that now **Automatically stake new maturity** is ticked, indicating that it is chosen for this neuron. - -![](https://learn.internetcomputer.org/hc/article_attachments/39756773899796) - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-top-up-a-neuron.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-top-up-a-neuron.md deleted file mode 100644 index 2facddc7..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/how-can-i-top-up-a-neuron.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -learn_hub_id: 42756506278804 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42756506278804-How-can-I-top-up-a-neuron" -learn_hub_title: "How can I top up a neuron?" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I top up a neuron? - -After you [create a neuron](https://learn.internetcomputer.org/hc/en-us/articles/42754119358484), you can increase the number of ICP utility tokens you have staked in that neuron to increase your voting power and rewards. For example, if you initially stake a small number of ICP utility tokens, then decide to purchase additional tokens, you have the option to create a new neuron or "top-up" your existing neuron. - -To increase the stake in an existing neuron: - -#### Step 1: On the NNS dapp, go to the Neuron Staking tab and then the table Staked ICP. Then click on a neuron. - -#### Step 2: Click Increase Stake. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756683493396) - -#### Step 3: Type the amount of ICP utility tokens you want to add to the specified neuron, then click Continue. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756695634196) - -#### Step 4: Verify the transaction details, then click Send Now. - -![](https://learn.internetcomputer.org/hc/article_attachments/42756695635476) - -#### Step 5: Once the transaction has completed, you will see the increased stake value. - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/internet-computer-dashboard.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/internet-computer-dashboard.md deleted file mode 100644 index 356b8cdd..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/governance/internet-computer-dashboard.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -learn_hub_id: 33152081370260 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152081370260-Internet-Computer-dashboard" -learn_hub_title: "Internet Computer dashboard" -learn_hub_section: "Governance" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# Internet Computer dashboard - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/cycle-burn.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/cycle-burn.md deleted file mode 100644 index af214e41..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/cycle-burn.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -learn_hub_id: 33152123370772 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152123370772-Cycle-burn" -learn_hub_title: "Cycle burn" -learn_hub_section: "Network stats" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# Cycle burn - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/network-topology.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/network-topology.md deleted file mode 100644 index 1c3dae02..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/network-topology.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -learn_hub_id: 33152148267412 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152148267412-Network-topology" -learn_hub_title: "Network topology" -learn_hub_section: "Network stats" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# Network topology - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/tx-s.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/tx-s.md deleted file mode 100644 index 63b3c25b..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/network-stats/tx-s.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -learn_hub_id: 33152121376404 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152121376404-tx-s" -learn_hub_title: "tx/s" -learn_hub_section: "Network stats" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# tx/s - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-can-i-stake-icp-with-quill.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-can-i-stake-icp-with-quill.md deleted file mode 100644 index 24a19635..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-can-i-stake-icp-with-quill.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -learn_hub_id: 43823123678100 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/43823123678100-How-can-I-stake-ICP-with-quill" -learn_hub_title: "How can I stake ICP with quill?" -learn_hub_section: "Tokens & wallets" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How can I stake ICP with quill? - -You can use `quill` to stake ICP by creating a neuron in the Network Nervous System (NNS), and subsequently manage and disburse your neuron. The benefit of this method is security: `quill` supports air-gapped operation, which enables you to keep your cryptographic keys optimally secure. We assume that you have already [prepared an air-gapped setup](https://learn.internetcomputer.org/hc/en-us/articles/41523709355668) and [transferred ICP tokens](https://learn.internetcomputer.org/hc/en-us/articles/41526165816596) to it, and that you're thus familiar with the tools – `quill` and the [Scan & Send](https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app) application – to bridge the air gap. Throughout the tutorial, we assume that your private key is stored in a file `identity.pem`, which is the same setup we assume in the other tutorials. - -## Create a neuron by staking ICP tokens - -This step assumes that you have already transferred ICP tokens to your `quill` wallet. If you haven't done so yet, please [do the initial steps](https://learn.internetcomputer.org/hc/en-us/articles/41526165816596) now. - -You can then use the neuron-stake command in quill to create the neuron, as follows: - - - $ quill --pem-file identity.pem neuron-stake --name $NAME --amount $AMOUNT --qr - -In the above command, `$NAME` can be an arbitrary string of up to 8 characters, which you can use to identify your neuron for the purposes of increasing your stake later with `quill`. For example, if you intend to have only one eight-year neuron, you could use the name `8yneuron`. This string has no meaning otherwise, and will not be visible anywhere else. You can store the string on your air-gapped computer. It is recommended that you also write the string down. - -The `$AMOUNT` is a decimal number that specifies how many ICP tokens shall be staked. The amount should not include the transaction fee, but remember that it will still be deducted from your account, so if you wish to stake everything you’ve got, stake your balance minus the 0.0001 ICP fee. - -The command generates a QR code that you need to scan with the [Scan & Send](https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/) application. After sending the transaction, the application will display a response which looks like this: - - - ( - record { - result = opt variant { - NeuronId = record { id = 5_241_875_388_871_980_017 } - }; - }, - ) - -The neuron id, `5_241_875_388_871_980_017` in this example, will be needed for subsequent steps and generally referred to as `$NEURON_ID`. - -## Set the dissolve delay of a neuron - -After creating your neuron, it is not locked. In order to participate in governance and collect staking rewards, you need to increase the dissolve delay of your neuron to at least 6 months. To increase the dissolve delay of a neuron whose id is `$NEURON_ID,` there is a command of the form: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --additional-dissolve-delay-seconds $SECONDS --qr - -This shows the `neuron-manage` subcommand, which is used to manipulate neurons after they have been staked. In this case, `$SECONDS` seconds are added to the delay time. - -The following table gives typical values for `$SECONDS`: - -**Duration** | `$SECONDS` ----|--- -six months | `15_778_800` (60 seconds * 60 minutes * 24 hours * 182.625 days) -one year | `31_557_600` (60 seconds * 60 minutes * 24 hours * 365.25 days) -four years | `126_230_400` (60 seconds * 60 minutes * 24 hours * 365.25 days * 4 years) -eight years | `252_460_800` (60 seconds * 60 minutes * 24 hours * 365.25 days * 8 years) - -If you specify a dissolve delay longer than 8 years, it will be rounded down to 8 years. - -The command will show a QR code that you need to scan with the application. - -## Increase the stake of an existing neuron - -The command is exactly the same as for creating the neuron initially, make sure to use the same value as `$NAME`. - -## Set up voting - -While you can use `quill` to vote on proposals, there is a better way: You can configure your neuron so that you can vote from a different interface, such as the [NNS dapp](https://nns.internetcomputer.org). At the same time, this method still preserves the full security of the air-gapped setup for your tokens and rewards; the setup enables the NNS dapp only for voting on proposals and setting up following. This is considered the best trade-off in terms of security and usability. - -For this setup, you need to retrieve your _principal id_ from the NNS dapp, which you can see by clicking on the person icon in the upper right corner. The principal id will look similar to this: `2xt3l-tqk2i-fpygm-lseru-pvgek-t67vb-tu3ap-k0mnu-dr4hl-z3kpn-o2e`. - -You can then add the principal id from the NNS dapp as a so-called hotkey to your neuron: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --add-hot-key $PRINCIPAL --qr - -where `$NEURON_ID` is your neuron id and `$PRINCIPAL_ID` is the principal id you copied from the NNS dapp. - -After scanning the QR code and sending the transaction to the IC, you will be able to see your neuron, configure following, and vote in the NNS dapp. - -## Disburse the voting rewards - -After you participated in governance for a certain time period (at least a few days), your neuron will accumulate maturity that can be converted into ICP tokens. You can use the following command: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --disburse-maturity --qr - -The process of disbursing maturity takes one full week. The ICP tokens will be credited to your `quill` wallet, but you can [transfer them anywhere](https://learn.internetcomputer.org/hc/en-us/articles/41526165816596) as soon as they appear. - -## Start dissolving the neuron - -After you created your neuron and increased the dissolve delay, the neuron will _not_ automatically start to dissolve. That is, unless you start dissolving the neuron, it will remain locked. Once you start dissolving it, the dissolve delay will count downward until it reaches zero, at which point you can disburse the ICP staked in the neuron. You can use the following command to start dissolving your neuron: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --start-dissolving --qr - -**Warning:** As soon as you start dissolving your neuron, you will immediately lose the entire age bonus you may have accumulated. - -## Stop dissolving the neuron - -In order to stop the neuron from dissolving, you can use the following command: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --stop-dissolving --qr - -After you stop dissolving your neuron, it will again accumulate age bonus. - -## Disburse the neuron - -When the dissolve delay of the neuron reached zero, the ICP staked in the neuron can be disbursed. You can use the following command: - - - $ quill --pem-file identity.pem neuron-manage $NEURON_ID --disburse --qr - -The ICP tokens that were staked in the neuron will be transferred to the main `quill` wallet, from where they can be transferred anywhere. - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-set-up-an-air-gapped-wallet-with-quill.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-set-up-an-air-gapped-wallet-with-quill.md deleted file mode 100644 index 6bf32260..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-set-up-an-air-gapped-wallet-with-quill.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -learn_hub_id: 41523709355668 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/41523709355668-How-do-I-set-up-an-air-gapped-wallet-with-quill" -learn_hub_title: "How do I set up an air-gapped wallet with quill?" -learn_hub_section: "Tokens & wallets" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How do I set up an air-gapped wallet with quill? - -Self-custody based on a seed phrase and an air-gapped computer maximizes control over one's tokens. The downside is that it requires significant technical skills and effort to set it up securely and to use it. - -The core idea of this method is to maintain the private keys on a computer that is air-gapped, ie. not connected to the Internet, and thus safe from remote attacks. The computer can sign the transactions but not send them to the network. The signed transactions are instead displayed on the computer screen as QR codes, and a mobile phone is used to scan and decode the QR code and send the transaction to the network. As the phone only forwards the already signed transaction and does not touch sensitive cryptographic keys, the security of this method depends entirely on the air-gapped computer. - -## Preparing your hardware and software - -The hardware requirements are fairly low. Common options are an old laptop or a [Raspberry Pi](https://www.raspberrypi.com). The below description assumes that you have set up macOS or some variant of Linux. - - 1. Install [quill](https://github.com/dfinity/quill) by downloading the appropriate version from the [releases page](https://github.com/dfinity/quill/releases) (or building it from source code, if you prefer). - 2. Make sure to deactivate any and all network connections on the computer in order to air-gap it. - - - -## Generate the seed phrase and private key - -On your air-gapped computer, run the following command: - - - % quill generate - -The command will as you for a password, print the seed phrase on the screen, and generate a file `identity.pem` that is password-encrypted and contains the private key. Write down the seed phrase and store it in a safe place. - -The command will also print your _principal id_ and your _legacy account id_. These are your public addresses, you will need them to receive tokens. The _legacy account id_ is only used for ICP tokens, such as if you send ICP tokens from a centralized exchange. The _principal id_ is used for all tokens except for ICP. The If you want to copy the addresses to your phone, you can use the command - - - % quill --pem-file identity.pem public-ids | quill qr-code --file /dev/stdin - -and scan the resulting QR code with your phone. Paste the result to a note or text file on your phone. - -## Final steps - -The method uses a seed phrase to encode the private key. The seed phrase serves as a backup in case the computer breaks or is otherwise inaccessible. Never show your seed phrase to anyone. Do not store your seed phrase on any electronic device other than the air-gapped computer. - -Write your seed phrase on a sheet of paper or use a more durable option such as a steel wallet like the [Billfodl](https://billfodl.com). As you only need your seed phrase to recover the private key on your air-gapped computer, you should store it safely in a place like a bank vault or a private safe. - -You of course also need to protect your air-gapped computer from physical access as well as using appropriate measures like strong passwords and disk encryption. - -## Additional tools - - * [Harpo](https://github.com/THLO/harpo) is an open-source tool that allows to split a seed phrase in multiple shares. - * The readme file in the [quill repository](https://github.com/dfinity/quill) will guide you through the use of quill. - - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-transfer-tokens-with-quill.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-transfer-tokens-with-quill.md deleted file mode 100644 index 9fd891ec..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/how-do-i-transfer-tokens-with-quill.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -learn_hub_id: 41526165816596 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/41526165816596-How-do-I-transfer-tokens-with-quill" -learn_hub_title: "How do I transfer tokens with quill?" -learn_hub_section: "Tokens & wallets" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# How do I transfer tokens with quill? - -This article assumes that you already [set up an air-gapped wallet with quill](https://learn.internetcomputer.org/hc/en-us/articles/41523709355668), which consists of an air-gapped computer that has [quill](https://github.com/dfinity/quill) installed together with an identity file containing a private key. Using the air-gapped wallet also requires a mobile phone and the [Scan & Send](https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/) application. - -## Transferring tokens to the air-gapped wallet - -You can display the addresses of the wallet with the following command: - - - % quill --pem-file identity.pem public-ids - PEM decryption password: [hidden] - Principal id: adett-lionk-6fxvm-cjgo2-ilfvx-7kbcj-ijzvx-3un7v-pl45j-mttb6-aae - Legacy account id: 8c38fd552fc9a6ba6cf4d574df0bb15212574f29ca3b459d2af05def37217488 - -The principal id, here `adett-lionk-6fxvm-cjgo2-ilfvx-7kbcj-ijzvx-3un7v-pl45j-mttb6-aae`, can be used to send any token that complies with the [ICRC-1 standard](https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/README.md). - -The ICP account id, here `8c38fd552fc9a6ba6cf4d574df0bb15212574f29ca3b459d2af05def37217488`, can be used to send ICP tokens from wallets that do not support the ICRC-1 standard. When sending tokens from centralized exchanges, you usually have to use this address format. - -## Transferring tokens from the air-gapped wallet - -### Transferring ICP tokens - -ICP tokens can be sent toward addresses of either of the above two formats using the following command: - - - % quill --pem-file identity.pem transfer --amount [AMOUNT] [TO-ADDRESS] --qr - -The value `AMOUNT` is the amount of ICP tokens, specified with up to 8 decimal digits. The displayed QR code can be scanned with the Scan & Send application. - -### Transferring ckBTC or SNS tokens - -Quill supports sending ckBTC and SNS tokens using the ICRC-1 address format. For ckBTC, the command is as follows: - - - % quill --pem-file identity.pem ckbtc transfer --satoshis [AMOUNT] [TO-ADDRESS] --qr - -The value `AMOUNT` is the amount of Satoshis to be sent. The displayed QR code can be scanned via the Scan & Send application. - -For SNS tokens, one first needs to create a file that contains the canister ids. For the Dragginz DAO, for example, the file `dragginz.json` would look as follows: - - - { "governance_canister_id": "zqfso-syaaa-aaaaq-aaafq-cai", "ledger_canister_id": "zfcdd-tqaaa-aaaaq-aaaga-cai", "root_canister_id": "zxeu2-7aaaa-aaaaq-aaafa-cai", "swap_canister_id": "zcdfx-6iaaa-aaaaq-aaagq-cai" } - -Given this file, the command for transferring DKP tokens is then as follows: - - - % quill --pem-file identity.pem sns transfer --canister-ids-file dragginz.json --amount [AMOUNT] [TO-ADDRESS] --qr - -## Tools used in this tutorial - - * [Scan & Send](https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/) for ICP using QR codes - * [Quill](https://github.com/dfinity/quill) for creating transactions - - - diff --git a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/icp-custody-options.md b/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/icp-custody-options.md deleted file mode 100644 index cfa5e063..00000000 --- a/.migration/learn-hub/out-of-scope/how-can-i-use-icp/tokens-wallets/icp-custody-options.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -learn_hub_id: 42139140618516 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/42139140618516-ICP-Custody-Options" -learn_hub_title: "ICP Custody Options" -learn_hub_section: "Tokens & wallets" -learn_hub_category: "How can I use ICP?" -migrated: false ---- - -# ICP Custody Options - -The following table shows who typically uses each option, how easy it is to operate, the general security profile (**assuming correct setup and operational hygiene**), and representative examples. The list is not exhaustive and is intended as a quick orientation before diving into detailed guides. - - -Category | Typical users | Ease | Security | Examples ----|---|---|---|--- -On-chain / Web | Everyday use, newcomers | High | Medium | [OISY](https://oisy.com/), [NNS dapp](https://nns.ic0.app/)*, [Stoic](https://www.stoicwallet.com/), [NFID](https://nfid.one/) -Mobile | Frequent on-the-go | High | Medium | [Plug](https://plugwallet.ooo/), [AstroX ME](https://astrox.me/), [AirGap](https://airgap.it/), [Trust Wallet](https://trustwallet.com/), [Klever](https://klever.io/en-us/crypto-wallet/icp-wallet), [Bity](https://www.bity.com/bity-wallet) -Browser extension / Desktop | DeFi users, desktop-first | High | Medium | [Plug (ext)](https://plugwallet.ooo/), [Bitfinity](https://wallet.bitfinity.network/), [MetaMask (MSQ)](https://snaps.metamask.io/snap/npm/fort-major/msq/), [Trust Wallet](https://trustwallet.com/blog/beginners-guide-to-icp), [Primevault*](https://www.primevault.com/) -Hardware / Cold / Air-gapped | Long-term holders, security-focused | Low–Medium | High | [Ledger hardware*](https://www.ledger.com/hardware-wallets), [Quill*](https://github.com/dfinity/quill), [AirGap](https://airgap.it/), [Tangem](https://tangem.com/en/cryptocurrencies/internet-computer/) -Institutional custody | Funds, companies, treasuries | High | High (operational) | [ARCHIP](https://www.archip.ch/), [BitGo](https://www.bitgo.com/), [Ceffu](https://www.ceffu.com/), [Cobo](https://www.cobo.com/), [Coinbase](https://www.coinbase.com/custody), [Copper*](https://copper.co/), [Cordial Systems](https://cordial.systems/), [DFNS](https://www.dfns.co/), [Primevault*](https://www.primevault.com/), [Sygnum*](https://www.sygnum.com/digital-asset-banking/internet-computer-icp/), [Taurus*](https://www.taurushq.com/), [Zodia](https://www.zodia.io/) - -Options marked with (*) facilitate ICP token staking. Depending on the solution, staking may be non-custodial (you retain full control of neurons) or managed (the custodian operates neurons on your behalf). Security reflects the typical risk profile assuming correct usage. Hot wallets trade some security for convenience; cold and institutional solutions prioritize protection over ease of use. Examples may include wallets, interfaces, or custody providers depending on category. - -# Quick Chooser - -Use this guide to select the custody option that suits you best. - -## Custody options with staking - -Do you want to participate in ICP governance or stake via the NNS? - -### Yes: I want full control - - * Use the [**NNS dapp**](https://nns.ic0.app/) (Web) — the canonical way to create/manage neurons, vote, and handle staking directly in your browser, or - * Advanced/offline: - * [**Ledger hardware**](https://www.youtube.com/watch?v=0-nSOBC3bxE) \+ [**NNS dapp**](https://nns.ic0.app/) — sign on hardware and manage neurons in the NNS dapp. - * [**Quill**](https://github.com/dfinity/quill) (offline CLI) — create and manage neurons, vote, and perform ledger actions with fully offline signing workflows, then broadcast from an online machine. - * [**Seed + air-gapped machine**](https://learn.internetcomputer.org/hc/en-us/articles/41523709355668) — combine with Quill for end-to-end offline staking and governance operations. - - - -### Yes: I prefer managed operations - - * Use an institutional custodian that supports ICP staking. Confirm availability and operating model (e.g., policy controls, approvals, reporting). Examples: [**BitGo**](https://www.bitgo.com/), [**Copper**](https://copper.co/), [**Primevault**](https://www.primevault.com/)[, **Taurus**](https://www.taurushq.com/), [**Sygnum**](https://www.sygnum.com/digital-asset-banking/internet-computer-icp/). - - - -## Custody options without staking - -Do you want to hold ICP tokens but don't plan to stake? - -### Yes: prefer someone else to hold the keys - - * Choose institutional custody (audits, contractual safeguards, SLAs). - * If you instead want an exchange account (CEX) for trading convenience rather than long-term custody, see: - * [CoinMarketCap list of ICP exchanges](https://coinmarketcap.com/currencies/internet-computer/#Markets) - * [CoinGecko list of ICP exchanges](https://www.coingecko.com/en/coins/internet-computer) - - - -### Yes: prefer self-custody with maximum ease - -The most convenient path is a web/on-chain wallet. Popular choices are [**OISY**](https://oisy.com/) (no install) and the [**NNS dapp**](https://nns.ic0.app/). - - * Fast setup; minimal maintenance. - * Good for everyday balances and newcomers. - * Check required features (e.g., SNS support, multisig, token standards) before committing. - - - -### Yes: prefer self-custody with maximum control - -For tighter control and a smaller software attack surface, use hardware/cold workflows such as [Ledger](https://www.youtube.com/watch?v=0-nSOBC3bxE) (with [Ledger Wallet](https://shop.ledger.com/pages/ledger-wallet) for management interface) or [seed + air-gapped machines](https://learn.internetcomputer.org/hc/en-us/articles/41523709355668) (with [Quill](https://github.com/dfinity/quill) to sign ledger transactions offline). - - * Highest control; greatest responsibility for backups and recovery. - * Best for large/long-term holdings. - * Practice recovery and small test runs before moving significant funds. - - - -# Risk & best practices - - * **Backups:** Store seeds/recovery materials across two or more physically separate, offline locations. - * **Phishing hygiene:** Bookmark official URLs (e.g., NNS dapp); verify certificates and domain spelling. - * **Device health:** Keep firmware up-to-date (hardware wallets) and maintain clean OS/app environments (hot wallets). - * **Least privilege:** Use hotkeys / separate accounts for daily use; keep cold storage isolated. - * **Change control:** For teams/treasuries, enforce multi-approver or MPC policies where available. - * **Test first:** Do small transfers and dry-runs of recovery before high-value actions. - - - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/decentralization.md b/.migration/learn-hub/out-of-scope/what-is-icp/decentralization.md deleted file mode 100644 index f611e27f..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/decentralization.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -learn_hub_id: 44009922536852 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/44009922536852-Decentralization" -learn_hub_title: "Decentralization" -learn_hub_section: "Decentralization" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# Decentralization - -In the context of blockchains, “decentralization” [is defined by Wikipedia](https://en.wikipedia.org/wiki/Decentralization#Blockchain_technology) as: - -_“Decentralization [in blockchains] refers to the transfer of control and decision-making from a centralized entity (individual, organization, or group thereof) to a distributed network. Decentralized networks strive to reduce the level of trust that participants must place in one another, and deter their ability to exert authority or control over one another in ways that degrade the functionality of the network.”_ - -All blockchains rely on a consensus protocol to come to agreement on the state of the network. The higher the decentralization of a network, the more individual actors need to coordinate to come to an agreement. In a centralized or low-decentralization system, one or a handful of entities would be sufficient to establish the state of the system. - -Vitalik Buterin [described decentralization](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) along three independent axes: - - 1. **Architectural (de)centralization** — how many physical computers is a system made up of? How many of those computers can it tolerate breaking down at any single time? - 2. **Political (de)centralization** — how many individuals or organizations ultimately control the computers that the system is made up of? - 3. **Logical (de)centralization** — does the interface and data structures that the system presents and maintains look more like a single monolithic object, or an amorphous swarm? One simple heuristic is: if you cut the system in half, including both providers and users, will both halves continue to fully operate as independent units?” - - - -Buterin described blockchains as being **architecturally decentralized** (many computers), **politically decentralized** (many entities), but **logically centralized** (one commonly agreed state). - -This article focuses on the architectural and political decentralization of ICP. - -## Why Decentralization Matters - -Decentralization is key to making web3 dapps run in a trustless manner. Vitalik Buterin broke it down into three core benefits one gets from decentralized computer networks like blockchains: - - 1. **Fault tolerance** — decentralized systems are less likely to fail accidentally because they rely on many separate components that are not likely. - 2. **Attack resistance** — decentralized systems are more expensive to attack and destroy or manipulate because they lack sensitive central points that can be attacked at much lower cost than the economic size of the surrounding system. - 3. **Collusion resistance** — it is much harder for participants in decentralized systems to collude to act in ways that benefit them at the expense of other participants, whereas the leaderships of corporations and governments collude in ways that benefit themselves but harm less well-coordinated citizens, customers, employees and the general public all the time. - - - -For token holders, smart contract developers, or dapp users this means a more decentralized network would be: - - * More resilient to computer or systems faults - * More resilient to attacks by malicious actors - * More resistant to collusion by entities within the network to harm the network - - - -## Measuring Decentralization - -To help measure and improve decentralization, a common index used in the blockchain world is the [Nakamoto Coefficient](https://news.earn.com/quantifying-decentralization-e39db233c28e): - -_“The basic idea is to (a) enumerate the**essential subsystems** of a decentralized system, (b) determine how many entities one would need to collude or be compromised to control each subsystem, and (c) then use the minimum of these as a measure of the effective decentralization of the system. The higher the value of this minimum Nakamoto coefficient, the more decentralized the system is.”_ - -In practice, determining the NC (Nakamoto Coefficient) to particular chains is more art than science, but it helps provide a good way to identify bottlenecks, the growth or decentralization within a blockchain. Please note: comparing NCs across blockchains can be very imprecise and akin to comparing “apples to oranges.” - -To measure decentralization, a common pattern in blockchains is: - - 1. Identify the subsystems of a blockchain - 2. For each subsystem, determine the subsystem’s NC (the # of entities necessary to compromise to control it) - 3. The subsystem with the _minimum_ NC represents the best holistic measure of decentralization - - - - - - - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/icp-subsystems.md b/.migration/learn-hub/out-of-scope/what-is-icp/icp-subsystems.md deleted file mode 100644 index 5f69998d..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/icp-subsystems.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -learn_hub_id: 44549459496596 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/44549459496596-ICP-subsystems" -learn_hub_title: "ICP subsystems" -learn_hub_section: "Decentralization" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# ICP subsystems - -ICP has multiple levels of subsystems and decentralization. Using the metaphor of a stack, they are (from top to bottom): - -**1\. “Common Good” apps on the IC** - - * These are apps the community uses, often as public goods - * These are controlled by NNS DAO or individual DAOs (e.g. Internet Identity, NNS frontend dapp, SNS) - * Examples of such apps: - * NNS dapp - * Code repository: - * Canister: [qoctq-giaaa-aaaaa-aaaea-cai](https://dashboard.internetcomputer.org/canister/qoctq-giaaa-aaaaa-aaaea-cai) - * Internet identity - * Code repository: - * Canister: [rdmx6-jaaaa-aaaaa-aaadq-cai](https://dashboard.internetcomputer.org/canister/rdmx6-jaaaa-aaaaa-aaadq-cai) - - - -**2\. Protocol Governance** - - * ICP is controlled by the NNS DAO - * All changes to the protocol or the topology are directly driven by decisions of the DAO - * See [Dashboard: Governance](https://dashboard.internetcomputer.org/governance) - - - -**3\. Infrastructure Layer** - - * Nodes are the physical layer of ICP (how & which nodes participate in the network) - * See [Dashboard: Network](https://dashboard.internetcomputer.org/network) - - - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/not-all-transactions-are-equal.md b/.migration/learn-hub/out-of-scope/what-is-icp/not-all-transactions-are-equal.md deleted file mode 100644 index bef4f0a4..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/not-all-transactions-are-equal.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -learn_hub_id: 39158902116884 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/39158902116884-Not-All-Transactions-Are-Equal" -learn_hub_title: "Not All Transactions Are Equal" -learn_hub_section: "Performance" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# Not All Transactions Are Equal - -Whilst it is typical for blockchains to flaunt metrics around transactions per second (TX/s) or transactions per day (TX/d), comparisons between blockchains only make sense when those transactions are roughly equivalent, i.e., TX/s comparisons only make sense to compare within a single problem domain. - -The Internet Computer is a blockchain-based platform designed to function as a decentralized World Computer. As a consequence, the IC typically performs more demanding computations in a single step than most other blockchain networks. - -This page aims to explain the differences between the work performed on ICP vs Ethereum. - -## ETH vs. ICP execution throughput - -Both ETH and ICP are able to run (general-purpose) smart contracts. At the execution layer, contracts are translated to a lower-level virtual-machine-interpretable language. These are EVM in the case of ETH and a Wasm-compatible runtime in the case of ICP (see [ICP Execution Layer article](https://learn.internetcomputer.org/hc/en-us/articles/34208985618836) for an introduction). Both EVM and Wasm instructions include arithmetic instructions (e.g., add, mul, div), but also more smart-contract specific instructions (e.g., reading and writing memory). The latter are in general more expensive operations in terms of consumed resources, which is then translated into the amount of gas used for each opcode of ETH and [cycles](https://learn.internetcomputer.org/hc/en-us/articles/34573913497108) for ICP. - -To compare the overall throughput of the two blockchains (i.e., how many operations per second can be handled), one needs to make several assumptions. The first is that simpler EVM instructions (e.g., add, mul, div, etc.) are roughly equivalent to the Wasm instructions of the same type, both kinds being translated to a similar x86 instruction executed by the hardware. The comparison is much more complex and not apples-to-apples for the more complex operations. For a proper comparison here one would need to either (1) thoroughly understand the design of both execution layers, or (2) run a similar program/benchmark on both systems and compare their overall performance. These two options are time-consuming and would lead to longer-term research efforts. For a quicker comparison, one can instead assume that all EVM instructions are equal in terms of gas cost (and also assume no fees are involved). Since ETH is currently burning approximately **108.3B gas units per day** (, as of Sept 16, 2024), and assuming each instruction costs 1 gas unit (which vastly _underestimates_ the costs of memory access operations), it is clear that the ETH blockchain is running less than 109B instructions per day. - -In sharp contrast, the IC executed more than 110B replicated Wasm instructions per **second** on Sept 16, 2024. Under the simplifying assumption that all instructions are comparable, this means the IC runs the daily load of ETH instructions in less than 1 second. - -Ethereum executed about 1.102M transactions on September 16, 2024 ([https://ycharts.com/indicators/ethereum_transactions_per_day](https://ycharts.com/indicators/ethereum_transactions_per_day#:~:text=Ethereum%20Transactions%20Per%20Day%20is,completed%20on%20the%20Ethereum%20network.)), which means that there were on average 0.098M = 98000 instructions per transaction that day. For the same day, the dashboard of the IC shows that 110B instructions/s were executed for about 8500 replicated calls/s, amounting to an average of more than 12.9M instructions per call. To compare the work intensity of the two blockchains, we take the number of instructions executed per replicated call on ICP and divide it by the number of instructions per transaction on Ethereum. By this measure, ICP performs roughly 130× more computational work per transaction. It's important to note that the multiplier is calculated only considering replicated calls as these are the interactions that carry out ETH equivalent work. - -To compare the two networks in terms of efficiency, one also needs to consider the replication factor. In ICP the typical replication factor for a subnet is 13 versus approximately 1.5M for Ethereum (a number that is steadily increasing ). While not a direct apples-to-apples comparison (since Ethereum validators do not all execute every transaction, whereas ICP subnet nodes do), this highlights how the ICP can achieve consensus with significantly less replicated execution overhead whilst retaining a high level of security, setting it apart from traditional blockchain architectures. - -## ETH vs ICP EdDSA verification - -To get a view on the validity of the above calculations in a real-world setting, comparisons can be made by running a given function. A realistic function that is used often in the blockchain setting is signature verification. - -Previous work from the Ethereum Foundation estimates that validating an EdDSA signature costs around 500K in Gas ([source](https://ethresear.ch/t/verify-ed25519-signatures-cheaply-on-eth-using-zk-snarks/13139)). One way to get a comparison on the IC is to create a canister, import the [Rust ed25519 library](https://docs.rs/ed25519/latest/ed25519/) and test verification by creating a signature on a hash of an arbitrary message and using that for verification. Counting [cycles](https://learn.internetcomputer.org/hc/en-us/articles/34573913497108) burned before and after this call, discounting the base cost (i.e., cycles charged for ingress and for running an update call) results in a cycle cost of 4,211,120. - -Putting a dollar cost on this comparison, with a conservative assumption that 1 Gas costs 40 GWEI and 1 ETH being priced around $1,800, an EdDSA verification on Ethereum currently costs around $36. Considering the cycle cost (4,211,120) on the IC with 1 XDR exchanging for $1.3476 yields a cost of $0.00000567490 to run an EdDSA verification on the IC. Overall, this suggests that the IC is 6,343,718 times less costly for a standard computation. - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/performance-comparison.md b/.migration/learn-hub/out-of-scope/what-is-icp/performance-comparison.md deleted file mode 100644 index 07ad1176..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/performance-comparison.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -learn_hub_id: 39314351721492 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/39314351721492-Performance-Comparison" -learn_hub_title: "Performance Comparison" -learn_hub_section: "Performance" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# Performance Comparison - -Given the rapid pace of innovation, periodic assessments are crucial to gauge the progress of the Internet Computer towards the [World Computer vision](https://learn.internetcomputer.org/hc/en-us/articles/33624077003668). - -In this article, we evaluate ICP alongside other blockchain projects using metrics that reflect what constitutes a good Web3 experience, categorized into core protocol, developer experience, and user experience. - -Unless otherwise stated, metric data corresponds to July 13, 2025. - -## Core Protocol - -This section compares standard metrics used to assess the core protocol performance of popular blockchain projects. Note that these metrics cannot always be taken at face value. While references to where the figures can be found are given below, it is not always clear how these figures were obtained. Additionally, parts of different projects may have the same name, but are often constructed differently (most notably, transactions), and so should not be compared blindly like-for-like. The[ a16z blog](https://a16zcrypto.com/why-blockchain-performance-is-hard-to-measure/) has a nice article describing how the industry should think about metrics. - -| Average MIEPS | Average TPS | Average finality | Average block time | Average TX cost | Average energy consumption | Network size | Onchain storage cost ----|---|---|---|---|---|---|---|--- -ICP | 75,000 | 1,176 | 0.64 s | [0.50 s](https://ic-api.internetcomputer.org/api/v3/daily-stats?start=1746662500&end=1746662500&format=json) | $3.3E-8 = $0.000000033 | 0.003 Wh/tx | [571](https://ic-api.internetcomputer.org/api/v3/daily-stats?start=1746662500&end=1746662500&format=json) | [$5.35](https://internetcomputer.org/docs/building-apps/essentials/gas-cost) -Avalanche | [5.42](https://stats.avax.network/dashboard/overview/) | 3.99 | [0.8 s](https://build.avax.network/academy/avalanche-fundamentals/02-avalanche-consensus-intro/04-tps-vs-ttf) | [1.48 s](https://chainspect.app/chain/avalanche?range-cm=month) | $0.006 | 0.395 Wh/tx | [1,367](https://snowtrace.io/validators) | -Cardano | 2 | 0.37 | [120 s](https://chainspect.app/chain/cardano?range-cm=month) | [20.13 s](https://chainspect.app/chain/cardano?range-cm=month) | $0.193 | 1.27 Wh/tx | [2,998](https://cardanoscan.io/pools) (stake pools) | $2,174 -Ethereum | [1.5](https://ycharts.com/indicators/ethereum_gas_used_per_day) | 14.37 | [12 min](https://chainspect.app/chain/ethereum?range-cm=month) | [12.09 s](https://chainspect.app/chain/ethereum?range-cm=month) | $0.659 | 0.956 Wh/tx | [9,509](https://etherscan.io/nodetracker) | $2,993,082 -Near | [948](https://nearblocks.io/) | 67.91 | [1.8 s](https://chainspect.app/chain/near?range-cm=month) | [1.1 s](https://chainspect.app/chain/near?range-cm=month) | $0.002 | 0.602 Wh/tx | [253](https://nearblocks.io/node-explorer) | $1,296 -Solana | [1,250](https://solanacompass.com/statistics) | 1,199 | [12.8 s](https://chainspect.app/chain/solana?range-cm=month) | [0.4 s](https://chainspect.app/chain/solana?range-cm=month) | $0.010 | 0.517 Wh/tx | [5,846](https://solanacompass.com/statistics/decentralization) | $57,440 - - * Average MIEPS measures millions of instructions executed per second, which is an approximation of useful work performed. For ICP, Avalanche and Solana, the calculation follows from the reported cycles / gas / compute units used in execution. For Near, we approximate it by assuming 1 Tgas corresponds to 1 ms of CPU time at 2B instructions / 1s of CPU time. For Cardano, we give the maximum capacity corresponding to 20ms of CPU time per block at 2B instructions / 1s of CPU time. For Ethereum, we go by the block gas limit (the EVM is a 32-byte stack machine; we count 1 gas as 4 CPU instructions to be generous, see [link](https://learn.internetcomputer.org/hc/en-us/articles/39158902116884) for more details). - * Average TPS measures the transactions processed per second over 30 days as reported on [Chainspect](https://chainspect.app/chain/icp?range-cm=month) on May 12, 2025. For ICP, only update calls are considered. - * Average finality refers to the amount of time that passes between the proposal of a new valid block containing transactions until the block has been finalized and its content is guaranteed to not be reversed or modified (for some blockchains, e.g., Bitcoin, this guarantee can only be probabilistic). For ICP, the reported value is the average over all subnets of their nodes' average time between starting a round until a valid finalization for this round is available. - * Average block time refers to the amount of time between blocks (per subnet on the IC) - * Average TX cost measures the cost of a transaction as reported on [Artemis Analytics](https://app.artemisanalytics.com/chains?selectedChains=avalanche%2Cethereum%2Cnear%2Csolana%2Calgorand%2Ccardano%2Cinternet-computer) on Jul 10, 2025. - * Average energy consumption measures the energy consumption to process a transaction (measured in Watt hours). Figures true as of December 2023. Source: [Carbon Crowd Sustainability Report 2023](https://assets.carboncrowd.io/reports/ICF2023.pdf). - * Size of network (nodes) notes the number of nodes currently validating the blockchain. - * On-chain storage cost gives the dollar cost of storing 1 GiB of data per year on chain. For Near and Solana, to store data one needs to maintain a specified token balance. We convert this balance to USD and annualise by multiplying by 5%. For Cardano and Ethereum, the user pays to store the data "forever", and again we annualise by multiplying this cost by 5%. - - - -## Developer Experience - -Developers always face hardware limitations, whether writing games, operating systems, or text editors. Historically, applications were restricted to limited memory, instruction sets, and demanded high power consumption. This mirrors the majority of today's blockchain landscape. Application developers contend with small stack sizes, expensive and limited persistent storage, cumbersome APIs with hidden assumptions, and inefficient chains that consume excessive power per transaction. This not only restricts deployable applications but also increases development and testing time and cost. -In contrast, ICP brings modern programming to on-chain developers. The IC programming model offers orthogonal persistence, large stack and heap spaces (6 GiB), stable storage of 500 GiB in bespoke (Motoko) and mainstream languages, such as Rust, TypeScript, or Python. - -| **Stable TX cost** | **HTTPs outcalls** | **Smart contract language support** | **Max stack size** | **Max persisted memory (per smart-contract)** | **Active developers (full-time / monthly)** | **Active repositories** ----|---|---|---|---|---|---|--- -ICP | ✅ | ✅ | Motoko (native), Rust, TypeScript, Python, C++, ... | 6 GiB | 500 GiB | 1217 / 625 | 15 K -Avalanche | ❌ | ❌ | Solidity | | | 4173 / 538 | 7.1 K -Cardano | ❌ | ❌ | Plutus (native), Haskell | | | 231 / 577 | 3.9 K -Ethereum | ❌ | ❌ | Solidity (native), Vyper, Yul, FE | 32 KiB | 2^261 B | 2500 / 7700 | 27.7 K -Near | ❌ | ❌ | Rust, Javascript | 256 KiB | 32 KiB | 240 / 777 | 14 K -Solana | ❌ | ❌ | Rust C, C++ | | | 1K / 4.2K | 67 K - - * Stable TX cost provides the ability to have predictable costs for computation. - * HTTPs outcalls is the ability to communicate directly with Web2 services (outside of the network). - * Max stack size is the maximum size the stack can grow for smart contracts and serves as a measure for the complexity of code that is supported by each platform. - * Max persisted memory is the maximum amount of persisted memory supported by each platform. Persisted memory is preserved across individual function calls. - * Active developers refers to the number of developers who made commits on more than 10 days in a month (full-time) or original code authors who made commits in a given month ([Electric Capital](https://www.developerreport.com/), July 10, 2025). - * Active repositories are sourced from the [Electric Capital crypto ecosystems list](https://github.com/electric-capital/crypto-ecosystems) (July 10, 2025). - - - -## User Experience - -Key usability criteria include privacy, identity management, and authentication. The ability to trace and monitor every user interaction in many projects is seen as a major barrier to adoption, despite the benefits of transparency. Financial privacy and freedom of interaction are paramount. -The accessibility and openness of onboarding are also measured by the tools required for user interaction. The percentage of native tokens staked is a measure of user confidence and project participation. Similarly, the number of addresses used for transactions indicates the adoption level. - -| **Privacy-preserving authentication** | **Prerequisites to use** | **Staking ratio** | **Daily active addresses** ----|---|---|---|--- -ICP | ✅ | Browser | 43.4% | 10.41 K -Avalanche | ❌ | Browser, browser extension, tokens | 51.34% | 22.78 K -Cardano | ❌ | Browser, browser extension, tokens | 60.32% | 41.37 K -Ethereum | ❌ | Browser, browser extension, tokens | 29.67 % | 37.89 K -Near | ❌ | Browser, browser extension, tokens | 45.46% | 456.45 K -Solana | ❌ | Browser, browser extension, tokens | 66.43% | 2.85 M - - * Privacy-preserving authentication notes whether a project allows privacy-preserving interactions with the blockchain. - * Prerequisites to use lists what is needed to interact with the project - * Staking ratio gives the percentage of native tokens that are staked in the protocol. The staking ratio metrics are taken from [Staking Rewards](https://www.stakingrewards.com/cryptoassets/) on July 13, 2025. - * Daily active addresses counts addresses that sent or received native currency on a given day, taken from [Artemis](https://app.artemisanalytics.com/chains?selectedChains=avalanche%2Cethereum%2Cnear%2Csolana%2Calgorand%2Ccardano%2Cinternet-computer) on July 10, 2025. - - - -## A note on decentralization - -Decentralization is key to make web3 dapps run in a trustless manner. However, decentralization has many dimensions and cannot be understood and quantified using a single number or coefficient. One can distinguish between a) the decentralization of the node providers running the machines on top of which a protocol runs, b) the decentralization of the consensus and sharding mechanism, c) the governance system, the owners of liquid tokens, etc. The whole is greater than the sum of its parts and one cannot understand the decentralization of a system without a discussion of each of these topics. - -## References - - * ICP : [IC Dashboard](https://dashboard.internetcomputer.org/) - * ADA : [Cardano explorer](https://explorer.cardano.org/en) and [cexplorer](https://cexplorer.io/) - * AVAX : [Snowtrace](https://snowtrace.io/) and [Avalanche explorer](https://subnets.avax.network/) - * ETH : [Etherscan](https://etherscan.io/) - * NEAR : [Near explorer](https://explorer.near.org/) and [Near docs](https://docs.near.org/) - * SOL : [Solana website](https://solana.com/) and [Solana beach](https://solanabeach.io/) - - - - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/what-has-happened-so-far.md b/.migration/learn-hub/out-of-scope/what-is-icp/what-has-happened-so-far.md deleted file mode 100644 index 79b5998b..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/what-has-happened-so-far.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -learn_hub_id: 33152692358036 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152692358036-What-Has-Happened-So-Far" -learn_hub_title: "What Has Happened So Far?" -learn_hub_section: "Overview" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# What Has Happened So Far? - -## From Bitcoin to the World Computer - -The first successful blockchain project, Bitcoin, revolutionized digital monetary transactions by eliminating the need for a central authority. This reduces trust, costs and latency, compared to traditional centralized banking systems. With the Bitcoin protocol, transactions are recorded in a public ledger and anyone can run a machine with the protocol, adding and verifying transactions in a secure and decentralized manner. Ethereum generalized the ledger concept from storing purely monetary transactions to generic interactions between mutually distrusting parties and made general smart contracts popular. Smart contracts are software programs that are automatically executed on agreement terms when predetermined conditions are met, without intermediaries. Due to Ethereum’s limitations and costs, only small and relatively simple programs are run on it. - -Building upon these innovations, DFINITY Foundation founder Dominic Williams envisioned a decentralized, unstoppable, and tamper-proof "World Computer" capable of hosting humanity's systems, services, data, and computations. In other words, such a World Computer would bring the benefits from smart contracts to any application. As a consequence, a World Computer can revolutionize traditional IT infrastructure often hosted on centralized hyperscalers’ cloud solutions and transform various sectors, including social media, gaming, finance, and enterprise systems. - - - -## 2016-2020 Building ICP - -To realize this vision, Dominic Williams started to conceptualize a scalable blockchain protocol capable of processing hundreds of thousands of transactions per second, drawing from his experience in developing a massive multiplayer online (MMO) game with millions of users. After establishing the non-profit foundation DFINITY, he attracted world-class experts like Ben Lynn (the L from BLS, a cryptographic signature scheme used in many blockchain protocols), Timo Hanke (developer of AsicBoost and CTO of CoinTerra), Andreas Rossberg (co-inventor of [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly), enabling high-performance code execution in web browsers) and Jan Camenisch (renowned cryptographer from IBM research), to name but a few. - -With over $100 million in funding, DFINITY built a world-class R&D composed of computer science research and engineering talents from industry giants like Google, Meta, and IBM. From 2016 to 2021, the DFINITY team designed and implemented the Internet Computer Protocol (ICP). To meet the ambitious performance and security goals, experts in languages, cryptography, distributed system, and software architecture collaborated. For example, ICP required the design and development of advanced cryptographic protocols to establish key material on nodes in a decentralized setting without assumptions on networking conditions. This was achieved through a groundbreaking non-interactive distributed key generation (niDKG) protocol and a key re-sharing protocol, both devised by cryptographer Jens Groth, who worked at DFINITY. - -ICP utilizes a unique architecture, designed towards realizing the World Computer vision. To be able to build powerful applications easily, the Motoko programming language was created. The applications running on ICP are organized into [canisters](https://learn.internetcomputer.org/hc/en-us/articles/34210839162004), processing and sending messages to each other following the [actor model](https://en.wikipedia.org/wiki/Actor_model)[.](https://en.wikipedia.org/wiki/Actor_model) For canister execution, DFINITY built a [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly)-based smart contract execution environment, when WebAssembly was still almost exclusively used in browsers, helping WebAssembly to gain a wider field of applicability. For scalability and energy-efficiency, ICP offers true sharding by partioning nodes into [subnets](https://learn.internetcomputer.org/hc/en-us/articles/34206453538964). Each subnet hosts a set of canisters which can make progress independently from other subnets, yet messages between canisters residing on different subnets are exchanged seamlessly. - -## 2021 Mainnet launch - -In May 2021, the Internet Computer underwent its genesis event, marking its transition to a decentralized production network. The protocol was launched on a sovereign network of 389 specialized node machines, owned and operated by independent node providers, distributed across 16 data centers worldwide. - -The genesis event also marked the kick-off of a novel governance system called the [Network Nervous System (NNS)](https://learn.internetcomputer.org/hc/en-us/articles/33692645961236). The NNSs consists of a set of canisters responsible for the token economics and a voting system which allows token holders to decide on the network’s future behavior. More precisely, token holders can vote on configuration changes and trigger autonomous updates of the NNS’s canister code as well as the code for the whole network protocol. - -Remembering passwords to log into applications is painful and error-prone. To avoid this problem, ICP offered [Internet Identity (II)](https://learn.internetcomputer.org/hc/en-us/articles/33152205747348) based on WebAuthn and Passkeys already at launch, years before these technologies became widely adopted. - -To make trying out canister development as easy as possible, Motoko Playground was launched in the months following mainnet launch. It allows developers to create and deploy canister smart contracts from a standard browser, without any extensions or downloading any software. And of course, the Motoko Playground is actually an application running on the IC as well. - -By the end of the first year, 451 nodes were part of the network, located in 24 data centers, together producing 30 blocks per second, more than 15k canister smart contracts were deployed on ICP and almost 2 million Internet Identities were created. Furthermore, concepts and first prototypes for the interaction with the outside world were being designed and developed. - -## 2022 - 2025 Network Evolution - -In the years since launch, the Internet Computer Protocol has been extended with powerful capabilities to come closer to the World Computer vision. To achieve this, improvements in the following four categories are crucial: - - 1. _Giving More Control and Privacy to Users:_ A World Computer should empower users to safeguard their data and digital assets and decide themselves who can access their data and digital assets. - 2. _Performance and Security:_ A World Computer must be able to handle a massive scale of computations and data, while ensuring the security and reliability of the network. High performance and robust security measures are essential for building trust and attracting users to the platform. - 3. _Interoperability with Traditional IT and Blockchains:_ To benefit from the strengths provided by existing systems, a seamless transfer of data and value between different systems is needed. - 4. _Developer and User Experience:_ A World Computer should be accessible to a wide range of developers and users. This requires intuitive development tools, user-friendly interfaces, and seamless interaction between applications. - - - -### Giving more control and privacy to users - -In most wide-spread applications today, users surrender control over their personal data and assets to centralized entities, e.g., when interacting with an AI chatbot offered by Big Tech. This paragraph describes features developed in the years since launch to offer a solution enabling user-controlled applications, including the decision power over where they run, when and how software gets upgraded and who has access to what data. - -Inspired by the NNS governance approach, a set of canisters forming a [Service Nervous System (SNS)](https://learn.internetcomputer.org/hc/en-us/articles/34084394684564) was developed. They allow a community of token holders to control and update the code of an application. An SNS can be used to raise the initial funding for an application, which can then be used to remunerate teams working on an application’s evolution and adoption based on community decisions. Similarly, the code of an SNS dapp can only be upgraded to a new version when enough community members vote for adoption. The first Test SNS was launched in 2022, one year later, already 11 SNSs had been created and in the meantime there are almost 30 SNSs holding funds in the order of several millions of USD. - -Verifiably Encrypted Threshold Keys, or [vetKeys](hc/en-us/articles/01JJC57VBB7W1W5BCQFZGYTEPS) for short, have been available in production since 2025. vetKeys facilitate key management, data privacy, and security. It allows canisters to obtain an encrypted value that can be used for symmetric, public-key, or identity-based encryption. With vetKeys users can benefit from end-to-end encryption, without having to remember decryption keys or passwords, as the key management is provided by ICP. - -Moreover, Internet Identity has been extended to offer [Verifiable Credentials (VCs)](https://internetcomputer.org/docs/current/developer-docs/identity/verifiable-credentials/overview) in 2024. With the VC protocol, canisters can determine if a user has a certain credential in a tamper-evident and privacy-preserving manner. For example, a user can prove to be over 18 without having to share all details from their ID card to a dapp. The first dapps using this protocol have been implemented, e.g., users can prove to OpenChat that they are unique human based with DecideAI’s face recognition. - -### Performance and Security - -To extend the range of applications which can be run on ICP, its performance and security were improved in the years after launch. Now, each canister can address up to 500 GB of memory (compared to 8GB at launch) and many more subnets have been added to increase the compute capacity of the network. - -Today, each subnet can host up to 100k canisters and the scheduling and memory management mechanisms have been tweaked to meet the growing loads’ usage patterns. On the security side, the original set of nodes from launch has been complemented with better machines featuring the ability to run encrypted VMs in the future. Moreover, the subnets hosting critical assets have been strengthened with more nodes to reduce the trust placed in individual nodes. Additional security mechanisms, e.g., canister sandboxing, key rotation and transport protocol changes have been introduced, to keep the users’ assets safe. - -### Interoperability with traditional IT infrastructure and blockchains - -Traditionally, smart contracts can only operate on inputs and state stored on their blockchain, i.e., they are not able to use information from the outside without additional trust assumptions. Yet, many applications require access to information stored on traditional servers. The [HTTPs outcalls](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/advanced-features/https-outcalls/https-outcalls-overview) feature developed in 2022 enables canister smart contracts to gather such data in a trustworthy manner. Using this feature, stock prices, football scores or IoT data can be fetched directly from web servers publishing such data and then processed by canister smart contracts, without relying on trusted third party services. - -Moreover, ICP was extended to interact with other blockchains. In 2022, ICP brought programmability to Bitcoin. This was achieved by two innovations, network-level interaction between ICP and Bitcoin and chain-key signatures, which together form [Bitcoin integration](https://learn.internetcomputer.org/hc/en-us/articles/34209531762324). Network-level interaction lets canisters read the Bitcoin blockchain and send messages to the Bitcoin nodes directly, without any intermediaries. [Chain-key signatures](https://learn.internetcomputer.org/hc/en-us/articles/34209497587732) enable canisters to control a Bitcoin address and sign Bitcoin transactions. In 2024 support for additional signature schemes was added, which enables canisters to build applications for Ordinals and token standards like BRC-20 and Runes. - -To interact with Ethereum, as well as other chains using the Ethereum Virtual Machine (EVM), canisters can now send transactions to EVM chains nodes and get EVM chain data from several EVM chains via the [EVM RPC canister](https://internetcomputer.org/docs/current/developer-docs/multi-chain/ethereum/evm-rpc/overview/). This canister relies on the chain-key signature and HTTPs outcalls features mentioned above. - -Among other applications, Bitcoin and Ethereum integration has been used to bring digital token twins to ICP. These twin tokens, called [chain-key tokens](https://learn.internetcomputer.org/hc/en-us/articles/34211397080980), including ckBTC, ckETH, ckUSDC, and ckUSDT, are fully backed by their native tokens and controlled by a canister smart contract. This comes with high security guarantees and lets smart contracts on ICP to hold and transact these tokens at high speed and low cost. - -### Developer and User Experience - -The ideal world computer will be easy to program for and a pleasure to use, providing an experience superior to today’s web applications. To approach the former, canister developers can benefit not just from more documentation and examples, but improved tooling simplifying testing, deployment, benchmarking and operations. For example, canisters can now use [timers](https://internetcomputer.org/docs/current/motoko/main/base/Timer/) and thus execute code automatically after a specified delay without external triggers. Debugging and optimizing canisters is now simpler thanks to [canister logs](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/maintain/logs/), [performance counters](https://internetcomputer.org/docs/current/references/samples/rust/performance_counters/) and [metrics](https://internetcomputer.org/docs/current/developer-docs/security/security-best-practices/observability-and-monitoring/) accessible to developers. [Motoko memory persistence](https://internetcomputer.org/docs/current/motoko/main/canister-maintenance/orthogonal-persistence/enhanced) was enhanced to make it easier to upgrade canisters to new versions. To simplify the interaction of applications developed by separate teams, [standards](https://github.com/dfinity/ICRC) for ledgers, wallet integration and verifiable credentials were developed. - -To improve user experience, caching and latency-aware request routing have been implemented. This, combined with network and consensus protocol optimizations, has reduced the average end-to-end latency for state-changing calls by over 40%. This brings ICP closer to the performance levels expected from traditional infrastructures, with an average latency of around 1.5 seconds, depending on load and subnet size. Additionally, the user experience for Internet Identity and governance applications has been improved through design changes and streamlined workflows - -In summary, the advancements in the four categories described above enabled the ICP developers to deploy more than 700k canister smart contracts, which occupy more than 6 TB of state and process more than 6000 messages per second. Thousands of NNS proposals have been voted on, among other things, they led to the upgrade of the whole protocol more than 200 times. Several tens of thousands users log into dapps with Internet Identity per day. Decentralization and capacity have been increased, so today the network is kept up and running by more than 1200 nodes located in 105 datacenters geographically distributed across 22 countries. In other words, the IC more than tripled in size. - -## A thriving community - -The Internet Computer community is fast-growing and strong. There are now thousands of developers building on the Internet Computer network, and thousands of applications running on it. Indeed, the developer community regularly clocks more GitHub commits than any other in the blockchain industry. - -Projects running on the Internet Computer are unique in the industry because they run entirely on a decentralized protocol, without reliance on traditional cloud computing. This was already the case for the very first applications, released in 2021. Among them are social networks, messaging services, NFT marketplaces, and wallets. They showcase how an application which is capable of more than ledger transactions can run on decentralized infrastructure at webspeed, including full frontends, forming a fully decentralized application. See [link to ICP ecosystem page](https://internetcomputer.org/ecosystem) for an overview of the applications running on ICP. - -The fast-growing Internet Computer community is focused on building out a new Web3 ecosystem, and eventually moving the vast majority of online systems and services onto the Internet Computer, in a replacement of traditional IT. - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/what-is-icp.md b/.migration/learn-hub/out-of-scope/what-is-icp/what-is-icp.md deleted file mode 100644 index 29489ccf..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/what-is-icp.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -learn_hub_id: 33152818663444 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33152818663444-What-is-ICP" -learn_hub_title: "What is ICP?" -learn_hub_section: "Overview" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# What is ICP? - -ICP, the Internet Computer Protocol, is the protocol that underlies the Internet Computer. The Internet Computer extends the Internet by enabling anyone to install and run software on the network. The software running on top of ICP includes anything from social media, enterprise applications, or personal websites to new AI applications such as chat bots. In contrast to centralized cloud platforms, the Internet Computer Protocol is decentralized, which means that it runs on many node machines that are distributed around the world and maintained by independent node providers. - -## Why ICP rather than traditional Backend IT & cloud providers? - -The decentralization of ICP provides the following key advantages compared to traditional backend IT and cloud providers. - - 1. **User-owned applications and data:** Users can control applications, including how they evolve and what happens to the data. For such applications, no single party can unilaterally change the application or the users' data. This is enabled by ICP's built-in access control determining not only who has access to data but also who can change an application. - 2. **Tamperproof:** ICP provably guarantees the integrity of the protocol and applications running on it, even if some node machines are malicious. - 3. **Verifiable:** Applications run on ICP can be fully verifiable so that users know what code they interact with and what happens to their assets and data. For verifiability, the results generated on the platform are jointly signed by the nodes using a protocol. This guarantees that as long as enough of the node machines are honest, anyone interacting with an application on ICP can check that the result is what it should be and no one can have changed it. - 4. **Robustness and Availability:** ICP is resilient against machines that are faulty or unavailable, for example due to bugs or catastrophic events that cause outages or destroy data centers. It remains available even if some providers of node machines decide to stop supporting the platform. This is achieved as ICP is run by many independent parties distributed all over the globe and because these nodes run a fault-tolerant decentralized protocol. This means that the protocol cryptographically ensures integrity of the programs and data as long as a large enough portion (more than two thirds) of the participating nodes are honest. - - - -All these properties and the mechanisms that achieve them are explained in detail in the section [How Does the Internet Computer Work](https://learn.internetcomputer.org/hc/en-us/articles/33694833025172). Together, they realize the [web3](https://en.wikipedia.org/wiki/Web3) vision of an Internet which empowers users with full ownership and control over their online experiences. - -#### Example: Chat application - -To illustrate the above properties, let us consider a chat application. Assume for example, that you are the creator of such an application. If the application is hosted on a single server, then the server could be destroyed due to a storm and the application would not be available to users. If the application is hosted on a cloud provider, usually the cloud provider would ensure that there is some redundancy over different machines and robustness is provided. However, this cloud provider is a single entity that must be trusted: if the cloud provider does not protect the servers, decides to turn them off or restricts access to them for people from certain regions (due to changes in business strategy or regulation), the chat application is not working properly - users from some regions might all of a sudden be unreachable. In contrast, if the chat application is deployed on ICP, there is no single party that must be trusted. ICP is built such that it can tolerate buggy or misbehaving machines and parties. Therefore, ICP seamlessly provides availability and is tamperproof. - -ICP also adds another element that protects the users and ensures that they can fully verify the programs or applications that they are interacting with. Let's again take the chat app as an example. To convince the users that the chat app is implemented well and does not have any bugs or even malicious backdoors to read along with messages or modify them, the developer can open source the code of the app. However, even if users carefully inspect the code, they often have no way of verifying that the application that they interact with is in fact running the code that they have checked. ICP provides this property and ensures that users can verify that a program they interact with is the one that was compiled from a given code. This can even be taken a step further by Open Internet Services that allow users to co-own an application and collectively decide whether and how it is changed. This means that the users of the chat app cannot only decide how the app's functionality is evolved but also have full control over the messages and pictures that they have sent around. This facilitates a more open and inclusive Internet. - -## Why ICP rather than another blockchain? - -The Internet Computer Protocol is a blockchain-based protocol. Compared to other blockchains, ICP has the following advantages. - - * **Users' full ownership of code and data:** ICP is able to host entire general-purpose applications, including all data and the frontend components. Together with the built-in access control, this ensures that entire applications with all their components and data can be fully owned and controlled by users. - * **Seamless user experience:** For interacting with applications on blockchains, users often need to have special accounts and pay for certain interactions. In contrast, users can interact with applications and websites running on ICP in the same way as they interact with traditional applications and websites (on traditional infrastructure). They can read a website in their browser and don’t need to install any special software or extensions to do so. - * **Flexible integration with existing infrastructure and other chains:** ICP enables applications to interact with existing infrastructure, such as websites and tools, through standard Internet protocols. Moreover, applications can also interact with other blockchains. This means that developers are not locked into one platform and can build on components that already exist. - * **Flexibility in programming language:** Developers can build applications using different programming languages. This includes Motoko, which is a language built specifically for ICP and designed to make ICP features easily accessible. It is also possible to use existing languages such as Rust, Python, or Typescript, which ensures a low entry barrier for experienced developers moving to ICP from another platform. - - - -Users can interact with applications on ICP seamlessly because end-users do not need to directly pay for their activity and because the performance is comparable to traditional infrastructure. Applications can be hosted fully on ICP due to the low cost for compute and storage and due to the fact that ICP is scalable and can provide more infrastructure when needed. Another important factor is that, in contrast to other blockchains, ICP supports upgrading applications while keeping their data in a verifiable way, which is needed to evolve applications with changing user needs. The applications that are deployed on ICP can be written in different languages, as they are deployed in a format called WebAssembly, which many other languages can be compiled to. - diff --git a/.migration/learn-hub/out-of-scope/what-is-icp/what-is-the-vision-behind-icp.md b/.migration/learn-hub/out-of-scope/what-is-icp/what-is-the-vision-behind-icp.md deleted file mode 100644 index 3f8bd794..00000000 --- a/.migration/learn-hub/out-of-scope/what-is-icp/what-is-the-vision-behind-icp.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -learn_hub_id: 33624077003668 -learn_hub_url: "https://learn.internetcomputer.org/hc/en-us/articles/33624077003668-What-is-the-Vision-behind-ICP" -learn_hub_title: "What is the Vision behind ICP?" -learn_hub_section: "Overview" -learn_hub_category: "What is ICP?" -migrated: false ---- - -# What is the Vision behind ICP? - -## The Internet, today - -As more and more of our daily lives happens online, the value of the data we amass, as well as our reliance upon them, also grows: the memories we record in digital photos, our communication in email, messengers, or social media platforms, our financial transaction history, legal documents, calendars, ... the list goes on. But while it seems clear that this data is _our_ data, do _we_ really own it? - -If you are like most people, your photos, email, and calendar are probably stored in some cloud service. This is extremely convenient: data can be accessed from all your devices, and you do not even have to bother with mundane things like backups. It all happens automatically. But it also means that the company that actually stores your data, and takes care of all the operations on your behalf, can revoke _your_ access to _your_ data at any point in time. And that may happen for reasons beyond your control. For example, in a past incident a faulty bot at Google [blocked hundreds of user accounts in error](https://www.businessinsider.com/markiplier-youtube-fans-heist-lost-access-google-accounts-spamming-emotes-2019-11). In such a case, you are at risk of losing access to major parts of your private data, including photos, emails, and calendar events. What would your life look like if you lost access to all that data today? - -A lot of platforms and companies do not work in your best interest either. Their offers may seem cheap or may not require any monetary payment at all, but you end up paying in a different way: with your data. Social media sites require you to give up any and all ownership rights you have on the content you post. Every crumb of data you leave across the web is used to influence your behavior via advertisement. And nowadays, most services require you to sign off on them using _your_ private data to train _their_ AI models. What will the data be used for and may any of your data leak throughout the process? You never know. But it is someone else's profits that will drive the decisions. - -In today's web, _you_ do not actually own _your_ data. - -## The Internet, tomorrow - -Pioneered by Bitcoin, the introduction of decentralized protocols built on blockchain technology restores end-user agency and removes the reliance on traditional and proprietary IT systems. It also removes the need for expensive legacy intermediaries, for example for financial applications. - -Bitcoin encodes ownership for a monetary token that can be used for payment across the Internet. Ethereum and other second-generation blockchains use smart contracts to generalize the types of tokens that they managed and implement additional functionality, like trading. Due to their technical limitations and the resulting transaction prices, however, the smart contracts as well as the objects stored on such chains are very small. A non-fungible token (NFT) representing an image, for example, generally does not contain the image itself but merely a reference to the image stored on a traditional web server, which comes with the downsides mentioned above. As such, blockchains like Bitcoin and Ethereum can truly encode ownership for a very small fraction of tasks we perform on the Internet. - -The Internet Computer Protocol (ICP) goes one step beyond by realizing the vision of a _World Computer_. That is, extending the Internet's functionality so that it becomes a universal platform upon which the ownership of all code and data can be encoded. Users can truly own the data they store online, and validate all code that is accessing or manipulating that data. This also enables new and novel systems, such as community or [DAO](https://learn.internetcomputer.org/hc/en-us/articles/34084394684564)-owned services without the need for any centralized intermediaries. ICP achieves this through a blockchain network that uses node machines operating from independent datacenters worldwide, creating a fast, seamless, and scalable network. The Internet Computer thus extends the Internet's technology stack, enabling developers and other creators to build decentralized applications and other systems that respect the users' ownership of their data. - diff --git a/docs/concepts/app-architecture.md b/docs/concepts/app-architecture.md index 868e6c67..be22c0a4 100644 --- a/docs/concepts/app-architecture.md +++ b/docs/concepts/app-architecture.md @@ -1,5 +1,5 @@ --- -title: "Application Architecture" +title: "Application architecture" description: "How ICP applications are structured: canisters, frontends, and inter-canister communication" sidebar: order: 3 diff --git a/docs/concepts/certified-data.md b/docs/concepts/certified-data.md index 2ab89c7d..3ae8703a 100644 --- a/docs/concepts/certified-data.md +++ b/docs/concepts/certified-data.md @@ -1,5 +1,5 @@ --- -title: "Certified Data" +title: "Certified data" description: "How ICP enables clients to verify query responses with a single public key check" sidebar: order: 11 diff --git a/docs/concepts/chain-fusion/bitcoin.md b/docs/concepts/chain-fusion/bitcoin.md index 9306ad26..a5c8b021 100644 --- a/docs/concepts/chain-fusion/bitcoin.md +++ b/docs/concepts/chain-fusion/bitcoin.md @@ -1,5 +1,5 @@ --- -title: "Bitcoin Integration" +title: "Bitcoin integration" description: "How ICP connects to Bitcoin natively: the adapter, the Bitcoin canister, the checker canister, and ckBTC" --- diff --git a/docs/concepts/chain-fusion/chain-key-tokens.md b/docs/concepts/chain-fusion/chain-key-tokens.md index a0b3c021..44a0a2bd 100644 --- a/docs/concepts/chain-fusion/chain-key-tokens.md +++ b/docs/concepts/chain-fusion/chain-key-tokens.md @@ -1,5 +1,5 @@ --- -title: "Chain-Key Tokens" +title: "Chain-key tokens" description: "Trustless 1:1 representations of external chain assets on ICP" --- diff --git a/docs/concepts/chain-fusion/dogecoin.md b/docs/concepts/chain-fusion/dogecoin.md index 95606538..869b42fc 100644 --- a/docs/concepts/chain-fusion/dogecoin.md +++ b/docs/concepts/chain-fusion/dogecoin.md @@ -1,5 +1,5 @@ --- -title: "Dogecoin Integration" +title: "Dogecoin integration" description: "How ICP connects to Dogecoin using the same architecture as the Bitcoin integration" --- diff --git a/docs/concepts/chain-fusion/ethereum.md b/docs/concepts/chain-fusion/ethereum.md index d0d118c1..0318f315 100644 --- a/docs/concepts/chain-fusion/ethereum.md +++ b/docs/concepts/chain-fusion/ethereum.md @@ -1,5 +1,5 @@ --- -title: "Ethereum Integration" +title: "Ethereum integration" description: "How ICP connects to Ethereum and EVM chains via HTTPS outcalls, chain-key ECDSA, and the EVM RPC canister" --- diff --git a/docs/concepts/chain-fusion/exchange-rate-canister.md b/docs/concepts/chain-fusion/exchange-rate-canister.md index ef965906..349be2ee 100644 --- a/docs/concepts/chain-fusion/exchange-rate-canister.md +++ b/docs/concepts/chain-fusion/exchange-rate-canister.md @@ -1,5 +1,5 @@ --- -title: "Exchange Rate Canister" +title: "Exchange rate canister" description: "On-chain oracle for cryptocurrency and fiat exchange rates" --- diff --git a/docs/concepts/chain-fusion/solana.md b/docs/concepts/chain-fusion/solana.md index fe370ba5..fc3e98fa 100644 --- a/docs/concepts/chain-fusion/solana.md +++ b/docs/concepts/chain-fusion/solana.md @@ -1,5 +1,5 @@ --- -title: "Solana Integration" +title: "Solana integration" description: "How canisters interact with Solana via the SOL RPC canister" --- diff --git a/docs/concepts/chain-key-cryptography.md b/docs/concepts/chain-key-cryptography.md index eed3dbe9..e47875f0 100644 --- a/docs/concepts/chain-key-cryptography.md +++ b/docs/concepts/chain-key-cryptography.md @@ -1,5 +1,5 @@ --- -title: "Chain-Key Cryptography" +title: "Chain-key cryptography" description: "Threshold signatures that enable crosschain integration, fast verification, and chain evolution" sidebar: order: 9 diff --git a/docs/concepts/edge-infrastructure.md b/docs/concepts/edge-infrastructure.md index 3930ad19..41478a88 100644 --- a/docs/concepts/edge-infrastructure.md +++ b/docs/concepts/edge-infrastructure.md @@ -1,5 +1,5 @@ --- -title: "Edge Infrastructure" +title: "Edge infrastructure" description: "How requests reach ICP canisters: API boundary nodes, HTTP gateways, the HTTP Gateway Protocol, and asset certification." --- diff --git a/docs/concepts/evolution-scaling.md b/docs/concepts/evolution-scaling.md index 72cf5da9..c8e39a54 100644 --- a/docs/concepts/evolution-scaling.md +++ b/docs/concepts/evolution-scaling.md @@ -1,5 +1,5 @@ --- -title: "Evolution & Scaling" +title: "Evolution & scaling" description: "How ICP scales horizontally through subnet creation, maintains liveness under node failures, and upgrades its protocol without forks." --- diff --git a/docs/concepts/https-outcalls.md b/docs/concepts/https-outcalls.md index fffef8d8..94324524 100644 --- a/docs/concepts/https-outcalls.md +++ b/docs/concepts/https-outcalls.md @@ -1,5 +1,5 @@ --- -title: "HTTPS Outcalls" +title: "HTTPS outcalls" description: "How canisters call external APIs and web services directly, without oracles or intermediaries." sidebar: order: 8 diff --git a/docs/concepts/index.md b/docs/concepts/index.md index df991bf0..154f6916 100644 --- a/docs/concepts/index.md +++ b/docs/concepts/index.md @@ -7,32 +7,54 @@ sidebar: Understand the ideas behind the Internet Computer before you build on it. These explanations cover architecture, capabilities, and design decisions that shape how you write ICP applications. -## Architecture +## Network -- **[Network Overview](network-overview.md)**: Subnets, nodes, consensus, and boundary nodes. -- **[Application Architecture](app-architecture.md)**: How ICP applications are structured: canisters, frontends, and inter-canister communication. -- **[Canisters](canisters.md)**: Programs that run WebAssembly, hold state, serve HTTP, and pay for their own compute. -- **[Protocol Stack](protocol/index.md)**: The four-layer architecture (peer-to-peer, consensus, message routing, execution) and protocol internals including performance benchmarks. -- **[Principals](principals.md)**: The identity model: who can call a canister, and how caller identity works. +- **[Overview](network-overview.md)**: Subnets, nodes, consensus, and boundary nodes. +- **[Node infrastructure](node-infrastructure.md)**: How ICP nodes are structured: IC-OS, virtual machine isolation, and Trusted Execution Environments. +- **[Edge infrastructure](edge-infrastructure.md)**: How requests reach ICP canisters: API boundary nodes, HTTP gateways, and asset certification. +- **[Evolution & scaling](evolution-scaling.md)**: How ICP scales horizontally through subnet creation and upgrades its protocol without forks. + +## Protocol Stack -## Core capabilities +- **[Overview](protocol/index.md)**: The four-layer architecture and how the layers interact. +- **[Peer-to-peer](protocol/peer-to-peer.md)**: How replicas discover each other and exchange artifacts. +- **[Consensus](protocol/consensus.md)**: How subnets agree on the order of messages. +- **[Message routing](protocol/message-routing.md)**: How messages are delivered to canisters after consensus. +- **[Execution](protocol/execution.md)**: How the Wasm runtime processes messages and manages canister state. +- **[State synchronization](protocol/state-synchronization.md)**: How replicas catch up after falling behind. +- **[Performance](protocol/performance.md)**: Throughput benchmarks and performance characteristics. +## Canisters & capabilities + +- **[Canisters](canisters.md)**: Programs that run WebAssembly, hold state, serve HTTP, and pay for their own compute. +- **[Principals](principals.md)**: The identity model: who can call a canister, and how caller identity works. +- **[Application architecture](app-architecture.md)**: How ICP applications are structured: canisters, frontends, and inter-canister communication. - **[Cycles](cycles.md)**: How canisters pay for their own compute, storage, and bandwidth, and why users pay nothing. -- **[Orthogonal Persistence](orthogonal-persistence.md)**: How canister memory survives across executions and upgrades without databases. -- **[HTTPS Outcalls](https-outcalls.md)**: How canisters make HTTP requests to external services with consensus on responses. -- **[Verifiable Randomness](verifiable-randomness.md)**: Cryptographically secure random numbers using threshold VRF. +- **[Orthogonal persistence](orthogonal-persistence.md)**: How canister memory survives across executions and upgrades without databases. - **[Timers](timers.md)**: Periodic and one-shot scheduled tasks via the global timer mechanism. +- **[Verifiable randomness](verifiable-randomness.md)**: Cryptographically secure random numbers using threshold VRF. +- **[HTTPS outcalls](https-outcalls.md)**: How canisters make HTTP requests to external services with consensus on responses. -## Cryptography and cross-chain +## Cryptography -- **[Chain-Key Cryptography](chain-key-cryptography.md)**: Threshold signatures that enable cross-chain integration, fast finality, and chain evolution. -- **[Certified Data](certified-data.md)**: How canisters certify query responses using the subnet's threshold BLS key. -- **[Chain Fusion](chain-fusion/index.md)**: How ICP connects to Bitcoin, Ethereum, Solana, and other blockchains natively. +- **[Chain-key cryptography](chain-key-cryptography.md)**: Threshold signatures that enable cross-chain integration, fast finality, and chain evolution. +- **[Certified data](certified-data.md)**: How canisters certify query responses using the subnet's threshold BLS key. - **[VetKeys](vetkeys.md)**: Verifiable encrypted threshold key derivation for onchain encryption and secret management. -## Trust and governance +## Chain Fusion + +- **[Chain Fusion](chain-fusion/index.md)**: How ICP connects to Bitcoin, Ethereum, Solana, and other blockchains natively. +- **[Bitcoin integration](chain-fusion/bitcoin.md)**: Native Bitcoin support via the Bitcoin canister and chain-key ECDSA. +- **[Ethereum integration](chain-fusion/ethereum.md)**: EVM chain integration via HTTPS outcalls, chain-key ECDSA, and the EVM RPC canister. +- **[Solana integration](chain-fusion/solana.md)**: Solana integration via the SOL RPC canister and chain-key Schnorr signatures. +- **[Dogecoin integration](chain-fusion/dogecoin.md)**: Dogecoin support using the same architecture as Bitcoin integration. +- **[Chain-key tokens](chain-fusion/chain-key-tokens.md)**: Trustless 1:1 representations of external chain assets on ICP (ckBTC, ckETH, and more). +- **[Exchange rate canister](chain-fusion/exchange-rate-canister.md)**: On-chain oracle for cryptocurrency and fiat exchange rates. + +## Trust & governance -- **[Security Model](security.md)**: Canister isolation, trust boundaries, and the threat model for app developers. - **[Governance](governance.md)**: The NNS, SNS for app governance, neurons, and proposals. -- **[Network Economics](network-economics.md)**: ICP token uses, voting rewards, supply dynamics, and SNS token economics. +- **[SNS framework](sns-framework.md)**: How the Service Nervous System works: architecture, launch process, neurons, and governance. +- **[Network economics](network-economics.md)**: ICP token uses, voting rewards, supply dynamics, and SNS asset configuration. - **[Ledgers](ledgers.md)**: How ICRC and ICP token ledgers work, address formats, and scaling architecture. +- **[Security model](security.md)**: Canister isolation, trust boundaries, and the threat model for app developers. diff --git a/docs/concepts/network-economics.md b/docs/concepts/network-economics.md index 0ec1928b..3525c6a3 100644 --- a/docs/concepts/network-economics.md +++ b/docs/concepts/network-economics.md @@ -1,5 +1,5 @@ --- -title: "Network Economics" +title: "Network economics" description: "How the Internet Computer's economic model works: ICP uses, governance rewards, supply dynamics, and SNS asset configuration" sidebar: order: 13 diff --git a/docs/concepts/network-overview.md b/docs/concepts/network-overview.md index abba0328..524324c6 100644 --- a/docs/concepts/network-overview.md +++ b/docs/concepts/network-overview.md @@ -1,5 +1,5 @@ --- -title: "Network Overview" +title: "Network overview" description: "How the Internet Computer works: subnets, nodes, consensus, and boundary nodes" sidebar: order: 1 diff --git a/docs/concepts/node-infrastructure.md b/docs/concepts/node-infrastructure.md index d5e28db6..bfcb53d7 100644 --- a/docs/concepts/node-infrastructure.md +++ b/docs/concepts/node-infrastructure.md @@ -1,5 +1,5 @@ --- -title: "Node Infrastructure" +title: "Node infrastructure" description: "How ICP nodes are structured: the IC-OS operating system stack, virtual machine isolation, and Trusted Execution Environments." --- diff --git a/docs/concepts/orthogonal-persistence.md b/docs/concepts/orthogonal-persistence.md index a135c3ad..92efc58d 100644 --- a/docs/concepts/orthogonal-persistence.md +++ b/docs/concepts/orthogonal-persistence.md @@ -1,5 +1,5 @@ --- -title: "Orthogonal Persistence" +title: "Orthogonal persistence" description: "How canister memory survives across executions and upgrades without databases" sidebar: order: 5 diff --git a/docs/concepts/protocol/execution.md b/docs/concepts/protocol/execution.md index ae004206..289c2712 100644 --- a/docs/concepts/protocol/execution.md +++ b/docs/concepts/protocol/execution.md @@ -1,5 +1,5 @@ --- -title: "Execution Layer" +title: "Execution layer" description: "How ICP deterministically executes canister code using WebAssembly, deterministic time slicing, and concurrent execution." sidebar: order: 4 diff --git a/docs/concepts/protocol/index.md b/docs/concepts/protocol/index.md index 51239815..81376019 100644 --- a/docs/concepts/protocol/index.md +++ b/docs/concepts/protocol/index.md @@ -1,5 +1,5 @@ --- -title: "Protocol Stack" +title: "Protocol stack" description: "The four-layer architecture that every ICP subnet runs: peer-to-peer, consensus, message routing, and execution." --- diff --git a/docs/concepts/protocol/message-routing.md b/docs/concepts/protocol/message-routing.md index 1f012710..7cbf0cf7 100644 --- a/docs/concepts/protocol/message-routing.md +++ b/docs/concepts/protocol/message-routing.md @@ -1,5 +1,5 @@ --- -title: "Message Routing" +title: "Message routing" description: "How ICP routes messages between canisters across subnets, certifies subnet state, and enables secure cross-subnet communication." sidebar: order: 3 diff --git a/docs/concepts/protocol/peer-to-peer.md b/docs/concepts/protocol/peer-to-peer.md index 49b2e134..869964d3 100644 --- a/docs/concepts/protocol/peer-to-peer.md +++ b/docs/concepts/protocol/peer-to-peer.md @@ -1,5 +1,5 @@ --- -title: "Peer-to-Peer Layer" +title: "Peer-to-peer layer" description: "How ICP nodes broadcast artifacts and exchange protocol messages using the Abortable Broadcast primitive and QUIC transport." sidebar: order: 1 diff --git a/docs/concepts/protocol/state-synchronization.md b/docs/concepts/protocol/state-synchronization.md index cf53c7df..5e70bfde 100644 --- a/docs/concepts/protocol/state-synchronization.md +++ b/docs/concepts/protocol/state-synchronization.md @@ -1,5 +1,5 @@ --- -title: "State Synchronization" +title: "State synchronization" description: "How ICP nodes join or re-join a subnet by downloading certified checkpoints instead of replaying the full block history." sidebar: order: 5 diff --git a/docs/concepts/security.md b/docs/concepts/security.md index 61e02403..459040ee 100644 --- a/docs/concepts/security.md +++ b/docs/concepts/security.md @@ -1,5 +1,5 @@ --- -title: "Security Model" +title: "Security model" description: "The IC security model: canister isolation, trust boundaries, and the threat model for app developers" sidebar: order: 13 diff --git a/docs/concepts/sns-framework.md b/docs/concepts/sns-framework.md index 8becbc6a..80c3ee06 100644 --- a/docs/concepts/sns-framework.md +++ b/docs/concepts/sns-framework.md @@ -1,5 +1,5 @@ --- -title: "SNS Framework" +title: "SNS framework" description: "How the Service Nervous System works: framework architecture, launch process, neurons, proposals, and configurable rewards" --- diff --git a/docs/concepts/verifiable-randomness.md b/docs/concepts/verifiable-randomness.md index 2b801851..6fb0d48c 100644 --- a/docs/concepts/verifiable-randomness.md +++ b/docs/concepts/verifiable-randomness.md @@ -1,5 +1,5 @@ --- -title: "Verifiable Randomness" +title: "Verifiable randomness" description: "How ICP generates unpredictable random numbers using a threshold Verifiable Random Function, with no trusted party required" sidebar: order: 7 diff --git a/docs/getting-started/choose-your-path.md b/docs/getting-started/choose-your-path.md index 39de84a4..54271c73 100644 --- a/docs/getting-started/choose-your-path.md +++ b/docs/getting-started/choose-your-path.md @@ -1,5 +1,5 @@ --- -title: "Choose Your Path" +title: "Choose your path" description: "Choose your development path based on what you want to build" sidebar: order: 3 diff --git a/docs/getting-started/project-structure.mdx b/docs/getting-started/project-structure.mdx index 611846c1..efd3eb58 100644 --- a/docs/getting-started/project-structure.mdx +++ b/docs/getting-started/project-structure.mdx @@ -1,5 +1,5 @@ --- -title: "Project Structure" +title: "Project structure" description: "Understand icp.yaml, recipes, binding generation, and the .icp/ directory" sidebar: order: 2 diff --git a/docs/guides/ai-coding-agents.md b/docs/guides/ai-coding-agents.md index 6a6c0ced..7b458caa 100644 --- a/docs/guides/ai-coding-agents.md +++ b/docs/guides/ai-coding-agents.md @@ -1,5 +1,5 @@ --- -title: "AI Coding Agents" +title: "AI coding agents" description: "ICP skills are agent-readable instruction files that teach AI coding agents how to build correctly on the Internet Computer." --- diff --git a/docs/guides/authentication/verifiable-credentials.md b/docs/guides/authentication/verifiable-credentials.md index f41894a0..6030a78f 100644 --- a/docs/guides/authentication/verifiable-credentials.md +++ b/docs/guides/authentication/verifiable-credentials.md @@ -1,5 +1,5 @@ --- -title: "Verifiable Credentials" +title: "Verifiable credentials" description: "Issue and verify credentials on ICP using Internet Identity and the VC protocol: covers issuer and relying party integration patterns." sidebar: order: 2 diff --git a/docs/guides/backends/certified-variables.md b/docs/guides/backends/certified-variables.md index 1f08272f..da8e424f 100644 --- a/docs/guides/backends/certified-variables.md +++ b/docs/guides/backends/certified-variables.md @@ -1,5 +1,5 @@ --- -title: "Certified Variables" +title: "Certified variables" description: "Return verifiable query responses using Merkle trees and certified data" sidebar: order: 5 diff --git a/docs/guides/backends/data-persistence.mdx b/docs/guides/backends/data-persistence.mdx index 564edc8d..43312ee2 100644 --- a/docs/guides/backends/data-persistence.mdx +++ b/docs/guides/backends/data-persistence.mdx @@ -1,5 +1,5 @@ --- -title: "Data Persistence" +title: "Data persistence" description: "Store and retrieve data in canisters using stable structures, persistent actors, and upgrade hooks" sidebar: order: 1 diff --git a/docs/guides/backends/https-outcalls.mdx b/docs/guides/backends/https-outcalls.mdx index 971ed7ce..7d6dae75 100644 --- a/docs/guides/backends/https-outcalls.mdx +++ b/docs/guides/backends/https-outcalls.mdx @@ -1,5 +1,5 @@ --- -title: "HTTPS Outcalls" +title: "HTTPS outcalls" description: "Make HTTP GET and POST requests from canisters to external web APIs" sidebar: order: 2 diff --git a/docs/guides/backends/randomness.md b/docs/guides/backends/randomness.md index ec94e8f3..3d7a7dda 100644 --- a/docs/guides/backends/randomness.md +++ b/docs/guides/backends/randomness.md @@ -1,5 +1,5 @@ --- -title: "Verifiable Randomness" +title: "Verifiable randomness" description: "Generate cryptographically secure random numbers in canisters using the management canister's raw_rand API" sidebar: order: 4 diff --git a/docs/guides/canister-calls/calling-from-clients.md b/docs/guides/canister-calls/calling-from-clients.md index b08cf059..0d4888bd 100644 --- a/docs/guides/canister-calls/calling-from-clients.md +++ b/docs/guides/canister-calls/calling-from-clients.md @@ -1,5 +1,5 @@ --- -title: "Calling from Clients" +title: "Calling from clients" description: "Call canister functions from frontends, scripts, and backend services using IC agent libraries" sidebar: order: 4 diff --git a/docs/guides/canister-calls/candid.mdx b/docs/guides/canister-calls/candid.mdx index 94192c60..f89732a5 100644 --- a/docs/guides/canister-calls/candid.mdx +++ b/docs/guides/canister-calls/candid.mdx @@ -1,5 +1,5 @@ --- -title: "Candid Interface" +title: "Candid interface" description: "Define and use Candid interfaces for type-safe canister communication" sidebar: order: 1 diff --git a/docs/guides/canister-calls/inter-canister-calls.mdx b/docs/guides/canister-calls/inter-canister-calls.mdx index f2aab2df..575d4a71 100644 --- a/docs/guides/canister-calls/inter-canister-calls.mdx +++ b/docs/guides/canister-calls/inter-canister-calls.mdx @@ -1,5 +1,5 @@ --- -title: "Inter-canister Calls" +title: "Inter-canister calls" description: "Call functions on other canisters from your canister code" sidebar: order: 2 diff --git a/docs/guides/canister-calls/parallel-inter-canister-calls.mdx b/docs/guides/canister-calls/parallel-inter-canister-calls.mdx index c1ed2fc6..c96b15ae 100644 --- a/docs/guides/canister-calls/parallel-inter-canister-calls.mdx +++ b/docs/guides/canister-calls/parallel-inter-canister-calls.mdx @@ -1,5 +1,5 @@ --- -title: "Parallel Inter-canister Calls" +title: "Parallel inter-canister calls" description: "Execute multiple inter-canister calls concurrently to reduce latency, especially across subnets." sidebar: order: 3 diff --git a/docs/guides/canister-management/cycles-management.mdx b/docs/guides/canister-management/cycles-management.mdx index cd11c54a..129b20c2 100644 --- a/docs/guides/canister-management/cycles-management.mdx +++ b/docs/guides/canister-management/cycles-management.mdx @@ -1,5 +1,5 @@ --- -title: "Cycles Management" +title: "Cycles management" description: "Acquire cycles, monitor canister balances, set freezing thresholds, and deploy to mainnet." sidebar: order: 7 diff --git a/docs/guides/canister-management/large-wasm.md b/docs/guides/canister-management/large-wasm.md index 9380ff03..b1e58983 100644 --- a/docs/guides/canister-management/large-wasm.md +++ b/docs/guides/canister-management/large-wasm.md @@ -1,5 +1,5 @@ --- -title: "Large Wasm Modules" +title: "Large Wasm modules" description: "Deploy canisters that exceed the 2 MiB Wasm limit using chunk store and compression" sidebar: order: 9 diff --git a/docs/guides/canister-management/lifecycle.mdx b/docs/guides/canister-management/lifecycle.mdx index aab923e0..e637c1c0 100644 --- a/docs/guides/canister-management/lifecycle.mdx +++ b/docs/guides/canister-management/lifecycle.mdx @@ -1,5 +1,5 @@ --- -title: "Canister Lifecycle" +title: "Canister lifecycle" description: "Create, deploy, upgrade, and delete canisters using icp-cli" sidebar: order: 1 diff --git a/docs/guides/canister-management/logs.md b/docs/guides/canister-management/logs.md index 1b24b691..ea2972b0 100644 --- a/docs/guides/canister-management/logs.md +++ b/docs/guides/canister-management/logs.md @@ -1,5 +1,5 @@ --- -title: "Canister Logs" +title: "Canister logs" description: "Debug and monitor canisters using the logging API, query statistics, and access log streaming" sidebar: order: 3 diff --git a/docs/guides/canister-management/optimization.md b/docs/guides/canister-management/optimization.md index f6d9777b..b3a7945e 100644 --- a/docs/guides/canister-management/optimization.md +++ b/docs/guides/canister-management/optimization.md @@ -1,5 +1,5 @@ --- -title: "Canister Optimization" +title: "Canister optimization" description: "Reduce Wasm binary size and improve canister performance with ic-wasm, SIMD, performance counters, and memory tuning" sidebar: order: 4 diff --git a/docs/guides/canister-management/reproducible-builds.md b/docs/guides/canister-management/reproducible-builds.md index 9052d044..c8ff89e1 100644 --- a/docs/guides/canister-management/reproducible-builds.md +++ b/docs/guides/canister-management/reproducible-builds.md @@ -1,5 +1,5 @@ --- -title: "Reproducible Builds" +title: "Reproducible builds" description: "Verify that deployed canister Wasm matches the source code using deterministic builds" sidebar: order: 6 diff --git a/docs/guides/canister-management/settings.mdx b/docs/guides/canister-management/settings.mdx index d1adaed5..79bdf837 100644 --- a/docs/guides/canister-management/settings.mdx +++ b/docs/guides/canister-management/settings.mdx @@ -1,5 +1,5 @@ --- -title: "Canister Settings" +title: "Canister settings" description: "Configure controllers, memory limits, freezing threshold, compute allocation, and other canister settings using icp-cli and icp.yaml" sidebar: order: 2 diff --git a/docs/guides/canister-management/snapshots.md b/docs/guides/canister-management/snapshots.md index 828f90c1..ab8002fb 100644 --- a/docs/guides/canister-management/snapshots.md +++ b/docs/guides/canister-management/snapshots.md @@ -1,5 +1,5 @@ --- -title: "Canister Snapshots" +title: "Canister snapshots" description: "Create, restore, and manage canister snapshots for backup and recovery" sidebar: order: 5 diff --git a/docs/guides/canister-management/subnet-selection.md b/docs/guides/canister-management/subnet-selection.md index e17c33a2..b1412c44 100644 --- a/docs/guides/canister-management/subnet-selection.md +++ b/docs/guides/canister-management/subnet-selection.md @@ -1,5 +1,5 @@ --- -title: "Subnet Selection" +title: "Subnet selection" description: "Choose the right subnet for your canister deployment based on geographic, security, and colocation requirements" sidebar: order: 8 diff --git a/docs/guides/chain-fusion/bitcoin.mdx b/docs/guides/chain-fusion/bitcoin.mdx index fb0d0410..047f2b51 100644 --- a/docs/guides/chain-fusion/bitcoin.mdx +++ b/docs/guides/chain-fusion/bitcoin.mdx @@ -1,5 +1,5 @@ --- -title: "Bitcoin Integration" +title: "Bitcoin integration" description: "Send and receive BTC from ICP canisters using ckBTC or the direct Bitcoin API" sidebar: order: 1 diff --git a/docs/guides/chain-fusion/dogecoin.md b/docs/guides/chain-fusion/dogecoin.md index 417d726b..e954819e 100644 --- a/docs/guides/chain-fusion/dogecoin.md +++ b/docs/guides/chain-fusion/dogecoin.md @@ -1,5 +1,5 @@ --- -title: "Dogecoin Integration" +title: "Dogecoin integration" description: "Send and receive DOGE from ICP canisters using the Dogecoin canister" sidebar: order: 4 diff --git a/docs/guides/chain-fusion/ethereum.mdx b/docs/guides/chain-fusion/ethereum.mdx index a53b0747..2264083c 100644 --- a/docs/guides/chain-fusion/ethereum.mdx +++ b/docs/guides/chain-fusion/ethereum.mdx @@ -1,5 +1,5 @@ --- -title: "Ethereum Integration" +title: "Ethereum integration" description: "Interact with Ethereum and EVM chains from ICP canisters via the EVM RPC canister" sidebar: order: 2 diff --git a/docs/guides/chain-fusion/solana.mdx b/docs/guides/chain-fusion/solana.mdx index d9548721..96fd141c 100644 --- a/docs/guides/chain-fusion/solana.mdx +++ b/docs/guides/chain-fusion/solana.mdx @@ -1,5 +1,5 @@ --- -title: "Solana Integration" +title: "Solana integration" description: "Interact with Solana from ICP canisters using the SOL RPC canister and threshold Ed25519 signatures" sidebar: order: 3 diff --git a/docs/guides/digital-assets/chain-key-tokens.mdx b/docs/guides/digital-assets/chain-key-tokens.mdx index 791f85ff..7f8f7d3e 100644 --- a/docs/guides/digital-assets/chain-key-tokens.mdx +++ b/docs/guides/digital-assets/chain-key-tokens.mdx @@ -1,5 +1,5 @@ --- -title: "Chain-Key Tokens" +title: "Chain-key tokens" description: "Deposit, withdraw, and transfer ckBTC, ckETH, ckERC20, ckDOGE, and ckSOL: ICP-native representations of external assets backed 1:1 with no bridges or custodians" sidebar: order: 2 diff --git a/docs/guides/digital-assets/wallet-integration.md b/docs/guides/digital-assets/wallet-integration.md index 7614b222..45e9357f 100644 --- a/docs/guides/digital-assets/wallet-integration.md +++ b/docs/guides/digital-assets/wallet-integration.md @@ -1,5 +1,5 @@ --- -title: "Wallet Integration" +title: "Wallet integration" description: "Integrate ICRC signer-standard wallets with your app using explicit per-action user approval." sidebar: order: 4 diff --git a/docs/guides/frontends/asset-canister.md b/docs/guides/frontends/asset-canister.md index 00ddcf57..fef8df7e 100644 --- a/docs/guides/frontends/asset-canister.md +++ b/docs/guides/frontends/asset-canister.md @@ -1,5 +1,5 @@ --- -title: "Asset Canister" +title: "Asset canister" description: "Deploy and serve frontend assets from an ICP canister with SPA routing, canister discovery, programmatic uploads, and security configuration" sidebar: order: 1 diff --git a/docs/guides/frontends/certification.md b/docs/guides/frontends/certification.md index 65ddeaf3..9b518290 100644 --- a/docs/guides/frontends/certification.md +++ b/docs/guides/frontends/certification.md @@ -1,5 +1,5 @@ --- -title: "Response Certification" +title: "Response certification" description: "Verify that frontend responses are authentic and untampered using IC certificates" sidebar: order: 3 diff --git a/docs/guides/frontends/custom-domains.md b/docs/guides/frontends/custom-domains.md index f0b9299f..a0da3875 100644 --- a/docs/guides/frontends/custom-domains.md +++ b/docs/guides/frontends/custom-domains.md @@ -1,5 +1,5 @@ --- -title: "Custom Domains" +title: "Custom domains" description: "Point a custom domain to your ICP-hosted frontend with DNS and boundary node configuration" sidebar: order: 2 diff --git a/docs/guides/frontends/frameworks.md b/docs/guides/frontends/frameworks.md index 06605c91..5874cc04 100644 --- a/docs/guides/frontends/frameworks.md +++ b/docs/guides/frontends/frameworks.md @@ -1,5 +1,5 @@ --- -title: "Frontend Frameworks" +title: "Frontend frameworks" description: "Integrate React, Vue, Svelte, Next.js, and game engines with ICP canisters using the asset canister and icp-cli" sidebar: order: 4 diff --git a/docs/guides/governance/testing.md b/docs/guides/governance/testing.md index 66c559a3..a794e080 100644 --- a/docs/guides/governance/testing.md +++ b/docs/guides/governance/testing.md @@ -1,5 +1,5 @@ --- -title: "Testing SNS Governance" +title: "Testing SNS governance" description: "Test your SNS configuration locally and with a mainnet testflight before submitting the NNS proposal" sidebar: order: 2 diff --git a/docs/guides/security/access-management.mdx b/docs/guides/security/access-management.mdx index 8c756eba..8dc0b48f 100644 --- a/docs/guides/security/access-management.mdx +++ b/docs/guides/security/access-management.mdx @@ -1,5 +1,5 @@ --- -title: "Access Management" +title: "Access management" description: "Control who can call your canister with guards, caller checks, and controller management" sidebar: order: 1 diff --git a/docs/guides/security/canister-upgrades.md b/docs/guides/security/canister-upgrades.md index 7e8ba7a2..6753eff9 100644 --- a/docs/guides/security/canister-upgrades.md +++ b/docs/guides/security/canister-upgrades.md @@ -1,5 +1,5 @@ --- -title: "Secure Upgrades" +title: "Secure upgrades" description: "Upgrade canisters safely: pre/post hooks, stable memory, Candid compatibility, snapshot rollbacks, schema evolution, and testing" sidebar: order: 2 diff --git a/docs/guides/security/data-integrity.md b/docs/guides/security/data-integrity.md index ad7d37db..c0668273 100644 --- a/docs/guides/security/data-integrity.md +++ b/docs/guides/security/data-integrity.md @@ -1,5 +1,5 @@ --- -title: "Data Integrity" +title: "Data integrity" description: "Protect data confidentiality and authenticity in canisters using vetKeys encryption, identity-based encryption, certified variables, and signature verification." sidebar: order: 3 diff --git a/docs/guides/security/dos-prevention.md b/docs/guides/security/dos-prevention.md index 946284d7..7357eeb3 100644 --- a/docs/guides/security/dos-prevention.md +++ b/docs/guides/security/dos-prevention.md @@ -1,5 +1,5 @@ --- -title: "DoS Prevention" +title: "DoS prevention" description: "Protect canisters from denial-of-service attacks with rate limiting, cycle drain protection, and resource management" sidebar: order: 4 diff --git a/docs/guides/security/inter-canister-calls.md b/docs/guides/security/inter-canister-calls.md index 2f5414b2..9821d0cd 100644 --- a/docs/guides/security/inter-canister-calls.md +++ b/docs/guides/security/inter-canister-calls.md @@ -1,5 +1,5 @@ --- -title: "Inter-Canister Call Safety" +title: "Inter-canister call safety" description: "Handle reentrancy, callback traps, and async safety in inter-canister calls" sidebar: order: 5 diff --git a/docs/guides/testing/strategies.md b/docs/guides/testing/strategies.md index d417c1bf..23f86f60 100644 --- a/docs/guides/testing/strategies.md +++ b/docs/guides/testing/strategies.md @@ -1,5 +1,5 @@ --- -title: "Testing Strategies" +title: "Testing strategies" description: "Test canisters with unit tests, PocketIC integration tests, and benchmarking" sidebar: order: 1 diff --git a/docs/languages/rust/stable-structures.md b/docs/languages/rust/stable-structures.md index 4499d65f..4fbbf76c 100644 --- a/docs/languages/rust/stable-structures.md +++ b/docs/languages/rust/stable-structures.md @@ -1,5 +1,5 @@ --- -title: "Stable Structures" +title: "Stable structures" description: "Use StableBTreeMap, StableCell, StableLog, StableVec, and MemoryManager for upgrade-safe persistent storage in Rust canisters" sidebar: order: 2 diff --git a/docs/languages/rust/testing.md b/docs/languages/rust/testing.md index 2a9cc056..94f8e167 100644 --- a/docs/languages/rust/testing.md +++ b/docs/languages/rust/testing.md @@ -1,5 +1,5 @@ --- -title: "Testing Rust Canisters" +title: "Testing Rust canisters" description: "Unit and integration testing patterns for Rust canisters, including dependency injection, mocking, and PocketIC" sidebar: order: 3 diff --git a/docs/references/application-canisters.md b/docs/references/application-canisters.md index 86401afe..2a8d0a9c 100644 --- a/docs/references/application-canisters.md +++ b/docs/references/application-canisters.md @@ -1,5 +1,5 @@ --- -title: "Application Canisters" +title: "Application canisters" description: "Reference for the asset canister, SNS canisters, LLM canister, and other application-layer canisters with their interfaces and canister IDs" sidebar: order: 4 diff --git a/docs/references/candid-spec.md b/docs/references/candid-spec.md index c61faf42..36af45d5 100644 --- a/docs/references/candid-spec.md +++ b/docs/references/candid-spec.md @@ -1,5 +1,5 @@ --- -title: "Candid Type Reference" +title: "Candid type reference" description: "Complete reference for all Candid types: syntax, subtyping rules, and Motoko, Rust and JavaScript mappings" sidebar: order: 13 diff --git a/docs/references/chain-key-canister-ids.md b/docs/references/chain-key-canister-ids.md index 7cdf4747..2b591035 100644 --- a/docs/references/chain-key-canister-ids.md +++ b/docs/references/chain-key-canister-ids.md @@ -1,5 +1,5 @@ --- -title: "Chain-Key Token Canister IDs" +title: "Chain-key token canister IDs" description: "Mainnet and testnet canister IDs for all chain-key tokens: ckBTC, ckETH, ckERC20, ckDOGE, and ckSOL" sidebar: order: 7 diff --git a/docs/references/cycles-costs.md b/docs/references/cycles-costs.md index 38a3374a..5f97f92e 100644 --- a/docs/references/cycles-costs.md +++ b/docs/references/cycles-costs.md @@ -1,5 +1,5 @@ --- -title: "Cycles Costs" +title: "Cycles costs" description: "Exact cycle costs for compute, storage, HTTPS outcalls, signing, and canister operations" sidebar: order: 8 diff --git a/docs/references/developer-tools.md b/docs/references/developer-tools.md index a2e1f816..b8774c00 100644 --- a/docs/references/developer-tools.md +++ b/docs/references/developer-tools.md @@ -1,5 +1,5 @@ --- -title: "Developer Tools" +title: "Developer tools" description: "Overview of the ICP developer toolchain: icp-cli, CDKs, JS SDK, PocketIC, and more" sidebar: hidden: true diff --git a/docs/references/digital-asset-standards.md b/docs/references/digital-asset-standards.md index cab577e4..efd77681 100644 --- a/docs/references/digital-asset-standards.md +++ b/docs/references/digital-asset-standards.md @@ -1,5 +1,5 @@ --- -title: "Digital Asset Standards" +title: "Digital asset standards" description: "ICP's ICRC standards for fungible assets, NFTs, and their extension protocols" sidebar: order: 6 diff --git a/docs/references/execution-errors.md b/docs/references/execution-errors.md index 4505f972..222e2485 100644 --- a/docs/references/execution-errors.md +++ b/docs/references/execution-errors.md @@ -1,5 +1,5 @@ --- -title: "Execution Errors" +title: "Execution errors" description: "Reference for canister execution errors on ICP: causes, example messages, and how to fix each error." sidebar: order: 10 diff --git a/docs/references/http-gateway-spec.md b/docs/references/http-gateway-spec.md index ef26c53e..fd767094 100644 --- a/docs/references/http-gateway-spec.md +++ b/docs/references/http-gateway-spec.md @@ -1,5 +1,5 @@ --- -title: "HTTP Gateway Protocol Specification" +title: "HTTP gateway protocol specification" description: "The HTTP Gateway Protocol specification: how HTTP clients interact with the Internet Computer through canister-served HTTP responses" sidebar: order: 12 diff --git a/docs/references/ic-dashboard-api.md b/docs/references/ic-dashboard-api.md index 22b068c6..67cd7610 100644 --- a/docs/references/ic-dashboard-api.md +++ b/docs/references/ic-dashboard-api.md @@ -1,5 +1,5 @@ --- -title: "IC Dashboard APIs" +title: "IC dashboard APIs" description: "Five public REST APIs for querying ICP network state: metrics, governance, ICRC tokens, ICP ledger, and SNS data." sidebar: order: 16 diff --git a/docs/references/ic-interface-spec/abstract-behavior.md b/docs/references/ic-interface-spec/abstract-behavior.md index 820a44af..fc268f0f 100644 --- a/docs/references/ic-interface-spec/abstract-behavior.md +++ b/docs/references/ic-interface-spec/abstract-behavior.md @@ -1,5 +1,5 @@ --- -title: "Abstract Behavior" +title: "Abstract behavior" description: "Formal specification of the Internet Computer abstract state machine and execution semantics" sidebar: label: "Abstract Behavior" diff --git a/docs/references/ic-interface-spec/canister-interface.md b/docs/references/ic-interface-spec/canister-interface.md index 52c49ce0..0db58772 100644 --- a/docs/references/ic-interface-spec/canister-interface.md +++ b/docs/references/ic-interface-spec/canister-interface.md @@ -1,5 +1,5 @@ --- -title: "Canister Interface (System API)" +title: "Canister interface (system API)" description: "WebAssembly module format and the System API available to canisters at runtime" sidebar: label: "Canister Interface" diff --git a/docs/references/ic-interface-spec/changelog.md b/docs/references/ic-interface-spec/changelog.md index 284abb97..1787f629 100644 --- a/docs/references/ic-interface-spec/changelog.md +++ b/docs/references/ic-interface-spec/changelog.md @@ -1,5 +1,5 @@ --- -title: "IC Interface Spec Changelog" +title: "IC interface spec changelog" description: "Version history and changes to the IC Interface Specification" sidebar: label: "Changelog" diff --git a/docs/references/ic-interface-spec/https-interface.md b/docs/references/ic-interface-spec/https-interface.md index 544a2771..f8742886 100644 --- a/docs/references/ic-interface-spec/https-interface.md +++ b/docs/references/ic-interface-spec/https-interface.md @@ -1,5 +1,5 @@ --- -title: "HTTPS Interface" +title: "HTTPS interface" description: "HTTP endpoints for submitting calls, reading state, and querying canisters on the Internet Computer" sidebar: label: "HTTPS Interface" diff --git a/docs/references/ic-interface-spec/index.md b/docs/references/ic-interface-spec/index.md index feaeaed7..d4e23614 100644 --- a/docs/references/ic-interface-spec/index.md +++ b/docs/references/ic-interface-spec/index.md @@ -1,5 +1,5 @@ --- -title: "IC Interface Specification" +title: "IC interface specification" description: "Introduction, pervasive concepts, and the IC system state tree" sidebar: label: "Introduction" diff --git a/docs/references/ic-interface-spec/management-canister.md b/docs/references/ic-interface-spec/management-canister.md index a221dee2..e4b60b42 100644 --- a/docs/references/ic-interface-spec/management-canister.md +++ b/docs/references/ic-interface-spec/management-canister.md @@ -1,5 +1,5 @@ --- -title: "IC Management Canister" +title: "IC management canister" description: "The virtual management canister interface: canister lifecycle, threshold signing, Bitcoin, and provisional APIs" sidebar: label: "Management Canister" diff --git a/docs/references/icrc-standards.md b/docs/references/icrc-standards.md index d03dc5c7..502c67b1 100644 --- a/docs/references/icrc-standards.md +++ b/docs/references/icrc-standards.md @@ -1,5 +1,5 @@ --- -title: "ICRC Standards" +title: "ICRC standards" description: "Index of all adopted ICRC standards on ICP, grouped by category" sidebar: order: 5 diff --git a/docs/references/internet-identity-spec.md b/docs/references/internet-identity-spec.md index 0396f342..5e8f4987 100644 --- a/docs/references/internet-identity-spec.md +++ b/docs/references/internet-identity-spec.md @@ -1,5 +1,5 @@ --- -title: "Internet Identity Specification" +title: "Internet Identity specification" description: "The Internet Identity specification: identity design, client authentication protocol, delegation chain, and backend Candid interface" sidebar: order: 14 diff --git a/docs/references/management-canister.md b/docs/references/management-canister.md index 09c99159..77bcec7e 100644 --- a/docs/references/management-canister.md +++ b/docs/references/management-canister.md @@ -1,5 +1,5 @@ --- -title: "Management Canister" +title: "Management canister" description: "API reference for the IC management canister (aaaaa-aa): canister lifecycle, signing, randomness, and more" sidebar: order: 1 diff --git a/docs/references/nns-proposal-types.md b/docs/references/nns-proposal-types.md index 8f60b86d..4101c382 100644 --- a/docs/references/nns-proposal-types.md +++ b/docs/references/nns-proposal-types.md @@ -1,5 +1,5 @@ --- -title: "NNS Proposal Types" +title: "NNS proposal types" description: "All NNS proposal topics and their proposal types, with descriptions" --- diff --git a/docs/references/protocol-canisters.md b/docs/references/protocol-canisters.md index 59d09355..1e3d4f33 100644 --- a/docs/references/protocol-canisters.md +++ b/docs/references/protocol-canisters.md @@ -1,5 +1,5 @@ --- -title: "Protocol Canisters" +title: "Protocol canisters" description: "Bitcoin canister, ckBTC minter, ckETH minter, EVM RPC canister, exchange rate canister, and other protocol-level canisters with their APIs and Candid interfaces" sidebar: order: 3 diff --git a/docs/references/sns-settings.md b/docs/references/sns-settings.md index 855bbe32..66e83cda 100644 --- a/docs/references/sns-settings.md +++ b/docs/references/sns-settings.md @@ -1,5 +1,5 @@ --- -title: "SNS Settings" +title: "SNS settings" description: "Reference for all SNS nervous system parameters (NervousSystemParameters)" --- diff --git a/docs/references/subnet-types.md b/docs/references/subnet-types.md index 19bd867a..4f47c890 100644 --- a/docs/references/subnet-types.md +++ b/docs/references/subnet-types.md @@ -1,5 +1,5 @@ --- -title: "Subnet Types Reference" +title: "Subnet types reference" description: "All subnet types with node counts, replication factors, and cost multipliers" sidebar: order: 9 diff --git a/docs/references/system-canisters.md b/docs/references/system-canisters.md index b3255e6e..41cd1aa8 100644 --- a/docs/references/system-canisters.md +++ b/docs/references/system-canisters.md @@ -1,5 +1,5 @@ --- -title: "System Canisters" +title: "System canisters" description: "NNS canisters, Internet Identity, ICP ledger, and other system-level canisters with canister IDs and interface references" sidebar: order: 2 diff --git a/sidebar.mjs b/sidebar.mjs index daf3ef73..ef9fe5b9 100644 --- a/sidebar.mjs +++ b/sidebar.mjs @@ -11,13 +11,13 @@ export const sidebar = [ { - label: "Getting Started", + label: "Getting started", autogenerate: { directory: "getting-started" }, }, { label: "Guides", items: [ - { slug: "guides/ai-coding-agents", label: "AI Coding Agents" }, + { slug: "guides/ai-coding-agents", label: "AI coding agents" }, // Build: core development { label: "Backends", @@ -25,7 +25,7 @@ export const sidebar = [ autogenerate: { directory: "guides/backends" }, }, { - label: "Canister Calls", + label: "Canister calls", collapsed: true, autogenerate: { directory: "guides/canister-calls" }, }, @@ -46,7 +46,7 @@ export const sidebar = [ autogenerate: { directory: "guides/testing" }, }, { - label: "Canister Management", + label: "Canister management", collapsed: true, autogenerate: { directory: "guides/canister-management" }, }, @@ -57,7 +57,7 @@ export const sidebar = [ }, // Advanced features { - label: "Digital Assets", + label: "Digital assets", collapsed: true, autogenerate: { directory: "guides/digital-assets" }, }, @@ -77,15 +77,20 @@ export const sidebar = [ label: "Concepts", collapsed: true, items: [ - { slug: "concepts/network-overview" }, - { slug: "concepts/canisters" }, - { slug: "concepts/principals" }, - { slug: "concepts/app-architecture" }, - { slug: "concepts/node-infrastructure" }, - { slug: "concepts/edge-infrastructure" }, - { slug: "concepts/evolution-scaling" }, + // Network: infrastructure topology, nodes, and scaling { - label: "Protocol Stack", + label: "Network", + collapsed: true, + items: [ + { slug: "concepts/network-overview", label: "Overview" }, + { slug: "concepts/node-infrastructure" }, + { slug: "concepts/edge-infrastructure" }, + { slug: "concepts/evolution-scaling" }, + ], + }, + // Protocol Stack: ICP's internal execution layers + { + label: "Protocol stack", collapsed: true, items: [ { slug: "concepts/protocol", label: "Overview" }, @@ -97,13 +102,32 @@ export const sidebar = [ { slug: "concepts/protocol/performance" }, ], }, - { slug: "concepts/cycles" }, - { slug: "concepts/orthogonal-persistence" }, - { slug: "concepts/timers" }, - { slug: "concepts/verifiable-randomness" }, - { slug: "concepts/https-outcalls" }, - { slug: "concepts/chain-key-cryptography" }, - { slug: "concepts/certified-data" }, + // Canisters: the developer runtime and canister capabilities + { + label: "Canisters & capabilities", + collapsed: true, + items: [ + { slug: "concepts/canisters" }, + { slug: "concepts/principals" }, + { slug: "concepts/app-architecture" }, + { slug: "concepts/cycles" }, + { slug: "concepts/orthogonal-persistence" }, + { slug: "concepts/timers" }, + { slug: "concepts/verifiable-randomness" }, + { slug: "concepts/https-outcalls" }, + ], + }, + // Cryptography: ICP's cryptographic primitives + { + label: "Cryptography", + collapsed: true, + items: [ + { slug: "concepts/chain-key-cryptography" }, + { slug: "concepts/certified-data" }, + { slug: "concepts/vetkeys" }, + ], + }, + // Chain Fusion: cross-chain integration { label: "Chain Fusion", collapsed: true, @@ -117,15 +141,20 @@ export const sidebar = [ { slug: "concepts/chain-fusion/exchange-rate-canister" }, ], }, - { slug: "concepts/vetkeys" }, - { slug: "concepts/security" }, - { slug: "concepts/governance" }, - { slug: "concepts/sns-framework" }, - { slug: "concepts/network-economics" }, - { slug: "concepts/ledgers" }, + // Trust & governance: security model, governance, and economics + { + label: "Trust & governance", + collapsed: true, + items: [ + { slug: "concepts/governance" }, + { slug: "concepts/sns-framework" }, + { slug: "concepts/network-economics" }, + { slug: "concepts/ledgers" }, + { slug: "concepts/security" }, + ], + }, ], }, - { slug: "references/developer-tools", label: "Developer Tools" }, { label: "Languages", items: [ @@ -142,7 +171,7 @@ export const sidebar = [ }, }, { - label: "ICP Features", + label: "ICP features", autogenerate: { directory: "languages/motoko/icp-features", }, @@ -162,30 +191,60 @@ export const sidebar = [ }, ], }, + { slug: "references/developer-tools", label: "Developer tools" }, { label: "References", collapsed: true, items: [ - { slug: "references/management-canister" }, - { slug: "references/system-canisters" }, - { slug: "references/nns-proposal-types" }, - { slug: "references/sns-settings" }, - { slug: "references/protocol-canisters" }, - { slug: "references/application-canisters" }, - { slug: "references/icrc-standards" }, - { slug: "references/digital-asset-standards" }, - { slug: "references/chain-key-canister-ids" }, - { slug: "references/cycles-costs" }, - { slug: "references/subnet-types" }, - { slug: "references/execution-errors" }, - { slug: "references/http-gateway-spec" }, + // Development reference: system API, costs, subnets, errors + { + label: "Development reference", + collapsed: true, + items: [ + { slug: "references/management-canister" }, + { slug: "references/cycles-costs" }, + { slug: "references/subnet-types" }, + { slug: "references/execution-errors" }, + ], + }, + // Canister registry: known canisters and their IDs + { + label: "Canister registry", + collapsed: true, + items: [ + { slug: "references/system-canisters" }, + { slug: "references/protocol-canisters" }, + { slug: "references/application-canisters" }, + { slug: "references/chain-key-canister-ids" }, + ], + }, + // Standards: ICRC standard family + { + label: "Standards", + collapsed: true, + items: [ + { slug: "references/icrc-standards" }, + { slug: "references/digital-asset-standards" }, + ], + }, + // Governance: NNS and SNS parameter references + { + label: "Governance", + collapsed: true, + items: [ + { slug: "references/nns-proposal-types" }, + { slug: "references/sns-settings" }, + ], + }, + // Formal specifications (ungrouped to avoid 4-level nesting with IC interface spec) { slug: "references/candid-spec" }, - { slug: "references/internet-identity-spec" }, { - label: "IC Interface Spec", + label: "IC interface spec", collapsed: true, autogenerate: { directory: "references/ic-interface-spec" }, }, + { slug: "references/http-gateway-spec" }, + { slug: "references/internet-identity-spec" }, { slug: "references/glossary" }, ], },