Follow @Dimensionless Developments and head to our website www.dimensionlessdevelopments.com
We will be building our very own ERC20 token in Solidity programming language and then deploy it on Avalanche blockchain. This project is important as it equips you with necessary knowledge to begin your exciting journey of coding in Avalanche using Solidity. Let’s look at how you will be interacting with the token by the end of the course.
Requirements of this project:
-
Install git You'll know you did it right if you can run git --version and you see a response like git version x.x.x
-
Install foundry You'll know you did it right if you can run forge --version and you see a response like forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)
-
Alternatively you can simply use the online remix IDE and build on there using this code through to deployment
-git clone my repositry cd Avalanche-Token forge install forge build Optional Gitpod
-If you can't or don't want to run and install locally, you can work with this repo in Gitpod. If you do this, you can skip the clone this repo part.
-Open in Gitpod
Usage OpenZeppelin OpenZeppelin Contracts Docs
OpenZeppelin GitHub Repo
Installing OpenZeppelin Contracts Package forge install OpenZeppelin/openzeppelin-contracts --no-commit
Start a local node make anvil Deploy This will default to your local node. You need to have it running in another terminal in order for it to deploy.
make deploy Deploy - Other Network See below
-There are four tests you could for your project:
Unit Integration Forked Staging
forge test or
forge test --fork-url $FUJI_RPC_URL Test Coverage forge coverage
-Deployment to a testnet or mainnet Setup environment variables You'll want to set your FUJI_RPC_URL and PRIVATE_KEY as environment variables. You can add them to a .env file, similar to what you see in .env.example.
PRIVATE_KEY: The private key of your account (like from metamask). NOTE: FOR DEVELOPMENT, PLEASE USE A KEY THAT DOESN'T HAVE ANY REAL FUNDS ASSOCIATED WITH IT. You can learn how to export it here. FUJI_RPC_URL: This is url of the sepolia testnet node you're working with. You can get setup with one for free from Alchemy Optionally, add your ETHERSCAN_API_KEY if you want to verify your contract on Etherscan.
Get testnet AVAX: -Head over to https://faucet.avax.network/, paste your copied address to the Address field and click on. You should see the AVAX show up in your metamask.
Deploy: To deploy on the fuji testnet use "make deploy-fuji" or make deploy ARGS="--network fuji" Scripts After deploy to a testnet or local net, you can run the scripts.
Using cast deployed locally example:
cast send <ERC20_CONTRACT_ADDRESS> "transfer()" --value 0.1ether --private-key <PRIVATE_KEY> --rpc-url $FUJI_RPC_URL or, to create a ChainlinkVRF Subscription:
make createSubscription ARGS="--network fuji" Estimate gas You can estimate how much gas things cost by running:
forge snapshot And you'll see and output file called .gas-snapshot
Formatting To run code formatting:
forge fmt Thank you!