A full stack developer working with blockchain


Share Dialog
Share Dialog
A full stack developer working with blockchain

Subscribe to ericxstone

Subscribe to ericxstone
This article was originally published on my previous mirror.xyz site on 2 Dec 2022 and moved to my new space
If you have been building smart contract on Ethereum or any EVM compatible blockchain, you must have used Truffle or Hardhat as your solidity development toolkit. Recently I bumped into a blockchain dev in a meetup and he recommended to try Foundry.
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.- Description on Foundry Github Repository
My journey starts with curl -L https://foundry.paradigm.xyz | bash and foundryup. The journey started pretty well. I didn’t encounter any unexpected error during my installation and it didn’t take too long to install.
After installation and initialising the project, I started to write a contract. I came up an idea to create a ERC-721 contract which mint an NFT to an address by taking some ERC-20 tokens. The experience is similar to what I have with Hardhat. In Foundry, I can also install libraries such as OpenZeppelin as well. It is achieved by using the forge install openzeppelin/openzeppelin-contracts command.
From here, I do need to make some configuration changes such that the Openzeppelin contracts can be imported correctly. I had to create a remappings.txt which tell Foundry how to resolve the path to my library. This article came to rescue -
https://w.mirror.xyz/mOUlpgkWA178HNUW7xR20TdbGRV6dMid7uChqxf9Z58
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
After writing the contract, it’s time to test the contract. Unlike Hardhat, Foundry enabled me to write solidity tests in solidity. You might ask what’s the benefit of that. One of the major benefit that I notice is I don’t have to do convert the number to BigNumber when I try to call a contract function with uint256 as parameter. This is amazing. I also didn’t have to setup mocha and chai like what I normally did in Hardhat. All I need is to create a ContractName.t.sol and create a public function with test as the prefix of the function name. forge test would be able to pick it up and the test run as lightning fast.
There are some tips to test with Foundry. When I run forge test, I was able to configure the verbose level and with forge test -vvv, it shows the function that has been called in the solidity, which is very helpful in debugging.
I haven’t tried the contract deploy and verify functionality in Foundry but I reckon that it is a better development toolkit for solidity development by far. If you are creating a new solidity project, I recommend you to have a try.
This article was originally published on my previous mirror.xyz site on 2 Dec 2022 and moved to my new space
If you have been building smart contract on Ethereum or any EVM compatible blockchain, you must have used Truffle or Hardhat as your solidity development toolkit. Recently I bumped into a blockchain dev in a meetup and he recommended to try Foundry.
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.- Description on Foundry Github Repository
My journey starts with curl -L https://foundry.paradigm.xyz | bash and foundryup. The journey started pretty well. I didn’t encounter any unexpected error during my installation and it didn’t take too long to install.
After installation and initialising the project, I started to write a contract. I came up an idea to create a ERC-721 contract which mint an NFT to an address by taking some ERC-20 tokens. The experience is similar to what I have with Hardhat. In Foundry, I can also install libraries such as OpenZeppelin as well. It is achieved by using the forge install openzeppelin/openzeppelin-contracts command.
From here, I do need to make some configuration changes such that the Openzeppelin contracts can be imported correctly. I had to create a remappings.txt which tell Foundry how to resolve the path to my library. This article came to rescue -
https://w.mirror.xyz/mOUlpgkWA178HNUW7xR20TdbGRV6dMid7uChqxf9Z58
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
nft://undefined/undefined/undefined?showBuying=true&showMeta=true
After writing the contract, it’s time to test the contract. Unlike Hardhat, Foundry enabled me to write solidity tests in solidity. You might ask what’s the benefit of that. One of the major benefit that I notice is I don’t have to do convert the number to BigNumber when I try to call a contract function with uint256 as parameter. This is amazing. I also didn’t have to setup mocha and chai like what I normally did in Hardhat. All I need is to create a ContractName.t.sol and create a public function with test as the prefix of the function name. forge test would be able to pick it up and the test run as lightning fast.
There are some tips to test with Foundry. When I run forge test, I was able to configure the verbose level and with forge test -vvv, it shows the function that has been called in the solidity, which is very helpful in debugging.
I haven’t tried the contract deploy and verify functionality in Foundry but I reckon that it is a better development toolkit for solidity development by far. If you are creating a new solidity project, I recommend you to have a try.
<100 subscribers
<100 subscribers
No activity yet