From 5b167fa1059432e8ed0b6199e1cdb6fda8979933 Mon Sep 17 00:00:00 2001
From: Lucas Tortora <85233773+lucas-tortora@users.noreply.github.com>
Date: Wed, 29 May 2024 13:07:44 -0300
Subject: [PATCH] Add providers/tools and cleanup EVM sections
---
.../build/_partials/_oracles_contract_data.md | 37 ++++++
docs/build/getting-started/blastAPI.md | 42 +++++++
.../getting-started/networks-endpoints.mdx | 2 +-
docs/build/getting-started/oracles.md | 49 +++++---
docs/build/getting-started/sidebars.ts | 24 +++-
docs/build/getting-started/subgraphs.md | 106 ++++++++++++++++++
.../docs/getting-started/tools.mdx | 67 ++++++++++-
docusaurus.config.js | 9 ++
src/components/HomeLayout/index.tsx | 22 ++--
src/icons/iota/index.ts | 2 +
static/icons/iota/iota_evm.svg | 3 +
static/icons/iota/iota_evm_dm.svg | 70 ++++++++++++
theme/src/theme/NetworkInfo/index.tsx | 73 ++++++++----
theme/src/theme/constant.tsx | 17 +++
14 files changed, 466 insertions(+), 57 deletions(-)
create mode 100644 docs/build/_partials/_oracles_contract_data.md
create mode 100644 docs/build/getting-started/blastAPI.md
create mode 100644 docs/build/getting-started/subgraphs.md
create mode 100644 static/icons/iota/iota_evm.svg
create mode 100644 static/icons/iota/iota_evm_dm.svg
diff --git a/docs/build/_partials/_oracles_contract_data.md b/docs/build/_partials/_oracles_contract_data.md
new file mode 100644
index 00000000000..3b5674b2188
--- /dev/null
+++ b/docs/build/_partials/_oracles_contract_data.md
@@ -0,0 +1,37 @@
+import { AddToMetaMaskButton } from '@theme/AddToMetaMaskButton';
+import { Networks } from '@theme/constant';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+
+
+| Contract Type | Contract Address |
+|:----------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| Pyth contract | [https://explorer.evm.iota.org/address/0x8D254a21b3C86D32F7179855531CE99164721933](https://explorer.evm.iota.org/address/0x8D254a21b3C86D32F7179855531CE99164721933) |
+| Supra Pull Contract | [https://explorer.evm.iota.org/address/0x2FA6DbFe4291136Cf272E1A3294362b6651e8517](https://explorer.evm.iota.org/address/0x2FA6DbFe4291136Cf272E1A3294362b6651e8517) |
+| Supra Storage Contract | [https://explorer.evm.iota.org/address/0xD02cc7a670047b6b012556A88e275c685d25e0c9](https://explorer.evm.iota.org/address/0xD02cc7a670047b6b012556A88e275c685d25e0c9) |
+| Supra Push Contract | [https://explorer.evm.iota.org/address/0xD02cc7a670047b6b012556A88e275c685d25e0c9](https://explorer.evm.iota.org/address/0xD02cc7a670047b6b012556A88e275c685d25e0c9) |
+
+
+
+
+| Contract Type | Contract Address |
+|:----------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| Pyth contract | [https://explorer.evm.shimmer.network/address/0x290f23E4a034Db5237edCb5aA2D94Acb4DD19fD2](https://explorer.evm.shimmer.network/address/0x290f23E4a034Db5237edCb5aA2D94Acb4DD19fD2) |
+| Supra Pull Contract | [https://explorer.evm.shimmer.network/address/0xe41444462709484272F54371F3f53bBF900Ec49E](https://explorer.evm.shimmer.network/address/0xe41444462709484272F54371F3f53bBF900Ec49E) |
+| Supra Storage Contract | [https://explorer.evm.shimmer.network/address/0x3E5E89d14576cE9f20a8347aA682517fe65B4ACB](https://explorer.evm.shimmer.network/address/0x3E5E89d14576cE9f20a8347aA682517fe65B4ACB) |
+| Supra Push Contract | [https://explorer.evm.shimmer.network/address/0x3df842b27c997cEc63160E79CB4398c82645A1c3](https://explorer.evm.shimmer.network/address/0x3df842b27c997cEc63160E79CB4398c82645A1c3) |
+
+
+
+
+:::tip Oracle Documentation
+
+You can find detailed documentation on the Oracles in their official documentation:
+
+* [Pyth Oracle Docs](https://docs.pyth.network/price-feeds/contract-addresses/evm)
+* [Supra Pull Docs](https://gb-docs.supraoracles.com/docs/data-feeds/pull-model/networks)
+* [Supra Push Docs](https://gb-docs.supraoracles.com/docs/data-feeds/decentralized/networks)
+
+:::
diff --git a/docs/build/getting-started/blastAPI.md b/docs/build/getting-started/blastAPI.md
new file mode 100644
index 00000000000..2bd2e188ac9
--- /dev/null
+++ b/docs/build/getting-started/blastAPI.md
@@ -0,0 +1,42 @@
+---
+description: Blast API is a decentralized platform providing scalable node infrastructure for accessing blockchain data, supporting multiple networks including IOTA EVM.
+keywords:
+ - IOTA EVM
+ - blockchain API
+ - decentralized
+ - node infrastructure
+ - tools
+ - Blast api
+ - archive node
+image: /img/logo/WASP_logo_dark.png
+---
+
+# Blast API
+
+[Blast API](https://blastapi.io/) is a decentralized platform that provides reliable and scalable node infrastructure
+for accessing blockchain data. It supports multiple blockchain networks, offering seamless integration and
+high-performance API endpoints for cross-chain decentralized applications (dApps).
+
+## Enhanced Performance and Reliability
+
+Blast API uses a decentralized network of third-party node providers, that ensure high availability and fast response
+times. This architecture provides resilient infrastructure services crucial for dApps requiring real-time data access.
+
+## Multi-Blockchain Support
+
+Besides IOTA EVM, Blast API supports a wide range of blockchain networks, allowing access to multiple blockchains
+through a single unified platform, therefore simplifying the development process and expanding the potential use cases
+for dApps.
+
+## Archival Nodes
+
+Blast API includes archival nodes, which store all historical transaction data from the blockchain’s
+genesis block to the present. This allows developers to query and retrieve past information, which is essential for
+applications needing access to comprehensive blockchain histories.
+
+
+:::tip Blast API Endpoints
+
+You can find a full list of Blast API endpoints in the [Networks & Endpoints section](networks-endpoints.mdx).
+
+:::
diff --git a/docs/build/getting-started/networks-endpoints.mdx b/docs/build/getting-started/networks-endpoints.mdx
index 7ec97e7d37f..bb5632d2e93 100644
--- a/docs/build/getting-started/networks-endpoints.mdx
+++ b/docs/build/getting-started/networks-endpoints.mdx
@@ -16,7 +16,6 @@ tags:
import { AddToMetaMaskButton } from '@theme/AddToMetaMaskButton';
import { Networks } from '@theme/constant';
import NetworkInfo from '@theme/NetworkInfo';
-import { ChainId } from '@theme/ChainId';
# Networks & Endpoints
@@ -76,6 +75,7 @@ This network is subject to occasional resets (no data retention) which are usual
+
#### Additional Info
diff --git a/docs/build/getting-started/oracles.md b/docs/build/getting-started/oracles.md
index 2ababe9d917..4b4e89c8760 100644
--- a/docs/build/getting-started/oracles.md
+++ b/docs/build/getting-started/oracles.md
@@ -4,10 +4,15 @@ image: /img/logo/WASP_logo_dark.png
tags:
- Blockchain Oracles
- Smart Contracts
+- IOTA EVM
- Shimmer EVM
- Pyth Network
- Supra Oracles
---
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import OraclesContractData from '../_partials/_oracles_contract_data.md'
+
# Introduction to Oracles in Blockchain
@@ -36,52 +41,56 @@ multiple data points to validate the information's accuracy. This process ensure
contracts is relevant and timely, maintaining the integrity and deterministic nature of the blockchain
operations.
-## Oracles on Shimmer EVM
+## Oracles on IOTA EVM
-### Supra
+### Pyth
-Supra Oracles validate and report prices derived from up to 21 data sources with Byzantine Fault Tolerant algorithms
-for a wide array of assets and commodities using its own Distributed Oracle Agreement (DORA) to provide data for crypto
-prices, forex, equities, and even Web3 data from other blockchains. Its feed gets updated from a minimum of 3 to 8 sources; if a data pair fails to meet this criterion, it gets deprecated to ensure data reliability.
+The Pyth Network delivers real-time financial market data across multiple blockchains and can be used in off-chain applications.
+Pyth gets contributions from over 90 publishers, including several exchanges. It offers comprehensive and accurate price
+feeds for asset classes such as US equities, commodities, and cryptocurrencies. Its price feeds get updates
+multiple times per second, ensuring they are current and reliable.
:::tip
-You can learn more about Supra Oracles in their [official documentation](https://supraoracles.com/docs/overview).
+You can learn more about Pyth Oracles in their [official documentation](https://docs.pyth.network/documentation).
:::
-### Pyth
+### Supra
-The Pyth Network delivers real-time financial market data across multiple blockchains and can be used in off-chain applications.
-Pyth gets contributions from over 90 publishers, including several exchanges. It offers comprehensive and accurate price
-feeds for asset classes such as US equities, commodities, and cryptocurrencies. Its price feeds get updates
-multiple times per second, ensuring they are current and reliable.
+Supra Oracles validate and report prices derived from up to 21 data sources with Byzantine Fault Tolerant algorithms
+for a wide array of assets and commodities using its own Distributed Oracle Agreement (DORA) to provide data for crypto
+prices, forex, equities, and even Web3 data from other blockchains. Its feed gets updated from a minimum of 3 to 8 sources; if a data pair fails to meet this criterion, it gets deprecated to ensure data reliability.
:::tip
-You can learn more about Pyth Oracles in their [official documentation](https://docs.pyth.network/documentation).
+You can learn more about Supra Oracles in their [official documentation](https://supraoracles.com/docs/overview).
:::
+
+
#### Example Code
-You can use the following example code to get data from Pyth Oracles in Shimmer EVM:
+
+
+You can use the following example code to get data from Pyth Oracles in IOTA EVM:
```typescript
import {ethers} from "ethers";
import fetch from "node-fetch";
// Provider
-const providerURL = "https://json-rpc.evm.shimmer.network"
+const providerURL = "https://json-rpc.evm.iota.network"
const provider = new ethers.JsonRpcProvider(providerURL);
-// Pyth Oracle contract on ShimmerEVM Mainnet
-const contractAddress = '0xA2aa501b19aff244D90cc15a4Cf739D2725B5729';
+// Pyth Oracle contract on IOTA EVM Mainnet
+const contractAddress = '0x8D254a21b3C86D32F7179855531CE99164721933';
// Add Price Feed Ids obtained from https://pyth.network/developers/price-feed-ids#pyth-evm-stable
const priceFeedIds = [
- //SMR/USD
+ //IOTA/USD
'0xaf5b9ac426ae79591fde6816bc3f043b5e06d5e442f52112f76249320df22449',
//BTC/USD
'0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43'
@@ -120,4 +129,8 @@ async function main() {
}
}
-main();
\ No newline at end of file
+main();
+```
+
+
+
\ No newline at end of file
diff --git a/docs/build/getting-started/sidebars.ts b/docs/build/getting-started/sidebars.ts
index a9e41d09e97..89597852d43 100644
--- a/docs/build/getting-started/sidebars.ts
+++ b/docs/build/getting-started/sidebars.ts
@@ -27,7 +27,7 @@ module.exports = {
items: [
{
type: 'category',
- label: 'IOTA',
+ label: 'IOTA EVM',
collapsed: false,
link: {
type: 'generated-index',
@@ -49,7 +49,7 @@ module.exports = {
},
{
type: 'category',
- label: 'IOTA Testnet',
+ label: 'IOTA EVM Testnet',
collapsed: false,
link: {
type: 'generated-index',
@@ -69,9 +69,24 @@ module.exports = {
},
],
},
+ {
+ label: 'Blast API',
+ type: 'doc',
+ id: 'blastAPI',
+ },
+ {
+ label: 'Oracles',
+ type: 'doc',
+ id: 'oracles',
+ },
+ {
+ label: 'Subgraphs',
+ type: 'doc',
+ id: 'subgraphs',
+ },
{
type: 'category',
- label: 'Shimmer',
+ label: 'ShimmerEVM',
collapsed: true,
link: {
type: 'generated-index',
@@ -93,7 +108,7 @@ module.exports = {
},
{
type: 'category',
- label: 'Shimmer Testnet',
+ label: 'ShimmerEVM Testnet',
collapsed: true,
link: {
type: 'generated-index',
@@ -127,6 +142,7 @@ module.exports = {
},
],
},
+
{
label: 'Explorer',
type: 'link',
diff --git a/docs/build/getting-started/subgraphs.md b/docs/build/getting-started/subgraphs.md
new file mode 100644
index 00000000000..7022a747668
--- /dev/null
+++ b/docs/build/getting-started/subgraphs.md
@@ -0,0 +1,106 @@
+---
+description: 'Learn about the role of subgraphs in smart contracts and how they can provide indexed blockchain data to your smart contracts.'
+image: /img/logo/WASP_logo_dark.png
+tags:
+ - Blockchain subgraphs
+ - Smart Contracts
+ - Shimmer EVM
+ - IOTA EVM
+---
+
+# Subgraphs
+
+:::info tl;dr;
+
+Subgraphs provide a streamlined way for developers to access blockchain data relevant to their applications,
+significantly enhancing developer efficiency and user experience.
+
+:::
+
+Subgraphs collect and organize blockchain data by application needs, making it readily accessible for developers. Unlike
+blockchains that store data without application context, subgraphs allow you to quickly retrieve information pertinent
+to your application and simplify real-time data access, facilitating the creation of
+dynamic user interfaces and interactions in your applications.
+
+## Subgraph Components and Operations
+
+Subgraphs are built on [GraphQL](https://graphql.org/) APIs, enabling you to query on-chain transaction data
+efficiently.
+This feature is particularly useful for developers working with complex smart contracts requiring detailed frontend
+interfaces. For instance, querying transactions within a specific liquidity pool becomes straightforward with subgraphs.
+By defining a schema and indexing event data, you can utilize the generated GraphQL API for effective data querying.
+
+### Subgraph Manifest
+
+The manifest details the smart contracts your subgraph indexes, the events it tracks, and how event data is mapped to
+queryable entities. This foundational document ensures your subgraph accurately reflects the blockchain data your
+application needs.
+
+### Subgraph Schema
+
+The schema organizes your subgraph data, defining entities like pools in DeFi applications, and their attributes. It is
+crucial for structuring your data to support efficient queries.
+
+### Subgraph Mappings
+
+Mappings process incoming blockchain events, specified in your [manifest](#subgraph-manifest), and store them
+according to your [schema](#subgraph-schema).
+These [AssemblyScript](https://www.assemblyscript.org/) codes are essential for translating raw blockchain data into a
+format your application can easily query.
+
+## Popular Use Cases for Subgraphs
+
+Subgraphs have found widespread adoption in various blockchain applications, from DeFi to NFTs and DAOs, due to their
+ability to index and query data effectively.
+
+* **Custom Smart Contract Indexing**: Ideal for developers needing to index data for unique smart contracts, especially
+ those creating frontend interfaces.
+* **Decentralized Finance (DeFi)**: Subgraphs provide real-time data on token prices, liquidity, and more, enhancing
+ DeFi
+ applications.
+* **Non-fungible Tokens (NFTs)**: They allow for efficient querying of NFT ownership, transaction history, and off-chain
+ data.
+* **Decentralized Autonomous Organizations (DAOs)**: Subgraphs facilitate on-chain decision-making and data analysis for
+ DAOs.
+* **Gaming**: They support real-time data access, improving gameplay and in-game transactions.
+
+## Benefits of Using Subgraphs
+
+Subgraphs offer a developer-friendly approach to blockchain data indexing, compatible with various blockchains and
+enhancing application security and resilience.
+
+* **Ease of Use**: With familiar tools like AssemblyScript and GraphQL, subgraphs are accessible to developers,
+ simplifying
+ the backend data management.
+* **Cross-Blockchain Compatibility**: They work across multiple EVM-compatible networks, allowing applications to
+ operate
+ seamlessly on different blockchains.
+* **Security and Decentralization**: Opting for decentralized querying with subgraphs can reduce reliance on single data
+ sources, increasing application robustness.
+
+## Subgraph Providers
+
+### Goldsky
+
+[Goldsky](https://goldsky.com/products/subgraphs) [supports IOTA EVM](https://docs.goldsky.com/chains/supported-networks).
+You can use their public API endpoints to access subgraph data.
+
+:::tip Run a Local Graph Node
+
+You can use [Nakama's Graph Node GitHub repository](https://github.com/nakamaio/graph-node) to run your own Graph Node.
+
+:::
+
+:::tip Blast API Archival Nodes
+
+You can use the convenient Blast API on IOTA EVM to access [archival nodes](blastAPI.md#archival-nodes).
+
+:::
+
+:::tip Wasp Access Nodes
+
+You can find more information on how to connect to an access node in the
+[#nodesharing channel](https://discordapp.com/channels/397872799483428865/398600007378272256) on the [IOTA Discord](https://discord.iota.org/).
+
+:::
+
diff --git a/docs/build/isc/v1.0.0-rc.6/docs/getting-started/tools.mdx b/docs/build/isc/v1.0.0-rc.6/docs/getting-started/tools.mdx
index 8b6138abb00..a49e6c101bd 100644
--- a/docs/build/isc/v1.0.0-rc.6/docs/getting-started/tools.mdx
+++ b/docs/build/isc/v1.0.0-rc.6/docs/getting-started/tools.mdx
@@ -24,6 +24,7 @@ import { Networks } from '@theme/constant';
import DeployAdmonition from '../_admonitions/_deploy_a_smart_contract.md';
import { ChainId } from '@theme/ChainId';
import NetworkInfo from '@theme/NetworkInfo';
+import OraclesContractData from '../../../../_partials/_oracles_contract_data.md';
# Compatible Tools
@@ -47,6 +48,66 @@ chain ID after deployment.**
:::
+## Network RPCs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## IOTA EVM Tools
+
+The following tools are **only available on IOTA EVM**.
+
+### Blast API
+
+The [Blast API](/build/blastAPI) is a decentralized platform that provides reliable and scalable node infrastructure
+for accessing blockchain data. You can find the Blast API URLs in the [Network RPCs](#network-rpcs)
+
+### EVM Toolkit
+
+You can use the [IOTA EVM Toolkit](https://evm-toolkit.evm.iotaledger.net) to withdraw assets from IOTA EVM to IOTA L1.
+It also includes a wrapper IOTA <-> wIOTA.
+
+### Multicall3
+
+If you need to aggregate results from multiple contract reads into a single JSON-RPC request or execute multiple
+state-changing calls in a single transaction, you can use the [Multicall3 contract](https://explorer.evm.iota.org/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract).
+
+## IOTA EVM and ShimmerEVM Tools
+
+The following tools are available on both IOTA EVM end ShimmerEVM.
+
+### MultiSig Wallets
+
+If you require and additional level of security, you can use the [Safe{} Wallet](https://safe.iotaledger.net/) as a
+Multisig solution on IOTA EVM.
+
+### Oracles
+
+If your project requires [Oracles](/build/oracles/) to provide data from the outside world, you find both Pyth and Supra have integrated IOTA EVM.
+
+
+
+### Subgraphs
+
+[Subgraphs](/build/subgraphs/) provide a streamlined way for developers to access blockchain data relevant to their applications,
+significantly enhancing developer efficiency and user experience. IOTA EVM subgraphs available via [Goldsky](https://goldsky.com).
+
## MetaMask
[MetaMask](https://metamask.io/) is a popular EVM wallet which runs in a browser extension that allows you to
@@ -118,9 +179,9 @@ often offered through block explorer APIs.
## Ethers.js/Web3.js
-If you input the correct configuration parameters for the JSON-RPC endpoint to talk
-to, [Ethers.js](https://docs.ethers.io/) and [Web3.js](https://web3js.readthedocs.io/) are also compatible with EVM
-chains on IOTA Smart Contracts. Alternatively, you can let both interact through MetaMask instead so that it uses the
+If you input the correct configuration parameters for the JSON-RPC endpoint to talk to,
+[Ethers.js](https://docs.ethers.io/) and [Web3.js](https://web3js.readthedocs.io/) are also compatible with EVM chains on IOTA Smart Contracts.
+Alternatively, you can let both interact through MetaMask instead so that it uses the
network configured in MetaMask. For more information on this, read their documentation.
## Other Tooling
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 24a4aa77a8f..c66a516cdde 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -144,6 +144,15 @@ module.exports = async () => {
defaultMode: 'dark',
},
switcher: switcherConfig,
+
+ announcementBar: {
+ id: 'support_us',
+ content:
+ 'Experience seamless dApp development with IOTA EVM.',
+ backgroundColor: 'var(--ifm-color-primary)',
+ textColor: 'var(--ifm-font-color-base-inverse);',
+ isCloseable: true,
+ },
},
};
diff --git a/src/components/HomeLayout/index.tsx b/src/components/HomeLayout/index.tsx
index 93d79f53f17..a068a322388 100644
--- a/src/components/HomeLayout/index.tsx
+++ b/src/components/HomeLayout/index.tsx
@@ -18,7 +18,7 @@ const {
IntegrationServices,
IotaCore,
PickAWallet,
- Shimmer,
+ IotaEVM,
Search,
Tips,
Tutorials,
@@ -85,6 +85,12 @@ export default function HomeLayout() {
>
Start building
+
+ Build your dApp on IOTA EVM
+
@@ -106,18 +112,16 @@ export default function HomeLayout() {
-
+
-
+
-
What is Shimmer?
+
Build on IOTA EVM
- A scalable and feeless network enabling frictionless
- decentralized and scalable Web3 economies.
+ Experience seamless dApp development with IOTA EVM's oracles,
+ subgraphs, Layer 0 interoperability, and robust Blast API
+ endpoints.{' '}
diff --git a/src/icons/iota/index.ts b/src/icons/iota/index.ts
index 5b096a14155..0c2b8d46a30 100644
--- a/src/icons/iota/index.ts
+++ b/src/icons/iota/index.ts
@@ -6,6 +6,7 @@ import { default as Identity } from '@site/static/icons/iota/identity.svg';
import { default as IntegrationServices } from '@site/static/icons/iota/integration_services.svg';
import { default as Iota20 } from '@site/static/icons/iota/iota_20.svg';
import { default as IotaCore } from '@site/static/icons/iota/iota_core.svg';
+import { default as IotaEVM } from '@site/static/icons/iota/iota_evm.svg';
import { default as IotaToken } from '@site/static/icons/iota/iota_token.svg';
import { default as Next } from '@site/static/icons/iota/next.svg';
import { default as PickAWallet } from '@site/static/icons/iota/pick_a_wallet.svg';
@@ -29,6 +30,7 @@ export default {
IntegrationServices,
Iota20,
IotaCore,
+ IotaEVM,
IotaToken,
Next,
PickAWallet,
diff --git a/static/icons/iota/iota_evm.svg b/static/icons/iota/iota_evm.svg
new file mode 100644
index 00000000000..6062f9fb96c
--- /dev/null
+++ b/static/icons/iota/iota_evm.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/iota/iota_evm_dm.svg b/static/icons/iota/iota_evm_dm.svg
new file mode 100644
index 00000000000..9096955db5f
--- /dev/null
+++ b/static/icons/iota/iota_evm_dm.svg
@@ -0,0 +1,70 @@
+
diff --git a/theme/src/theme/NetworkInfo/index.tsx b/theme/src/theme/NetworkInfo/index.tsx
index 15735129435..104c699b782 100644
--- a/theme/src/theme/NetworkInfo/index.tsx
+++ b/theme/src/theme/NetworkInfo/index.tsx
@@ -2,23 +2,22 @@ import React from 'react';
import { ChainId } from '../ChainId';
import { NetworkProps } from '../constant';
import CodeBlock from '@theme/CodeBlock';
+import Admonition from '@theme/Admonition';
function L1(props: NetworkProps) {
return (