From fac3c4da607c28bc50a11e956413a06b54b67fbd Mon Sep 17 00:00:00 2001
From: Dr-Electron
Date: Mon, 27 May 2024 15:49:48 +0200
Subject: [PATCH 01/12] Update ISC Network Information
---
docs/build/_partials/_metamask_buttons.mdx | 3 +
.../getting-started/networks-endpoints.mdx | 12 ++
docs/build/getting-started/sidebars.ts | 150 ++++++++++++++----
docs/build/iota-sandbox/docs/welcome.md | 5 +-
.../docs/_admonitions/_network_warning.md | 6 -
.../v1.1/docs/_partials/_hardhat_config.md | 23 ++-
.../docs/getting-started/compatibility.md | 3 +-
.../docs/getting-started/languages-and-vms.md | 3 -
.../getting-started/networks-and-chains.mdx | 75 ++++++++-
.../v1.1/docs/getting-started/quick-start.mdx | 2 +-
.../isc/v1.1/docs/getting-started/tools.mdx | 9 +-
docs/build/isc/v1.1/docs/how-tos/ERC20.md | 5 +-
docs/build/isc/v1.1/docs/how-tos/ERC721.md | 18 ++-
.../basics/send-assets-to-l1.mdx | 2 +-
.../docs/how-tos/deploy-a-smart-contract.mdx | 9 +-
.../docs/how-tos/send-funds-from-L1-to-L2.mdx | 4 +-
.../v1.1/docs/how-tos/test-smart-contracts.md | 12 +-
docs/build/isc/v1.1/docs/introduction.md | 3 -
.../docs/_admonitions/_network_warning.md | 6 -
.../docs/_partials/_hardhat_config.md | 23 ++-
.../docs/getting-started/compatibility.md | 3 +-
.../docs/getting-started/languages-and-vms.md | 3 -
.../getting-started/networks-and-chains.mdx | 75 ++++++++-
.../docs/getting-started/quick-start.mdx | 2 +-
.../v1.3-alpha/docs/getting-started/tools.mdx | 9 +-
.../isc/v1.3-alpha/docs/how-tos/ERC20.md | 5 +-
.../isc/v1.3-alpha/docs/how-tos/ERC721.md | 18 ++-
.../basics/send-assets-to-l1.mdx | 2 +-
.../docs/how-tos/deploy-a-smart-contract.mdx | 9 +-
.../docs/how-tos/send-funds-from-L1-to-L2.mdx | 4 +-
.../docs/how-tos/test-smart-contracts.md | 12 +-
.../build/isc/v1.3-alpha/docs/introduction.md | 3 -
.../tools/legacy-migration-tool.mdx | 2 +-
docs/get-started/wallets/bloom.md | 2 +-
.../docs/how-tos/running-an-access-node.md | 63 +++++++-
.../wasp/v1.1/docs/reference/metrics.md | 2 +-
.../docs/how-tos/running-an-access-node.md | 63 +++++++-
.../wasp/v1.3-alpha/docs/reference/metrics.md | 2 +-
docs/tutorials/shimmerevm-testnet-hardhat.md | 14 +-
docs/tutorials/shimmerevm-testnet-setup.mdx | 14 +-
src/theme/constant.tsx | 20 +++
41 files changed, 547 insertions(+), 153 deletions(-)
delete mode 100644 docs/build/isc/v1.1/docs/_admonitions/_network_warning.md
delete mode 100644 docs/build/isc/v1.3-alpha/docs/_admonitions/_network_warning.md
diff --git a/docs/build/_partials/_metamask_buttons.mdx b/docs/build/_partials/_metamask_buttons.mdx
index 52fec8cf14f..2df64f56c09 100644
--- a/docs/build/_partials/_metamask_buttons.mdx
+++ b/docs/build/_partials/_metamask_buttons.mdx
@@ -4,6 +4,9 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
+
+
+
diff --git a/docs/build/getting-started/networks-endpoints.mdx b/docs/build/getting-started/networks-endpoints.mdx
index 714c125449a..7ec97e7d37f 100644
--- a/docs/build/getting-started/networks-endpoints.mdx
+++ b/docs/build/getting-started/networks-endpoints.mdx
@@ -41,6 +41,18 @@ This network runs under a [Coordinator PoA scheme](/learn/protocols/coordinator/
+### IOTA EVM
+
+[IOTA EVM](https://explorer.evm.iota.org) is the L2 EVM running on top of the IOTA network.
+
+
+
+
+
+#### Additional Info
+
+
+
## IOTA Testnet
[The IOTA Testnet](https://explorer.iota.org/iota-testnet) acts as a test bed for builders without any real world value.
diff --git a/docs/build/getting-started/sidebars.ts b/docs/build/getting-started/sidebars.ts
index 5c77fcf837d..a9e41d09e97 100644
--- a/docs/build/getting-started/sidebars.ts
+++ b/docs/build/getting-started/sidebars.ts
@@ -16,24 +16,116 @@ module.exports = {
},
items: [
{
- type: 'link',
- label: 'IOTA Sandbox',
- href: '/iota-sandbox/welcome',
- },
- {
- type: 'link',
- label: 'CLI Wallet',
- href: '/cli-wallet/welcome',
- },
- {
- type: 'link',
- label: 'WASP CLI',
- href: '/wasp/how-tos/wasp-cli',
- },
- {
- label: 'Schema Tool',
- type: 'link',
- href: '/isc/schema/introduction',
+ type: 'category',
+ label: 'EVM Tools',
+ collapsed: false,
+ link: {
+ type: 'generated-index',
+ title: 'EVM Tools',
+ slug: '/tools/evm',
+ },
+ items: [
+ {
+ type: 'category',
+ label: 'IOTA',
+ collapsed: false,
+ link: {
+ type: 'generated-index',
+ title: 'IOTA EVM Tools',
+ slug: '/tools/evm/iota',
+ },
+ items: [
+ {
+ label: 'Explorer',
+ type: 'link',
+ href: 'https://explorer.evm.iota.org',
+ },
+ {
+ label: 'Toolkit',
+ type: 'link',
+ href: 'https://evm-toolkit.evm.iotaledger.net',
+ },
+ ],
+ },
+ {
+ type: 'category',
+ label: 'IOTA Testnet',
+ collapsed: false,
+ link: {
+ type: 'generated-index',
+ title: 'IOTA Testnet EVM Tools',
+ slug: '/tools/evm/iota-testnet',
+ },
+ items: [
+ {
+ label: 'Explorer',
+ type: 'link',
+ href: 'https://explorer.evm.testnet.iota.org',
+ },
+ {
+ label: 'Toolkit & Faucet',
+ type: 'link',
+ href: 'https://evm-toolkit.evm.testnet.iotaledger.net',
+ },
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Shimmer',
+ collapsed: true,
+ link: {
+ type: 'generated-index',
+ title: 'ShimmerEVM Tools',
+ slug: '/tools/evm/shimmer',
+ },
+ items: [
+ {
+ label: 'Explorer',
+ type: 'link',
+ href: 'https://explorer.evm.shimmer.network',
+ },
+ {
+ label: 'Toolkit',
+ type: 'link',
+ href: 'https://evm-toolkit.evm.shimmer.network',
+ },
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Shimmer Testnet',
+ collapsed: true,
+ link: {
+ type: 'generated-index',
+ title: 'ShimmerEVM Testnet Tools',
+ slug: '/tools/evm/shimmer-testnet',
+ },
+ items: [
+ {
+ label: 'Explorer',
+ type: 'link',
+ href: 'https://explorer.evm.testnet.shimmer.network',
+ },
+ {
+ label: 'EVM Testnet Toolkit & Faucet',
+ type: 'link',
+ href: 'https://evm-toolkit.evm.testnet.shimmer.network/',
+ },
+ ],
+ },
+ {
+ label: 'Oracles for IOTA EVM and ShimmerEVM',
+ type: 'doc',
+ id: 'oracles',
+ },
+ {
+ type: 'link',
+ label: 'WASP CLI',
+ description:
+ 'Wasp CLI is a command line tool for interacting with the Wasp node.',
+ href: '/wasp/how-tos/wasp-cli',
+ },
+ ],
},
{
label: 'Explorer',
@@ -41,29 +133,19 @@ module.exports = {
href: 'https://explorer.iota.org',
},
{
- label: 'Shimmer EVM Explorer',
- type: 'link',
- href: 'https://explorer.evm.shimmer.network/',
- },
- {
- label: 'Shimmer EVM Toolkit',
+ label: 'IOTA Testnet Faucet',
type: 'link',
- href: 'https://evm-toolkit.evm.shimmer.network/',
+ href: 'https://faucet.testnet.iotaledger.net',
},
{
- label: 'Shimmer EVM Testnet Toolkit & Faucet',
type: 'link',
- href: 'https://evm-toolkit.evm.testnet.shimmer.network/',
- },
- {
- label: 'Oracles for Shimmer EVM',
- type: 'doc',
- id: 'oracles',
+ label: 'CLI Wallet',
+ href: '/cli-wallet/welcome',
},
{
- label: 'Testnet Faucet',
type: 'link',
- href: 'https://faucet.testnet.shimmer.network',
+ label: 'IOTA Sandbox',
+ href: '/iota-sandbox/welcome',
},
],
},
diff --git a/docs/build/iota-sandbox/docs/welcome.md b/docs/build/iota-sandbox/docs/welcome.md
index ca37c427f08..4b4270a749a 100644
--- a/docs/build/iota-sandbox/docs/welcome.md
+++ b/docs/build/iota-sandbox/docs/welcome.md
@@ -21,10 +21,9 @@ It is not for creating production-ready networks.
:::
-:::tip Public Testnet
+:::tip Testnet
-If possible,
-you should use the [public testnet](https://wiki.iota.org/build/networks-endpoints/#public-testnet)
+If possible, you should use one of the testnets(/build/networks-endpoints)
where you can experiment with confidence and community support.
:::
diff --git a/docs/build/isc/v1.1/docs/_admonitions/_network_warning.md b/docs/build/isc/v1.1/docs/_admonitions/_network_warning.md
deleted file mode 100644
index e7a18ce4286..00000000000
--- a/docs/build/isc/v1.1/docs/_admonitions/_network_warning.md
+++ /dev/null
@@ -1,6 +0,0 @@
-:::caution Only Available on Shimmer
-
-At the moment, Smart Contracts are only available on [Shimmer](/build/networks-endpoints/#shimmer) and
-its [Public Testnet](/build/networks-endpoints/#public-testnet) network.
-
-:::
\ No newline at end of file
diff --git a/docs/build/isc/v1.1/docs/_partials/_hardhat_config.md b/docs/build/isc/v1.1/docs/_partials/_hardhat_config.md
index d6257484a0b..9b039ccd8e8 100644
--- a/docs/build/isc/v1.1/docs/_partials/_hardhat_config.md
+++ b/docs/build/isc/v1.1/docs/_partials/_hardhat_config.md
@@ -4,6 +4,21 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
+
+
+
+{`
+networks: {
+ 'iotaevm-testnet': {
+ url: '${Networks['iota_testnet'].evm.rpcUrls[0]}',
+ chainId: ${parseInt(Networks['iota_testnet'].evm.chainId)},
+ accounts: [YOUR PRIVATE KEY],
+ },
+}
+`}
+
+
+
@@ -19,14 +34,14 @@ networks: {
-
+
{`
networks: {
- 'iotaevm-testnet': {
- url: '${Networks['iota_testnet'].evm.rpcUrls[0]}',
- chainId: ${parseInt(Networks['iota_testnet'].evm.chainId)},
+ 'iotaevm': {
+ url: '${Networks['iota'].evm.rpcUrls[0]}',
+ chainId: ${parseInt(Networks['iota'].evm.chainId)},
accounts: [YOUR PRIVATE KEY],
},
}
diff --git a/docs/build/isc/v1.1/docs/getting-started/compatibility.md b/docs/build/isc/v1.1/docs/getting-started/compatibility.md
index 93168c9f134..65b7167e0dd 100644
--- a/docs/build/isc/v1.1/docs/getting-started/compatibility.md
+++ b/docs/build/isc/v1.1/docs/getting-started/compatibility.md
@@ -35,7 +35,8 @@ Here are some of the most important properties and limitations of EVM support in
There is no guaranteed _block time_. A new EVM "block" will be created only when an ISC block is created, and ISC does
not enforce an average block time. This means that block times are variable; a new block will be created as soon as needed.
-The average block time on [ShimmerEVM](/build/networks-endpoints#shimmerevm) is 2.8 seconds.
+The average block time on [IOTA EVM](/build/networks-endpoints#iotaevm) and [ShimmerEVM](/build/networks-endpoints#shimmerevm)
+is 2.8 seconds.
### The Magic Contract
diff --git a/docs/build/isc/v1.1/docs/getting-started/languages-and-vms.md b/docs/build/isc/v1.1/docs/getting-started/languages-and-vms.md
index 64bacc1c8b4..1719a69053f 100644
--- a/docs/build/isc/v1.1/docs/getting-started/languages-and-vms.md
+++ b/docs/build/isc/v1.1/docs/getting-started/languages-and-vms.md
@@ -1,10 +1,7 @@
import EVMCompatibility from '../_admonitions/_EVM_compatibility.md'
-import NetworkWarning from '../_admonitions/_network_warning.md'
# Supported Virtual Machines & Languages
-
-
The current release of IOTA Smart Contracts has support for [EVM/Solidity](#evmsolidity-based-smart-contracts) smart
contracts, as well as experimental [Wasm](#wasm-vm-for-isc) smart contracts, providing compatibility with
existing smart contracts and tooling from other EVM based chains like Ethereum. This allows us to offer the existing
diff --git a/docs/build/isc/v1.1/docs/getting-started/networks-and-chains.mdx b/docs/build/isc/v1.1/docs/getting-started/networks-and-chains.mdx
index cd1d3902ea0..cc3796b00ed 100644
--- a/docs/build/isc/v1.1/docs/getting-started/networks-and-chains.mdx
+++ b/docs/build/isc/v1.1/docs/getting-started/networks-and-chains.mdx
@@ -4,7 +4,7 @@ tags:
- mainnet
- shimmer
- devnet
- - public testnet
+ - EVM Testnet
- reference
- Endpoints
---
@@ -35,6 +35,69 @@ The other values (network name and currency symbol) can be whatever value you li
:::
+## IOTA EVM
+
+[IOTA EVM](https://explorer.evm.iota.org) is the L2 EVM running on top of the IOTA network.
+
+
+
+
+
+### Additional Info
+
+
+
+## IOTA EVM Testnet
+
+
+
+[The IOTA EVM Testnet](https://explorer.evm.testnet.iotaledger.net/) runs as a layer 2 on top
+of the [IOTA Testnet](/build/networks-endpoints#iota-testnet). This network uses ISC to facilitate
+
+:::info
+
+This network is subject to occasional resets (no data retention) which are usually announced with a one-week grace period.
+
+:::
+
+
+
+:::note
+
+The other values (network name and currency symbol) can be whatever value you like.
+
+:::
+
+### Additional Info
+
+
+
+## ShimmerEVM Testnet
+
+
+
+[The ShimmerEVM Testnet](https://explorer.evm.testnet.shimmer.network/) runs as a layer 2 on top
+of the [Shimmer Testnet](/build/networks-endpoints#shimmer-testnet). This network uses ISC to facilitate
+an Ethereum Virtual Machine and has an enshrined bridge to layer 1.
+
+:::info
+
+This network is subject to occasional resets (no data retention) which are usually announced with a one-week grace period.
+
+:::
+
+
+
+:::note
+
+The other values (network name and currency symbol) can be whatever value you like.
+
+:::
+
+### Additional Info
+
+
+
## ShimmerEVM
[ShimmerEVM](https://explorer.evm.shimmer.network/) is the L2 EVM running on top of the Shimmer network.
@@ -43,6 +106,10 @@ The other values (network name and currency symbol) can be whatever value you li
+### Additional Info
+
+
+
## ShimmerEVM Testnet
@@ -65,8 +132,12 @@ The other values (network name and currency symbol) can be whatever value you li
:::
+### Additional Info
+
+
+
## Core Contracts
-[ShimmerEVM](#shimmerEVM) and the testnet networks have 7
+[IOTA EVM](#IOTAEVM), [ShimmerEVM](#shimmerEVM) and the testnet networks have 7
[core contracts](../reference/core-contracts/overview.md) deployed, as well as the
[Magic Contract](../reference/magic-contract/introduction.md).
diff --git a/docs/build/isc/v1.1/docs/getting-started/quick-start.mdx b/docs/build/isc/v1.1/docs/getting-started/quick-start.mdx
index b687e3b700d..5533f5d970b 100644
--- a/docs/build/isc/v1.1/docs/getting-started/quick-start.mdx
+++ b/docs/build/isc/v1.1/docs/getting-started/quick-start.mdx
@@ -1,5 +1,5 @@
---
-description: This guide will help you quickly get started with the [Public Testnet](/build/networks-endpoints/#public-testnet)
+description: This guide will help you quickly get started with the EVM Testnets
image: /img/logo/WASP_logo_dark.png
tags:
- quickstart
diff --git a/docs/build/isc/v1.1/docs/getting-started/tools.mdx b/docs/build/isc/v1.1/docs/getting-started/tools.mdx
index 13709a276d4..8b6138abb00 100644
--- a/docs/build/isc/v1.1/docs/getting-started/tools.mdx
+++ b/docs/build/isc/v1.1/docs/getting-started/tools.mdx
@@ -34,7 +34,8 @@ directly with an IOTA Smart Contracts chain running EVM as long as you take a co
1. Please make sure you use the correct JSON-RPC endpoint URL in your tooling for your chain. If you're running your own chain, you can find the JSON-RPC
endpoint URL in the Wasp dashboard (`[URL]/wasp/dashboard` when using `node-docker-setup`).
-2. Please ensure you use the correct `Chain ID` configured while starting the JSON-RPC service. If you did not explicitly define this while starting the service, the default Chain ID will be
+2. Please ensure you use the correct `Chain ID` configured while starting the JSON-RPC service. If you did not explicitly define this while starting the service, the default Chain ID will be
+for IOTA EVM,
for ShimmerEVM or for the EVM Testnet.
3. Fees are handled on the IOTA Smart Contracts chain level, not the EVM level. The chain will reject any requests with a different gas price than specified by the chain.
@@ -55,7 +56,11 @@ To use your EVM chain with MetaMask, simply open up MetaMask and click on the ne
the bottom of this list, you will see the option `Add network`. On the new page you will see a list of popular network with the option `Add a network manually`.
For example this would be the configs to add our different [EVM chains](/build/networks-endpoints):
-
+
+
+
+
+
diff --git a/docs/build/isc/v1.1/docs/how-tos/ERC20.md b/docs/build/isc/v1.1/docs/how-tos/ERC20.md
index 9bbd6929beb..adf0a6ccfa1 100644
--- a/docs/build/isc/v1.1/docs/how-tos/ERC20.md
+++ b/docs/build/isc/v1.1/docs/how-tos/ERC20.md
@@ -74,8 +74,9 @@ Once you have deployed your contract, you can add your new custom token to your
1. Open Metamask, and click on the transaction that created the contract. From there, you can simply click
on `View on block explorer` to visit the transaction details. Alternatively, you can copy the transaction ID and
- visit the [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/)
- or [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/) and use the search bar to find transaction.
+ visit the [IOTA EVM Explorer](https://explorer.evm.iota.org),
+ [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/)
+ or [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/) and use the search bar to find transaction.
!['View on block explorer](/img/evm/how-tos/ERC20/metamask-get-transaction-or-go-to-block-explorer.png)
diff --git a/docs/build/isc/v1.1/docs/how-tos/ERC721.md b/docs/build/isc/v1.1/docs/how-tos/ERC721.md
index 0b66f129e59..767661dbff2 100644
--- a/docs/build/isc/v1.1/docs/how-tos/ERC721.md
+++ b/docs/build/isc/v1.1/docs/how-tos/ERC721.md
@@ -42,7 +42,7 @@ your smart contracts.
## Create the Smart Contract
-The following is an example NFT Smart Contract called "ShimmerEVMSampleNFT".
+The following is an example NFT Smart Contract called "IotaEVMSampleNFT".
```solidity
// SPDX-License-Identifier: MIT
@@ -51,11 +51,11 @@ pragma solidity ^0.8.20;
import "@openzeppelin/contracts@5.0.1/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@5.0.1/access/Ownable.sol";
-contract ShimmerEVMSampleNFT is ERC721, Ownable {
+contract IotaEVMSampleNFT is ERC721, Ownable {
uint256 private _nextTokenId;
constructor(address initialOwner)
- ERC721("ShimmerEVMSampleNFT", "SSNFT")
+ ERC721("IotaEVMSampleNFT", "SSNFT")
Ownable(initialOwner)
{}
@@ -73,9 +73,9 @@ contract ShimmerEVMSampleNFT is ERC721, Ownable {
As you can see above, the contract uses standard methods for the most part. You should pay attention to the following:
- `pragma solidity ^0.8.20;`: This line means the contract uses solidity compiler version `0.8.20` or above.
-- `contract ShimmerEVMSampleNFT is ERC721, ERC721URIStorage, Ownable`: This line defines the contract's name, and what
+- `contract IotaEVMSampleNFT is ERC721, ERC721URIStorage, Ownable`: This line defines the contract's name, and what
other contracts it implements.
-- `ERC721("ShimmerEVMSampleNFT", "SNFT") {}`: This line defines the token name and symbol. You can name it
+- `ERC721("IotaEVMSampleNFT", "SNFT") {}`: This line defines the token name and symbol. You can name it
whatever you want. We recommend using the same name for the token and the contract.
- `return "https://example.com/nft/";`: You should define the base URI of your NFTs. That means the URL you provide here
will be used for all your tokens. Since this contract uses auto-incremental token IDs, your token URI will look
@@ -101,7 +101,7 @@ directly.
:::note Set the Initial Owner
-Before you can deploy this contract, you will need to set the `Initial Owner` address; this can be your own ShimmerEVM address.
+Before you can deploy this contract, you will need to set the `Initial Owner` address; this can be your own IOTA EVM address.
!["Set the initial owner" img.png](/img/evm/how-tos/ERC721/set-initial-owner.png)
@@ -115,13 +115,15 @@ So far, you have [created](#create-the-smart-contract) and deployed the contract
To do, you should:
1. Open the contract (listed under `Deployed Contracts`).
-2. Insert your target ShimmerEVM in beside the `safeMint` button and then click the button.
+2. Insert your target IOTA EVM in beside the `safeMint` button and then click the button.
![Safe mint](/img/evm/how-tos/ERC721/safe-mint.png)
+
3. Confirm the transaction on Metamask.
![Confirm in metamask](/img/evm/how-tos/ERC721/confirm-in-metamask.png)
-If you visit your address in the [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/) or [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/)
+If you visit your address in the visit the [IOTA EVM Explorer](https://explorer.evm.iota.org),
+[ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/) or [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/)
you should see your NFTs listed under `Tokens`.
diff --git a/docs/build/isc/v1.1/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx b/docs/build/isc/v1.1/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
index 4fb8baa24da..a479d9bb2c1 100644
--- a/docs/build/isc/v1.1/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
+++ b/docs/build/isc/v1.1/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
@@ -18,7 +18,7 @@ import AboutAccounts from '../../../_admonitions/_about-accounts.md';
:::info
-ShimmerEVM has 18 decimal places, while Shimmer has 6. This means that any decimals beyond the 6th will be ignored by Shimmer, even though you can see them on ShimmerEVM. Please keep this in mind while sending your tokens to L1.
+IOTA EVM and ShimmerEVM have 18 decimal places, while IOTA and Shimmer have 6. This means that any decimals beyond the 6th will be ignored by IOTA and Shimmer, even though you can see them on IOTA EVM and ShimmerEVM. Please keep this in mind while sending your tokens to L1.
:::
diff --git a/docs/build/isc/v1.1/docs/how-tos/deploy-a-smart-contract.mdx b/docs/build/isc/v1.1/docs/how-tos/deploy-a-smart-contract.mdx
index c841f051a71..959c359326b 100644
--- a/docs/build/isc/v1.1/docs/how-tos/deploy-a-smart-contract.mdx
+++ b/docs/build/isc/v1.1/docs/how-tos/deploy-a-smart-contract.mdx
@@ -2,11 +2,12 @@
tags:
- Smart Contract Deployment
- Shimmer EVM
+- IOTA EVM
- Remix IDE
- Hardhat
-- Shimmer EVM Testnet
+- EVM Testnet
image: /img/logo/WASP_logo_dark.png
-description: 'Learn how to deploy smart contracts to Shimmer EVM and Shimmer EVM Testnet using popular tools like Remix and Hardhat.'
+description: 'Learn how to deploy smart contracts to IOTA EVM, Shimmer EVM and EVM Testnet using popular tools like Remix and Hardhat.'
---
import {AddToMetaMaskButton } from '@theme/AddToMetaMaskButton';
import HardhatConfig from '../_partials/_hardhat_config.md';
@@ -176,7 +177,7 @@ often offered through block explorer APIs.
3. If you have no compilation errors, you can deploy your contract by running the following command:
```bash
- npx hardhat run scripts/deploy.js --network shimmerevm-testnet
+ npx hardhat run scripts/deploy.js --network evm-testnet
```
**Expected output**:
@@ -187,7 +188,7 @@ often offered through block explorer APIs.
***** `0x123456789ABCDEFGHIJK123456789ABCDEFGHIJK` is the contract unlock address.
4. You can verify your contract by visiting
- the [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/),
+ the [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/),
and searching for the address from the previous step. If you access the `Contract` tab, you should be able to see
your code and interact with your contract.
diff --git a/docs/build/isc/v1.1/docs/how-tos/send-funds-from-L1-to-L2.mdx b/docs/build/isc/v1.1/docs/how-tos/send-funds-from-L1-to-L2.mdx
index 1a9a469d7ea..3da7c4003f6 100644
--- a/docs/build/isc/v1.1/docs/how-tos/send-funds-from-L1-to-L2.mdx
+++ b/docs/build/isc/v1.1/docs/how-tos/send-funds-from-L1-to-L2.mdx
@@ -39,11 +39,11 @@ be used to cover gas fees.
-You can use your [Firefly Wallet](https://firefly.iota.org/) to easily send L1 SMR to your L2 ShimmerEVM account.
+You can use your [Firefly Wallet](https://firefly.iota.org/) to easily send L1 IOTA or SMR to your L2 IOTA EVM or ShimmerEVM account.
#### Requirements
-* [Shimmer Tokens](/get-started/introduction/shimmer/shimmer-token/) or [IOTA Tokens](/get-started/introduction/iota/iota-token/)
+* [IOTA Tokens](/get-started/introduction/iota/iota-token/) or [Shimmer Tokens](/get-started/introduction/shimmer/shimmer-token/)
* [Firefly Wallet](https://firefly.iota.org/)
* [Metamask](https://metamask.io/)
diff --git a/docs/build/isc/v1.1/docs/how-tos/test-smart-contracts.md b/docs/build/isc/v1.1/docs/how-tos/test-smart-contracts.md
index 7b032b6d9bf..c3f2a8aa344 100644
--- a/docs/build/isc/v1.1/docs/how-tos/test-smart-contracts.md
+++ b/docs/build/isc/v1.1/docs/how-tos/test-smart-contracts.md
@@ -5,9 +5,9 @@ keywords:
- Unit Tests
- Integration Tests
- Testing Frameworks
-- ShimmerEVM Testnet
+- EVM Testnet
- Solidity Testing
-description: Learn how to test smart contracts before deploying them on public networks to avoid vulnerabilities and ensure functionality aligns with requirements using unit, and integration testing, alongside frameworks and testing with the IOTA Sandbox and the ShimmerEVM Testnet.
+description: Learn how to test smart contracts before deploying them on public networks to avoid vulnerabilities and ensure functionality aligns with requirements using unit, and integration testing, alongside frameworks and testing with the IOTA Sandbox and the EVM Testnet.
---
# Testing Smart Contracts
@@ -91,18 +91,18 @@ expected.
#### Tools
-You can use the [ShimmerEVM Testnet](/build/networks-endpoints/#testnet-evm) to conduct integration tests without
+You can use the [EVM Testnet](/build/networks-endpoints/#shimmerevm-testnet) to conduct integration tests without
incurring any fees or the [IOTA Sandbox](/iota-sandbox/getting-started/) if you want to run the tests locally.
## Manual Testing
Once you have a complete batch of [automated tests](#automated-testing), manually testing your contract to ensure it
behaves as expected in the real world is still good practice. However, to avoid incurring fees or deploying a faulty
-contract, you can manually test your contract using a sandboxed local network and the Shimmer EVM Testnet.
+contract, you can manually test your contract using a sandboxed local network and the EVM Testnet.
Testing using the [IOTA Sandbox](/iota-sandbox/getting-started/) serves well for the first stage of automated and manual
integration tests, as you have complete control over the entire local network. Once you are confident about how your
-contract behaves locally, you can deploy and test on the [ShimmerEVM Testnet](/build/networks-endpoints/#testnet-evm),
-which replicates the ShimmerEVM network but also enables cost and risk-free interactions.
+contract behaves locally, you can deploy and test on the [EVM Testnet](/build/networks-endpoints/#shimmerevm-testnet),
+which replicates the IOTA EVM and ShimmerEVM networks, but also enables cost and risk-free interactions.
diff --git a/docs/build/isc/v1.1/docs/introduction.md b/docs/build/isc/v1.1/docs/introduction.md
index c644eb4da1a..b3811792692 100644
--- a/docs/build/isc/v1.1/docs/introduction.md
+++ b/docs/build/isc/v1.1/docs/introduction.md
@@ -11,13 +11,10 @@ tags:
- explanation
---
-import NetworkWarning from './_admonitions/_network_warning.md'
import OnOffLedgerRequest from './_partials/_on_off_ledger_request.md';
# Introduction
-
-
Smart contracts are deterministic applications that run on a distributed network with multiple
[validators](explanations/validators.md) that execute and validate the same code.
Their deterministic and distributed nature makes them predictable, stable and trustworthy.
diff --git a/docs/build/isc/v1.3-alpha/docs/_admonitions/_network_warning.md b/docs/build/isc/v1.3-alpha/docs/_admonitions/_network_warning.md
deleted file mode 100644
index e7a18ce4286..00000000000
--- a/docs/build/isc/v1.3-alpha/docs/_admonitions/_network_warning.md
+++ /dev/null
@@ -1,6 +0,0 @@
-:::caution Only Available on Shimmer
-
-At the moment, Smart Contracts are only available on [Shimmer](/build/networks-endpoints/#shimmer) and
-its [Public Testnet](/build/networks-endpoints/#public-testnet) network.
-
-:::
\ No newline at end of file
diff --git a/docs/build/isc/v1.3-alpha/docs/_partials/_hardhat_config.md b/docs/build/isc/v1.3-alpha/docs/_partials/_hardhat_config.md
index d6257484a0b..9b039ccd8e8 100644
--- a/docs/build/isc/v1.3-alpha/docs/_partials/_hardhat_config.md
+++ b/docs/build/isc/v1.3-alpha/docs/_partials/_hardhat_config.md
@@ -4,6 +4,21 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
+
+
+
+{`
+networks: {
+ 'iotaevm-testnet': {
+ url: '${Networks['iota_testnet'].evm.rpcUrls[0]}',
+ chainId: ${parseInt(Networks['iota_testnet'].evm.chainId)},
+ accounts: [YOUR PRIVATE KEY],
+ },
+}
+`}
+
+
+
@@ -19,14 +34,14 @@ networks: {
-
+
{`
networks: {
- 'iotaevm-testnet': {
- url: '${Networks['iota_testnet'].evm.rpcUrls[0]}',
- chainId: ${parseInt(Networks['iota_testnet'].evm.chainId)},
+ 'iotaevm': {
+ url: '${Networks['iota'].evm.rpcUrls[0]}',
+ chainId: ${parseInt(Networks['iota'].evm.chainId)},
accounts: [YOUR PRIVATE KEY],
},
}
diff --git a/docs/build/isc/v1.3-alpha/docs/getting-started/compatibility.md b/docs/build/isc/v1.3-alpha/docs/getting-started/compatibility.md
index 93168c9f134..65b7167e0dd 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/compatibility.md
+++ b/docs/build/isc/v1.3-alpha/docs/getting-started/compatibility.md
@@ -35,7 +35,8 @@ Here are some of the most important properties and limitations of EVM support in
There is no guaranteed _block time_. A new EVM "block" will be created only when an ISC block is created, and ISC does
not enforce an average block time. This means that block times are variable; a new block will be created as soon as needed.
-The average block time on [ShimmerEVM](/build/networks-endpoints#shimmerevm) is 2.8 seconds.
+The average block time on [IOTA EVM](/build/networks-endpoints#iotaevm) and [ShimmerEVM](/build/networks-endpoints#shimmerevm)
+is 2.8 seconds.
### The Magic Contract
diff --git a/docs/build/isc/v1.3-alpha/docs/getting-started/languages-and-vms.md b/docs/build/isc/v1.3-alpha/docs/getting-started/languages-and-vms.md
index 64bacc1c8b4..1719a69053f 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/languages-and-vms.md
+++ b/docs/build/isc/v1.3-alpha/docs/getting-started/languages-and-vms.md
@@ -1,10 +1,7 @@
import EVMCompatibility from '../_admonitions/_EVM_compatibility.md'
-import NetworkWarning from '../_admonitions/_network_warning.md'
# Supported Virtual Machines & Languages
-
-
The current release of IOTA Smart Contracts has support for [EVM/Solidity](#evmsolidity-based-smart-contracts) smart
contracts, as well as experimental [Wasm](#wasm-vm-for-isc) smart contracts, providing compatibility with
existing smart contracts and tooling from other EVM based chains like Ethereum. This allows us to offer the existing
diff --git a/docs/build/isc/v1.3-alpha/docs/getting-started/networks-and-chains.mdx b/docs/build/isc/v1.3-alpha/docs/getting-started/networks-and-chains.mdx
index cd1d3902ea0..cc3796b00ed 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/networks-and-chains.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/getting-started/networks-and-chains.mdx
@@ -4,7 +4,7 @@ tags:
- mainnet
- shimmer
- devnet
- - public testnet
+ - EVM Testnet
- reference
- Endpoints
---
@@ -35,6 +35,69 @@ The other values (network name and currency symbol) can be whatever value you li
:::
+## IOTA EVM
+
+[IOTA EVM](https://explorer.evm.iota.org) is the L2 EVM running on top of the IOTA network.
+
+
+
+
+
+### Additional Info
+
+
+
+## IOTA EVM Testnet
+
+
+
+[The IOTA EVM Testnet](https://explorer.evm.testnet.iotaledger.net/) runs as a layer 2 on top
+of the [IOTA Testnet](/build/networks-endpoints#iota-testnet). This network uses ISC to facilitate
+
+:::info
+
+This network is subject to occasional resets (no data retention) which are usually announced with a one-week grace period.
+
+:::
+
+
+
+:::note
+
+The other values (network name and currency symbol) can be whatever value you like.
+
+:::
+
+### Additional Info
+
+
+
+## ShimmerEVM Testnet
+
+
+
+[The ShimmerEVM Testnet](https://explorer.evm.testnet.shimmer.network/) runs as a layer 2 on top
+of the [Shimmer Testnet](/build/networks-endpoints#shimmer-testnet). This network uses ISC to facilitate
+an Ethereum Virtual Machine and has an enshrined bridge to layer 1.
+
+:::info
+
+This network is subject to occasional resets (no data retention) which are usually announced with a one-week grace period.
+
+:::
+
+
+
+:::note
+
+The other values (network name and currency symbol) can be whatever value you like.
+
+:::
+
+### Additional Info
+
+
+
## ShimmerEVM
[ShimmerEVM](https://explorer.evm.shimmer.network/) is the L2 EVM running on top of the Shimmer network.
@@ -43,6 +106,10 @@ The other values (network name and currency symbol) can be whatever value you li
+### Additional Info
+
+
+
## ShimmerEVM Testnet
@@ -65,8 +132,12 @@ The other values (network name and currency symbol) can be whatever value you li
:::
+### Additional Info
+
+
+
## Core Contracts
-[ShimmerEVM](#shimmerEVM) and the testnet networks have 7
+[IOTA EVM](#IOTAEVM), [ShimmerEVM](#shimmerEVM) and the testnet networks have 7
[core contracts](../reference/core-contracts/overview.md) deployed, as well as the
[Magic Contract](../reference/magic-contract/introduction.md).
diff --git a/docs/build/isc/v1.3-alpha/docs/getting-started/quick-start.mdx b/docs/build/isc/v1.3-alpha/docs/getting-started/quick-start.mdx
index b687e3b700d..5533f5d970b 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/quick-start.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/getting-started/quick-start.mdx
@@ -1,5 +1,5 @@
---
-description: This guide will help you quickly get started with the [Public Testnet](/build/networks-endpoints/#public-testnet)
+description: This guide will help you quickly get started with the EVM Testnets
image: /img/logo/WASP_logo_dark.png
tags:
- quickstart
diff --git a/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx b/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx
index 13709a276d4..8b6138abb00 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx
@@ -34,7 +34,8 @@ directly with an IOTA Smart Contracts chain running EVM as long as you take a co
1. Please make sure you use the correct JSON-RPC endpoint URL in your tooling for your chain. If you're running your own chain, you can find the JSON-RPC
endpoint URL in the Wasp dashboard (`[URL]/wasp/dashboard` when using `node-docker-setup`).
-2. Please ensure you use the correct `Chain ID` configured while starting the JSON-RPC service. If you did not explicitly define this while starting the service, the default Chain ID will be
+2. Please ensure you use the correct `Chain ID` configured while starting the JSON-RPC service. If you did not explicitly define this while starting the service, the default Chain ID will be
+for IOTA EVM,
for ShimmerEVM or for the EVM Testnet.
3. Fees are handled on the IOTA Smart Contracts chain level, not the EVM level. The chain will reject any requests with a different gas price than specified by the chain.
@@ -55,7 +56,11 @@ To use your EVM chain with MetaMask, simply open up MetaMask and click on the ne
the bottom of this list, you will see the option `Add network`. On the new page you will see a list of popular network with the option `Add a network manually`.
For example this would be the configs to add our different [EVM chains](/build/networks-endpoints):
-
+
+
+
+
+
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/ERC20.md b/docs/build/isc/v1.3-alpha/docs/how-tos/ERC20.md
index 9bbd6929beb..adf0a6ccfa1 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/ERC20.md
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/ERC20.md
@@ -74,8 +74,9 @@ Once you have deployed your contract, you can add your new custom token to your
1. Open Metamask, and click on the transaction that created the contract. From there, you can simply click
on `View on block explorer` to visit the transaction details. Alternatively, you can copy the transaction ID and
- visit the [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/)
- or [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/) and use the search bar to find transaction.
+ visit the [IOTA EVM Explorer](https://explorer.evm.iota.org),
+ [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/)
+ or [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/) and use the search bar to find transaction.
!['View on block explorer](/img/evm/how-tos/ERC20/metamask-get-transaction-or-go-to-block-explorer.png)
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/ERC721.md b/docs/build/isc/v1.3-alpha/docs/how-tos/ERC721.md
index 0b66f129e59..767661dbff2 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/ERC721.md
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/ERC721.md
@@ -42,7 +42,7 @@ your smart contracts.
## Create the Smart Contract
-The following is an example NFT Smart Contract called "ShimmerEVMSampleNFT".
+The following is an example NFT Smart Contract called "IotaEVMSampleNFT".
```solidity
// SPDX-License-Identifier: MIT
@@ -51,11 +51,11 @@ pragma solidity ^0.8.20;
import "@openzeppelin/contracts@5.0.1/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@5.0.1/access/Ownable.sol";
-contract ShimmerEVMSampleNFT is ERC721, Ownable {
+contract IotaEVMSampleNFT is ERC721, Ownable {
uint256 private _nextTokenId;
constructor(address initialOwner)
- ERC721("ShimmerEVMSampleNFT", "SSNFT")
+ ERC721("IotaEVMSampleNFT", "SSNFT")
Ownable(initialOwner)
{}
@@ -73,9 +73,9 @@ contract ShimmerEVMSampleNFT is ERC721, Ownable {
As you can see above, the contract uses standard methods for the most part. You should pay attention to the following:
- `pragma solidity ^0.8.20;`: This line means the contract uses solidity compiler version `0.8.20` or above.
-- `contract ShimmerEVMSampleNFT is ERC721, ERC721URIStorage, Ownable`: This line defines the contract's name, and what
+- `contract IotaEVMSampleNFT is ERC721, ERC721URIStorage, Ownable`: This line defines the contract's name, and what
other contracts it implements.
-- `ERC721("ShimmerEVMSampleNFT", "SNFT") {}`: This line defines the token name and symbol. You can name it
+- `ERC721("IotaEVMSampleNFT", "SNFT") {}`: This line defines the token name and symbol. You can name it
whatever you want. We recommend using the same name for the token and the contract.
- `return "https://example.com/nft/";`: You should define the base URI of your NFTs. That means the URL you provide here
will be used for all your tokens. Since this contract uses auto-incremental token IDs, your token URI will look
@@ -101,7 +101,7 @@ directly.
:::note Set the Initial Owner
-Before you can deploy this contract, you will need to set the `Initial Owner` address; this can be your own ShimmerEVM address.
+Before you can deploy this contract, you will need to set the `Initial Owner` address; this can be your own IOTA EVM address.
!["Set the initial owner" img.png](/img/evm/how-tos/ERC721/set-initial-owner.png)
@@ -115,13 +115,15 @@ So far, you have [created](#create-the-smart-contract) and deployed the contract
To do, you should:
1. Open the contract (listed under `Deployed Contracts`).
-2. Insert your target ShimmerEVM in beside the `safeMint` button and then click the button.
+2. Insert your target IOTA EVM in beside the `safeMint` button and then click the button.
![Safe mint](/img/evm/how-tos/ERC721/safe-mint.png)
+
3. Confirm the transaction on Metamask.
![Confirm in metamask](/img/evm/how-tos/ERC721/confirm-in-metamask.png)
-If you visit your address in the [ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/) or [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/)
+If you visit your address in the visit the [IOTA EVM Explorer](https://explorer.evm.iota.org),
+[ShimmerEVM Explorer](https://explorer.evm.testnet.shimmer.network/) or [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/)
you should see your NFTs listed under `Tokens`.
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx b/docs/build/isc/v1.3-alpha/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
index 4fb8baa24da..a479d9bb2c1 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/core-contracts/basics/send-assets-to-l1.mdx
@@ -18,7 +18,7 @@ import AboutAccounts from '../../../_admonitions/_about-accounts.md';
:::info
-ShimmerEVM has 18 decimal places, while Shimmer has 6. This means that any decimals beyond the 6th will be ignored by Shimmer, even though you can see them on ShimmerEVM. Please keep this in mind while sending your tokens to L1.
+IOTA EVM and ShimmerEVM have 18 decimal places, while IOTA and Shimmer have 6. This means that any decimals beyond the 6th will be ignored by IOTA and Shimmer, even though you can see them on IOTA EVM and ShimmerEVM. Please keep this in mind while sending your tokens to L1.
:::
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/deploy-a-smart-contract.mdx b/docs/build/isc/v1.3-alpha/docs/how-tos/deploy-a-smart-contract.mdx
index c841f051a71..959c359326b 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/deploy-a-smart-contract.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/deploy-a-smart-contract.mdx
@@ -2,11 +2,12 @@
tags:
- Smart Contract Deployment
- Shimmer EVM
+- IOTA EVM
- Remix IDE
- Hardhat
-- Shimmer EVM Testnet
+- EVM Testnet
image: /img/logo/WASP_logo_dark.png
-description: 'Learn how to deploy smart contracts to Shimmer EVM and Shimmer EVM Testnet using popular tools like Remix and Hardhat.'
+description: 'Learn how to deploy smart contracts to IOTA EVM, Shimmer EVM and EVM Testnet using popular tools like Remix and Hardhat.'
---
import {AddToMetaMaskButton } from '@theme/AddToMetaMaskButton';
import HardhatConfig from '../_partials/_hardhat_config.md';
@@ -176,7 +177,7 @@ often offered through block explorer APIs.
3. If you have no compilation errors, you can deploy your contract by running the following command:
```bash
- npx hardhat run scripts/deploy.js --network shimmerevm-testnet
+ npx hardhat run scripts/deploy.js --network evm-testnet
```
**Expected output**:
@@ -187,7 +188,7 @@ often offered through block explorer APIs.
***** `0x123456789ABCDEFGHIJK123456789ABCDEFGHIJK` is the contract unlock address.
4. You can verify your contract by visiting
- the [ShimmerEVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/),
+ the [EVM Testnet Explorer](https://explorer.evm.testnet.shimmer.network/),
and searching for the address from the previous step. If you access the `Contract` tab, you should be able to see
your code and interact with your contract.
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/send-funds-from-L1-to-L2.mdx b/docs/build/isc/v1.3-alpha/docs/how-tos/send-funds-from-L1-to-L2.mdx
index 1a9a469d7ea..3da7c4003f6 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/send-funds-from-L1-to-L2.mdx
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/send-funds-from-L1-to-L2.mdx
@@ -39,11 +39,11 @@ be used to cover gas fees.
-You can use your [Firefly Wallet](https://firefly.iota.org/) to easily send L1 SMR to your L2 ShimmerEVM account.
+You can use your [Firefly Wallet](https://firefly.iota.org/) to easily send L1 IOTA or SMR to your L2 IOTA EVM or ShimmerEVM account.
#### Requirements
-* [Shimmer Tokens](/get-started/introduction/shimmer/shimmer-token/) or [IOTA Tokens](/get-started/introduction/iota/iota-token/)
+* [IOTA Tokens](/get-started/introduction/iota/iota-token/) or [Shimmer Tokens](/get-started/introduction/shimmer/shimmer-token/)
* [Firefly Wallet](https://firefly.iota.org/)
* [Metamask](https://metamask.io/)
diff --git a/docs/build/isc/v1.3-alpha/docs/how-tos/test-smart-contracts.md b/docs/build/isc/v1.3-alpha/docs/how-tos/test-smart-contracts.md
index 7b032b6d9bf..c3f2a8aa344 100644
--- a/docs/build/isc/v1.3-alpha/docs/how-tos/test-smart-contracts.md
+++ b/docs/build/isc/v1.3-alpha/docs/how-tos/test-smart-contracts.md
@@ -5,9 +5,9 @@ keywords:
- Unit Tests
- Integration Tests
- Testing Frameworks
-- ShimmerEVM Testnet
+- EVM Testnet
- Solidity Testing
-description: Learn how to test smart contracts before deploying them on public networks to avoid vulnerabilities and ensure functionality aligns with requirements using unit, and integration testing, alongside frameworks and testing with the IOTA Sandbox and the ShimmerEVM Testnet.
+description: Learn how to test smart contracts before deploying them on public networks to avoid vulnerabilities and ensure functionality aligns with requirements using unit, and integration testing, alongside frameworks and testing with the IOTA Sandbox and the EVM Testnet.
---
# Testing Smart Contracts
@@ -91,18 +91,18 @@ expected.
#### Tools
-You can use the [ShimmerEVM Testnet](/build/networks-endpoints/#testnet-evm) to conduct integration tests without
+You can use the [EVM Testnet](/build/networks-endpoints/#shimmerevm-testnet) to conduct integration tests without
incurring any fees or the [IOTA Sandbox](/iota-sandbox/getting-started/) if you want to run the tests locally.
## Manual Testing
Once you have a complete batch of [automated tests](#automated-testing), manually testing your contract to ensure it
behaves as expected in the real world is still good practice. However, to avoid incurring fees or deploying a faulty
-contract, you can manually test your contract using a sandboxed local network and the Shimmer EVM Testnet.
+contract, you can manually test your contract using a sandboxed local network and the EVM Testnet.
Testing using the [IOTA Sandbox](/iota-sandbox/getting-started/) serves well for the first stage of automated and manual
integration tests, as you have complete control over the entire local network. Once you are confident about how your
-contract behaves locally, you can deploy and test on the [ShimmerEVM Testnet](/build/networks-endpoints/#testnet-evm),
-which replicates the ShimmerEVM network but also enables cost and risk-free interactions.
+contract behaves locally, you can deploy and test on the [EVM Testnet](/build/networks-endpoints/#shimmerevm-testnet),
+which replicates the IOTA EVM and ShimmerEVM networks, but also enables cost and risk-free interactions.
diff --git a/docs/build/isc/v1.3-alpha/docs/introduction.md b/docs/build/isc/v1.3-alpha/docs/introduction.md
index c644eb4da1a..b3811792692 100644
--- a/docs/build/isc/v1.3-alpha/docs/introduction.md
+++ b/docs/build/isc/v1.3-alpha/docs/introduction.md
@@ -11,13 +11,10 @@ tags:
- explanation
---
-import NetworkWarning from './_admonitions/_network_warning.md'
import OnOffLedgerRequest from './_partials/_on_off_ledger_request.md';
# Introduction
-
-
Smart contracts are deterministic applications that run on a distributed network with multiple
[validators](explanations/validators.md) that execute and validate the same code.
Their deterministic and distributed nature makes them predictable, stable and trustworthy.
diff --git a/docs/get-started/tools/legacy-migration-tool.mdx b/docs/get-started/tools/legacy-migration-tool.mdx
index 04051f80f75..66672900915 100644
--- a/docs/get-started/tools/legacy-migration-tool.mdx
+++ b/docs/get-started/tools/legacy-migration-tool.mdx
@@ -6,7 +6,7 @@ import ThemedImage from '@theme/ThemedImage';
The [IOTA Legacy Migration Tool](https://github.com/iotaledger/legacy-migration-tool/releases) is a standalone app to
help you migrate your tokens from the legacy IOTA network to the
-current [IOTA Mainnet](/build/networks-endpoints/#iota-mainnet) running the Stardust protocol.
+current [IOTA Mainnet](/build/networks-endpoints/#iota) running the Stardust protocol.
The new tool allows users to migrate from
an [81-character seed](#restore-a-text-backup), [a Trinity seed vault file](#restore-a-file-backup), or a
[Ledger device](#users-with-ledger-devices).
diff --git a/docs/get-started/wallets/bloom.md b/docs/get-started/wallets/bloom.md
index cfdb2de997d..bd2f7a9e3d9 100644
--- a/docs/get-started/wallets/bloom.md
+++ b/docs/get-started/wallets/bloom.md
@@ -12,7 +12,7 @@ tags:
---
Bloom is a desktop wallet with first-class security developed by former members of the Firefly team.
-Bloom supports the [IOTA](https://wiki.iota.org/build/networks-endpoints/#iota-mainnet) and
+Bloom supports the [IOTA](https://wiki.iota.org/build/networks-endpoints/#iota) and
[Shimmer](https://wiki.iota.org/build/networks-endpoints/#shimmer) networks, as well as
[ShimmerEVM](https://wiki.iota.org/build/networks-endpoints/#shimmerevm) in the same application. This means you can
seamlessly transfer assets back and forth between Shimmer and ShimmerEVM without other tooling.
diff --git a/docs/maintain/wasp/v1.1/docs/how-tos/running-an-access-node.md b/docs/maintain/wasp/v1.1/docs/how-tos/running-an-access-node.md
index f0baa0b5429..a12240bda0a 100644
--- a/docs/maintain/wasp/v1.1/docs/how-tos/running-an-access-node.md
+++ b/docs/maintain/wasp/v1.1/docs/how-tos/running-an-access-node.md
@@ -32,6 +32,20 @@ You can then download the historical state using the following command (this wil
+
+
+```sh
+wget https://files.stardust-mainnet.iotaledger.net/dbs/wasp/latest-wasp_chains_wal.tgz -O - | tar xzv -C data/wasp
+```
+
+
+
+
+```sh
+wget https://files.iota-testnet.iotaledger.net/dbs/wasp/latest-wasp_chains_wal.tgz -O - | tar xzv -C data/wasp
+```
+
+
```sh
@@ -148,6 +162,20 @@ Now you can add your peer as trusted peer.
Add the chain with its chain id and name:
+
+
+```sh
+./wasp-cli chain add iota-evm iota1pzt3mstq6khgc3tl0mwuzk3eqddkryqnpdxmk4nr25re2466uxwm28qqxu5
+```
+
+
+
+
+```sh
+./wasp-cli chain add iota-evm-testnet tst1pzxsrr7apqkdzz633dyntmvxwtyvk029p39te5j0m33q6946h7akzv663zu
+```
+
+
```sh
@@ -170,6 +198,20 @@ Activate the chain using its name:
+
+
+```sh
+./wasp-cli chain activate --chain iota-evm
+```
+
+
+
+
+```sh
+./wasp-cli chain activate --chain iota-evm-testnet
+```
+
+
```sh
@@ -209,19 +251,32 @@ You can follow the progress using `docker logs -f wasp`. If you chose to create
You should have a working EVM JSON-RPC endpoint on:
+
+
+```
+/wasp/api/v1/chains/iota1pzt3mstq6khgc3tl0mwuzk3eqddkryqnpdxmk4nr25re2466uxwm28qqxu5/evm
+```
+
+
+
+
+```
+/wasp/api/v1/chains/tst1pzxsrr7apqkdzz633dyntmvxwtyvk029p39te5j0m33q6946h7akzv663zu/evm
+```
+
+
+
```
-/wasp/api/v1/chains/smr1prxvwqvwf7nru5q5xvh5thwg54zsm2y4wfnk6yk56hj3exxkg92mx20wl3s
-/evm
+/wasp/api/v1/chains/smr1prxvwqvwf7nru5q5xvh5thwg54zsm2y4wfnk6yk56hj3exxkg92mx20wl3s/evm
```
```
-/wasp/api/v1/chains/rms1ppp00k5mmd2m8my8ukkp58nd3rskw6rx8l09aj35984k74uuc5u2cywn3ex
-/evm
+/wasp/api/v1/chains/rms1ppp00k5mmd2m8my8ukkp58nd3rskw6rx8l09aj35984k74uuc5u2cywn3ex/evm
```
diff --git a/docs/maintain/wasp/v1.1/docs/reference/metrics.md b/docs/maintain/wasp/v1.1/docs/reference/metrics.md
index 385ec322f55..0e816a696e0 100644
--- a/docs/maintain/wasp/v1.1/docs/reference/metrics.md
+++ b/docs/maintain/wasp/v1.1/docs/reference/metrics.md
@@ -9,7 +9,7 @@ tags:
# Exposed Metrics
-Refer to the [testnet endpoints description](/build/networks-endpoints/#testnet-evm) for access details.
+Refer to the [testnet endpoints description](/build/networks-endpoints/#shimmerevm-testnet) for access details.
| Metric | Description |
| ------------------------------------------ | ---------------------------------------------------- |
diff --git a/docs/maintain/wasp/v1.3-alpha/docs/how-tos/running-an-access-node.md b/docs/maintain/wasp/v1.3-alpha/docs/how-tos/running-an-access-node.md
index f0baa0b5429..a12240bda0a 100644
--- a/docs/maintain/wasp/v1.3-alpha/docs/how-tos/running-an-access-node.md
+++ b/docs/maintain/wasp/v1.3-alpha/docs/how-tos/running-an-access-node.md
@@ -32,6 +32,20 @@ You can then download the historical state using the following command (this wil
+
+
+```sh
+wget https://files.stardust-mainnet.iotaledger.net/dbs/wasp/latest-wasp_chains_wal.tgz -O - | tar xzv -C data/wasp
+```
+
+
+
+
+```sh
+wget https://files.iota-testnet.iotaledger.net/dbs/wasp/latest-wasp_chains_wal.tgz -O - | tar xzv -C data/wasp
+```
+
+
```sh
@@ -148,6 +162,20 @@ Now you can add your peer as trusted peer.
Add the chain with its chain id and name:
+
+
+```sh
+./wasp-cli chain add iota-evm iota1pzt3mstq6khgc3tl0mwuzk3eqddkryqnpdxmk4nr25re2466uxwm28qqxu5
+```
+
+
+
+
+```sh
+./wasp-cli chain add iota-evm-testnet tst1pzxsrr7apqkdzz633dyntmvxwtyvk029p39te5j0m33q6946h7akzv663zu
+```
+
+
```sh
@@ -170,6 +198,20 @@ Activate the chain using its name:
+
+
+```sh
+./wasp-cli chain activate --chain iota-evm
+```
+
+
+
+
+```sh
+./wasp-cli chain activate --chain iota-evm-testnet
+```
+
+
```sh
@@ -209,19 +251,32 @@ You can follow the progress using `docker logs -f wasp`. If you chose to create
You should have a working EVM JSON-RPC endpoint on:
+
+
+```
+/wasp/api/v1/chains/iota1pzt3mstq6khgc3tl0mwuzk3eqddkryqnpdxmk4nr25re2466uxwm28qqxu5/evm
+```
+
+
+
+
+```
+/wasp/api/v1/chains/tst1pzxsrr7apqkdzz633dyntmvxwtyvk029p39te5j0m33q6946h7akzv663zu/evm
+```
+
+
+
```
-/wasp/api/v1/chains/smr1prxvwqvwf7nru5q5xvh5thwg54zsm2y4wfnk6yk56hj3exxkg92mx20wl3s
-/evm
+/wasp/api/v1/chains/smr1prxvwqvwf7nru5q5xvh5thwg54zsm2y4wfnk6yk56hj3exxkg92mx20wl3s/evm
```
```
-/wasp/api/v1/chains/rms1ppp00k5mmd2m8my8ukkp58nd3rskw6rx8l09aj35984k74uuc5u2cywn3ex
-/evm
+/wasp/api/v1/chains/rms1ppp00k5mmd2m8my8ukkp58nd3rskw6rx8l09aj35984k74uuc5u2cywn3ex/evm
```
diff --git a/docs/maintain/wasp/v1.3-alpha/docs/reference/metrics.md b/docs/maintain/wasp/v1.3-alpha/docs/reference/metrics.md
index 385ec322f55..0e816a696e0 100644
--- a/docs/maintain/wasp/v1.3-alpha/docs/reference/metrics.md
+++ b/docs/maintain/wasp/v1.3-alpha/docs/reference/metrics.md
@@ -9,7 +9,7 @@ tags:
# Exposed Metrics
-Refer to the [testnet endpoints description](/build/networks-endpoints/#testnet-evm) for access details.
+Refer to the [testnet endpoints description](/build/networks-endpoints/#shimmerevm-testnet) for access details.
| Metric | Description |
| ------------------------------------------ | ---------------------------------------------------- |
diff --git a/docs/tutorials/shimmerevm-testnet-hardhat.md b/docs/tutorials/shimmerevm-testnet-hardhat.md
index b39d38a66f0..3e59a76cd89 100644
--- a/docs/tutorials/shimmerevm-testnet-hardhat.md
+++ b/docs/tutorials/shimmerevm-testnet-hardhat.md
@@ -128,9 +128,9 @@ Some important things to note are data types. `event` means that we can subscrib
```js
module.exports = {
solidity: '0.8.18',
- defaultNetwork: 'shimmerevm-testnet',
+ defaultNetwork: 'evm-testnet',
networks: {
- 'shimmerevm-testnet': {
+ 'evm-testnet': {
url: 'https://json-rpc.evm.testnet.shimmer.network',
chainId: 1073,
accounts: [priv_key],
@@ -190,21 +190,21 @@ npx hardhat compile
Run this command in root of the project directory:
```sh
-npx hardhat run scripts/deploy.js --network shimmerevm-testnet
+npx hardhat run scripts/deploy.js --network evm-testnet
```
-The contract will be deployed on ShimmerEVM Testnet, and you can check the deployment status here on the [explorer](https://explorer.evm.testnet.shimmer.network/).
+The contract will be deployed on EVM Testnet, and you can check the deployment status here on the [explorer](https://explorer.evm.testnet.shimmer.network/).
If you want to further verify your contract, add the following to your `hardhat.config.js`:
```js
etherscan: {
apiKey: {
- 'shimmerevm-testnet': 'ABCDE12345ABCDE12345ABCDE123456789',
+ 'evm-testnet': 'ABCDE12345ABCDE12345ABCDE123456789',
},
customChains: [
{
- network: 'shimmerevm-testnet',
+ network: 'evm-testnet',
chainId: 1073,
urls: {
apiURL: 'https://explorer.evm.testnet.shimmer.network/api',
@@ -218,7 +218,7 @@ etherscan: {
Then you can verify by running:
```sh
-npx hardhat verify --network shimmerevm-testnet
+npx hardhat verify --network evm-testnet
```
:::tip Address and unlock time
diff --git a/docs/tutorials/shimmerevm-testnet-setup.mdx b/docs/tutorials/shimmerevm-testnet-setup.mdx
index 5124e19576d..8e5a385a672 100644
--- a/docs/tutorials/shimmerevm-testnet-setup.mdx
+++ b/docs/tutorials/shimmerevm-testnet-setup.mdx
@@ -1,10 +1,10 @@
import { AddToMetaMaskButton } from '@theme/AddToMetaMaskButton';
import { Networks } from '@theme/constant';
-# Connect to ShimmerEVM Testnet and deploy a Solidity Smart Contract
+# Connect to EVM Testnet and deploy a Solidity Smart Contract
:::info
-In this tutorial, we will connect to ShimmerEVM Testnet, connect Metamask to it, get funded and deploy a smart contract in Solidity.
+In this tutorial, we will connect to EVM Testnet, connect Metamask to it, get funded and deploy a smart contract in Solidity.
:::
## Prerequisites
@@ -12,16 +12,16 @@ In this tutorial, we will connect to ShimmerEVM Testnet, connect Metamask to it,
- [Metamask](https://metamask.io/) or any other wallet of your choice.
- [Remix](https://remix-project.org/) or any other development environment of your choice.
-## Connect to ShimmerEVM Testnet
+## Connect to EVM Testnet
-You can either just use the following button to add the ShimmerEVM Testnet network to Metamask
+You can either just use the following button to add the EVM Testnet network to Metamask
or enter the information manually.
-To add the ShimmerEVM Testnet network manually to your Metamask use following info:
+To add the EVM Testnet network manually to your Metamask use following info:
-- Network Name: `ShimmerEVM Testnet`
+- Network Name: `EVM Testnet`
- New RPC URL: `https://json-rpc.evm.testnet.shimmer.network`
- Chain ID: `1073`
- Currency Symbol: `SMR`
@@ -81,7 +81,7 @@ And voila—it's done!
width='560'
height='315'
src='https://www.youtube.com/embed/0_rmmprEKrM'
- title='ShimmerEVM Tutorial: Connect to ShimmerEVM Testnet & Deploy a Solidity Smart Contract'
+ title='ShimmerEVM Tutorial: Connect to EVM Testnet & Deploy a Solidity Smart Contract'
frameborder='0'
allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'
allowfullscreen
diff --git a/src/theme/constant.tsx b/src/theme/constant.tsx
index c38cd15b367..8882d3061df 100644
--- a/src/theme/constant.tsx
+++ b/src/theme/constant.tsx
@@ -6,6 +6,26 @@ export const Networks = {
eventApi: 'wss://api.stardust-mainnet.iotaledger.net:443 (MQTT 3.1, /mqtt)',
permaNodeApi: 'https://chronicle.stardust-mainnet.iotaledger.net',
explorer: 'https://explorer.iota.org/mainnet',
+ evm: {
+ chainId: '0x2276',
+ chainName: 'IOTA EVM',
+ nativeCurrency: {
+ name: 'IOTA',
+ symbol: 'IOTA',
+ decimals: 18,
+ },
+ rpcUrls: [
+ 'https://json-rpc.evm.iotaledger.net',
+ 'wss://ws.json-rpc.evm.iotaledger.net',
+ ],
+ blockExplorerUrls: ['https://explorer.evm.iota.org'],
+ },
+ evmCustom: {
+ chainAddress:
+ 'iota1pzt3mstq6khgc3tl0mwuzk3eqddkryqnpdxmk4nr25re2466uxwm28qqxu5',
+ aliasId:
+ '0x971dc160d5ae8c457f7eddc15a39035b6190130b4dbb5663550795575ae19db5',
+ },
},
iota_2_testnet: {
baseToken: 'Testnet Token (no value)',
From 2856924cf110d8978ee06612c307c126ba1824bd 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 02/12] 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 ++++++++++++++++++
.../isc/v1.1/docs/getting-started/tools.mdx | 67 ++++++++++-
.../v1.3-alpha/docs/getting-started/tools.mdx | 67 ++++++++++-
docusaurus.config.js | 9 ++
src/components/HomeLayout/index.tsx | 22 ++--
src/icons/iota/index.ts | 2 +
src/theme/NetworkInfo/index.tsx | 73 ++++++++----
src/theme/constant.tsx | 17 +++
static/icons/iota/iota_evm.svg | 3 +
static/icons/iota/iota_evm_dm.svg | 70 ++++++++++++
15 files changed, 530 insertions(+), 60 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..0824882ea66
--- /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/iota).
+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.1/docs/getting-started/tools.mdx b/docs/build/isc/v1.1/docs/getting-started/tools.mdx
index 8b6138abb00..a49e6c101bd 100644
--- a/docs/build/isc/v1.1/docs/getting-started/tools.mdx
+++ b/docs/build/isc/v1.1/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/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx b/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx
index 8b6138abb00..a49e6c101bd 100644
--- a/docs/build/isc/v1.3-alpha/docs/getting-started/tools.mdx
+++ b/docs/build/isc/v1.3-alpha/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 e9ac41d4bd7..102fbebf552 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -145,6 +145,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..4d75af6b9ff 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/src/theme/NetworkInfo/index.tsx b/src/theme/NetworkInfo/index.tsx
index 15735129435..c430b8c8129 100644
--- a/src/theme/NetworkInfo/index.tsx
+++ b/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 (
diff --git a/src/theme/constant.tsx b/src/theme/constant.tsx
index 8882d3061df..114053c14a8 100644
--- a/src/theme/constant.tsx
+++ b/src/theme/constant.tsx
@@ -19,6 +19,14 @@ export const Networks = {
'wss://ws.json-rpc.evm.iotaledger.net',
],
blockExplorerUrls: ['https://explorer.evm.iota.org'],
+ blastApiUrls: [
+ 'https://iota-mainnet-evm.public.blastapi.io',
+ 'wss://iota-mainnet-evm.public.blastapi.io',
+ {
+ 'Archive RPC':
+ 'https://iota-mainnet-evm.blastapi.io/e7596858-fc63-4a54-8727-b885a2af4ec8',
+ },
+ ],
},
evmCustom: {
chainAddress:
@@ -57,6 +65,14 @@ export const Networks = {
'wss://ws.json-rpc.evm.testnet.iotaledger.net',
],
blockExplorerUrls: ['https://explorer.evm.testnet.iotaledger.net'],
+ blastApiUrls: [
+ 'https://iota-testnet-evm.public.blastapi.io',
+ 'wss://iota-testnet-evm.public.blastapi.io',
+ {
+ 'Archive RPC':
+ 'https://iota-testnet-evm.blastapi.io/e7596858-fc63-4a54-8727-b885a2af4ec8',
+ },
+ ],
},
evmCustom: {
chainAddress:
@@ -130,6 +146,7 @@ export interface AddEthereumChainParameter {
decimals: number;
};
rpcUrls?: string[];
+ blastApiUrls?: Array;
blockExplorerUrls?: string[];
iconUrls?: string[]; // Currently ignored.
}
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 @@
+
From a3367d1f9daa4291e43e3a879260b3305d3350a1 Mon Sep 17 00:00:00 2001
From: Dr-Electron
Date: Wed, 29 May 2024 23:51:46 +0200
Subject: [PATCH 03/12] Add Safe and Multicall tools
Co-authored-by: Lucas Tortora
Co-authored-by: Vivek Jain
---
docs/build/getting-started/multicall.md | 194 ++++++++++++++++++++++++
docs/build/getting-started/safe.md | 78 ++++++++++
docs/build/getting-started/sidebars.ts | 15 +-
static/img/get-started/safe/safe.png | Bin 0 -> 546953 bytes
4 files changed, 282 insertions(+), 5 deletions(-)
create mode 100644 docs/build/getting-started/multicall.md
create mode 100644 docs/build/getting-started/safe.md
create mode 100644 static/img/get-started/safe/safe.png
diff --git a/docs/build/getting-started/multicall.md b/docs/build/getting-started/multicall.md
new file mode 100644
index 00000000000..820ad311581
--- /dev/null
+++ b/docs/build/getting-started/multicall.md
@@ -0,0 +1,194 @@
+---
+description: 'Multicall3 allows you to bundle multiple calls to various contracts, for both reading and writing data, into a single transaction.'
+image: /img/logo/WASP_logo_dark.png
+---
+
+# Multicall3
+## Powering Efficient Batch Transactions on L2 Networks
+
+Multicall3 is a smart contract on the Ethereum Virtual Machine (EVM) that streamlines transactions. It allows you to bundle multiple calls to various contracts, for both reading and writing data, into a single transaction.
+
+This can be particularly useful when working with decentralized applications that require multiple contract interactions or when batching multiple calls to save on gas costs. To use the Multicall3 contract on IOTA EVM, the Multicall3 contract is deployed at this address: [0xcA11bde05977b3631167028862bE2a173976CA11](https://explorer.evm.iota.org/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=write_contract).
+
+This contract offers significant advantages for optimizing transaction processing on L2 networks, also known as Layer 2 scaling solutions. Here's how Multicall3 enhances efficiency:
+
+- **Reduced Gas Costs:** By grouping calls together, Multicall3 minimizes the total gas fees associated with interacting with the blockchain. Gas refers to the computational effort required to execute a transaction on the network.
+
+- **Guaranteed Data Consistency:** Multicall3 fetches data from a single block on the blockchain, ensuring that all the information you receive reflects a consistent state. This eliminates discrepancies that might arise from fetching data across separate transactions.
+
+- **Faster Execution Speeds:** You no longer need to wait for individual transactions to be confirmed one by one. Multicall3 processes everything efficiently in a single transaction, significantly speeding up the overall process.
+
+- **Simplified Workflows:** Multicall3 removes the complexity of worrying about the order in which transactions are processed, eliminating potential issues caused by race conditions. Race conditions occur when multiple transactions compete for resources, and the outcome can depend on the order they are executed.
+
+- **All-or-Nothing Execution:** Multicall3 ensures data integrity by functioning on an all-or-nothing basis. This means that either all the calls within the Multicall3 transaction succeed, or none of them do. This prevents partial execution and maintains data consistency.
+
+:::tip
+
+You can find the ABI of the contract in the [Multicall3 website](https://www.multicall3.com/abi).
+
+:::
+
+
+## Contract Information
+
+### Function: aggregate
+
+#### Description:
+ This function aggregates the results of multiple function calls made to different contracts within a single transaction.
+
+```solidity
+function aggregate(Call[] calldata calls) public payable returns (uint256 blockNumber, bytes[] memory returnData);
+```
+
+
+|Parameter Name | Description|
+|-----------|---------------------------------------------------------------------
+| calls (Call[] calldata) | An array of Call structs. Each Call struct contains the target contract address (address) and the encoded function call data (bytes).|
+
+#### Return Values:
+ - blockNumber (uint256): The block number where the calls were executed.
+ - returnData (bytes[] memory): An array of bytes containing the return data from each call.
+
+### Function: tryAggregate
+
+#### Description:
+ This function performs a similar function to `aggregate` but allows individual calls to fail without halting the entire execution.
+
+
+```solidity
+function tryAggregate(bool requireSuccess, Call[] calldata calls) public payable returns (Result[] memory returnData);
+```
+
+| Parameter Name | Description |
+|----------------|-----------------------------------------------------------------------------|
+| requireSuccess (bool) | A boolean flag indicating whether all calls must succeed (true) or if failures are allowed (false). |
+| calls (Call[] calldata) | An array of Call structs. Each Call struct contains the target contract address (address) and the encoded function call data (bytes). |
+
+
+#### Return Values:
+returnData (Result[] memory): An array of Result structs. Each Result struct contains a bool indicating success (success) and the return data for the corresponding call (bytes returnData).
+
+### Function: tryBlockAndAggregate
+
+#### Description:
+ This function combines features of `tryAggregate` and retrieves additional block information.
+
+
+```solidity
+function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls)
+ public
+ payable
+ returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
+```
+
+| Parameter Name | Description |
+|----------------|-----------------------------------------------------------------------------|
+| requireSuccess (bool) | A boolean flag indicating whether all calls must succeed (true) or if failures are allowed (false). |
+| calls (Call[] calldata) | An array of Call structs. Each Call struct contains the target contract address (address) and the encoded function call data (bytes). |
+
+#### Return Values:
+ - blockNumber (uint256): The block number where the calls were executed.
+ - blockHash (bytes32): The hash of the block where the calls were executed.
+ - returnData (Result[] memory): An array of Result structs, as defined in tryAggregate.
+
+
+### Function: blockAndAggregate
+
+#### Description:
+This function is a simplified version of `tryBlockAndAggregate` that always requires all calls to succeed.
+
+```solidity
+function blockAndAggregate(Call[] calldata calls)
+ public
+ payable
+ returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
+```
+
+|Parameter Name | Description|
+|-----------|---------------------------------------------------------------------
+| calls (Call[] calldata) | An array of Call structs, as defined in aggregate.|
+
+#### Return Values:
+ - blockNumber (uint256): The block number where the calls were executed.
+ - blockHash (bytes32): The hash of the block where the calls were executed.
+ - returnData (Result[] memory): An array of Result structs, as defined in tryAggregate.
+
+
+### Function: aggregate3
+#### Description:
+This function aggregates calls similar to `aggregate` but allows specifying whether failures are allowed for each call individually.
+
+```solidity
+function aggregate3(Call3[] calldata calls) public payable returns (Result[] memory returnData);
+```
+
+|Parameter Name | Description|
+|-----------|---------------------------------------------------------------------
+| calls (Call[] calldata) | An array of Call3 structs. Each Call3 struct includes the target contract address (address), a flag indicating if failure is allowed (bool allowFailure), and the encoded function call data (bytes callData).|
+
+#### Return Values:
+ - returnData (Result[] memory): An array of Result structs, as defined in `tryAggregate`.
+
+
+### Function: aggregate3Value
+#### Description:
+This function aggregates calls with a specified value for each call, allowing sending funds along with the call data. It ensures the total sent value matches the sum of individual call values.
+
+
+```solidity
+function aggregate3Value(Call3Value[] calldata calls) public payable returns (Result[] memory returnData);
+```
+
+|Parameter Name | Description|
+|-----------|---------------------------------------------------------------------
+| calls (Call[] calldata) | An array of Call3Value structs. Each Call3Value struct includes the target contract address (address), a flag indicating if failure is allowed (bool allowFailure), the value to send along with the call (uint256 value), and the encoded function call data (bytes callData).
+
+#### Return Values:
+ - returnData (Result[] memory): An array of Result structs, as defined in `tryAggregate`.
+
+
+
+ ## Additional Functions
+The contract also includes several view functions that retrieve blockchain data without modifying the state:
+
+- `getBlockHash(uint256 blockNumber)`: Returns the block hash for a given block number.
+- `getBlockNumber()`: Returns the current block number.
+- `getCurrentBlockCoinbase()`: Returns the address of the block miner (coinbase).
+- `getCurrentBlockDifficulty()`: Returns the difficulty of the current block.
+- `getCurrentBlockGasLimit()`: Returns the gas limit of the current block.
+- `getCurrentBlockTimestamp()`: Returns
+
+## Structs
+
+- Call
+```solidity
+struct Call {
+ address target;
+ bytes callData;
+}
+```
+- Call3
+```solidity
+struct Call3 {
+ address target;
+ bool allowFailure;
+ bytes callData;
+}
+
+```
+- Call3 Value
+```solidity
+struct Call3Value {
+ address target;
+ bool allowFailure;
+ uint256 value;
+ bytes callData;
+}
+```
+- Result
+```solidity
+struct Result {
+ bool success;
+ bytes returnData;
+}
+```
\ No newline at end of file
diff --git a/docs/build/getting-started/safe.md b/docs/build/getting-started/safe.md
new file mode 100644
index 00000000000..4cdc7cf6928
--- /dev/null
+++ b/docs/build/getting-started/safe.md
@@ -0,0 +1,78 @@
+---
+description: 'Multisig wallet refers to having multiple private keys for a single web3 wallet.'
+image: /img/logo/WASP_logo_dark.png
+---
+
+# MultiSig Wallet
+
+:::note TL;DR;
+
+[Safe Wallet](https://safe.iotaledger.net/welcome) is a multiSig wallet. The term “
+ multisig” is short for "multisignature".
+
+:::
+
+The security of cryptocurrency demands greater attention as digital assets gain traction. Individuals and organizations need robust strategies to safeguard their funds. Multisignature (multisig) wallets are emerging as a powerful cybersecurity tool in crypto.
+
+Decentralized digital assets require a different approach to security than traditional finance. Thankfully, innovative technologies like multisig wallets provide an extra layer of protection, allowing you to trade cryptocurrencies on chains like [Shimmer EVM](https://explorer.evm.shimmer.network/) or [IOTA EVM](https://explorer.evm.iota.org/).
+
+![IOTA Sandbox](/img/get-started/safe/safe.png)
+
+## Why Are Multisig Wallets More Secure?
+
+Traditional crypto wallets rely on a single signature for transactions, making them vulnerable if that key is compromised. Multisig wallets offer superior security by requiring multiple approvals before funds can be moved. This added layer of verification significantly reduces the risk of unauthorized transactions, even if a hacker gains access to one of your keys.
+
+## Use Cases for Multisig Wallet
+
+### Shared Asset Security
+
+#### Joint Ownership
+
+Securely manage crypto held jointly by couples, business partners, or organizations. Requires approval from all parties for transactions, preventing unauthorized spending.
+
+#### Company Funds
+
+ For businesses with substantial crypto holdings, enforce multi-approval workflows for withdrawals, minimizing internal theft risk.
+
+### Enhanced Threat Protection
+
+#### Lost/Compromised Keys
+
+ Mitigate the impact of lost or compromised keys. Remaining keys can still safeguard funds, unlike single-signature wallets.
+
+#### Hacking Defense
+
+ Add a significant hurdle for attackers. Even with access to one key, they cannot steal funds without additional signatures.
+
+#### Custodial Account Control
+
+ Maintain control over crypto held in exchanges or IRA providers. Multisig wallets ensure withdrawals require approval from both the - user and the custodian, preventing unauthorized access.
+
+### Important Considerations
+
+#### Technical Complexity
+
+ Setting up and using multisig wallets requires more technical expertise compared to traditional wallets.
+
+#### Signatory Balance
+
+Finding the optimal balance between security (more signatories) and practicality (fewer signatories) is crucial.
+
+#### Individual Suitability
+
+ For most individual users with smaller crypto holdings, a standard single-signature wallet might be sufficient.
+
+
+:::tip
+
+Learn more about safe accounts in the [Safe documentation](https://help.safe.global/en/articles/40835-what-safe-setup-should-i-use).
+
+:::
+
+## IOTA has its own dedicated MultiSig wallet - [safe(Wallet)](https://safe.iotaledger.net/welcome)
+
+:::info Set Up a Safe Account
+
+You can find instructions on setting up a safe account in the [Safe documentation](https://help.safe.global/en/articles/40868-creating-a-safe-on-a-web-browser).
+
+:::
\ No newline at end of file
diff --git a/docs/build/getting-started/sidebars.ts b/docs/build/getting-started/sidebars.ts
index 89597852d43..e8efae88c70 100644
--- a/docs/build/getting-started/sidebars.ts
+++ b/docs/build/getting-started/sidebars.ts
@@ -84,6 +84,16 @@ module.exports = {
type: 'doc',
id: 'subgraphs',
},
+ {
+ label: 'IOTA Safe Wallet',
+ type: 'doc',
+ id: 'safe',
+ },
+ {
+ label: 'Multicall3',
+ type: 'doc',
+ id: 'multicall',
+ },
{
type: 'category',
label: 'ShimmerEVM',
@@ -128,11 +138,6 @@ module.exports = {
},
],
},
- {
- label: 'Oracles for IOTA EVM and ShimmerEVM',
- type: 'doc',
- id: 'oracles',
- },
{
type: 'link',
label: 'WASP CLI',
diff --git a/static/img/get-started/safe/safe.png b/static/img/get-started/safe/safe.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f0a8f60720f3bcb8c997d71c2b77e66ad8073db
GIT binary patch
literal 546953
zcmV)NK)1h%P)001BWNkl(8CoxzRhXdCmu`ekQQjLL#w~*PDAH0bFgM^*}`9^&-G;1J>SXts?^1
zd!t3e&W+?lLTe2>6MJnwH*9_m0*FM9jurrr*a_^Nh)hHz&^jUlEdo0e&-0B$!x#g-
zbp(LSjf?;?foSzvndhD5-as^dR%-|Zb}k@+wHJEpKs1crv2$UqiHHsW*mI(f!DqjL
z)U~xf03_y|hzS0?9!l5sw%(9?W37!f7d8?t0-3-Vjqgm?1@QUtvjS@`tU2+zUV4UG
zpS2LJ0hw5P0};6Th17G62t4x!0KCQpAh43pKKH`j3v*6fuP=-~_~&|GuWKN+Hg~F0@yw<78d{UQ=DoRYq74LqITu<0(K`H4T5pI<>^Ge82w!qTw1B#u$hQ%sDal0y1l_wrGe3+|P}<
zHvabYORb?m;F%9nPq6n(-@ml)7URQCL<@8@Y;3H(5W!e7M#tWXL~5;X1QL-O**gCj
zfzbY)&x6)4#iXqr&Uf&v#MK%<3))x7ebrk>L~1SUif>~KK+hwh-AILUa}xzAfe
z0_ctLvbBz@b*%O9JqN#Y?~V8UU}%lB)-cypJP7Q)wC_l~tU=JPNgw2nlgw}A-$c_z?D$D9v(XRJVOEC5&6+Iw!SOsyf_
z|NH(6qhH9ab(~y}2q?~PuEGY4ro94S@5$#G9ar!AU9PW3`zBgow1GZ4S{t~ZHv)kk
z4Vml2yokF0FxxGrFCtYjQW
z#j@TVr*(Y+<^PTMeDJznSc_}42Y_HaedfaJ;(pBBc%DRJ;~GQjFcps)(hoZq=3H1i
zalJ0|*0I;bToZ^ui;m{?*Sg*}F$VNp1FQDA|J?g=?Zj(z>;%@D+V9Mty#+Frn;pXy
z*Aa=el6z-u>~tL62yCFe(4*n~Ok$Q6%1w+N&wS9LBU<47+!&3xYt9F+*9&t#*gG+<
zi)(Bz4B@o3`OsHxv;O;
z{NW2-dnwQa=9*k=5jco}7u*HvSeOv7N4+F2>fU+*us-;pmy)u9O^ZNAR;Yzi@bf$h
zLQUXl3!pB7j@Gfk#q?|jQYX;Xy}45f8Y(*Y^IHoN!GP6TBiKVCH^&)Y>&{Q^%`^N=gi5NNw~g0G6I50~3=)M>we90*$<`og0zC?`?d3P~p>5jHL=)7dHtoxN0-8XyN*5
zje&J)P2dB>rGPI%{#Agfip^|bk=>CAJZoa~q0i)o3tiKnfBq92iEDf*d33&SJu?P(
ze%o59AjvgVYsb$j`P{p}+!A0hFl3R3TE9SGt;y#SF5DGl6dYPK+|OHkg@vkt2VB(V
z!rGf;z^fH(LP1#VO0w5%O)?R=}
zH@^2lf(MDKHzc<57vs9)DEHzjP>no!E5K`RaDhV7?H~W~4}$*Y!k2$Hy2!E=cuU8q
z2YYXVY44#hpvhW)+r_G4*xn{|&d=mt$ky?7U0gSf>*f#>Cr^b6Mx%qKYaA-7jXl~2
z-XN`$x`uJcIf34_wn!Mp(rdiXR2cNu^elky`#}T&dx0vWl&H&suR0Yodn1|GK(Oj{
z7OmszF96AF6?qknh4c`K1V9Bq!&<9=D?vCgM#p`>anHp9TSXPYHghIY>&&@sGv-_$
zd9C+>(Ho+_5L(B?0l@tbXBenD*UU8)Z*{HVI6CV2gzjR^MM_2Qkn25__ddv8t&gsJ
zx4n1t*(M#i<`_?&XCeRk6ZjwhKz@B8!(^PGeG9C$g*RLzUsZ^Qu5xeU1d=Ndfo+`7
z0Aa;&QT|bUCz5evugU}6YZpN5`FLBpy%&&{?x4@Ek+$=h41$aj0Ai5}mCNkt{4u8ccSDu=8MSL({s9
z!h9z6Nid4w{kMPnKmH(twy@U;>SG9m!2nnbMnPw;1+>7|>xI|#DloSM0f?7dkC2*|Y-#X34vwqQ2~iDCmWSVZ8X*b&1TjUYW-
zq^MdC1Q0A(yl_vkn_5&&f7gqVjo`-Q&+y%>y$j5>u7oAfvc!6(B1=;+{RI913X}j!
z^3hn(g2kbMyf=lr5)pzOnH6kVNDydUO8nk1K&qp2f*tg(4L$+{jdMP_t|;ayb)QUf
zC(w|C5&-RFc_MKb00E`7#Oyi&YJ=8BLjo$6|9o!zmtX!4=yR@q=~)Hlx|y_8$Y&;A
zuUEaJ(0cLO%>;T6fmyQP&VbKc0z70Sd;OmFi1t8l9ryD9I6!h0Q{#6CG878-O-$J6
z1AEP%f^`?jo%?~Ic5Xh8XWdwPixmf2;~t2gA|T(50T-XgM?oJ-(kiGkqnP#L3Gb~~zdpuK4Cq=*WWd(GW+GpEiOD2*aYv;^$Ls6G_mc!yy$|N9WFbwE
zJrF@A7Fv%j8vgySf9U#ozoQMT#au~%lmcD^f(drImzdtYCpO&e-Y`^dtrr3C$zBt4
z1tR(9+A(lu+k1=I*JoE;O5D#~>@}1p33T|3?}x1QA*ogoJ1IhrWJDeiB=A4i1MG3zqnnR_XAC$703-YG;#3CFFZasxr^GxyZ`Kg1oYZ+9kA1!PnVWRaQ3H4%Fu
zqoX&*|NEJWdBhJ$V6D5b0wOR(q8wtMWcCtfY{GI&-{Wp?AI2XK*cBzFYMos%2t$XI
zO!xbn>!CHgMlS-PiIgMm5NXq>+Bhl|k?_h{F1B~UJr5Unb!DT($93}m>y
z$hiStuNPU|-01!Ki6x(El@j>(3gBi7DdU;N7UkXw^_Epx3ZUxF2@_EdbBb+rd)17z
zgA<>O7YGg=5@cDzEyXoq`PS)r;9Pg8;`iq!$Xqy1?kiy08TCHC~b%F#(%3;}U5qbj=|3Vxeo>0ZP!j*c^9l2!9y3<~~dX
z1ZpzbZ39|$9Su$x47onc>baYgW^(!g&(Zu`#rVvnHKD>fLO~wvKK2kGRe@-h9cI9^
z7rkHOFtz|B5kwWoEdqU9RR9M*3jOe2_O*&JB|6u4^Ep1xU5qqA#nq;Qh0+fKkFNLIyFogo29~%b*l{Uf93gO4+ocY&|#da2vH
znCJu+!izdld(Gre3P?wbN?4ix`>YN|f`!58mU;R4inua}$i!Cn%AJGW2gVrHeO!Ct
zku=TM!jC!fqph{K4Qc_r*NtmjcwJuv7y7&22g28783)_HG}SP
zthw@31lKRz*+D?420chZ?6nIJW;j+0sHNHJtT^Su$?5@v>1XXD&k^C&doS>{A=z_p
z>eQ1+2tXYUk_U6G>Qwd?!VM4RT=ncO0Y736uFbg?J0~js*cIUSnjCW+dFDhL9hR7n
zK{CLd-?b*7PUTK_Bh@tusS9?JOfX(TsEfS0e_=V0CE@`W3tpqcY`)^hXdTjc6ba(I
zVx@x9Y=DGX^s`pnC2Cs#P2aUXy71ipC|uZtw?-e;849g?cabC91$DeT1QPW8O-lFc
z!q?ya3%@IX>vf^Q#GJdYEZ%w_lxXTbut4m%`X#Arpi4q}`W;-e+nxQSY-sHXrH;aB
zt&KvLYc0l9sZ&T=sQ}jR?VKunR=sDFAHYUR>exj%F-J^{@j9eRpt?oZxESY~6*a(*
zuNPzVd`oKGD|c=^d&_N2Ebe_UM%4305j+WwWdvGvN2MQ9tm3*GeQ*W11LRzcgw;a#
zywQLE{r5i%#&;%O*HtYbW{lGYOUVe%f|1^Eo3(DpHP6h17noMEe-2*yd*fLT190-;
zJ0R^eOPTc<)FE>drdX~NNO1M$0M_-AYJn?_IhnY$`jm#b?Uf%1(rm>}E@D^LT~)3Z
zE7EP_PCzek(4yh{d8@kR25z0fVyPWBdY68=7x*}v@UTmn*0^h3DyI5dH@$a2G?XO5{a!&NACk0DXnV5H3SUwd@aq}?v5xSBM;EzMt2Z%m8Aks
zNw8D_nYjAEhT5tiFw5i|%kxnj_0}=>M()&Hhh9xI^sr7Iz+SptLeZ`E`E`A9e+f8J
z;nKWP>Rww5X-c`Lwg`o5bONpdZTcC3P%~|oDYV8U!Gx`So9vG6NQ}`jt_#;-TiKnQ
zA75Vrx(z*W_5%VD1Y2Ccz}yVNE)hMicK?yV+?$~UXqKo>Z~<&
zk>*Mzp1_