Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Foundry project scaffolding (
forge-std, CI workflow,.gitignore). Love, an ERC-20 token (LOVE, 18 decimals) on OpenZeppelin v5, pegged to
wETH at 100000 LOVE per wETH. No mint function and no owner: supply moves
only through the permissionlessdeposit(uint256)andwithdraw(uint256),
so circulating LOVE is always backed by wETH held by the contract.
withdrawreverts withAmountNotDivisibleByRateunless the amount is a
multiple of the rate, keeping the peg free of rounding dust.MockWETH, a test-only WETH9 stand-in, and tests covering deposit, withdraw,
the divisibility revert, backing invariants, round-trips, transfers,
approve/transferFrom, reverts and fuzzing.- Deployment script
script/Love.s.sol, deploying with CREATE2 through the
canonical deterministic deployer; salt defaults tokeccak256("LOVE")and is
overridable viaSALT, wETH defaults to the OP-Stack address and is
overridable viaWETH. The address embeds the wETH argument, so it is
identical across chains that share one wETH deployment. predict()entrypoint printing the deployment address without broadcasting,
and CREATE2 tests pinning address determinism across chain IDs and its
dependence on the wETH argument.foundry.tomlwith pinned solc 0.8.30, optimizer, fmt rules, fuzz/invariant
defaults, and Base Sepolia RPC/Etherscan endpoints driven by env vars.script/multichain-check.sh, deployingLoveon two local anvil nodes with
different chain IDs and failing if the two addresses don't match.remappings.txtfor@openzeppelin/contracts/andforge-std/..env.exampledocumenting required environment variables, includingWETH.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|