Getting Started with Foundry for Beginners in 2024

Getting Started with Foundry for Beginners in 2024

As a blockchain developer, leveling up from Remix to Foundry marks a right of passage, showing your dedication to the craft. Foundry provides a local Ethereum development environment that closely matches the mainnet. This makes it easy to test and deploy Solidity contracts like a pro.

The key benefits Foundry offers over Remix include:

  • Local blockchain emulators like Ganache that behave like the real mainnet

  • Automated testing frameworks

  • Scriptable deployments

  • Built-in security analysis

  • Integration with VSCode

Mastering Foundry will boost your development skills and give you an impressive environment to show potential employers or clients. Now, let’s get started!

Installing Foundry’s Prerequisites

The first step is preparing your system by installing:

  • VSCode - A code editor to write your solidity contracts

  • Foundry - For local blockchain emulation and deployment

  • Ganache - Local Blockchain emulator

After Installing your Vscode, look for the terminal button above and click on it to start a new terminal; once the terminal is set, run the code to set up download and install Foundry.

// Install Foundry 
curl -L https://foundry.paradigm.xyz | bash

Sometimes, the Foundry install script times out. If you face these issues, try connecting through a VPN service first.

It timed out the first time during installation for me, so I installed ProtonVPN, and the installation became seamless afterward.

With the core tools installed, launch a new terminal and enter:

foundryup

This updates Foundry to the latest version. Crosscheck to see if the following are installed.

anvil --version 
forge --version 
cast --version

Once installed, let’s create a folder and then navigate to that folder using our terminal, but if you are more comfortable using the GUI, go ahead.

Creating Your First Foundry Project

To initialize a new Foundry project, make a project directory and use Forge to set it up.

cd Desktop
mkdir my_foundry_project
cd my_foundry_project  
forge init

This installs dependencies like the Solidity compiler and creates boilerplate files such as script, src, test to start coding against.

You can delete the template counter.sol file you find inside the above files, we will be creating our own.

Connecting a Local Blockchain

Ganache and Anvil are two good options to connect a local blockchain for development.

Ganache provides an auto-generated RPC URL and accounts to mimic the mainnet. To integrate Ganache:

To set up Ganache, click on the link and download the setup, run it and you should have something like this.

Click on the quick start to open an emulated blockchain.

Let's do a little test and ganache to test our smart contract. if you do not have any smart contract to work with, click the link and copy simplestorage.sol. Make sure to paste the file in the src/ folder.

// I'm a comment!
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

contract SimpleStorage {
    uint256 myFavoriteNumber;

    struct Person {
        uint256 favoriteNumber;
        string name;
    }
    // uint256[] public anArray;
    Person[] public listOfPeople;

    mapping(string => uint256) public nameToFavoriteNumber;

    function store(uint256 _favoriteNumber) public virtual {
        myFavoriteNumber = _favoriteNumber;
    }

    function retrieve() public view returns (uint256) {
        return myFavoriteNumber;
    }

    function addPerson(string memory _name, uint256 _favoriteNumber) public {
        listOfPeople.push(Person(_favoriteNumber, _name));
        nameToFavoriteNumber[_name] = _favoriteNumber;
    }
}

On the terminal, run forge compile to compile your code, and immediately, you will see a new folder appear called out, this folder contains the byte code for the transactions we just sent.

To use the Ganache, we must set up a network or an RPC to simulate the transaction, and we can use Metamask; if you do not have Metatmask already, download and set up an account here with this guide.

Go to settings, and then network and populate with the following

Network name: Scofield_LocalHost

New RPC URL: HTTP://127.0.0.1:7545

Chain ID: 1337

Currency symbol: ETH

Click on save, and then to add the faucet on Metamask, import one of the private keys from ganache to metamask, and you would have 100ETH

Next, run forge create SimpleStorage --rpc-url http://127.0.0.1:7545 --interactive. This would prompt you to input your private key, which we would get from the Ganache page.

Click on the show key to open a private key and copy it. Please do not do this with a live account but since we are working with a test account, we are ok.

Paste the private key, and it will not show anything when you do but click on enter.

Our contract has been deployed to the ganache simulated blockchain, we can see the deployer, where it was deployed to, and the transaction hash.

In the next series, I will show how to deploy using Anvil and navigate our local blockchain without using Ganache.

If you find this article thrilling, discover extra thrilling posts like this on Learnhub Blog; we write a lot of tech-related topics from Cloud computing to Frontend Dev, Cybersecurity, AI, and Blockchain. Take a look at How to Build Offline Web Applications.