diff --git a/docs/about/neon_ecosystem.mdx b/docs/about/neon_ecosystem.mdx index ec07ddc2..064221e2 100644 --- a/docs/about/neon_ecosystem.mdx +++ b/docs/about/neon_ecosystem.mdx @@ -7,12 +7,9 @@ approvedBy: YYY links: The ecosystem image links to /docs/tokens/neon_token and /docs/tokens/gas_fees comment: #2 TODO Tracer API needs internal linking to replace Medium article todo we have more wallets than just MetaMask -- perhaps add an FAQ and link there? TODO what was the outcome of Anton not wanting to use BPF? --- -import {ImgTheme} from '@site/src/components/ImageTheme'; -import {QuickLookNeonImage} from '@site/src/components/QuickLookNeonImage'; +import {NeonEcosystemView} from '@site/src/components/NeonEcosystemView'; - - -[//]: # () + **Neon EVM** is *the* solution that makes Solana's throughput, swift block speeds, and low gas prices available to Ethereum contracts. Neon EVM interacts directly with Solana nodes to carry out transactions on Solana. The service is made up of three main components: @@ -87,7 +84,7 @@ Oracles enable the decentralized Web3 ecosystem to access price feeds and other Neon EVM is supported by EVM-compatible wallets such as MetaMask's non-custodial wallet. > This allows dApp devs to sign deployment transactions and mint tokens. - + ### Protocols diff --git a/docs/architecture/eth_sol_solution.md b/docs/architecture/eth_sol_solution.md index cd6d12ce..30f26f5c 100644 --- a/docs/architecture/eth_sol_solution.md +++ b/docs/architecture/eth_sol_solution.md @@ -100,7 +100,7 @@ Clients work on a different blockchain via the same interface by changing the ad The Neon EVM runs inside BPF, which is run by Solana. The Neon EVM is a Solana contract, so it recognizes the transaction format from the received batch. Neon EVM extracts data from each transaction, therefore, it can retrieve all the original user information placed in the transaction. - + The Neon EVM also validates the N-tx signature. If the signature is authentic, the Neon EVM takes the contract code that the transaction is addressed to and starts to execute it. As soon as the contract code has been executed successfully, Neon EVM records a new state. diff --git a/docs/developing/connect_rpc.md b/docs/developing/connect_rpc.md index db13076e..18470177 100644 --- a/docs/developing/connect_rpc.md +++ b/docs/developing/connect_rpc.md @@ -1,25 +1,27 @@ --- title: Connect to Neon RPC -proofedDate: 20230526 +proofedDate: 20231101 iterationBy: na includedInSite: true approvedBy: na -comment: +comment: --- -import chainlist_raw from '@site/static/img/doc-images/developing/chainlist/chainlist-raw-2.png'; +import chainlist_raw from '@site/static/img/doc-images/developing/chainlist/chainlist-raw-3.png'; ## TL;DR -RPC endpoints are available on [Chainlist](https://chainlist.org/?chain=245022926&testnets=true&search=Neon+EVM). +RPC endpoints are available on [Chainlist](https://chainlist.org/?chain=245022926&testnets=true&search=Neon+EVM). ## Introduction -This tutorial explains how to connect to a Neon RPC via Chainlist. You may connect an EVM-compatible wallet to a network and accept the default Proxy. Alternatively, you can mannually setup your Proxy Operator. + +This tutorial explains how to connect to a Neon RPC via Chainlist. You may connect an EVM-compatible wallet to a network and accept the default Proxy. Alternatively, you can manually set up your Proxy Operator. > The [Proxy Operator you choose](#choose-a-remote-proxy) is responsible for settling your Neon transactions on Solana. Chainlist will assign a default, but you can edit this later. ## Connect via Chainlist -To connect an EVM-compatible wallet such as MetaMask to Neon EVM: + +To connect an EVM-compatible wallet such as MetaMask to Neon EVM: 1.1 Visit [Neon's Chainlist](https://chainlist.org/?chain=245022926&testnets=true&search=Neon+EVM) page. @@ -29,15 +31,15 @@ With most wallets, simply click "Approve" to connect your wallet. > Chainlist assigns their default Proxy; you can reconfigure this. - ## Choose a remote Proxy -Before sending a transaction to the Neon EVM, users should choose the Operator that's optimal for them to perform transactions. + +Before sending a transaction to the Neon EVM, users should choose the Operator that's optimal for them to perform transactions. > Selecting the RPC address an Operator provides assigns your transactions to that Operator. -One Proxy may be available on different networks (i.e. Devnet and Mainnet). The Proxy interacts with one EVM loader, which can be deployed in different Solana chains. +One Proxy may be available on different networks (i.e. Devnet and Mainnet). The Proxy interacts with one EVM loader, which can be deployed in different Solana chains. -To view the available RPC endpoints, expand the card details of the network of your choice. +To view the available RPC endpoints, expand the card details of the network of your choice. > @@ -45,18 +47,19 @@ Notice that if several Proxy Operators offer public RPC endpoints, you have a ch If your chosen Proxy Operator isn't the default provided during the wallet connection step, you will need to [connect manually](#connect-manually). - ## Connect manually + The preceding steps demonstrate how to connect to a Solana cluster via Chainlist. Alternatively, you can connect to the Neon EVM manually or edit your choice of Proxy. While steps may differ slightly according to your EVM-compatible wallet, the principles will closely match the tutorial on connecting [manually via MetaMask](wallet/metamask_setup.md#option-b-manual-configuration). ## Connect dev tools to Neon EVM -To connect to a Proxy using Remix, Truffle, or Hardhat, check out the following resources: -* [Using Remix](developing/deploy_facilities/using_remix.md) -* [Using Truffle](developing/deploy_facilities/using_truffle.md) -* [Using Hardhat](developing/deploy_facilities/using_hardhat.md) -Please note that, for Truffle and Hardhat, you need to set up the configuration file by setting either the `HDWalletProvider` provider (for Truffle) or the URL and the `network_id`/`chainId` to the RPC URL (and ID) selected from Chainlist. This is described in detail in the relevant tutorial sections. +To connect to a Proxy using Remix or Hardhat, check out the following resources: + +- [Using Remix](developing/deploy_facilities/using_remix.md) +- [Using Hardhat](developing/deploy_facilities/using_hardhat.md) + +Please note that, for Hardhat, you need to set up the configuration file by setting the URL and the `network_id`/`chainId` to the RPC URL (and ID) selected from Chainlist. This is described in detail in the relevant tutorial sections. ## What next? -If you wish to transact via your RPC, then checkout the [supported RPC API methods](/docs/evm_compatibility/json_rpc_api_methods). \ No newline at end of file +If you wish to transact via your RPC, then check out the [supported RPC API methods](/docs/evm_compatibility/json_rpc_api_methods). diff --git a/docs/developing/deploy_facilities/configure_brownie.md b/docs/developing/deploy_facilities/configure_brownie.md deleted file mode 100644 index 41932a52..00000000 --- a/docs/developing/deploy_facilities/configure_brownie.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Configure Brownie" -proofedDate: na -iterationBy: na -includedInSite: true -approvedBy: na -comment: ---- - -[Brownie](https://eth-brownie.readthedocs.io/en/stable/) is a Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine. - -With [Brownie](https://eth-brownie.readthedocs.io/en/stable/#features), you get: -* Full support for Solidity and Vyper -* Contract testing via pytest, including trace-based coverage evaluation -* Property-based and stateful testing via hypothesis -* Powerful debugging tools, including python-style tracebacks and custom error strings -* Built-in console for quick project interaction -* Support for ethPM packages - -For a tutorial on how to use Brownie to deploy on the Neon EVM, see [here](/docs/developing/deploy_facilities/using_brownie). - -## Prerequisites -Before you start, make sure the following software is installed on your device: - * [`eth-brownie`](https://eth-brownie.readthedocs.io/en/stable/install.html) - -Also make sure that the following is true: - * MetaMask is installed on your device. To install MetaMask, follow [this guide](wallet/metamask_setup.md#installing-metamask). - * MetaMask is configured for the Neon EVM. - -## Network Configurations - * [Solana cluster](https://docs.solana.com/clusters) is accessed via a proxy. - * Solana works in test mode and the proxy interacts with it through Neon EVM. - -## The Brownie Configuration File - -To deploy a contract to the Neon EVM with Brownie, some Neon-specific information must be specified in a configuration file. This configuration YAML file is called `brownie-config.yaml` and is located at the root of your project directory. Its file schema, variables, and other documentation can be found on the [official Brownie website](https://eth-brownie.readthedocs.io/en/stable/config.html). Please note that the deployer wallet address needs to have enough NEON tokens to cover the gas cost of the deployment. NEON tokens for Devnet can be obtained using the [NeonFaucet](developing/utilities/faucet.md). - -The following is a full example, configured for the example below, of the `brownie-config.yaml` configuration file for connecting Brownie to a devnet-proxy: - -```yaml -dotenv: .env -networks: - default: neon-devnet - neon-devnet: - chainid: 245022926 - host: https://devnet.neonevm.org - id: neon-devnet - name: Devnet - default_contract_owner: false - gas_buffer: 1.1 - gas_limit: auto - gas_price: auto - max_fee: null - priority_fee: null - reverting_tx_gas_limit: false -``` - -## Importing a Network Separately - -Alternatively, it is possible to add networks to Brownie via the command line, without using the `brownie-config.yaml` configuration file. When adding a public network, Brownie requires at the very minimum `chainid`, `host`, and `id` (the network ID). To do so, create a configuration file (e.g., `network-config.yaml`) with the network information, and run -```bash -brownie networks import ./network-config.yaml -``` diff --git a/docs/developing/deploy_facilities/configure_foundry.md b/docs/developing/deploy_facilities/configure_foundry.md new file mode 100644 index 00000000..fbe9e848 --- /dev/null +++ b/docs/developing/deploy_facilities/configure_foundry.md @@ -0,0 +1,37 @@ +--- +title: "Configure Foundry" +proofedDate: 20231116 +iterationBy: na +includedInSite: true +approvedBy: na +comment: Killing the ## What next? See the [tutorial on how to use Foundry](/docs/developing/deploy_facilities/using_foundry) to deploy to Neon EVM. as this is killing the build todo -- return this later +--- + +Foundry is a blazing fast, portable,modular toolkit for Ethereum application development written in Rust. + +## Introduction + +This page details several parameters required to configure Foundry. The Foundry framework isn't described here; find that in the [Foundry documentation](https://book.getfoundry.sh). + +## Prerequisites +- cURL + +## Foundry configuration + +Unlike other toolkits, Foundry doesn't have a config file to hold the chain parameters, instead, parameters are passed into commands. For example, this comand deploys a smart contract: + +``` +forge create --rpc-url $RPC_URL_DEVNET \ +--private-key $PRIVATE_KEY \ +--constructor-args "Test ERC20 Token" "TERC20" --legacy \ +src/TestERC20/TestERC20.sol:TestERC20 +``` + +The parameters for `forge create` command include: +* `--rpc-url`: RPC URL +* `--private-key`: The private key of the transaction signer +* `--constructor-args`: The constructor arguments to be passed to the contract that is being deployed +* `--legacy`: This parameter is being passed to use legacy transactions _(Neon EVM currently [doesn't support EIP-1559 transactions](/docs/evm_compatibility/overview#shared-standards-and-features))_ + + + diff --git a/docs/developing/deploy_facilities/configure_hardhat.md b/docs/developing/deploy_facilities/configure_hardhat.md deleted file mode 100644 index 6cae1fbf..00000000 --- a/docs/developing/deploy_facilities/configure_hardhat.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: "Configure Hardhat" -proofedDate: na -iterationBy: na -includedInSite: true -approvedBy: na -comment: ---- - -Hardhat is a development environment used to compile, deploy, test, and debug Ethereum software. It helps developers manage and automate the recurring tasks that are inherent to the process of building smart contracts and launching dApps, as well as supporting various add-on functionality and features in order to streamline this workflow. - -Details on how to use the Hardhat framework will not be described here. You can find all necessary information by reading the [Hardhat documentation](https://hardhat.org/getting-started/#overview). - -For a tutorial on how to use Hardhat to deploy on the Neon EVM, see [here](/docs/developing/deploy_facilities/using_hardhat). - -## Prerequisites -Before you start, make sure the following software is installed on your device: - * `NodeJS v8.9.4` or later - * `Web3 v1.2.0` or later - -Also make sure that the following is true: - * MetaMask is installed on your device. To install MetaMask, follow [this guide](wallet/metamask_setup.md#installing-metamask). - * MetaMask is configured for the Neon EVM. - -## Network Configurations - * [Solana cluster](https://docs.solana.com/clusters) is accessed via a proxy. - * Solana works in test mode and the proxy interacts with it through Neon EVM. - -## The Hardhat Configuration File -To deploy a contract to the Neon EVM with Hardhat, some Neon-specific information must be specified in a configuration file. This configuration file is called `hardhat.config.js` and is located at the root of your project directory. This file is a JavaScript file and can execute any code necessary to create your configuration. Its file schema, variables, and other documentation can be found on the [official Hardhat website](https://hardhat.org/hardhat-runner/docs/config). Please note that the deployer wallet address needs to have enough NEON tokens to cover the gas cost of the deployment. NEON tokens for Devnet can be obtained using the [NeonFaucet](developing/utilities/faucet.md). - -The following is a full example, configured for the example below, of the `hardhat.config.js` configuration file for connecting Hardhat to a devnet-proxy using the one-way library on Node.js: - -##### hardhat.config.js -```js -require("@nomiclabs/hardhat-waffle"); - -const proxy_url = 'https://devnet.neonevm.org'; -const network_id = 245022926; - -// Private keys for test accounts -// NOTE: Replace these placeholders with your own and make sure the accounts have non-zero NEON balances -const privateKeys = [ - "0xPLACEHOLDER1", - "0xPLACEHOLDER2" -]; - -module.exports = { - solidity: "0.8.4", - defaultNetwork: 'neonlabs', - networks: { - neonlabs: { - url: proxy_url, - accounts: privateKeys, - network_id: network_id, - chainId: network_id, - allowUnlimitedContractSize: false, - timeout: 1000000, - isFork: true - } - } -}; -``` - -The parameters for `module.exports` include: -* `solidity`: version of Solidity used -* `defaultNetwork`: 'neonlabs' -* `networks`: - * `neonlabs`: - * `url`: proxy URL - * `accounts`: an array of deployer's private keys - * `network_id`: the network's network ID - * `chainId`: the network's chain ID - -Note that `proxy_url`, `network_id`, and `chainId` can be retrieved from the RPC endpoints table and/or [chainlist.org](https://chainlist.org/). \ No newline at end of file diff --git a/docs/developing/deploy_facilities/configure_hardhat.mdx b/docs/developing/deploy_facilities/configure_hardhat.mdx new file mode 100644 index 00000000..3dedd67f --- /dev/null +++ b/docs/developing/deploy_facilities/configure_hardhat.mdx @@ -0,0 +1,99 @@ +--- +title: "Configure Hardhat" +proofedDate: 20231116 +iterationBy: na +includedInSite: true +approvedBy: na +comment: +--- + +import WhatHardHat from '../../single-source-snippets/_hardhat.mdx' + +import ConfigHardHat from '../../single-source-snippets/_hardhat_config.mdx' + + +## Introduction + + + +The Hardhat framework isn't described here; find that in the [Hardhat documentation](https://hardhat.org/getting-started/#overview). + +## Prerequisites +- `NodeJS` + +## The Hardhat Configuration File + + + +We provide a full example of the `hardhat.config.js` configuration file for connecting Hardhat to a Devnet Proxy using the one-way library on Node.js: + +### hardhat.config.js + +```js +require("@nomicfoundation/hardhat-toolbox"); +require("dotenv").config(); + +/** @type import('hardhat/config').HardhatUserConfig */ +module.exports = { + solidity: "0.8.21", + defaultNetwork: "neondevnet", + etherscan: { + apiKey: { + neonevm: "test" + }, + customChains: [ + { + network: "neonevm", + chainId: 245022926, + urls: { + apiURL: "https://devnet-api.neonscan.org/hardhat/verify", + browserURL: "https://devnet.neonscan.org" + } + }, + { + network: "neonevm", + chainId: 245022934, + urls: { + apiURL: "https://api.neonscan.org/hardhat/verify", + browserURL: "https://neonscan.org" + } + } + ] + }, + networks: { + neondevnet: { + url: "https://devnet.neonevm.org", + accounts: [process.env.PRIVATE_KEY_OWNER], + chainId: 245022926 + }, + neonmainnet: { + url: "https://neon-proxy-mainnet.solana.p2p.org", + accounts: [process.env.PRIVATE_KEY_OWNER], + chainId: 245022934 + } + } +}; +``` + +The parameters for `module.exports` include: +* `solidity`: version of Solidity used +* `defaultNetwork`: default chain (for deploying or testing) +* `etherscan`: settings used to verify contracts on-chain [read more here](https://hardhat.org/hardhat-runner/docs/guides/verifying) +* `networks`: the list of the supported networks + * `neondevnet`: + * `url`: RPC URL + * `accounts`: an array of deployer's private keys; in the current example, PRIVATE_KEY_OWNER is stored inside .env file + * `chainId`: the network's chain ID + +Note that `url` and `chainId` can be retrieved from the RPC endpoints table and/or [Chainlist](https://chainlist.org/?search=Neon+EVM&testnets=true). + +## What next? + +See the [tutorial on how to use Hardhat to deploy to Neon EVM](/docs/developing/deploy_facilities/using_hardhat). + +## Gotchas + +:::info +Remember, the deployer wallet address needs to have enough tokens to cover the gas cost of a deployment. +> Get [NEON for Devnet](developing/utilities/faucet.md). +::: \ No newline at end of file diff --git a/docs/developing/deploy_facilities/using_brownie.md b/docs/developing/deploy_facilities/using_brownie.md deleted file mode 100644 index be5a44f0..00000000 --- a/docs/developing/deploy_facilities/using_brownie.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Deploy with Brownie -proofedDate: na -iterationBy: na -includedInSite: true -approvedBy: na -comment: ---- - -*This page outlines the steps for deploying and testing contracts in the Neon EVM using [Brownie](https://eth-brownie.readthedocs.io/en/stable/).* - -Before beginning the tutorial below, make sure that you have [Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html) installed. To check, simply run in your command-line tool - -```bash -$ brownie -Brownie - Python development framework for Ethereum - -Usage: brownie [...] [options ] -``` - -## How to Use Brownie: A Tutorial -The example this tutorial is based on is located in [this repository](https://github.com/neonlabsorg/examples/tree/main/simple-spl-erc20-brownie). - -By the end of this tutorial, you will deploy a contract describing an SPL token and ERC-20 version of it to the Neon Devnet. - -### Step 1: Cloning the Repository -> **Note:** For more details on working with Brownie, refer to *[Brownie Quickstart](https://eth-brownie.readthedocs.io/en/stable/quickstart.html)*. - -Using Git, clone the example Brownie project from the remote repository and navigate to it: -```bash -git clone https://github.com/neonlabsorg/examples.git -cd examples/simple-spl-erc20-brownie -``` - -### Step 2: Configuration - -[`brownie-config.yaml`](https://github.com/neonlabsorg/examples/blob/main/simple-spl-erc20-brownie/brownie-config.yaml) is Brownie's configuration file. You can learn more about how to configure Brownie [here](/docs/developing/deploy_facilities/configure_brownie). - -This first line in `brownie-config.yaml` means that the `.env` file, if it exists, will be loaded by Brownie. -```bash -dotenv: .env # top-level key -``` - -`.env` specifies environment variables that will be used by Brownie. Let's create this file and edit it with your favorite text editor -```bash -touch .env -subl .env # or any editor of choice -``` - -#### Accounts -Add your sender and recipient accounts to the `.env` file -```bash -export ACC1=0x......... # sender account address -export ACC2=0x......... # recipient account address -``` - -#### Faucet -Add your faucet URL to the `.env` file. This is the URL from which the contract code will request NEON tokens. You can use the [official Neon faucet URL](https://neonfaucet.org/), or your own faucet URL if you have one -```bash -export FAUCET_URL=https://neonfaucet.org/ # or a URL to your own faucet -``` - -### Step 3: Compilation and Deployment - -Compile the contract source files by running -```bash -brownie compile -``` - -Deploy the ERC contracts by running -```bash -brownie run scripts/deploy.py -``` - -### Step 4: Testing -Run tests if needed -```bash -brownie test -``` \ No newline at end of file diff --git a/docs/developing/get-started.md b/docs/developing/get-started.md index a91f0f40..91beeabf 100644 --- a/docs/developing/get-started.md +++ b/docs/developing/get-started.md @@ -1,23 +1,22 @@ --- title: Get Started on Neon EVM -proofedDate: 20230810 +proofedDate: 20231101 iterationBy: HB includedInSite: true approvedBy: na -comment: +comment: todo -- link to internal Foundry tutorial once its PR is in --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; - :::note -This is a bare bones Get Started; alternatively browse the full support available here. -::: +This is a bare-bones Get Started; alternatively, browse the full support available in this site. +::: ## Get test NEON for Neon Devnet -To populate the accounts with test NEON, visit [the faucet](https://neonfaucet.org), where you will be issued 100 NEONS at a time. +To populate the accounts with test NEON, visit [the faucet](https://neonfaucet.org), where you will be issued up to 100 NEON. ## Configure Neon network credentials in your framework's config file @@ -29,7 +28,6 @@ The network credentials are configured under the “networks” property in the - ```jsx neondevnet: { url: "https://devnet.neonevm.org", @@ -41,6 +39,7 @@ neondevnet: { isFork: true, }, ``` + @@ -56,6 +55,7 @@ neonmainnet: { isFork: true, }, ``` + @@ -64,6 +64,15 @@ See the [Hardhat tutorial](https://docs.neonfoundation.io/docs/developing/deploy + + + +Foundry doesn’t have a configuration file like Hardhat or Truffle to configure the network settings. Rather, the RPC endpoint and the private key are specified in the command line when passing foundry commands. + +See the [Foundry tutorial](https://github.com/neonlabsorg/neon-tutorials/tree/main/foundry). + + + The network credentials can be configured under the “networks” property in the `truffle-config.js`. @@ -97,6 +106,7 @@ neondevnet: { network_id: 245022934 }, ``` + @@ -104,16 +114,9 @@ See the [Truffle tutorial](https://docs.neonfoundation.io/docs/developing/deploy - - - - -Foundry doesn’t have a config file like Hardhat or Truffle to configure the network settings. Rather, the RPC endpoint and the private key are specified in the command line when passing foundry commands. See the [Foundry tutorial](https://github.com/neonlabsorg/examples/tree/main/simple-erc20-foundry). - - ## Verify contracts on Neon Devnet with Hardhat and NeonScan: To verify contracts on Neon Devnet with NeonScan, add this configuration to `hardhat.config.js`: @@ -139,13 +142,15 @@ etherscan: { The command for verifying a deployed contract is: ```jsx -./node_modules/.bin/hardhat verify --network neonevm +npx hardhat verify --network neondevnet ``` -Follow this GitHub tutorial for contract verification [github.com/neonscan/hardhat-integrate](https://github.com/neonscan/hardhat-integrate). +Follow this [GitHub tutorial](https://github.com/neonlabsorg/neon-tutorials/tree/main/hardhat) for Hardhat contract verification. ## Gotchas +### Reaching account limits + You may encounter an error `The transaction requires too lot of accounts`, i.e. that the transaction has exceeded the account limit. This error refers to the fact that the transaction on Solana does not allow the number of accounts to be more than 64. If you do need more than 64 accounts, the smart contract function throwing the error needs to be optimized. ### Basic optimization of smart contracts @@ -156,11 +161,11 @@ Consider applying the following optimization techniques: 2. Use indexed parameters for the events. 3. Use custom errors instead of require statements whenever possible. 4. Minimize function calls from within a function (this reduces the function call overload). -5. Avoid using strings as storage values and, instead use fixed-sized bytes32 whenever possible. +5. Avoid using strings as storage values and, instead, use fixed-sized bytes32 whenever possible. 6. Avoid loops through long arrays and use mappings instead of loops. 7. Make revert and assert messages as short as possible. 8. Write a library for all the reusable codes. 9. Use memory locations wisely - calldata, memory, storage (order is cheapest to expensive). -10. Variables should be declared in order so that they use less storage slots. +10. Variables should be declared in order so that they use fewer storage slots. -Learn more about optimizations from the [EVM Compatibility Overview](/docs/evm_compatibility/overview). \ No newline at end of file +Learn more about optimizations from the [EVM Compatibility Overview](/docs/evm_compatibility/overview). diff --git a/docs/developing/integrate/oracles/integrating_chainlink.md b/docs/developing/integrate/oracles/integrating_chainlink.md index 6d9092de..49bae724 100644 --- a/docs/developing/integrate/oracles/integrating_chainlink.md +++ b/docs/developing/integrate/oracles/integrating_chainlink.md @@ -1,10 +1,10 @@ --- title: Chainlink -proofedDate: 20230526 +proofedDate: 20231124 iterationBy: na includedInSite: true approvedBy: na -comment: todo boilerplate as Remix link also +comment: --- import Tabs from '@theme/Tabs'; @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem'; ## Introduction -[Chainlink data feeds](https://data.chain.link/) are the quickest way to connect your smart contracts to oracle data such as asset prices. +[Chainlink data feeds](https://data.chain.link/) are the quickest way to connect your smart contracts to oracle data, such as asset prices. Chainlink is implemented as a smart contract on Neon EVM, making Chainlink data feeds from the Solana network available for smart contracts to consume. @@ -44,7 +44,7 @@ The Chainlink controller contract is deployed on Devnet. This contract implement - + |Currency pair|Chainlink contract feed address| |:----:|:-----:| @@ -60,42 +60,38 @@ The Chainlink controller contract is deployed on Devnet. This contract implement ## Boilerplate contract -[View in Remix](https://remix.ethereum.org/#url=https://github.com/neonevm/neon-evm.docs/blob/main/docs/code-samples/chainlink-btc-usd-pricefeed.sol&lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.18+commit.87f61d96.js) +[View GitHub example](https://github.com/neonlabsorg/neon-tutorials/blob/main/hardhat/contracts/TestChainlink/TestChainlink.sol) + +[View in Remix](https://remix.ethereum.org/#url=https://github.com/neonlabsorg/neon-tutorials/blob/main/hardhat/contracts/TestChainlink/TestChainlink.sol&lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.21+commit.d9974bed.js) ```Solidity SPDX-License-Identifier: MIT -pragma solidity ^0.8.7; +pragma solidity 0.8.21; import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; -contract PriceConsumerV3 { - AggregatorV3Interface internal priceFeed; - - /** - * Network: NeonEVM Devnet - * Aggregator: BTC/USD - * Address: 0x878738FdbCC9Aa39Ce68Fa3B0B0B93426EcB6417 - */ - constructor() { - priceFeed = AggregatorV3Interface( - 0x878738FdbCC9Aa39Ce68Fa3B0B0B93426EcB6417 - ); - } +contract TestChainlink { /** - * Returns the latest price. + * Returns the latest price for specific price feed */ - function getLatestPrice() public view returns (int) { - // prettier-ignore + function getLatestPrice(address _priceFeed) external view returns (int) { ( /* uint80 roundID */, int price, /*uint startedAt*/, /*uint timeStamp*/, /*uint80 answeredInRound*/ - ) = priceFeed.latestRoundData(); + ) = AggregatorV3Interface(_priceFeed).latestRoundData(); return price; } + + /** + * Returns the decimals for specific price feed + */ + function getDecimals(address _priceFeed) external view returns (uint8) { + return AggregatorV3Interface(_priceFeed).decimals(); + } } ``` diff --git a/docs/developing/integrate/wallets/integrating_metamask_into_your_dapp.md b/docs/developing/integrate/wallets/integrating_metamask_into_your_dapp.md index 77230aa4..650fd565 100644 --- a/docs/developing/integrate/wallets/integrating_metamask_into_your_dapp.md +++ b/docs/developing/integrate/wallets/integrating_metamask_into_your_dapp.md @@ -1,23 +1,29 @@ --- title: MetaMask -proofedDate: na +proofedDate: 20231117 iterationBy: na includedInSite: true approvedBy: na comment: --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + ## Introduction -This guide goes through the process of integrating MetaMask into your dApp so that users of your dApp can click on a `Connect to Neon` button and be prompted to connect to your dApp via MetaMask in an intuitive and accessible manner. +This guide goes through the process of integrating MetaMask into your dApp so that users of your dApp can click on a **Connect to Neon** button and be prompted to connect to your dApp via MetaMask in an intuitive and accessible manner. This guide assumes proficiency in JavaScript. -## Full JavaScript Code +## Full JavaScript code This code is also available on [CodeSandbox](https://codesandbox.io/s/autumn-sky-0gkxs4). -```javascript + + + +```jsx import detectEthereumProvider from "@metamask/detect-provider"; const configure = async () => { @@ -29,14 +35,14 @@ const configure = async () => { method: "wallet_addEthereumChain", params: [ { - chainId: "0x" + (245022926).toString(16), - chainName: "Neon DevNet", + chainId: "0x" + (245022934).toString(16), + chainName: "Neon Mainnet", nativeCurrency: { name: "NEON", symbol: "NEON", - decimals: 9 + decimals: 18 }, - rpcUrls: ["https://proxy.devnet.neonlabs.org/solana"], + rpcUrls: ["https://neon-proxy-mainnet.solana.p2p.org"], blockExplorerUrls: ["https://neonscan.org/"] } ] @@ -57,3 +63,51 @@ export default function App() { ); } +``` + + + + +```jsx +import detectEthereumProvider from "@metamask/detect-provider"; + +const configure = async () => { + const provider = await detectEthereumProvider({ mustBeMetaMask: true }); + if (provider) { + try { + await provider.request({ method: "eth_requestAccounts" }); + await provider.request({ + method: "wallet_addEthereumChain", + params: [ + { + chainId: "0x" + (245022926).toString(16), + chainName: "Neon Devnet", + nativeCurrency: { + name: "NEON", + symbol: "NEON", + decimals: 18 + }, + rpcUrls: ["https://devnet.neonevm.org"], + blockExplorerUrls: ["https://devnet.neonscan.org"] + } + ] + }); + } catch (e) { + alert("Error"); + console.error("configure provider error", e); + } + } else { + alert("Please install MetaMask"); + } +}; + +export default function App() { + return ( +
+ +
+ ); +} +``` +
+
\ No newline at end of file diff --git a/docs/developing/integrate/wallets/integrating_walletconnect.mdx b/docs/developing/integrate/wallets/integrating_walletconnect.mdx index dce0599c..0bfad9b7 100644 --- a/docs/developing/integrate/wallets/integrating_walletconnect.mdx +++ b/docs/developing/integrate/wallets/integrating_walletconnect.mdx @@ -1,23 +1,27 @@ --- title: WalletConnect -proofedDate: 20230427 -iterationBy: HB +proofedDate: 20231117 +iterationBy: Miro includedInSite: true approvedBy: na -comment: TODO suggest a boilerplate ReactApp such as codepen be setup as an example to refer to -- this will then allow better support at Step 4 " connect your preferred wallet with Neon EVM DevNet within the WalletConnect interface. " to be included rather than just alluded to. See also comments inline +comment: --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import devnet from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/devnet.png'; import projectid from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/projectid.png'; -import connected from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/connected.png'; +import buttonclicked from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/button-clicked.png'; +import walletconnectqr from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-qr.png'; +import mathwalletconnect from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/math-wallet-connect.jpeg'; +import walletconnectlogged from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged.png'; +import walletconnectloggedoptions from '@site/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged-options.png'; ## Introduction [WalletConnect](https://docs.walletconnect.com/2.0/) is a protocol providing a decentralized standard to connect Web3 wallets and dApps. -This guide lays out a step-by-step process to configure a React or HTML dApp on Neon EVM using WalletConnect's [Web3Modal SDK](https://docs.walletconnect.com/2.0/web3modal/about). +This guide lays out a step-by-step process to configure a React or HTML dApp on Neon EVM using WalletConnect's [Web3Modal SDK](https://docs.walletconnect.com/web3modal/about). Web3Modal is a library that allows users to connect to any dApp via the WalletConnect interface. @@ -31,29 +35,31 @@ Web3Modal supports: - [HTML](https://docs.walletconnect.com/web3modal/html/about) ::: -## Get Started + +## Prerequisites + +- EVM-compatible wallet (this tutorial uses MathWallet) +- WalletConnect account + +## Tutorial ### Step 1: Create a project Log into [WalletConnect Cloud](https://cloud.walletconnect.com/) to create a new project and copy the Project ID. - - > ### Step 2: Configure your project's chain -From WalletConnect's project page: - -2.1 Click the **Explorer** tab and select the Neon chain you require from the **Chains** drop-down. For this guide, we will use the Neon EVM DevNet. +From WalletConnect's project page, click the **Explorer** tab and select the Neon chain you require from the **Chains** drop-down. For this guide, we will use the Neon EVM Devnet. > ### Step 3: Configure your app -For this guide, we are configuring a React App. +For this guide, we are configuring an HTML Web App. @@ -63,84 +69,84 @@ For this guide, we are configuring a React App. ```bash -npm install @web3modal/ethereum @web3modal/react wagmi ethers@^5 +npm install @wagmi/core @web3modal/wagmi viem vite ``` ``` -yarn add @web3modal/ethereum @web3modal/react wagmi ethers@^5 +yarn add @wagmi/core @web3modal/wagmi viem vite ``` +3.2 Inside `package.json` file, add the following code: -3.2 Set `projectId={your_project_ID}` in your `.env` file. - -3.3 Import the following packages in your `app.jsx` file: +> `vite` is a dependency that starts the server -```javascript -import { EthereumClient, w3mConnectors, w3mProvider } from '@web3modal/ethereum' -import { configureChains, createClient, WagmiConfig } from 'wagmi' -import { neonDevnet } from '@wagmi/chains' - -const chains = [neonDevnet] -const projectId = "" - -const { provider } = configureChains(chains, [w3mProvider({ projectId })]) -const wagmiClient = createClient({ - autoConnect: true, - connectors: w3mConnectors({ projectId, version: 1, chains }), - provider -}) +```json +"scripts": { + "dev": "vite" +} ``` -3.4 Pass your ethereumClient and `projectId` to the Web3Modal component: +3.3 Create `.env.local` file and place `VITE_PROJECT_ID="XYZ"` ( place your project ID key from [WalletConnect Cloud](https://cloud.walletconnect.com/) ). - - +3.4 Create an `index.html` file and use the following code: -```javascript -import { Web3Modal } from '@web3modal/react' - -const web3Modal = new Web3Modal({ projectId }, ethereumClient); // for using in code -const ethereumClient = new EthereumClient(wagmiClient, chains) - -function App() { - return <> - - - - - -} +```html + + + + + Neon WalletConnect Example + + + + + + ``` - - +3.5 Create a `main.js` file and place the following code: -```html - -
- -
- - - ``` +```javascript +import { createWeb3Modal, defaultWagmiConfig } from '@web3modal/wagmi'; +import { neonMainnet, neonDevnet } from '@wagmi/core/chains'; -
-
+const projectId = import.meta.env.VITE_PROJECT_ID; +const metadata = { + name: 'Neon Example', + description: 'Neon Web3Modal Example', + url: 'https://neonevm.org', + icons: ['https://neonevm.org/favicons/android-chrome-512x512.png'] +}; + +const chains = [neonMainnet, neonDevnet]; +const wagmiConfig = defaultWagmiConfig({chains, projectId, metadata}); +const modal = createWeb3Modal({wagmiConfig, projectId, chains}); +``` + +3.6 Run `npm run dev` or `yarn run dev` to start your Web application, and you should see the Web3Modal button loaded in your Web app page. ### Step 4: Connect your wallet -Start your application: `npm/yarn start` +For this example, we use [MathWallet](https://mathwallet.org/). + +4.1 You have several connecting options; select **WalletConnect**: + -You may now connect your preferred wallet with Neon EVM Devnet within the WalletConnect interface. +4.2 The popup will load a WalletConnect QR code. + - +4.3 Open your MathWallet mobile app and scan the QR code. + -> +4.4 After scanning the WalletConnect QR code, you should be able to see your NEON balance inside your Web app page: + +Now, if you click your NEON balance, you'll be able to see more options for your WalletConnect connection: + \ No newline at end of file diff --git a/docs/faq/neon-brief-faq.md b/docs/faq/neon-brief-faq.md index 8c4e94cc..fa68415e 100644 --- a/docs/faq/neon-brief-faq.md +++ b/docs/faq/neon-brief-faq.md @@ -28,7 +28,7 @@ To begin building on Neon, follow our [Quick Start Guide](/docs/quick_start). Po As a smart contract on Solana, Neon EVM benefits from Solana’s low gas fees (no less than 0.000015 SOL per transaction) and high throughput (+2,000 TPS). This arguably makes it the cheapest and most efficient way to run Ethereum dApps. -Neon EVM doesn't require any significant changes to run existing Ethereum smart contracts, with all the advantages and innovations of Solana. In addition, the Neon EVM provides access to many familiar Ethereum developer tools, including MetaMask, Remix, Hardhat, Truffle, and Brownie. Neon is the perfect platform for Ethereum dApps to tap into the Solana ecosystem. +Neon EVM doesn't require any significant changes to run existing Ethereum smart contracts, with all the advantages and innovations of Solana. In addition, the Neon EVM provides access to many familiar Ethereum developer tools, including MetaMask, Remix, Hardhat, and Truffle. Neon is the perfect platform for Ethereum dApps to tap into the Solana ecosystem. ### What makes Neon EVM so special? diff --git a/docs/governance/overview.md b/docs/governance/overview.md index 6c1744fb..722470fe 100644 --- a/docs/governance/overview.md +++ b/docs/governance/overview.md @@ -12,7 +12,7 @@ import dao from '@site/static/img/doc-images/governance/dao_organization.png'; ## The Neon DAO -The Neon DAO is a collection of community-led, community-driven organizations that foster and enhance decentralization, resilence, and self-sustainability for the Neon EVM platform and ecosystem. To do so, community members reach consensus on solving issues, develop rules for the functioning of the Neon DAO, and change the governance rules themselves through contractual amendments, if applicable. +The Neon DAO is a collection of community-led, community-driven organizations that foster and enhance decentralization, resilience, and self-sustainability for the Neon EVM platform and ecosystem. To do so, community members reach consensus on solving issues, develop rules for the functioning of the Neon DAO, and change the governance rules themselves through contractual amendments, if applicable. The Neon DAO's Assemblies are built using [SPL Governance](https://github.com/solana-labs/solana-program-library/tree/master/governance), a versatile DAO creation tool for the Solana blockchain. diff --git a/docs/governance/principles.md b/docs/governance/principles.md index d294e30c..767608f0 100644 --- a/docs/governance/principles.md +++ b/docs/governance/principles.md @@ -23,7 +23,7 @@ There are also more concrete prohibitions on improper behavior that must be kept * No member should improperly influence the vote of another. * Members agree to hold software developers blameless for unintentional mistakes made by them in the expression of contractual intent, whether or not said mistakes were due to actual or perceived negligence. -In addition, the NEON DAO is transparent and flexibile. All users have access to all relevant information in order to make well-informed decisions, and the governance process is adaptable to the ever-evolving needs of the community. +In addition, the NEON DAO is transparent and flexible. All users have access to all relevant information in order to make well-informed decisions, and the governance process is adaptable to the ever-evolving needs of the community. ### Rules and Etiquette @@ -41,7 +41,7 @@ The DAO Forum is not the place for general discussions, advertising, off-topic c ## Measures Against Abuse and Misuse -Like any governance system, the Neon DAO faces the risk of malicious actors being involved, which could jeopardize the Neon ecosystem as well as treasury or user funds if their subversive proposals are erronously passed. To reduce this risk, the Neon DAO has implemented defensive measures in several key areas, corresponding to stages along the process of a proposal becoming implemented. These areas include limiting the number of proposals, detecting malicious proposals, and cancelling malicious proposals. +Like any governance system, the Neon DAO faces the risk of malicious actors being involved, which could jeopardize the Neon ecosystem as well as treasury or user funds if their subversive proposals are erroneously passed. To reduce this risk, the Neon DAO has implemented defensive measures in several key areas, corresponding to stages along the process of a proposal becoming implemented. These areas include limiting the number of proposals, detecting malicious proposals, and cancelling malicious proposals. ### Limiting the Number of Proposals Malicious actors have an easier time pushing through one of their proposals if they can submit as many proposals as they like. To prevent this, the Neon DAO's Assemblies have protections in place to limit the number of proposals an Assembly can accept from a given user. These measures include: @@ -50,4 +50,4 @@ Malicious actors have an easier time pushing through one of their proposals if t * A minimum amount of locked tokens necessary for a user to create a proposal (each Assembly has different requirements) * Some Assemblies require a higher locked token threshold for creating proposals than for updating the Neon EVM -Beside preventing the proliferation of malicious proposals, these measures also reduce spam, making the governance system easier to use and more efficient. \ No newline at end of file +Besides preventing the proliferation of malicious proposals, these measures also reduce spam, making the governance system easier to use and more efficient. diff --git a/docs/governance/proposals.md b/docs/governance/proposals.md index f6846bfa..b9375387 100644 --- a/docs/governance/proposals.md +++ b/docs/governance/proposals.md @@ -116,7 +116,7 @@ After a proposal is created, it is ready to be put to a vote. The community of e To vote on a proposal, follow the following steps: -1. You might have been given a link to a proposal that is in the `Voting` state, or you might have clicked on a proposal in the `Voting` stage from the list of proposals. Either way, tou should see a proposal page like this: +1. You might have been given a link to a proposal that is in the `Voting` state, or you might have clicked on a proposal in the `Voting` stage from the list of proposals. Either way, you should see a proposal page like this: > @@ -133,7 +133,7 @@ To vote on a proposal, follow the following steps: 3. You can then choose/customize the percentage of your NEON tokens you would like to commit for this vote 4. Click "Confirm" once you are happy with your ballot. -3. A prompt by your wallet application will ask if you to approve the voting transaction. If you have verified its details and wish to continue, approve it, then wait a few moments for the transaction to process. +3. A prompt by your wallet application will ask you to approve the voting transaction. If you have verified its details and wish to continue, approve it, then wait a few moments for the transaction to process. 5. You have now cast your vote on this proposal. Once the voting period is concluded, the votes are automatically counted. If the proposal's "Accept" votes pass the Assembly's required vote threshold ("Vote tipping point" in the image below), the proposal is passed and is ready for implementation. Otherwise, the proposal fails. diff --git a/docs/operating/accounts.md b/docs/operating/accounts.md index 4e3f3023..f278c579 100644 --- a/docs/operating/accounts.md +++ b/docs/operating/accounts.md @@ -64,7 +64,7 @@ The number of required SOLs depends on: - The size of the [holder account](/docs/architecture/solana-accounts/#holder-account-size) - The number of holder accounts -> Remember, the number of holder accounts correlates with the the TPS of the Neon Proxy instance. +> Remember, the number of holder accounts correlates with the TPS of the Neon Proxy instance. @@ -72,7 +72,7 @@ The number of required SOLs depends on: To calculate the number of SOLs required by the Neon Operator, use the following logic: -- The TPS depends on the finalization time of the Solana, which is equal to 32 Solana blocks because the content of the holder account should be retained until successful finalization of the the Neon transaction +- The TPS depends on the finalization time of the Solana, which is equal to 32 Solana blocks because the content of the holder account should be retained until successful finalization of the Neon transaction - The Solana block time is 400 ms. So in 1 second, Solana may produce 1 / 0.4 = 2.5 blocks The formula to calculate the number of holder accounts and required SOLs is as follows: diff --git a/docs/operating/enhanced.md b/docs/operating/enhanced.md index 68fbbd0e..00e55a38 100644 --- a/docs/operating/enhanced.md +++ b/docs/operating/enhanced.md @@ -149,7 +149,7 @@ This is where you configure various aspects of how you wish to run your Proxy. O #### `Proxy` * `PROXY_VER` - specifies the Proxy/Docker image version -* `PROXY_COUNT` - specifies the the number of pods that you need to host in your cluster namespace +* `PROXY_COUNT` - specifies the number of pods that you need to host in your cluster namespace * `PROXY_COUNT` - specifies the number of keys that each pod will use from Hashicorp Vault * `PROXY_HOST` - if you want to use an ingress to serve your own DNS name inside the cluster, set this variable to point to the host * `PRX_FAUCET_URL` - specifies the internal name inside your namespace that calls the faucet application (only applicable to local development and devnet) diff --git a/docs/operating/transaction-gas.md b/docs/operating/transaction-gas.md index 036e378c..f5f35202 100644 --- a/docs/operating/transaction-gas.md +++ b/docs/operating/transaction-gas.md @@ -69,17 +69,17 @@ The Neon transaction will only be executed when the gas price covers Operator co ## Calculation configuration -The Neon Proxy has several settings accommodate the calculation of gas-price on your required network: +The Neon Proxy has several settings that accommodate the calculation of gas-price on your required network: - `PRX_PP_SOLANA_URL`: the HTTP/S address of the Solana node (Devnet/Mainnet) that provides the Pyth data account that supplies $NEON and $SOL prices - `PRX_PYTH_MAPPING_ACCOUNT`: the Solana address of the Pyth mapping account; select the address on (https://pyth.network/developers/accounts) based on the type of network (Devnet/Mainnet) -- `PRX_UPDATE_PYTH_MAPPING_PERIOD_SEC`: the time period to reread the Pyth mapping account. The Neon Proxy reads the Pyth mapping account at the start, gets the addresses of $NEON and $SOL accounts, and rechecks the address from the Pyth Mapping account only after `UPDATE_PYTH_MAPPING_PERIOD_SEC`. It is recommend to set this generously (e.g. 1/3/10 hours), because the price feed accounts don’t change often. +- `PRX_UPDATE_PYTH_MAPPING_PERIOD_SEC`: the time period to reread the Pyth mapping account. The Neon Proxy reads the Pyth mapping account at the start, gets the addresses of $NEON and $SOL accounts, and rechecks the address from the Pyth Mapping account only after `UPDATE_PYTH_MAPPING_PERIOD_SEC`. It is recommended to set this generously (e.g. 1/3/10 hours), because the price feed accounts don’t change often. - `PRX_MINIMAL_GAS_PRICE`: the minimum gas price to accept transactions into the mempool for on-chain execution > Let's take a closer look at the minimum gas price variable. \ No newline at end of file + --> diff --git a/docs/single-source-snippets/_hardhat.mdx b/docs/single-source-snippets/_hardhat.mdx new file mode 100644 index 00000000..048cea7e --- /dev/null +++ b/docs/single-source-snippets/_hardhat.mdx @@ -0,0 +1 @@ +Hardhat is a development environment used to compile, deploy, test, and debug Ethereum software. It helps developers manage and automate the recurring tasks inherent to the process of building smart contracts and launching dApps, as well as supporting various add-on features that streamline this workflow. \ No newline at end of file diff --git a/docs/single-source-snippets/_hardhat_config.mdx b/docs/single-source-snippets/_hardhat_config.mdx new file mode 100644 index 00000000..2b439d79 --- /dev/null +++ b/docs/single-source-snippets/_hardhat_config.mdx @@ -0,0 +1 @@ +To deploy a contract to Neon EVM with Hardhat, some Neon-specific information must be configured. The configuration file is called `hardhat.config.js` and is located at the root of your project directory. This JavaScript file can execute any code necessary to create your configuration. Its file schema, variables, and other documentation can be found on the [official Hardhat website](https://hardhat.org/hardhat-runner/docs/config). \ No newline at end of file diff --git a/docs/tokens/gas_fees.mdx b/docs/tokens/gas_fees.mdx index 0ecbc392..ded25baa 100644 --- a/docs/tokens/gas_fees.mdx +++ b/docs/tokens/gas_fees.mdx @@ -63,7 +63,7 @@ Within [Solana](https://docs.solana.com/storage_rent_economics), the rental cost > If an account has less than two years' worth of deposited rent, the network charges rent on a per-epoch basis, in credit for the next epoch. This rent is deducted at a rate specified in genesis, in lamports per kilobyte-year. -To simplify the user experience, Neon charges two years' worth of rent deposits for each new account. The the gas cost of creating a new account is: +To simplify the user experience, Neon charges two years' worth of rent deposits for each new account. The gas cost of creating a new account is: > 0 \* 2 \* 5,000 (computational cost + treasury) + (128 + 71) \* 6960 (storage cost for the minimum Neon account size) ≈ 1,400,000 units Therefore, the total gas fee is 1,400,000 units \* 132 Galan = 0.1848 NEON tokens. diff --git a/sidebars.js b/sidebars.js index 3edc0a74..2413ef81 100644 --- a/sidebars.js +++ b/sidebars.js @@ -78,8 +78,8 @@ const sidebars = { label: 'Configure Dev Tools', items: [ 'developing/deploy_facilities/configure_hardhat', + 'developing/deploy_facilities/configure_foundry', 'developing/deploy_facilities/configure_truffle', - 'developing/deploy_facilities/configure_brownie' ] }, { @@ -108,8 +108,7 @@ const sidebars = { items: [ 'developing/deploy_facilities/using_hardhat', 'developing/deploy_facilities/using_truffle', - 'developing/deploy_facilities/using_remix', - 'developing/deploy_facilities/using_brownie' + 'developing/deploy_facilities/using_remix' ] }, { diff --git a/src/components/QuickLookNeonImage/ecosystem.tsx b/src/components/NeonEcosystemView/ecosystem.tsx similarity index 68% rename from src/components/QuickLookNeonImage/ecosystem.tsx rename to src/components/NeonEcosystemView/ecosystem.tsx index f96c0dd6..b80d8680 100644 --- a/src/components/QuickLookNeonImage/ecosystem.tsx +++ b/src/components/NeonEcosystemView/ecosystem.tsx @@ -22,8 +22,8 @@ export function Ecosystem(props: { changeState: Dispatch, state: string, th }; return
- - + + @@ -31,7 +31,7 @@ export function Ecosystem(props: { changeState: Dispatch, state: string, th - + , state: string, th className='Vector' clipRule='evenodd' /> - + , state: string, th className='The Graph' /> - + , state: string, th className='Union' clipRule='evenodd' /> - + , state: string, th className='Vector' /> - + , state: string, th - + + + @@ -135,10 +137,8 @@ export function Ecosystem(props: { changeState: Dispatch, state: string, th - - - + + , state: string, th d='M1612.14 26.784v-4.057h19.11v4.057h-7.13V46h-4.86V26.784h-7.12Zm26.52 19.557c-1.76 0-3.29-.375-4.58-1.125a7.642 7.642 0 0 1-2.96-3.16c-.7-1.355-1.05-2.927-1.05-4.715 0-1.803.35-3.379 1.05-4.727a7.552 7.552 0 0 1 2.96-3.16c1.29-.757 2.82-1.136 4.58-1.136 1.77 0 3.29.379 4.57 1.136 1.29.75 2.28 1.804 2.98 3.16.69 1.348 1.04 2.924 1.04 4.727 0 1.788-.35 3.36-1.04 4.716-.7 1.348-1.69 2.401-2.98 3.159-1.28.75-2.8 1.125-4.57 1.125Zm.02-3.75c.81 0 1.48-.227 2.02-.682.53-.462.94-1.09 1.21-1.886.28-.796.42-1.701.42-2.716 0-1.015-.14-1.92-.42-2.716-.27-.796-.68-1.424-1.21-1.886-.54-.463-1.21-.694-2.02-.694s-1.49.231-2.04.694c-.55.462-.96 1.09-1.24 1.886-.27.795-.41 1.7-.41 2.716 0 1.015.14 1.92.41 2.716.28.795.69 1.424 1.24 1.886.55.455 1.23.682 2.04.682Zm18.61 3.75c-1.77 0-3.29-.375-4.58-1.125a7.73 7.73 0 0 1-2.97-3.16c-.7-1.355-1.04-2.927-1.04-4.715 0-1.803.34-3.379 1.04-4.727.7-1.356 1.69-2.41 2.97-3.16 1.29-.757 2.81-1.136 4.58-1.136 1.76 0 3.28.379 4.57 1.136a7.575 7.575 0 0 1 2.97 3.16c.7 1.348 1.05 2.924 1.05 4.727 0 1.788-.35 3.36-1.05 4.716a7.665 7.665 0 0 1-2.97 3.159c-1.29.75-2.81 1.125-4.57 1.125Zm.02-3.75c.8 0 1.47-.227 2.01-.682.54-.462.94-1.09 1.22-1.886.28-.796.42-1.701.42-2.716 0-1.015-.14-1.92-.42-2.716-.28-.796-.68-1.424-1.22-1.886-.54-.463-1.21-.694-2.01-.694-.81 0-1.49.231-2.05.694-.54.462-.95 1.09-1.23 1.886-.28.795-.41 1.7-.41 2.716 0 1.015.13 1.92.41 2.716.28.795.69 1.424 1.23 1.886.56.455 1.24.682 2.05.682Zm15.56-19.864V46h-4.84V22.727h4.84ZM1675.74 46V28.546h4.85V46h-4.85Zm2.44-19.704c-.72 0-1.34-.24-1.86-.716-.5-.485-.76-1.065-.76-1.74 0-.666.26-1.238.76-1.715a2.634 2.634 0 0 1 1.86-.727c.72 0 1.33.242 1.84.727.51.477.77 1.05.77 1.716 0 .674-.26 1.254-.77 1.738-.51.478-1.12.716-1.84.716Zm10.12 9.613V46h-4.84V28.546h4.62v3.079h.2a4.932 4.932 0 0 1 1.94-2.41c.91-.598 2.02-.897 3.31-.897 1.21 0 2.27.265 3.17.796.9.53 1.6 1.287 2.1 2.272.5.978.75 2.144.75 3.5V46h-4.84V35.75c.01-1.068-.26-1.901-.82-2.5-.55-.606-1.31-.91-2.28-.91-.65 0-1.23.141-1.73.421-.49.28-.88.69-1.16 1.228-.27.53-.41 1.17-.42 1.92Zm21.93 17c-1.57 0-2.91-.216-4.03-.648-1.11-.424-2-1.003-2.66-1.738-.66-.735-1.09-1.56-1.28-2.478l4.47-.602c.14.349.36.674.65.977.3.303.69.546 1.17.728.49.19 1.09.284 1.8.284 1.05 0 1.92-.258 2.6-.773.69-.508 1.03-1.36 1.03-2.557V42.91h-.2c-.21.485-.53.943-.96 1.375-.42.432-.97.784-1.63 1.057-.67.273-1.46.409-2.39.409-1.31 0-2.5-.303-3.58-.91-1.07-.613-1.92-1.548-2.56-2.806-.62-1.265-.94-2.864-.94-4.795 0-1.978.32-3.63.97-4.955.64-1.326 1.5-2.318 2.57-2.977a6.609 6.609 0 0 1 3.53-.989c.98 0 1.8.167 2.45.5.66.326 1.19.735 1.6 1.227.4.485.72.963.94 1.432h.18v-2.931h4.81V46.17c0 1.485-.37 2.728-1.09 3.728-.73 1-1.74 1.75-3.03 2.25-1.28.507-2.75.761-4.42.761Zm.11-10.795c.78 0 1.43-.194 1.97-.58.55-.394.96-.954 1.25-1.682.3-.735.45-1.613.45-2.636 0-1.023-.15-1.91-.44-2.66-.28-.757-.7-1.344-1.25-1.76-.54-.417-1.2-.626-1.98-.626-.8 0-1.47.216-2.02.648-.54.424-.95 1.015-1.23 1.773-.29.758-.43 1.633-.43 2.625 0 1.008.14 1.879.43 2.614.28.727.7 1.291 1.23 1.693.55.394 1.22.59 2.02.59Z' className='Tooling' /> - + , state: string, th className='Remix' /> - + , state: string, th className='Vector' /> - + , state: string, th d='M1691.76 322v-14.545h8.72v1.562h-6.96v4.915h6.31v1.562h-6.31V322h-1.76Zm14.63.227c-.99 0-1.85-.234-2.59-.703-.74-.469-1.32-1.124-1.74-1.967-.41-.843-.61-1.828-.61-2.955 0-1.136.2-2.128.61-2.976.42-.847 1-1.505 1.74-1.974.74-.469 1.6-.703 2.59-.703.98 0 1.85.234 2.58.703.75.469 1.32 1.127 1.74 1.974.41.848.62 1.84.62 2.976 0 1.127-.21 2.112-.62 2.955-.42.843-.99 1.498-1.74 1.967-.73.469-1.6.703-2.58.703Zm0-1.505c.75 0 1.36-.192 1.85-.576.48-.383.84-.887 1.07-1.512.23-.625.35-1.303.35-2.032 0-.729-.12-1.408-.35-2.038a3.435 3.435 0 0 0-1.07-1.527c-.49-.388-1.1-.582-1.85-.582s-1.37.194-1.85.582c-.48.388-.84.897-1.07 1.527-.23.63-.35 1.309-.35 2.038 0 .729.12 1.407.35 2.032.23.625.59 1.129 1.07 1.512.48.384 1.1.576 1.85.576Zm13.86-3.182v-6.449h1.68V322h-1.68v-1.847h-.11a3.631 3.631 0 0 1-1.2 1.414c-.54.383-1.22.575-2.04.575-.68 0-1.29-.149-1.82-.447-.53-.303-.95-.758-1.25-1.364-.3-.611-.45-1.38-.45-2.308v-6.932h1.67v6.818c0 .796.22 1.43.67 1.903.45.474 1.02.711 1.72.711.41 0 .84-.107 1.27-.32.43-.213.8-.54 1.09-.98.3-.44.45-1.001.45-1.683Zm5.91-2.102V322h-1.68v-10.909h1.62v1.704h.14a3.16 3.16 0 0 1 1.17-1.335c.52-.341 1.19-.511 2.01-.511.74 0 1.39.151 1.94.454.56.299.99.753 1.3 1.364.3.606.46 1.373.46 2.301V322h-1.68v-6.818c0-.857-.22-1.525-.67-2.003-.44-.483-1.05-.724-1.83-.724-.53 0-1.01.116-1.43.348-.42.232-.75.57-.99 1.015-.24.445-.36.985-.36 1.62Zm13.62 6.789c-.9 0-1.71-.229-2.4-.689-.7-.464-1.24-1.117-1.64-1.96-.39-.847-.59-1.849-.59-3.004 0-1.146.2-2.14.59-2.983.4-.843.94-1.494 1.64-1.953.71-.459 1.51-.689 2.43-.689.71 0 1.27.118 1.69.355.41.232.73.497.95.795.22.294.39.535.52.725h.14v-5.369h1.67V322h-1.61v-1.676h-.2c-.13.199-.3.45-.53.753-.23.298-.55.566-.97.802-.42.232-.98.348-1.69.348Zm.23-1.505c.67 0 1.24-.176 1.71-.526.46-.355.81-.845 1.05-1.47.25-.63.37-1.357.37-2.181 0-.814-.12-1.527-.36-2.137-.23-.616-.59-1.094-1.05-1.435-.46-.346-1.04-.518-1.72-.518-.71 0-1.3.182-1.77.546-.47.36-.82.85-1.06 1.471-.23.615-.35 1.306-.35 2.073 0 .777.12 1.482.36 2.117.24.63.59 1.132 1.06 1.506.47.369 1.06.554 1.76.554Zm7.56 1.278v-10.909h1.62v1.648h.12c.19-.54.55-.978 1.07-1.314a3.214 3.214 0 0 1 1.77-.505c.12 0 .27.003.46.008.18.004.32.011.42.021v1.704a6.147 6.147 0 0 0-.39-.064c-.2-.033-.41-.049-.64-.049-.53 0-1 .111-1.42.334-.41.217-.73.52-.98.909-.23.383-.35.821-.35 1.314V322h-1.68Zm8.34 4.091c-.28 0-.54-.024-.76-.071-.22-.043-.38-.085-.46-.128l.43-1.477c.4.104.76.142 1.07.113.32-.028.59-.168.84-.419.24-.246.47-.646.67-1.2l.31-.852-4.03-10.966h1.82l3.01 8.693h.11l3.01-8.693h1.82l-4.63 12.5c-.21.563-.47 1.03-.77 1.399-.31.374-.67.651-1.08.831-.4.18-.85.27-1.36.27Z' className='Foundry' /> - - - - , state: string, th d='M1660.5 239c8.01 0 14.5-6.492 14.5-14.5s-6.49-14.5-14.5-14.5-14.5 6.492-14.5 14.5 6.49 14.5 14.5 14.5Z' className='Vector' /> - - - - - - + + - - - {state !== 'proxy' && onStateChange('proxy')}> - - - + + , state: string, th d='M819.761 481v-14.545h8.779v1.562h-7.017v4.915h6.562v1.562h-6.562v4.944h7.13V481h-8.892Zm20.132-10.909L835.859 481h-1.705l-4.034-10.909h1.818l3.012 8.693h.113l3.012-8.693h1.818Zm5.88 11.136c-1.051 0-1.958-.232-2.72-.696a4.677 4.677 0 0 1-1.754-1.96c-.407-.843-.611-1.823-.611-2.94 0-1.118.204-2.103.611-2.955.412-.857.985-1.524 1.719-2.003.738-.483 1.6-.724 2.585-.724.568 0 1.129.095 1.683.284a4.17 4.17 0 0 1 1.513.923c.454.422.817.98 1.087 1.676.269.696.404 1.553.404 2.571v.711h-8.409v-1.449h6.705c0-.616-.123-1.165-.37-1.648a2.78 2.78 0 0 0-1.036-1.143c-.446-.28-.971-.419-1.577-.419-.668 0-1.245.165-1.733.497a3.264 3.264 0 0 0-1.115 1.278 3.75 3.75 0 0 0-.391 1.69v.966c0 .824.142 1.523.426 2.096a3.07 3.07 0 0 0 1.201 1.299c.511.294 1.105.441 1.782.441.441 0 .838-.062 1.193-.185.36-.128.67-.317.931-.568.26-.256.462-.573.604-.952l1.619.455a3.595 3.595 0 0 1-.859 1.448c-.403.412-.9.734-1.492.966-.592.228-1.257.341-1.996.341Zm6.552-.227v-10.909h1.619v1.648h.114c.199-.54.559-.978 1.08-1.314a3.177 3.177 0 0 1 1.761-.505c.123 0 .277.003.462.008.184.004.324.011.419.021v1.704a5.397 5.397 0 0 0-.391-.064 3.867 3.867 0 0 0-.632-.049c-.53 0-1.004.111-1.421.334-.411.217-.738.52-.98.909a2.454 2.454 0 0 0-.355 1.314V481h-1.676Zm14.654-8.466-1.506.426a2.78 2.78 0 0 0-.419-.731 2.025 2.025 0 0 0-.739-.597c-.312-.156-.712-.234-1.2-.234-.667 0-1.224.154-1.669.461-.44.303-.66.689-.66 1.158 0 .417.151.746.454.987.303.242.777.443 1.421.604l1.619.398c.975.236 1.702.599 2.18 1.086.479.483.718 1.106.718 1.868 0 .625-.18 1.184-.54 1.676-.355.493-.852.881-1.492 1.165-.639.284-1.382.426-2.23.426-1.112 0-2.033-.241-2.762-.724-.73-.483-1.191-1.189-1.385-2.117l1.59-.397c.152.587.438 1.027.86 1.321.426.293.982.44 1.669.44.781 0 1.401-.166 1.861-.497.464-.336.696-.739.696-1.208 0-.378-.133-.696-.398-.951-.265-.261-.672-.455-1.222-.583l-1.818-.426c-.999-.237-1.733-.603-2.202-1.101-.464-.502-.696-1.129-.696-1.882 0-.615.173-1.16.519-1.633.35-.474.826-.845 1.427-1.115.607-.27 1.293-.405 2.06-.405 1.08 0 1.927.237 2.543.71a3.839 3.839 0 0 1 1.321 1.875Zm6.951-2.443v1.42h-5.653v-1.42h5.653Zm-4.006-2.614h1.677v10.398c0 .473.068.829.205 1.065.143.232.322.389.54.469.223.076.457.114.703.114.185 0 .337-.01.455-.029l.284-.056.341 1.505a3.41 3.41 0 0 1-.476.128 3.529 3.529 0 0 1-.774.071c-.474 0-.938-.102-1.392-.305a2.764 2.764 0 0 1-1.122-.931c-.294-.416-.441-.942-.441-1.576v-10.853Zm9.223 13.779a4.435 4.435 0 0 1-1.882-.391 3.23 3.23 0 0 1-1.343-1.143c-.331-.502-.497-1.108-.497-1.819 0-.625.123-1.131.369-1.519a2.62 2.62 0 0 1 .988-.924 5.21 5.21 0 0 1 1.363-.497 16.367 16.367 0 0 1 1.513-.27c.663-.085 1.2-.149 1.612-.192.417-.047.72-.125.909-.234.194-.109.291-.298.291-.568v-.057c0-.701-.191-1.245-.575-1.633-.379-.389-.954-.583-1.726-.583-.8 0-1.427.175-1.882.526-.454.35-.774.724-.959 1.122l-1.59-.568c.284-.663.662-1.179 1.136-1.549a4.262 4.262 0 0 1 1.562-.781 6.516 6.516 0 0 1 1.677-.227c.35 0 .752.042 1.207.128.459.08.902.248 1.328.504.431.256.788.642 1.072 1.158.285.516.427 1.207.427 2.073V481h-1.677v-1.477h-.085c-.113.236-.303.49-.568.76-.265.27-.618.499-1.058.689-.44.189-.978.284-1.612.284Zm.255-1.506c.663 0 1.222-.13 1.676-.391.46-.26.805-.596 1.037-1.008.237-.412.355-.845.355-1.3v-1.534c-.071.085-.227.163-.468.234a7.743 7.743 0 0 1-.824.178c-.308.047-.609.09-.902.128-.289.033-.523.061-.703.085a6.406 6.406 0 0 0-1.222.277c-.374.123-.677.31-.909.561-.227.246-.341.582-.341 1.009 0 .582.216 1.022.646 1.321.436.293.988.44 1.655.44Zm8.851-2.727-.028-2.074h.341l4.773-4.858h2.074l-5.086 5.142h-.142l-1.932 1.79ZM886.691 481v-14.545h1.676V481h-1.676Zm6.932 0-4.262-5.398 1.194-1.164 5.198 6.562h-2.13Zm7.557.227c-1.052 0-1.958-.232-2.721-.696a4.677 4.677 0 0 1-1.754-1.96c-.407-.843-.611-1.823-.611-2.94 0-1.118.204-2.103.611-2.955.412-.857.985-1.524 1.719-2.003.738-.483 1.6-.724 2.585-.724.568 0 1.129.095 1.683.284a4.162 4.162 0 0 1 1.513.923c.455.422.817.98 1.087 1.676s.405 1.553.405 2.571v.711h-8.41v-1.449h6.705c0-.616-.123-1.165-.369-1.648a2.782 2.782 0 0 0-1.037-1.143c-.445-.28-.971-.419-1.577-.419-.668 0-1.245.165-1.733.497a3.264 3.264 0 0 0-1.115 1.278 3.762 3.762 0 0 0-.391 1.69v.966c0 .824.142 1.523.427 2.096a3.062 3.062 0 0 0 1.2 1.299c.511.294 1.105.441 1.783.441.44 0 .838-.062 1.193-.185.36-.128.67-.317.93-.568.261-.256.462-.573.604-.952l1.619.455a3.584 3.584 0 0 1-.859 1.448c-.403.412-.9.734-1.492.966-.592.228-1.257.341-1.995.341Z' className='Everstake' /> } {state !== 'neon' && onStateChange('neon')}> - - - + + , state: string, th } - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - + values='0 0 0 0 0.478896 0 0 0 0 0.445382 0 0 0 0 0.529167 0 0 0 0.0967 0' /> + - - + + - - - + + + - - - + + - - - - - -
; diff --git a/src/components/QuickLookNeonImage/index.tsx b/src/components/NeonEcosystemView/index.tsx similarity index 94% rename from src/components/QuickLookNeonImage/index.tsx rename to src/components/NeonEcosystemView/index.tsx index 6cbbe2d9..51501e3c 100644 --- a/src/components/QuickLookNeonImage/index.tsx +++ b/src/components/NeonEcosystemView/index.tsx @@ -5,7 +5,7 @@ import { NeonEvm } from './neon-evm'; import { Proxy } from './proxy'; import './style.css'; -export function QuickLookNeonImage() { +export function NeonEcosystemView() { const { colorMode } = useColorMode(); const [state, setState] = useState(null); diff --git a/src/components/QuickLookNeonImage/neon-evm.tsx b/src/components/NeonEcosystemView/neon-evm.tsx similarity index 100% rename from src/components/QuickLookNeonImage/neon-evm.tsx rename to src/components/NeonEcosystemView/neon-evm.tsx diff --git a/src/components/QuickLookNeonImage/proxy.tsx b/src/components/NeonEcosystemView/proxy.tsx similarity index 100% rename from src/components/QuickLookNeonImage/proxy.tsx rename to src/components/NeonEcosystemView/proxy.tsx diff --git a/src/components/QuickLookNeonImage/style.css b/src/components/NeonEcosystemView/style.css similarity index 100% rename from src/components/QuickLookNeonImage/style.css rename to src/components/NeonEcosystemView/style.css diff --git a/static/data/link-list.json b/static/data/link-list.json index 594d5874..d968a63c 100644 --- a/static/data/link-list.json +++ b/static/data/link-list.json @@ -14,7 +14,7 @@ "id": 1, "icon": "/icons/config.svg", "title": "Configure & Use Devtools", - "description": "Hardhat, Truffle, and Brownie", + "description": "Hardhat & Truffle", "url": "/docs/developing/deploy_facilities/configure_hardhat" }, { @@ -28,7 +28,7 @@ "id": 3, "icon": "/icons/daps.svg", "title": "Deploy dApps", - "description": "Using Hardhat, Truffle, Remix & Brownie", + "description": "Using Hardhat, Truffle & Remix", "url": "/docs/developing/deploy_facilities/using_remix" }, { diff --git a/static/img/doc-images/about/infographic.svg b/static/img/doc-images/about/infographic.svg index 82c7958e..03204630 100644 --- a/static/img/doc-images/about/infographic.svg +++ b/static/img/doc-images/about/infographic.svg @@ -1,145 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/doc-images/about/infographic_dark.svg b/static/img/doc-images/about/infographic_dark.svg index 16890c30..5682564e 100644 --- a/static/img/doc-images/about/infographic_dark.svg +++ b/static/img/doc-images/about/infographic_dark.svg @@ -1,145 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/doc-images/developing/chainlist/chainlist-raw-2.png b/static/img/doc-images/developing/chainlist/chainlist-raw-2.png deleted file mode 100644 index 8da0bd70..00000000 Binary files a/static/img/doc-images/developing/chainlist/chainlist-raw-2.png and /dev/null differ diff --git a/static/img/doc-images/developing/chainlist/chainlist-raw-3.png b/static/img/doc-images/developing/chainlist/chainlist-raw-3.png new file mode 100644 index 00000000..3e1436ce Binary files /dev/null and b/static/img/doc-images/developing/chainlist/chainlist-raw-3.png differ diff --git a/static/img/doc-images/developing/chainlist/chainlist_raw.png b/static/img/doc-images/developing/chainlist/chainlist_raw.png deleted file mode 100644 index aad90423..00000000 Binary files a/static/img/doc-images/developing/chainlist/chainlist_raw.png and /dev/null differ diff --git a/static/img/doc-images/developing/integrate/protocols/walletconnect/button-clicked.png b/static/img/doc-images/developing/integrate/protocols/walletconnect/button-clicked.png new file mode 100644 index 00000000..a60f1fb9 Binary files /dev/null and b/static/img/doc-images/developing/integrate/protocols/walletconnect/button-clicked.png differ diff --git a/static/img/doc-images/developing/integrate/protocols/walletconnect/math-wallet-connect.jpeg b/static/img/doc-images/developing/integrate/protocols/walletconnect/math-wallet-connect.jpeg new file mode 100644 index 00000000..a0451708 Binary files /dev/null and b/static/img/doc-images/developing/integrate/protocols/walletconnect/math-wallet-connect.jpeg differ diff --git a/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged-options.png b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged-options.png new file mode 100644 index 00000000..7bb2044e Binary files /dev/null and b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged-options.png differ diff --git a/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged.png b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged.png new file mode 100644 index 00000000..fda35f40 Binary files /dev/null and b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-logged.png differ diff --git a/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-qr.png b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-qr.png new file mode 100644 index 00000000..b8701f52 Binary files /dev/null and b/static/img/doc-images/developing/integrate/protocols/walletconnect/wallet-connect-qr.png differ