PR: #36 feat(contracts): Foundry workspace + CharonLiquidator skeleton
Problem: Every Solidity file uses pragma solidity ^0.8.24; (caret). Affected files:
contracts/src/CharonLiquidator.sol line 1
contracts/src/interfaces/IAaveV3Pool.sol line 1
contracts/src/interfaces/IERC20.sol line 1
contracts/src/interfaces/IFlashLoanSimpleReceiver.sol line 1
contracts/src/interfaces/IVToken.sol line 1
Caret allows any compiler >= 0.8.24 < 0.9.0. Future solc 0.8.25+ could introduce codegen changes, new opcodes, or ABI-encoding edge cases never caught in local CI because foundry.toml pins solc_version = "0.8.24" while pragma permits drift.
Impact: Non-reproducible builds if solc_version bumped without updating pragmas. Audit reports flag as informational; some audit firms reject caret pragmas in production outright.
Fix: Change every file pragma to exact version:
PR: #36 feat(contracts): Foundry workspace + CharonLiquidator skeleton
Problem: Every Solidity file uses
pragma solidity ^0.8.24;(caret). Affected files:contracts/src/CharonLiquidator.solline 1contracts/src/interfaces/IAaveV3Pool.solline 1contracts/src/interfaces/IERC20.solline 1contracts/src/interfaces/IFlashLoanSimpleReceiver.solline 1contracts/src/interfaces/IVToken.solline 1Caret allows any compiler
>= 0.8.24 < 0.9.0. Futuresolc 0.8.25+could introduce codegen changes, new opcodes, or ABI-encoding edge cases never caught in local CI becausefoundry.tomlpinssolc_version = "0.8.24"while pragma permits drift.Impact: Non-reproducible builds if
solc_versionbumped without updating pragmas. Audit reports flag as informational; some audit firms reject caret pragmas in production outright.Fix: Change every file pragma to exact version: