Avalanche subnets tutorial series: Avalanche smart contracts
This is the fourth article in the Avalanche subnet tutorial series. Check out the other articles here:
- What is a subnet?
- Running a local Avalanche node on Fuji testnet.
- Creating a subnet, then create a blockchain on it.
- Deploying a smart contract. <– You are here.
- Indexing subnet with The Graph.
This project has come a long way. At this point, a local node has been set up; then it is staked and is a validator node for the Fuji testnet; then a subnet was created, and the node was assigned to validate the subnet; then a brand new blockchain was established on it.
Just a quick recap:
- The name of the blockchain is chainstacksubnet;
- Its ID is 2t27BUokp5Pj8zNQhSNVgqYHChSqrd4k8ewSBrEMXoixxjsXQj. (The ID is unique for every blockchain and subnet).
- It is a Ethereum Virtual Machine (EVM) blockchain. Based on the genesis block information, 333.33 blockchain token was pre-stored in the address 8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC.
So, the first objective of this tutorial is to transfer some of the tokens out.
How to access your subnet with MetaMask?
Like every other EVM blockchains, subnet EVM too supports the (arguably) most widely used tool-MetaMask. This section guides the reader to configure MetaMask to access a subnet.
Firstly, open MetaMask, click Add Network:
Fill in the following information:
- Network Name: *any name is ok
- New RPC URL:
http://127.0.0.1:9650/ext/bc/*fill in your blockchain id/rpcExample:
- Chain ID: 13213
- Currency Symbol: *any symbol is ok
Now MetaMask should successfully link to the blockchain. It now can be used to access the initial address. The initial address is defined during creation of genesis block.
Its public address is 0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC.
Its private key is
This private key is publicly shared, it is also given in the official tutorial. Do not use this account on mainnet or testnet.
Now import the private key into MetaMask.
Click the fox head to open MetaMask. Click on the top right icon, click Import Account:
Key in the private key and click Import:
The account should be added into MetaMask. A fresh account should contain 333.3333 tokens.
Now funds can be sent to another account by clicking on Send button.
Input an address or select Transfer between my accounts. Complete the steps to send 30 tokens to another account. The genesis specified the minimum base fee as 13000000000 which is equivalent to 0.0000000144 native token.
Once the transaction is finalised, it is shown in the Activity section. The blockchain is successfully deployed and compatible with MetaMask.
Sending Avalanche smart contracts with Remix
Next step is deploying a smart contract on the blockchain. Remix is used to do that.
Remix is a popular IDE for creating/deploying smart contracts on Ethereum based blockchains. It can be used with Avalanche subnet EVM blockchain too.
First, make sure the previous section is finished successfully and MetaMask is connected.
Log in to Remix. In the left-most pane, click on file explorer logo.
Right-click on contracts folder, create a new file.
Name the file
Gravatar.sol (any name is ok).
Go to Etherscan.io, search for 0x2E645469f354BB4F5c8a05B3b30A929361cf77eC. This is the contract for Gravatar Registry, it will be moved to our subnet.
Scroll down to the lower half of the page, click the Contract tab, copy its source code.
Go back to Remix, paste it into
Gravatar.sol and go to the solidity compiler in the left pane.
Gravatar.sol. When it is finished, you will see GravatarRegistry in the contract dropdown menu. It means the contract is successfully compiled. Next step is to deploy it to the subnet blockchain.
Click Deploy tab in the left pane.
Set environment to Injected Web3 to use MetaMask.
Select an account with sufficient funds.
Select the contract
Click confirm on MetaMask pop-up.
It takes a while to finish the transaction. After the smart contract is successfully deployed, it can be tested in the Remix IDE.
In the Deploy tab, a new section shows up now for Deployed Contracts. The methods from the
GravatarRegistry contract are displayed there. It means the contract is successfully deployed. Feel free to play around with all the methods.
Click on createGravatar, enter a
imageURL, click transact.
Finish this step in MetaMask by clicking on the Confirm button.
The transaction shows up in the activity section on MetaMask too:
Use Remix to test the
getGravatar function with the owner’s address, it returns the image URL.
Now the smart contract is successfully deployed on the subnet.
This is the end of this article. In this article we deployed a smart contract on our blockchain using Remix and MetaMask. Hoping it is useful.
To clarify any question, please feel free to send your message in Chainstack’s discord channel.
- Discover how you can save thousands in infra costs every month with our unbeatable pricing on the most complete Web3 development platform.
- Input your workload and see how affordable Chainstack is compared to other RPC providers.
- Connect to Ethereum, Polygon, BNB Smart Chain, Base, Avalanche, Arbitrum, zkSync Era, Polygon zkEVM, Optimism, Oasis Sapphire, NEAR, Aurora, Solana, Scroll, Aptos, Gnosis Chain, Cronos, Filecoin, Fantom, StarkNet, Harmony and Tezos mainnet or testnets through an interface designed to help you get the job done.
- To learn more about Chainstack, visit our Developer Portal or join our Discord server and Telegram group.
- Are you in need of testnet tokens? Request some from our faucets. Multi-chain faucet, Sepolia faucet, Goerli faucet, Holesky faucet, BNB faucet, zkSync faucet, Scroll faucet.
Have you already explored what you can achieve with Chainstack? Get started for free today.