Compile with Foundry
Prerequisites
Ensure that you have Foundry installed, by running the following command:
forge --version
Note that the version used in this tutorial was 1.2.3-stable
. Be sure to use this version or later when following along.
If you do not have foundry yet, run the following command to install it:
curl -L https://foundry.paradigm.xyz | bash
You will need a wallet, and an account that has been funded with some Testnet INJ.
After creating your account, be sure to copy your private key somewhere accessible, as you will need it to complete this tutorial.
Set up a new Foundry project
Use git to clone the demo repo, which already has the project completely set up for you.
git clone https://github.com/injective-dev/foundry-inj
cd foundry-inj
Install the forge-std
library, which provides utility functions used in this project.
forge install foundry-rs/forge-std
Orientation
Open the repo in your code editor/ IDE, and take a look at the directory structure.
foundry-inj/
src/
Counter.sol --> smart contract Solidity code
test/
Counter.t.sol --> test cases
foundry.toml --> configuration
The foundry.toml
file is already pre-configured to connect to the Injective EVM Testnet. All you need to do before proceeding is to provide it with a private key of your Injective Testnet account.
Enter the following command to import a private key, and save it against an account named injTest
:
cast wallet import injTest --interactive
This will prompt you for the private key, and also a password that you need to enter each time you wish to use this account. Use the private key of the account which you have just created and funded earlier (e.g. via the Injective Testnet faucet). Note that when you type or paste text for the private key and password, nothing is shown in the terminal. The output should look similar to this:
Enter private key:
Enter password:
`injTest` keystore was saved successfully. Address: 0x58f936cb685bd6a7dc9a21fa83e8aaaf8edd5724
Edit the smart contract
The smart contract that is included in this demo is very basic. It:
Stores one
value
which is a number.Exposes a
value()
query method.Exposes an
increment(num)
transaction method.
Open the file: src/Counter.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
contract Counter {
uint256 public value = 0;
function increment(uint256 num) external {
value += num;
}
}
Compile the smart contract
Run the following command:
forge build
Foundry will automatically download and run the version of the Solidity compiler (solc
) that was configured in the foundry.toml
file.
Check the compilation output
After the compiler completes, you should see additional directories in the project directory:
foundry-inj/
cache/
...
out/
build-info/
...
Counter.sol/
Counter.json --> open this file
Open the Counter.json
file (out/Counter.sol/Counter.json
). In it, you should see the compiler outputs, including the abi
and bytecode
fields. These artifacts are used in all later steps (test, deploy, verify, and interact).
Next steps
Now that you have set up a Foundry project and compiled a smart contract, you are ready to test that smart contract! Check out the test a smart contract using Foundry tutorial next.
Last updated