1c72717bc9 | ||
---|---|---|
.github | ||
.vscode | ||
lib | ||
script | ||
src | ||
test | ||
.editorconfig | ||
.env.example | ||
.gas-report | ||
.gas-snapshot | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.prettierignore | ||
.prettierrc.yml | ||
.solhint.json | ||
CHANGELOG.md | ||
LICENSE.md | ||
PROPERTIES.md | ||
README.md | ||
codecov.yml | ||
envCheck.sh | ||
foundry.toml | ||
package.json | ||
pnpm-lock.yaml | ||
remappings.txt | ||
slither.config.json |
README.md
waku-rlnv2-contract
Waku's RLNv2 contracts, which include -
- LazyIMT, which allows the root of the chain to be accessible on-chain.
What's Inside
- Forge: compile, test, fuzz, format, and deploy smart contracts
- Forge Std: collection of helpful contracts and cheatcodes for testing
- Solhint Community: linter for Solidity code
Prerequisites
pnpm
(installation instructions)
Usage
Install dependencies before first run:
pnpm install
This is a list of the most frequently needed commands.
Build
Build the contracts:
$ forge build
Clean
Delete the build artifacts and cache directories:
$ forge clean
Compile
Compile the contracts:
$ forge build
Coverage
Get a test coverage report:
$ forge coverage
Deploy
Deploy to Anvil:
$ forge script script/Deploy.s.sol --broadcast --fork-url http://localhost:8545
For this script to work, you need to have a MNEMONIC
environment variable set to a valid
BIP39 mnemonic.
Deploy to Sepolia:
Ensure that you use the cast wallet to store private keys that will be used in deployments.
$ export RPC_URL=<rpc-url>
$ export ACCOUNT=<account name in foundry keystore>
$ pnpm deploy:sepolia
Format
Format the contracts:
$ forge fmt
Gas Usage
Get a gas report:
$ forge test --gas-report
Lint
Lint the contracts:
$ pnpm lint
Fixing linting issues
For any errors in solidity files, run forge fmt
. For errors in any other file type, run pnpm prettier:write
.
Test
Run the tests:
$ forge test
Notes
- Foundry uses git submodules to manage dependencies. For detailed instructions on working with dependencies, please refer to the guide in the book
- You don't have to create a
.env
file, but filling in the environment variables may be useful when debugging and testing against a fork.
License
This project is licensed under MIT.