specs.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const product = (...arrays) => arrays.reduce((a, b) => a.flatMap(ai => b.map(bi => [ai, bi].flat())));
  2. module.exports = [
  3. {
  4. "spec": "AccessControl",
  5. "contract": "AccessControlHarness",
  6. "files": ["certora/harnesses/AccessControlHarness.sol"]
  7. },
  8. {
  9. "spec": "Ownable",
  10. "contract": "OwnableHarness",
  11. "files": ["certora/harnesses/OwnableHarness.sol"]
  12. },
  13. {
  14. "spec": "Ownable2Step",
  15. "contract": "Ownable2StepHarness",
  16. "files": ["certora/harnesses/Ownable2StepHarness.sol"]
  17. },
  18. {
  19. "spec": "ERC20",
  20. "contract": "ERC20PermitHarness",
  21. "files": ["certora/harnesses/ERC20PermitHarness.sol"],
  22. "options": ["--optimistic_loop"]
  23. },
  24. {
  25. "spec": "ERC20FlashMint",
  26. "contract": "ERC20FlashMintHarness",
  27. "files": [
  28. "certora/harnesses/ERC20FlashMintHarness.sol",
  29. "certora/harnesses/ERC3156FlashBorrowerHarness.sol"
  30. ],
  31. "options": ["--optimistic_loop"]
  32. },
  33. {
  34. "spec": "ERC20Wrapper",
  35. "contract": "ERC20WrapperHarness",
  36. "files": [
  37. "certora/harnesses/ERC20PermitHarness.sol",
  38. "certora/harnesses/ERC20WrapperHarness.sol"
  39. ],
  40. "options": [
  41. "--link ERC20WrapperHarness:_underlying=ERC20PermitHarness",
  42. "--optimistic_loop"
  43. ]
  44. },
  45. {
  46. "spec": "Initializable",
  47. "contract": "InitializableHarness",
  48. "files": ["certora/harnesses/InitializableHarness.sol"]
  49. },
  50. ...product(
  51. [ "GovernorBase", "GovernorInvariants", "GovernorStates", "GovernorFunctions" ],
  52. [ "ERC20VotesBlocknumberHarness", "ERC20VotesTimestampHarness" ],
  53. ).map(([ spec, token ]) => ({
  54. spec,
  55. "contract": "GovernorHarness",
  56. "files": [
  57. "certora/harnesses/GovernorHarness.sol",
  58. `certora/harnesses/${token}.sol`
  59. ],
  60. "options": [
  61. `--link GovernorHarness:token=${token}`,
  62. "--optimistic_loop",
  63. "--optimistic_hashing"
  64. ]
  65. }))
  66. ];