Using Remix
Remix is an open-source, web-based development environment tailored for EVM smart contract development. It provides developers with a comprehensive suite of tools to write, deploy, and test smart contracts in Solidity. More Information Remix
Add Flow EVM Network to metamask​
Navigate to Using EVM page to find the convenient button to add Flow EVM network information to your metamask.
Fund your Flow EVM account​
Navigate to the Flow Previewnet Faucet to get Flow in order to deploy a smart contract
Deploying a Smart Contract using Remix​
HelloWorld Smart Contract​
_25// SPDX-License-Identifier: MIT_25pragma solidity ^0.8.0;_25_25contract HelloWorld {_25 // Declare a public field of type string._25 string public greeting;_25_25 // Constructor to initialize the greeting._25 // In Solidity, the constructor is defined with the "constructor" keyword._25 constructor() {_25 greeting = "Hello, World!";_25 }_25_25 // Public function to change the greeting._25 // The "public" keyword makes the function accessible from outside the contract._25 function changeGreeting(string memory newGreeting) public {_25 greeting = newGreeting;_25 }_25_25 // Public function that returns the greeting._25 // In Solidity, explicit return types are declared._25 function hello() public view returns (string memory) {_25 return greeting;_25 }_25}
Steps to deploy HelloWorld smart contract.​
Using Remix:
- Create a file named HelloWorld.sol
- Select Solidity Compiler and compile HelloWorld.sol
- Select Deploy & Run Transactions
- Make sure to select
Injected Provider - Metamask
in Environment dropdown - Deploy the HelloWorld smart contract
Calling deployed Smart Contract using Remix​
Using Ethersjs to call HelloWorld smart contract​
_28// Import ethers from the ethers.js library_28const { ethers } = require('ethers');_28_28// Define the contract ABI_28const contractABI = [_28 "function hello() public view returns (string memory)"_28];_28_28// Define the contract address_28const contractAddress = "0x8a120383e6057b1f3aef4fa9b89c2f1b0a695926";_28_28// Connect to the Ethereum network_28// This example uses the default provider from ethers.js, which connects to the Ethereum mainnet._28// For a testnet or custom RPC, use ethers.getDefaultProvider('networkName') or new ethers.providers.JsonRpcProvider(url)_28 const provider = new ethers.providers.Web3Provider(window?.ethereum);_28 _28_28// Create a new contract instance_28const contract = new ethers.Contract(contractAddress, contractABI, provider);_28_28// Call the hello function of the contract_28async function getGreeting() {_28 const greeting = await contract.hello();_28 console.log(greeting);_28}_28_28// Execute the function_28getGreeting();
- Create a new file under
scripts
- Paste in above JavaScript code
- Click on green play button
- Verify the greeting is "Hello World!"
Use the steps below to change the greeting and retrieve the greeting again.
Updating deployed Smart Contract​
Steps to update the HelloWorld smart contract greeting
- Select the HelloWorld.sol file
- Select the
Deploy and Run Transaction
page - Make sure to select
Injected Provider - Metamask
in Environment dropdown - Type a new greeting in the text input next to
changeGreeting
orange button - Click on the
changeGreeting
orange button - Sign the Metamask transaction
- Verify the greeting has changed by running the JavaScript above.