From 78c6e3ab2be05fe095f2fe643e7701a383b72997 Mon Sep 17 00:00:00 2001 From: meaghanfitzgerald Date: Mon, 16 Dec 2024 10:23:47 -0500 Subject: [PATCH] awm -> icm --- components/navigation/navigation.tsx | 255 ++++++++++-------- .../avalanche-warp-messaging/overview.mdx | 16 +- icm | 0 utils/remote-content.mts | 22 +- 4 files changed, 160 insertions(+), 133 deletions(-) create mode 100644 icm diff --git a/components/navigation/navigation.tsx b/components/navigation/navigation.tsx index 0320d4cccbe..15777c4d9ac 100644 --- a/components/navigation/navigation.tsx +++ b/components/navigation/navigation.tsx @@ -1,249 +1,276 @@ -import { IndentDecrease, Layers, MailIcon, MonitorCheck, Settings, SproutIcon, SquareGanttChart, TerminalIcon, Webhook, SquareIcon, ArrowLeftRight, Coins, SquareCode, SquareStackIcon, Triangle, ChevronDownIcon, Pyramid, HandCoins, Server, Code, TrendingUp, ScanFace, Telescope, LayoutTemplate, Building2, BookOpen, Podcast, Wallet } from 'lucide-react'; -import { RootToggle } from 'fumadocs-ui/components/layout/root-toggle'; +import { + IndentDecrease, + Layers, + MailIcon, + MonitorCheck, + Settings, + SproutIcon, + SquareGanttChart, + TerminalIcon, + Webhook, + SquareIcon, + ArrowLeftRight, + Coins, + SquareCode, + SquareStackIcon, + Triangle, + ChevronDownIcon, + Pyramid, + HandCoins, + Server, + Code, + TrendingUp, + ScanFace, + Telescope, + LayoutTemplate, + Building2, + BookOpen, + Podcast, + Wallet, +} from "lucide-react"; +import { RootToggle } from "fumadocs-ui/components/layout/root-toggle"; interface Option { - title: string - description: string - icon: React.ReactNode - url: string + title: string; + description: string; + icon: React.ReactNode; + url: string; } interface DocsDropdownProps { buttonStyle?: "Docs" | "currentElement"; } -export function DocsDropdown({ buttonStyle = "Docs" }: DocsDropdownProps): React.ReactElement { +export function DocsDropdown({ + buttonStyle = "Docs", +}: DocsDropdownProps): React.ReactElement { const options: Option[] = [ - ...(buttonStyle === "Docs" ? [{ - title: 'Docs', - description: '', - icon: <>, - url: '', - }] : []), - { - title: 'Avalanche Protocol', - description: 'Learn about Avalanche', + ...(buttonStyle === "Docs" + ? [ + { + title: "Docs", + description: "", + icon: <>, + url: "", + }, + ] + : []), + { + title: "Avalanche Protocol", + description: "Learn about Avalanche", icon: , - url: '/learn', + url: "/learn", }, { - title: 'Smart Contracts', - description: 'Build Apps on Avalanche', + title: "Smart Contracts", + description: "Build Apps on Avalanche", icon: , - url: '/dapps', + url: "/dapps", }, { - title: 'Avalanche L1s', - description: 'Build Your L1 Blockchain', + title: "Avalanche L1s", + description: "Build Your L1 Blockchain", icon: , - url: '/avalanche-l1s', + url: "/avalanche-l1s", }, { - title: 'EVM Customization', - description: 'Customize the Ethereum VM', + title: "EVM Customization", + description: "Customize the Ethereum VM", icon: , - url: '/evm-l1s', + url: "/evm-l1s", }, { - title: 'Custom Virtual Machines', - description: 'Customize Your Execution Layer', + title: "Custom Virtual Machines", + description: "Customize Your Execution Layer", icon: , - url: '/virtual-machines', + url: "/virtual-machines", }, { - title: 'Nodes & Validators', - description: 'Participate in the Network', + title: "Nodes & Validators", + description: "Participate in the Network", icon: , - url: '/nodes', + url: "/nodes", }, { - title: 'Interoperability', - description: 'AWM and Teleporter', + title: "Interoperability", + description: "ICM and ICM Contracts", icon: , - url: '/cross-chain', + url: "/cross-chain", }, { - title: 'Tooling', - description: 'CLI, Scripts, and More', + title: "Tooling", + description: "CLI, Scripts, and More", icon: , - url: '/tooling', + url: "/tooling", }, { - title: 'API Docs', - description: 'Avalanche API References', + title: "API Docs", + description: "Avalanche API References", icon: , - url: '/api-reference', - } + url: "/api-reference", + }, ]; - return ( - - ); - + return ; } export function AcademyDropdown() { const options: Option[] = [ { - title: 'Courses', - description: '', + title: "Courses", + description: "", icon: <>, - url: '', + url: "", }, { - title: 'Blockchain Fundamentals', - description: 'Understand fundamental blockchain concepts.', + title: "Blockchain Fundamentals", + description: "Understand fundamental blockchain concepts.", icon: , - url: 'https://academy.avax.network/course/blockchain-fundamentals', + url: "https://academy.avax.network/course/blockchain-fundamentals", }, { - title: 'Avalanche Fundamentals', - description: 'Overview of Avalanche Consensus, L1s, and VMs.', + title: "Avalanche Fundamentals", + description: "Overview of Avalanche Consensus, L1s, and VMs.", icon: , - url: 'https://academy.avax.network/course/avalanche-fundamentals', + url: "https://academy.avax.network/course/avalanche-fundamentals", }, { title: "Multi-Chain Architecture", - description: 'Deploy your own blockchain with multi-chain architecture.', + description: "Deploy your own blockchain with multi-chain architecture.", icon: , - url: 'https://academy.avax.network/course/multi-chain-architecture', + url: "https://academy.avax.network/course/multi-chain-architecture", }, { title: "Interchain Messaging", - description: 'Build cross-chain dApps on Avalanche.', + description: "Build cross-chain dApps on Avalanche.", icon: , - url: 'https://academy.avax.network/course/interchain-messaging', + url: "https://academy.avax.network/course/interchain-messaging", }, { title: "Interchain Token Transfer", - description: 'Transfer assets between Avalanche blockchains.', + description: "Transfer assets between Avalanche blockchains.", icon: , - url: 'https://academy.avax.network/course/interchain-token-transfer', + url: "https://academy.avax.network/course/interchain-token-transfer", }, { title: "Customizing the EVM", - description: 'Add custom precompiles to the EVM.', + description: "Add custom precompiles to the EVM.", icon: , - url: 'https://academy.avax.network/course/customizing-evm', + url: "https://academy.avax.network/course/customizing-evm", }, { title: "Layer 1 Tokenomics", - description: 'Design tokenomics for your Avalanche L1.', + description: "Design tokenomics for your Avalanche L1.", icon: , - url: 'https://academy.avax.network/course/l1-tokenomics', + url: "https://academy.avax.network/course/l1-tokenomics", }, { title: "AvaCloud APIs", - description: 'Use AvaCloud APIs to build web apps.', + description: "Use AvaCloud APIs to build web apps.", icon: , - url: 'https://academy.avax.network/course/avacloudapis', + url: "https://academy.avax.network/course/avacloudapis", }, { title: "HyperSDK", - description: 'Build high-performance blockchains with HyperSDK.', + description: "Build high-performance blockchains with HyperSDK.", icon: , - url: 'https://academy.avax.network/course/hypersdk', - } + url: "https://academy.avax.network/course/hypersdk", + }, ]; - return ( - - ) + return ; } export function GrantsDropdown() { const options: Option[] = [ { - title: 'Grants & Programs', - description: '', + title: "Grants & Programs", + description: "", icon: <>, - url: '/grants', + url: "/grants", }, { - title: 'Retro9000', - description: 'Build publicly and get rewarded.', + title: "Retro9000", + description: "Build publicly and get rewarded.", icon: , - url: 'https://www.avax.network/retro9000', + url: "https://www.avax.network/retro9000", }, { - title: 'infraBUIDL()', - description: 'Infrastructure projects that enhance user and developer experience', + title: "infraBUIDL()", + description: + "Infrastructure projects that enhance user and developer experience", icon: , - url: 'https://www.avax.network/infrabuidl-program', + url: "https://www.avax.network/infrabuidl-program", }, { - title: 'Codebase', - description: 'Transforming ambitious builders into extraordinary founders', + title: "Codebase", + description: + "Transforming ambitious builders into extraordinary founders", icon: , - url: 'https://codebase.avax.network/', + url: "https://codebase.avax.network/", }, { - title: 'Blizzard Fund', - description: 'VC fund investing in innovative entrepreneurs driving growth on Avalanche', + title: "Blizzard Fund", + description: + "VC fund investing in innovative entrepreneurs driving growth on Avalanche", icon: , - url: 'https://www.blizzard.fund/', + url: "https://www.blizzard.fund/", }, - ]; - return ( - - ) + return ; } export function IntegrationsDropdown() { const options: Option[] = [ { - title: 'Integrations', - description: '', + title: "Integrations", + description: "", icon: <>, - url: '/integrations', + url: "/integrations", }, { - title: 'Account Abstraction', + title: "Account Abstraction", description: "", icon: , - url: '/integrations#Account%20Abstraction', + url: "/integrations#Account%20Abstraction", }, { - title: 'Block Explorers', + title: "Block Explorers", description: "", icon: , - url: '/integrations#Block%20Explorers', + url: "/integrations#Block%20Explorers", }, { - title: 'Blockchain as a Service', + title: "Blockchain as a Service", description: "", icon: , - url: '/integrations#Blockchain%20as%20a%20Service', + url: "/integrations#Blockchain%20as%20a%20Service", }, { - title: 'Enterprise Solutions', + title: "Enterprise Solutions", description: "", icon: , - url: '/integrations#Enterprise%20Solutions', + url: "/integrations#Enterprise%20Solutions", }, { - title: 'Indexers', + title: "Indexers", description: "", icon: , - url: '/integrations#Indexers', + url: "/integrations#Indexers", }, { - title: 'Oracles', + title: "Oracles", description: "", icon: , - url: '/integrations#Oracles', + url: "/integrations#Oracles", }, { - title: 'Wallets', + title: "Wallets", description: "", icon: , - url: '/integrations#Wallet%20SDKs', + url: "/integrations#Wallet%20SDKs", }, - ]; - return ( - - ) + return ; } export function DropDownBar(): React.ReactElement { @@ -263,4 +290,4 @@ export function DropDownBar(): React.ReactElement { ); -} \ No newline at end of file +} diff --git a/content/docs/cross-chain/avalanche-warp-messaging/overview.mdx b/content/docs/cross-chain/avalanche-warp-messaging/overview.mdx index 5ffc5d0ed7a..01d12283f50 100644 --- a/content/docs/cross-chain/avalanche-warp-messaging/overview.mdx +++ b/content/docs/cross-chain/avalanche-warp-messaging/overview.mdx @@ -1,15 +1,15 @@ --- -title: What is AWM? -description: Learn about Avalanche Warp Messaging, a protocol for cross-chain communication. +title: What is ICM? +description: Learn about Avalanche Interchain Messaging, a protocol for cross-chain communication. --- -Avalanche Warp Messaging (AWM) enables native cross-Avalanche L1 communication and allows [Virtual Machine (VM)](/learn/virtual-machines) developers to implement arbitrary communication protocols between any two Avalanche L1s. +Avalanche Interchain Messaging (ICM) enables native cross-Avalanche L1 communication and allows [Virtual Machine (VM)](/learn/virtual-machines) developers to implement arbitrary communication protocols between any two Avalanche L1s. ## Use Cases -Use cases for AWM may include but is not limited to: +Use cases for ICM may include but is not limited to: -- Oracle Networks: Connecting an Avalanche L1 to an oracle network is a costly process. AWM makes it easy for oracle networks to broadcast their data from their origin chain to other Avalanche L1s. +- Oracle Networks: Connecting an Avalanche L1 to an oracle network is a costly process. ICM makes it easy for oracle networks to broadcast their data from their origin chain to other Avalanche L1s. - Token transfers between Avalanche L1s - State Sharding between multiple Avalanche L1s @@ -22,7 +22,7 @@ The communication consists of the following four steps: ### Signing Messages on the Origin Avalanche L1[​](#signing-messages-on-the-origin-avalanche-l1 "Direct link to heading") -AWM is a low-level messaging protocol. Any type of data encoded in an array of bytes can be included in the message sent to another Avalanche L1. AWM uses the [BLS signature scheme](https://crypto.stanford.edu/~dabo/pubs/papers/BLSmultisig.html), which allows message recipients to verify the authenticity of these messages. Therefore, every validator on the Avalanche network holds a BLS key pair, consisting of a private key for signing messages and a public key that others can use to verify the signature. +ICM is a low-level messaging protocol. Any type of data encoded in an array of bytes can be included in the message sent to another Avalanche L1. ICM uses the [BLS signature scheme](https://crypto.stanford.edu/~dabo/pubs/papers/BLSmultisig.html), which allows message recipients to verify the authenticity of these messages. Therefore, every validator on the Avalanche network holds a BLS key pair, consisting of a private key for signing messages and a public key that others can use to verify the signature. ### Signature Aggregation on the Origin Avalanche L1[​](#signature-aggregation-on-the-origin-avalanche-l1 "Direct link to heading") @@ -40,9 +40,9 @@ When an Avalanche L1 wants to process another Avalanche L1's message, it will lo The combined weight of the validators that must be part of the BLS multi-signature to be considered valid can be set according to the individual requirements of each Avalanche L1-to-Avalanche L1 communication. Avalanche L1 A may accept messages from Avalanche L1 B that are signed by at least 70% of stake. Messages from Avalanche L1 C are only accepted if they have been signed by validators that account for 90% of the stake. -Since both the public keys and stake weights of all validators are recorded on the primary network's P-chain, they are readily accessible to any virtual machine run by the validators. Therefore, the Avalanche L1s do not need to communicate with each other about changes in their respective sets of validators, but can simply rely on the latest information on the P-Chain. Therefore, AWM introduces no additional trust assumption other than that the validators of the origin Avalanche L1 are participating honestly. +Since both the public keys and stake weights of all validators are recorded on the primary network's P-chain, they are readily accessible to any virtual machine run by the validators. Therefore, the Avalanche L1s do not need to communicate with each other about changes in their respective sets of validators, but can simply rely on the latest information on the P-Chain. Therefore, ICM introduces no additional trust assumption other than that the validators of the origin Avalanche L1 are participating honestly. Reference Implementation[​](#reference-implementation "Direct link to heading") ------------------------------------------------------------------------------- -A Proof-of-Concept VM called [XSVM](https://github.com/ava-labs/xsvm) was created to demonstrate the power of AWM. XSVM enables simple AWM transfers between any two Avalanche L1s if run out-of-the-box. +A Proof-of-Concept VM called [XSVM](https://github.com/ava-labs/xsvm) was created to demonstrate the power of ICM. XSVM enables simple ICM transfers between any two Avalanche L1s if run out-of-the-box. diff --git a/icm b/icm new file mode 100644 index 00000000000..e69de29bb2d diff --git a/utils/remote-content.mts b/utils/remote-content.mts index 8bc141de883..8146653b9fa 100644 --- a/utils/remote-content.mts +++ b/utils/remote-content.mts @@ -87,29 +87,29 @@ async function main(): Promise { { sourceUrl: "https://raw.githubusercontent.com/ava-labs/avalanchego/master/vms/platformvm/warp/README.md", outputPath: "content/docs/cross-chain/avalanche-warp-messaging/deep-dive.mdx", - title: "Deep Dive into AWM", + title: "Deep Dive into ICM", description: "Learn about Avalanche Warp Messaging, a cross-Avalanche L1 communication protocol on Avalanche.", contentUrl: "https://github.com/ava-labs/avalanchego/tree/master/vms/platformvm/warp/", }, { - sourceUrl: "https://raw.githubusercontent.com/ava-labs/awm-relayer/main/README.md", + sourceUrl: "https://raw.githubusercontent.com/ava-labs/icm-services/refs/heads/main/README.md", outputPath: "content/docs/cross-chain/avalanche-warp-messaging/run-relayer.mdx", title: "Run a Relayer", - description: "Reference relayer implementation for cross-chain Avalanche Warp Message delivery.", - contentUrl: "https://github.com/ava-labs/awm-relayer/blob/main/", + description: "Reference relayer implementation for cross-chain Avalanche Interchain Message delivery.", + contentUrl: "https://github.com/ava-labs/icm-services/blob/main/", }, { - sourceUrl: "https://raw.githubusercontent.com/ava-labs/teleporter/main/contracts/teleporter/README.md", + sourceUrl: "https://raw.githubusercontent.com/ava-labs/icm-contracts/refs/heads/main/contracts/teleporter/README.md", outputPath: "content/docs/cross-chain/teleporter/overview.mdx", - title: "What is Teleporter?", - description: "Teleporter is a messaging protocol built on top of Avalanche Warp Messaging that provides a developer-friendly interface for sending and receiving cross-chain messages from the EVM.", - contentUrl: "https://github.com/ava-labs/teleporter/blob/main/contracts/teleporter/", + title: "What is ICM Contracts?", + description: "ICM Contracts is a messaging protocol built on top of Avalanche Interchain Messaging that provides a developer-friendly interface for sending and receiving cross-chain messages from the EVM.", + contentUrl: "https://github.com/ava-labs/icm-contracts/blob/main/contracts/teleporter/", }, { - sourceUrl: "https://raw.githubusercontent.com/ava-labs/teleporter/main/README.md", + sourceUrl: "https://raw.githubusercontent.com/ava-labs/icm-contracts/main/README.md", outputPath: "content/docs/cross-chain/teleporter/deep-dive.mdx", - title: "Deep Dive into Teleporter", - description: "Teleporter is an EVM compatible cross-Avalanche L1 communication protocol built on top of Avalanche Warp Messaging (AWM), and implemented as a Solidity smart contract.", + title: "Deep Dive into ICM Contracts", + description: "ICM Contracts is an EVM compatible cross-Avalanche L1 communication protocol built on top of Avalanche Interchain Messaging (ICM), and implemented as a Solidity smart contract.", contentUrl: "https://github.com/ava-labs/teleporter/blob/main/", }, {