Solidity Development Workflow
Workflow for Solidity smart contract changes in the apps/eth-contracts/ Foundry project.
Prerequisites
Use git-workflow Skill for branch management, commit conventions, and PR creation.
Applicable Directories
| Path | Description |
|---|---|
apps/eth-contracts/contracts/ | Smart contract source files |
apps/eth-contracts/script/ | Foundry deployment scripts |
apps/eth-contracts/test/ | Foundry test files (*.t.sol) |
Toolchain
| Tool | Version | Role |
|---|---|---|
Foundry (forge) | 1.6.0-nightly | Compile, test, deploy |
| Solidity | ^0.8.34 | Smart contract language |
| OpenZeppelin Contracts | ^5.6.1 | ERC-20 / standard base contracts |
| bun | primary | npm package manager |
| solhint | ^6.0.3 | Solidity linter |
| dprint | ^0.52.0 | JS/TS formatter |
Note:
forgeis installed at~/.foundry/bin/forge(may not be in PATH). Run with full path or add~/.foundry/bintoPATH.
Setup (first time)
bash
cd apps/eth-contracts # 1. Install forge-std (Foundry testing/scripting library) forge install foundry-rs/forge-std # 2. Install npm dependencies (@openzeppelin/contracts, solhint, dprint) bun install
Verification Commands
bash
cd apps/eth-contracts forge build # Compile all contracts (artifacts → out/) forge test -v # Run Foundry unit tests bun run lint # Solidity lint via solhint (must exit 0, zero errors) bun run fmt # Format JS/TS files via dprint (must exit 0)
Deployment (local)
bash
cd apps/eth-contracts export PRIVATE_KEY=0x<deployer-private-key> forge script script/DeployHYC.s.sol --rpc-url http://localhost:8545 --broadcast # → outputs contract address, tx hash, gas usage
Compatible with both anvil and geth nodes at http://localhost:8545.
Self-Review Checklist
Code Quality
- • Named imports used (
import {Foo} from "...") — no global imports - • NatSpec tags present (
@title,@author,@notice,@param) on contracts and public functions - • Explicit visibility on all functions (constructors exempt in Solidity ≥0.8)
- • Gas optimization considered
- • Events emitted for state changes
Security
- • No reentrancy vulnerabilities
- • No hardcoded private keys or sensitive values — use env vars
- •
.envadded to.gitignore - • Access control properly implemented
- • Integer overflow protection (Solidity ≥0.8 has built-in checks)
Testing
- • Foundry test file (
test/*.t.sol) covers all acceptance criteria - •
forge testpasses with zero failures - •
bun run lintexits 0 with zero solhint errors
ABI / Go Bindings
After contract changes, if Go bindings are needed:
bash
# 1. Compile cd apps/eth-contracts forge build # 2. Regenerate Go bindings (if target ABI changed) make gen-abi
Related Chain Context
- •ETH (Ethereum)
- •ERC-20 token standard
- •Local nodes:
anvil,gethathttp://localhost:8545
Related Skills
- •
git-workflow- Branch, commit, PR workflow - •
github-issue-creation- Task classification