Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slippage as 0.25 #303

Merged
merged 34 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
2cd1dd3
fix hardhat & add foundry examples
mnedelchev-vn Nov 14, 2023
2765014
aligns tutorial with our style, fixes verboseness, proofs, and extend…
m4sterbunny Nov 16, 2023
8a85d90
aligns tutorial with our style, fixes verboseness, proofs
m4sterbunny Nov 16, 2023
e796a34
adds Foundry to shortcut lists
m4sterbunny Nov 16, 2023
1b3e33c
fixes conflict
m4sterbunny Nov 16, 2023
0261ea2
applies same single sourcing as PR 108
m4sterbunny Nov 16, 2023
766c645
fixes conflicts
m4sterbunny Nov 21, 2023
55bd0e2
updates link to image
m4sterbunny Nov 21, 2023
0667ebb
Merge branch 'main' into fix/using-hardhat-foundry
m4sterbunny Nov 28, 2023
4ade613
spurious edit to fix broken link that is not broken
m4sterbunny Nov 28, 2023
7d88708
fix to spurious edit
m4sterbunny Nov 28, 2023
ca7c5fe
improves QA in Grammarly and adds site info
m4sterbunny Nov 29, 2023
14030ef
improves instruction to authors
m4sterbunny Nov 29, 2023
213477f
fix Deploy with Hardhat title
mnedelchev-vn Nov 29, 2023
902494f
fix using_hardhat
mnedelchev-vn Nov 29, 2023
5fd17d1
add more small fixes
mnedelchev-vn Nov 29, 2023
33a3aed
clarification how to be documentatians
m4sterbunny Nov 30, 2023
2801aea
add PRX_GAS_PRICE_SLIPPAGE parameter to gas price formula
mnedelchev-vn Dec 2, 2023
8278497
possible fixes for calcs -- to be verified
m4sterbunny Dec 3, 2023
44bc5e7
makes examples truthful
m4sterbunny Dec 4, 2023
8e0b2be
Merge pull request #116 from neonlabsorg/update/fees-and-gas-page
m4sterbunny Dec 4, 2023
f3cf5c4
reverts link in single sourced item for global use
m4sterbunny Dec 4, 2023
3f9cf82
Merge pull request #117 from neonlabsorg/update/fees-and-gas-page
m4sterbunny Dec 4, 2023
078082e
Merge branch 'main' into fixes#2
m4sterbunny Dec 5, 2023
54f89e9
Merge branch 'main' into fix/using-hardhat-foundry
m4sterbunny Dec 5, 2023
e18dfa3
fix for conflict in PR 110
m4sterbunny Dec 5, 2023
8ea833b
fix remote solana docs
gigimon Dec 5, 2023
e2ac04e
fixes as per review on PR
m4sterbunny Dec 5, 2023
f061663
Merge pull request #110 from neonlabsorg/fix/using-hardhat-foundry
m4sterbunny Dec 5, 2023
1544571
Merge pull request #118 from neonlabsorg/fix-remote-solana
m4sterbunny Dec 5, 2023
505eaab
Merge branch 'main' into fixes#2
m4sterbunny Dec 5, 2023
de75feb
Merge pull request #119 from neonlabsorg/fixes#2
m4sterbunny Dec 5, 2023
ed6522d
a forgotten edit
m4sterbunny Dec 5, 2023
8d18cde
Merge pull request #120 from neonlabsorg/fix/using-hardhat-foundry
m4sterbunny Dec 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/styles/Grammarly.csv
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ StrakEx,StarkEx,"typo fix"
"the Neon,The Neon","Neon","In most instances, 'The Neon EVM' can be stated as Neon EVM"
"the Mainnet,The Mainnet","Mainnet","In most instances, The Mainnet can be stated as Mainnet"
"the Devnet,The Devnet","Devnet","'The Devnet' should most often simply be stated as Devnet"
"toke,Toke,tokes,Tokes","token","Do you really mean to smoke/smokes?!"
"token account,Token account,token Account,token-account",Token Account,"Existing style, maintain consistency"
"unbeatable","competitive","Warning -- this is a legally sensitive term. However, context is everything: it may be that the original text is more appropriate."
"Undetectable","Discreet","Warning -- this is a legally sensitive term. However, context is everything: it may be that the original text is more appropriate."
Expand Down
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@

### Tabs boilerplate

> Warning Heading links do not work *within* tabs >> Only once the correct tab is selected would a link function making them useless for cross-page linking (there is probably a workaround/plugin todo).

Check warning on line 89 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Contractions] Feel free to use 'don't' instead of 'do not'. Raw Output: {"message": "[Google-adapted.Contractions] Feel free to use 'don't' instead of 'do not'.", "location": {"path": "README.md", "range": {"start": {"line": 89, "column": 25}}}, "severity": "INFO"}

Check warning on line 89 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Passive] In general, use active voice instead of passive voice ('is selected'). Raw Output: {"message": "[Google-adapted.Passive] In general, use active voice instead of passive voice ('is selected').", "location": {"path": "README.md", "range": {"start": {"line": 89, "column": 80}}}, "severity": "INFO"}

Check failure on line 89 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'todo'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'todo'?", "location": {"path": "README.md", "range": {"start": {"line": 89, "column": 196}}}, "severity": "ERROR"}

Check warning on line 89 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [write-good-adapted.todo] 'todo' left in text Raw Output: {"message": "[write-good-adapted.todo] 'todo' left in text", "location": {"path": "README.md", "range": {"start": {"line": 89, "column": 196}}}, "severity": "WARNING"}

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Expand All @@ -107,11 +109,50 @@

with authentication via [GitHub](https://github.com/anonNeon)

## Walkthrough boilerplate

Check failure on line 112 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'Walkthrough'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'Walkthrough'?", "location": {"path": "README.md", "range": {"start": {"line": 112, "column": 4}}}, "severity": "ERROR"}

When creating user walkthroughs, it is important to think about what structure and heirachy supports end users. The style applied in this dev portal is:

Check failure on line 114 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'walkthroughs'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'walkthroughs'?", "location": {"path": "README.md", "range": {"start": {"line": 114, "column": 20}}}, "severity": "ERROR"}

Check warning on line 114 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Contractions] Feel free to use 'it's' instead of 'it is'. Raw Output: {"message": "[Google-adapted.Contractions] Feel free to use 'it's' instead of 'it is'.", "location": {"path": "README.md", "range": {"start": {"line": 114, "column": 34}}}, "severity": "INFO"}

Check failure on line 114 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'heirachy'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'heirachy'?", "location": {"path": "README.md", "range": {"start": {"line": 114, "column": 84}}}, "severity": "ERROR"}

Check failure on line 114 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'dev'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'dev'?", "location": {"path": "README.md", "range": {"start": {"line": 114, "column": 139}}}, "severity": "ERROR"}

[H2] TL;DR
Tell the user in 3 bullet points or less what they need to know to either
- avoid using the tutorial entirely
- decide whether they will use it

Check warning on line 119 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Will] Avoid using 'will'. Stick to the present tense. Raw Output: {"message": "[Google-adapted.Will] Avoid using 'will'. Stick to the present tense.", "location": {"path": "README.md", "range": {"start": {"line": 119, "column": 23}}}, "severity": "WARNING"}
{todo: in the future, we want to add a time required for the walkthrough here}

Check warning on line 120 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [write-good-adapted.todo] 'todo' left in text Raw Output: {"message": "[write-good-adapted.todo] 'todo' left in text", "location": {"path": "README.md", "range": {"start": {"line": 120, "column": 2}}}, "severity": "WARNING"}

Check failure on line 120 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'walkthrough'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'walkthrough'?", "location": {"path": "README.md", "range": {"start": {"line": 120, "column": 62}}}, "severity": "ERROR"}

[H2] Introduction
The assumption is that less than 30% of users need an intro >> this item supports the bottom tail

[H2] Prerequisites
What does the user need to have or know to achieve success? NB stay sane else the list could become long!

Check failure on line 126 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Exclamation] Don't use exclamation points in text. Raw Output: {"message": "[Google-adapted.Exclamation] Don't use exclamation points in text.", "location": {"path": "README.md", "range": {"start": {"line": 126, "column": 104}}}, "severity": "ERROR"}

[H2]How to do this thing
The first heading gathers the entire tutorial into one structure

[H3] Step 1: Do this first thing

Check warning on line 131 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Colons] ': D' should be in lowercase. Raw Output: {"message": "[Google-adapted.Colons] ': D' should be in lowercase.", "location": {"path": "README.md", "range": {"start": {"line": 131, "column": 12}}}, "severity": "WARNING"}
Break the tutorial down into logical chunks, e.g. 1. go clone and install a repo 2. configure a file 3. Run the configured program

Check failure on line 132 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'repo'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'repo'?", "location": {"path": "README.md", "range": {"start": {"line": 132, "column": 77}}}, "severity": "ERROR"}

Check warning on line 132 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.max-sentence-length] This sentence has more than 40 words in it. Try making it shorter. Raw Output: {"message": "[Google-adapted.max-sentence-length] This sentence has more than 40 words in it. Try making it shorter.", "location": {"path": "README.md", "range": {"start": {"line": 132, "column": 105}}}, "severity": "WARNING"}
The H3 is the final item that will be shown in the TOC (table of contents) on the RHS of the page, this allows the user to scan the TOC to gain an impression of what they are getting themselves into and to skip ahead according to their setup/knowledge level

Check warning on line 133 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Will] Avoid using 'will'. Stick to the present tense. Raw Output: {"message": "[Google-adapted.Will] Avoid using 'will'. Stick to the present tense.", "location": {"path": "README.md", "range": {"start": {"line": 133, "column": 31}}}, "severity": "WARNING"}

Check warning on line 133 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Passive] In general, use active voice instead of passive voice ('be shown'). Raw Output: {"message": "[Google-adapted.Passive] In general, use active voice instead of passive voice ('be shown').", "location": {"path": "README.md", "range": {"start": {"line": 133, "column": 36}}}, "severity": "INFO"}

## Information pages boilerplate
[H2] TL;DR
Tell the user in 3 bullet points or less what they need to know to either
- avoid reading the page entirely
- decide whether they want to read it

[H2] Introduction
Tell the users what this page is about

[H2]/[H3] Content -- nest the content into H2s and H3s for TOC presence -- H4 and H5 can be applied, but remember these are nested within the page and do not appear in the TOC. The user should be able to get an idea of what the page is about *without* reading the full intro -- just by using the TL;DR and/or TOC.

Check failure on line 144 in README.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google-adapted.Units] Put a nonbreaking space between the number and the unit in '2s'. Raw Output: {"message": "[Google-adapted.Units] Put a nonbreaking space between the number and the unit in '2s'.", "location": {"path": "README.md", "range": {"start": {"line": 144, "column": 45}}}, "severity": "ERROR"}

Example page: docs/evm_compatibility/overview

## Troubleshooting

You pull main and can no longer build. Don't fret, someone probably changed a dependency do:
`npm install`
and then build or serve and see if that fixes it

## End user support

The current search is provided by algolia.com
We wish to expand this functionality by implementing Mava AI (ticket with FE team)

4 changes: 2 additions & 2 deletions docs/about/why_neon.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Neon EVM enables Solidity- and Vyper-based dApps to tap into Solana’s network

From a developer’s perspective, this means creating Solana-compatible contracts using tools you’re familiar with from the Ethereum Ecosystem.

Neon EVM makes the key Ethereum dApp tools compatible with Solana, including Vyper, Solidity, [MetaMask](/docs/wallet/metamask_setup), [Hardhat](/docs/developing/deploy_facilities/using_hardhat), [Remix](/docs/developing/deploy_facilities/using_remix), (and [Truffle](/docs/developing/deploy_facilities/using_truffle)). The solution allows any Ethereum application to run on Solana with minimal reconfiguration, this includes Uniswap, SushiSwap, 0x, and MakerDAO.
Neon EVM makes the key Ethereum dApp tools compatible with Solana, including Vyper, Solidity, [MetaMask](/docs/wallet/metamask_setup), [Foundry](/docs/developing/deploy_facilities/using_foundry), [Hardhat](/docs/developing/deploy_facilities/using_hardhat), [Remix](/docs/developing/deploy_facilities/using_remix), (and [Truffle](/docs/developing/deploy_facilities/using_truffle)). The solution allows any Ethereum application to run on Solana with minimal reconfiguration, this includes Uniswap, SushiSwap, 0x, and MakerDAO.


### Who uses Neon EVM?
Expand All @@ -40,7 +40,7 @@ Neon EVM offers a better solution: by bringing Solana's sophisticated and low-co
With Neon EVM, developers retain:

* Familiar languages: Solidity, Vyper
* Well-known Ethereum tools: MetaMask, Hardhat, Remix, etc.
* Well-known Ethereum tools: MetaMask, Foundry, Hardhat, Remix, etc.
* Ethereum RPC API compatibility
* Ethereum Accounts, Signatures, Token standards (ERC-20 and ERC-721)

Expand Down
25 changes: 17 additions & 8 deletions docs/developing/connect_rpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ proofedDate: 20231101
iterationBy: na
includedInSite: true
approvedBy: na
comment:
comment: todo Find out from Yury whether we can have a NeonLabs youtube domain to support the video material that has been created to complement this page
---

import chainlist_raw from '@site/static/img/doc-images/developing/chainlist/chainlist-raw-3.png';
import chainlist_gotcha from '@site/static/img/doc-images/developing/chainlist/chainlist4.png';
import chainlist from '@site/static/img/doc-images/developing/chainlist/chainlist-raw-3.png';

## TL;DR

Expand Down Expand Up @@ -41,7 +42,7 @@ One Proxy may be available on different networks (i.e. Devnet and Mainnet). The

To view the available RPC endpoints, expand the card details of the network of your choice.

> <img src={chainlist_raw} width="450" />
> <img src={chainlist} width="450" />

Notice that if several Proxy Operators offer public RPC endpoints, you have a choice over who to use.

Expand All @@ -53,13 +54,21 @@ The preceding steps demonstrate how to connect to a Solana cluster via Chainlist

## Connect dev tools to Neon EVM

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)
To connect to a Proxy check out the following resources:
* [Using Foundry](developing/deploy_facilities/using_foundry.md)
* [Using Hardhat](developing/deploy_facilities/using_hardhat.mdx)
* [Using Remix](developing/deploy_facilities/using_remix.md)
* [Using Truffle](developing/deploy_facilities/using_truffle.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.

## Gotchas

Should the main "Connect Wallet" button not function, use the dropdown and use the "Connect Wallet" for a specified RPC server address.

> <img src={chainlist_gotcha} width="450" />

## What next?

If you wish to transact via your RPC, then check out the [supported RPC API methods](/docs/evm_compatibility/json_rpc_api_methods).
If you wish to transact via your RPC, then checkout the [supported RPC API methods](/docs/evm_compatibility/json_rpc_api_methods).

4 changes: 2 additions & 2 deletions docs/developing/deploy_facilities/configure_foundry.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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
comment: Trying to return link that was killing the build todo test
---

Foundry is a blazing fast, portable,modular toolkit for Ethereum application development written in Rust.
Expand Down Expand Up @@ -34,4 +34,4 @@ The parameters for `forge create` command include:
* `--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))_



## What next? See the [tutorial on how to use Foundry](/docs/developing/deploy_facilities/using_foundry) to deploy to Neon EVM.
2 changes: 1 addition & 1 deletion docs/developing/deploy_facilities/configure_hardhat.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The Hardhat framework isn't described here; find that in the [Hardhat documentat

<ConfigHardHat/>

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:
The following config file provides a full example of the `hardhat.config.js` for connecting Hardhat to a Devnet Proxy using the one-way library on Node.js:

### hardhat.config.js

Expand Down
153 changes: 153 additions & 0 deletions docs/developing/deploy_facilities/using_foundry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
title: Deploy with Foundry
proofedDate: 20231116
iterationBy: na
includedInSite: true
approvedBy: na
comment:
---

import mm_p_key from '@site/static/img/doc-images/developing/deploy_facilities/foundry-metamask.png';

This tutorial walks through deploying a contract describing an ERC-20 token to Neon Devnet.

## Introduction

This tutorial is based on an [example in GitHub](https://github.com/neonlabsorg/neon-tutorials/tree/main/foundry).

:::info
This page is a quickstart based on a specific example program. For more details on installing Foundry, refer to the *[Foundry documentation](https://book.getfoundry.sh/getting-started/installation)*.
:::

## Prerequisites

- An EVM-compatible wallet, such as MetaMask [connected to Devnet](/docs/developing/connect_rpc#connect-via-chainlist)
- A balance in [Devnet NEON](https://neonfaucet.org/)

### Step 1: Installation

1.1 Clone the example Foundry project from the remote repository and navigate to it:

```sh
git clone https://github.com/neonlabsorg/neon-tutorials
cd neon-tutorials/foundry
```

1.2 Install Foundryup with:
```sh
curl -L https://foundry.paradigm.xyz | bash
foundryup
```

:::info
`foundryup` installs the latest _(nightly)_ precompiled binaries: forge, cast, anvil, and chisel.
:::


1.3 Install the required libraries:
```sh
forge install foundry-rs/forge-std --no-commit
forge install openzeppelin/openzeppelin-contracts --no-commit
```


### Step 2: Set up an environment file

:::info
This step requires an EVM-compatible wallet such as MetaMask, connected to Neon Devnet, with a balance in Devnet NEON available from [NeonFaucet](https://neonfaucet.org/).

The following tutorials assist you to meet these prerequisites:
- Learn how to [install a MetaMask wallet and connect it to Devnet](/docs/wallet/metamask_setup)
> Or [connect an existing wallet to Devnet](/docs/developing/connect_rpc#connect-via-chainlist)
:::

<!-- I suspect there is no need to create new wallet as per first draft of page >> existing wallet probably fine -- test on run through -->

2.1 Obtain the private key for your wallet account.

> To obtain the private key from MetaMask, from the hamburger menu, click **Account Details** > **Show Private Key**, enter your password, and click **Confirm** for access to the private key for that account.
> <img src={mm_p_key} width="250" />

2.2 Create a .env file and add these lines:

```
RPC_URL_DEVNET=https://devnet.neonevm.org
CHAIN_ID_DEVNET=245022926
RPC_URL_MAINNET=https://neon-proxy-mainnet.solana.p2p.org
CHAIN_ID_MAINNET=245022934
PRIVATE_KEY=<YOUR_PRIVATE_KEY>
VERIFIER_URL_BLOCKSCOUT=https://neon-devnet.blockscout.com/api
```
:::important
Replace <YOUR_PRIVATE_KEY> with your data.
:::

2.3 Run:
```
source .env
```


### Step 3: Compile contracts

The contracts are located in the project's `src/` directory. Before these contracts can be run, they must first be compiled.

3.1 To compile the project's contracts, run the following command:
```sh
forge build
```

After running this step, you should see output similar to the following:
```
[⠢] Compiling...
[⠒] Compiling 24 files with 0.8.21
[⠃] Solc 0.8.21 finished in 2.48s
Compiler run successful!
```

3.2 (Optional) test the smart contracts with:
```sh
forge test
```

### Step 4: Deploy Contracts

4. To deploy the project's contracts, run:
```sh
forge create --rpc-url $RPC_URL_DEVNET --private-key $PRIVATE_KEY src/TestERC20/TestERC20.sol:TestERC20 --constructor-args "Test ERC20 Token" "TERC20" --legacy
```

On running this step you should get console output similar to:
```
[⠰] Compiling...
No files changed, compilation skipped
Deployer: 0x4455E84Eaa56a01676365D4f86348B311969a4f4
Deployed to: 0x5537599aa2F97Dd60a66342522a465A7f2e40Ff9
Transaction hash: 0x6de9dab8a526cbac33008056d185b93dff725605efb791bf116b6bece4f0c486
```

### Step 5: Contract verification

5.1 Verify the deployment of our smart contract on the explorer [Neon Blockscout](https://neon-devnet.blockscout.com) using following command:
```sh
forge verify-contract --chain-id $CHAIN_ID_DEVNET <contract_address> src/TestERC20/TestERC20.sol:TestERC20 --verifier-url $VERIFIER_URL_BLOCKSCOUT --verifier blockscout
```

:::important
Replace `<contract_address>` with your smart contract address.
:::

After successfully running this step you should get console output similar to:
```
Start verifying contract `0x5537599aa2F97Dd60a66342522a465A7f2e40Ff9` deployed on 245022926
Submitting verification for [src/TestERC20/TestERC20.sol:TestERC20] "0x5537599aa2F97Dd60a66342522a465A7f2e40Ff9".
Submitted contract for verification:
Response: `OK`
GUID: `5537599aa2f97dd60a66342522a465a7f2e40ff9654118b3`
URL:
https://neon-devnet.blockscout.com/api?/address/0x5537599aa2f97dd60a66342522a465a7f2e40ff9
```

5.2 Copy/paste this link in your browser, remembering to replace `contract_address` with your freshly deployed contract address:

```https://neon-devnet.blockscout.com/address/<contract_address>```
Loading
Loading