LLM Notice: This documentation site supports content negotiation for AI agents. Request any page with Accept: text/markdown or Accept: text/plain header to receive Markdown instead of HTML. Alternatively, append ?format=md to any URL. All markdown files are available at /md/ prefix paths. For all content in one file, visit /llms-full.txt
Skip to main content

Using Remix

Remix is an open-source, web-based development environment tailored for EVM smart contract development. It offers developers a comprehensive suite of tools to write, deploy, and test smart contracts in Solidity. For more information, visit Remix.

Add the Flow network to MetaMask​

Add Flow Network

Navigate to the Using EVM page to find the button to add the Flow network information to your metamask.

Fund Your Flow Account​

Navigate to the Flow Testnet Faucet to obtain FLOW tokens necessary to deploy a smart contract.

Deploy a smart contract with Remix​

Deploy smart contract

HelloWorld smart contract​


_25
// SPDX-License-Identifier: MIT
_25
pragma solidity ^0.8.0;
_25
_25
contract 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 the HelloWorld smart contract​

  1. Create a file named HelloWorld.sol.
  2. Select Solidity Compiler and compile HelloWorld.sol.
  3. Select Deploy & Run Transactions.
  4. Make sure to select Injected Provider - Metamask in Environment dropdown.
  5. Deploy the HelloWorld smart contract.

Call the Deployed Smart Contract​

Call Smart Contract

Use Ethers.js to Call the HelloWorld Smart Contract​

  1. Create a new get-greeting.js file under scripts.
  2. Paste in the JavaScript code below.
  3. Click on green play button to run.
  4. Verify the greeting is "Hello World!".

_25
// Import ethers from the ethers.js library
_25
const { ethers } = require('ethers');
_25
_25
// Define the contract ABI
_25
const contractABI = ['function hello() public view returns (string memory)'];
_25
_25
// Define the contract address
_25
const contractAddress = '0x8a120383e6057b1f3aef4fa9b89c2f1b0a695926';
_25
_25
// Connect to the Ethereum network
_25
// This example uses the default provider from ethers.js, which connects to the Ethereum mainnet.
_25
// For a testnet or custom RPC, use ethers.getDefaultProvider('networkName') or new ethers.providers.JsonRpcProvider(url)
_25
const provider = new ethers.providers.Web3Provider(window?.ethereum);
_25
_25
// Create a new contract instance
_25
const contract = new ethers.Contract(contractAddress, contractABI, provider);
_25
_25
// Call the hello function of the contract
_25
async function getGreeting() {
_25
const greeting = await contract.hello();
_25
console.log(greeting);
_25
}
_25
_25
// Execute the function
_25
getGreeting();

Follow the steps below to change the greeting and retrieve the new greeting.

Updating the deployed smart contract​

Update smart contract

  1. Select the HelloWorld.sol file.
  2. Select the Deploy and Run Transaction page.
  3. Make sure to select Injected Provider - Metamask in Environment dropdown.
  4. Type a new greeting in the text input next to changeGreeting.
  5. Click changeGreeting.
  6. Sign the Metamask transaction.
  7. To verify the greeting changed, re-run the get-greeting.js script above.