Since 2009, we have been utilizing our extensive expertise in blockchain technologies to help businesses, both large and small, maximize their efficiency.
Explore More
With more than 400+ experts, Oodles comprises a fantastic resource of business knowledge that spans multiple industries. Whatever the circumstances, we keep to our obligations.
Explore More
At Oodles, we help our clients work with a human understanding but at superhuman speed something that others can't. They thus advance and maintain their lead
1st May 2024
11 min read
Associate Consultant L2- Development
Foundry is a Rust-based smart contract development toolset for Ethereum. The creation and implementation of smart contracts are made easier with Foundry. By managing dependencies, executing tests, and assisting with deployment, it simplifies the process. Additionally, Foundry offers you a variety of tools for creating smart contracts, including:
Forge: Allows you to test, build, and implement smart contracts.
Cast: Cast is Foundry's CLI utility for making RPC calls to Ethereum. Send transactions, call smart contracts, and get any kind of chain data.
Anvil: Foundry ships with a local testnet node. It can be used to communicate over RPC or to test your contracts from frontends.
Chisel: Included with Foundry is a powerful Solidity REPL called Chisel. It can be used to rapidly evaluate how Solidity snippets behave on a forked or local network.
Also, Explore | Top 5 Smart Contract Development Companies
Use forge init to launch a new Foundry project:
init foundry_project forging
A new project folder named foundry_project will result from this. The following items will be in the folder:
src : Your smart contracts' default directory is called src.
tests: the tests' default directory
foundry.toml : Foundry project configuration file, foundry.toml
lib: includes the required libraries.
script: files with Solidity Scripting
You may also like | Code Analysis Tools for Solidity Smart Contracts
The Counter.sol sample smart contract is provided and can be found inside the src folder.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}
Use the forge build to compile the smart contract: forge build
The following output will appear in your terminal if your contract compiles successfully:
rahul@rahul:~/foundry/hello_foundry$ forge build
[â °] Compiling...
[â ˜] Compiling 24 files with 0.8.23
[â ’] Solc 0.8.23 finished in 6.28sCompiler run successful!
[â ¢] Solc 0.8.23 finished in 6.28s
The tests directory is created by Foundry and serves as the default location for all of the smart contract testing. The test file names have a.t.sol extension.
You can find a specifically named test file called Counter.t.sol if you open the test folder.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Test, console2} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
function test_Increment() public {
counter.increment();
assertEq(counter.number(), 1);
}
function testFuzz_SetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}
To test the Couter.sol smart contract utilising forge test, execute the following file: forge test
If all the test are passed then,
rahul@rahul:~/foundry/hello_foundry$ forge test
[â ”] Compiling...No files changed, compilation skipped
[â ’] Compiling...
Running 2 tests for test/Counter.t.sol:CounterTest
[PASS] testFuzz_SetNumber(uint256) (runs: 256, μ: 27320, ~: 28409)
[PASS] test_Increment() (gas: 28379)
Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 64.81ms
Also, Explore | AI-Driven Smart Contracts: Merging Intelligence with Automation
Use the forge create command to deploy the smart contract to a network:
Deploy command : forge create
Link : https://www.infura.io/blog/post/getting-started-with-infura-28e41844cc89
should the smart contract be successfully deployed, your terminal will display the following output:
rahul@rahul:~/foundry/hello_foundry$ forge create src/Counter.sol:Counter --rpc-url https://sepolia.infura.io/v3/ -
-private-key
[â ”] Compiling...No files changed, compilation skipped
[â ’] Compiling...
Deployer: 0x2Bc5b75F445cdAa418d32C5FD61A11E53c540Ba2
Deployed to: 0xb88758D730bDd6b07958427321169626A479afBc
Transaction hash: 0x4a6ebeb2d942a3c60648a44d8078ef00cb440f73a22acf2a06ee63f95604ef2f
If you are looking to bring your business idea into reality using the potential of blokchain and smart contracts, connect with our skilled smart contract developers to get started.
Rahul Maurya
Rahul is a highly skilled Backend Developer with expertise in Node.js, JavaScript, Python, HTML, CSS, React.js, Redux, Git, MySQL, MongoDB, GitHub, Heroku, Vercel, and Render. He has undergone multiple courses to enhance his skill set, including Data Structures & Algorithms. Rahul has invested considerable effort in studying and implementing new concepts in data and development, with a particular focus on leveraging these insights to effectively address existing challenges.
Associate Consultant L2- Development
By using this site, you allow our use of cookies. For more information on the cookies we use and how to delete or block them, please read our cookie notice.
We would love to
hear from you!
Innovate with confidence!