acuarica / evm

A Symbolic Ethereum Virtual Machine (EVM) bytecode interpreter, parser and decompiler, along with several other utils for programmatically extracting information from EVM bytecode.
https://acuarica.github.io/evm/
MIT License
46 stars 5 forks source link

Enable dataset workflow on PRs #131

Closed acuarica closed 5 days ago

acuarica commented 5 days ago

This PR enables running the Contract Dataset Test workflow on PRs in addition to workflow_dispatch trigger.

Given the workflow summary gives a nice overview of the run, this PR also enables commenting subsequent PRs with the workflow summary in Markdown format.

The summary structure was also changed to display contract errors by reason instead of by contracts. This makes the summary more compact and concise. Also it is more important to see what kind of errors we have rather than a list of contracts. In addition, the other stats were also compacted to avoid spanning many lines.

github-actions[bot] commented 5 days ago

size-limit report 📦

Path Size
dist/sevm.js 17.4 KB (0%)
codecov[bot] commented 5 days ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.24%. Comparing base (0216c88) to head (f6291ea).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #131 +/- ## ======================================= Coverage 94.24% 94.24% ======================================= Files 23 23 Lines 5456 5456 Branches 932 932 ======================================= Hits 5142 5142 Misses 299 299 Partials 15 15 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 5 days ago

Contract Dataset Summary

Symbolic Execution Errors - 869 errors of 20 kinds (in 235 contracts)
    x Memory destination for CODECOPY is not reducible to Val - 490 error(s)
      • TransparentUpgradeableProxy 0x10b5f02956d242ab770605d59b7d27e51e45774c ~4.2k v0.8.9 (x2)
      • Blindsight 0x7a449043deb555b9bb0add56ff66bafba1abe84e ~25.5k v0.8.9 (x10)
      • MODELY 0xdbab23ee1df3864ae1bb2822ff3b28e04fa96c54 ~21.8k v0.8.19 
      • MemoryPageFactRegistry 0x40864568f679c10aC9e72211500096a5130770fA ~4.3k v0.6.12 
      • GpsStatementVerifier 0xd51A3D50d4D2f99a345a66971E650EEA064DD8dF ~15.7k v0.6.12 
      • CpuFrilessVerifier 0x28E3aD4201ba416B23d9950503dB28a9232BE32a ~36.8k v0.6.12 (x17)
      • CpuFrilessVerifier 0xaA2c9CDD4ceAebe9A35873B77F57FB47c3Ef11b9 ~38.6k v0.6.12 (x17)
      • CpuFrilessVerifier 0xD0fC19710c389ef4a7244656cB08db08eA9D88b4 ~36.0k v0.6.12 (x17)
      • CpuFrilessVerifier 0x8055948c530dbBc19cc350d53473EEe3a1e3d22B ~34.5k v0.6.12 (x17)
      • CpuFrilessVerifier 0x66F2345D003511a1A60D87E3984Bb8d12C21A970 ~36.4k v0.6.12 (x17)
    ... 101 more contracts
    x JUMP(0x56)@<pc> offset should be numeric but found `local<n>` - 293 error(s)
      • TFBXV 0xc856c519c068f1b29bb54f81d498c457c99d6b16 ~35.4k v0.8.22 (x5)
      • CurveHandler 0xBcFacE618465F7D35cE82992FbE92e63C0529b13 ~19.8k v0.8.17 (x7)
      • PunkPuppets 0x42b075d31e706fb38f7e236ad2aa66a1460cf721 ~17.5k v0.8.18 
      • PudgyPuppets 0xb801bf563e7ac8667211c9ae6c7cfff0586fb214 ~17.5k v0.8.18 
      • Nuts 0x88266f9eb705F5282a2507A9c418821a2AC9f8BD ~11.3k v0.8.22 (x5)
      • GalaxyFox 0x8F1CecE048Cade6b8a05dFA2f90EE4025F4F2662 ~17.9k v0.8.23 (x5)
      • LilMiladyPudgys 0x72ce68a0b1b897bf65561d6cc636c9370f5a7c6e ~17.5k v0.8.18 
      • Stuff 0xfA297F8a132811b5ED682Bed0bE035520DB7F89b ~18.0k v0.8.18 (x5)
      • FellowshipDutchAuction 0xbC3042ee8C6E1197Ab5EAe5B4E674D3885033Dd2 ~14.0k v0.8.23 (x4)
      • QuantumRats 0xad57ccc5b5ee395ed44afad079ad798756d2d7c3 ~18.6k v0.8.22 (x5)
    ... 60 more contracts
    x JUMP(0x56)@<pc> destination should be JUMPDEST@0 but found '0x60' - 7 error(s)
      • CurveRegistryCache 0x29E06bBA53f73E271859214D9D87a1bE636273C0 ~16.1k v0.8.17 
      • XAlpha 0x369733153E6E08d38F2BC72ae2432E855Cfbe221 ~14.2k v0.8.17 
      • GuineaPigGovernor 0x96032D2B0640c220Fc5128cac3E4962AcA570C61 ~46.6k v0.8.23 (x3)
      • Vector 0xBb3D7F42C58Abd83616Ad7C8C72473Ee46df2678 ~29.7k v0.8.22 
      • Vector 0x5ad182646ab2a52f0f7d422c65f3f95bf2024877 ~29.7k v0.8.22 
    x POP with empty stack - 18 error(s)
      • TitanTracker 0xD9ED35075F47078160170A74459A5AF6BdBbB2C2 ~32.2k v0.8.19 (x4)
      • ZeroxScans 0x10703cA5e253306e2ABABD68e963198be8887c81 ~35.7k v0.8.19 (x4)
      • ChainFactory_ERC20 0x23e70d4A085B72e970907b4126A604E2edF0E238 ~25.3k v0.8.23 (x2)
      • ETHERYIELD 0x3a2868C9A755BE1ec2977fB8f3BA8593c10c8DA4 ~34.8k v0.8.19 (x4)
      • ZeroxScans 0x347d28958B8C621838734fCBBd787e3407Ab9eb0 ~35.8k v0.8.19 (x4)
    x JUMP(0x56)@<pc> offset should be numeric but found `mload(0x0)` - 34 error(s)
      • yPRISMA Forwarder Callback Minter 0x3d05654f333eea534fc5d7b873c9b8bf35b0550f ~3.8k <no version> 
      • Curve Degen Leverage Bot Factory 0x34bc9970228b14a76ebf0a7f5a601001bbca20c8 ~23.0k <no version> 
      • Curve Leverage Bot 0x425d9ca45409fd8f39f749dcf83f0ebdbb0b7da4 ~3.8k <no version> 
      • Liquidity Gauge v4 0x08d36c723b8213122f678025c2d9eb1ec7ab8f9d ~17.7k <no version> 
      • Curve Leverage Bot 0x89d79cda1a62e3ea95ca21d64681e853a0847300 ~3.8k <no version> 
      • Curve Leverage Bot 0xc12BE7AF8FD9Fa1bdE8Ad88bb10EF955b6e35417 ~3.8k <no version> 
      • Uniswap V3 TWAP Bot 0x7cb5d8dd2ec6aca4f006b44de8b734cc1298f40d ~19.3k <no version> 
      • Yearn Vault Factory 0x32035cb2a4308894f7e59c6c487651c4acce60ab ~6.6k <no version> 
      • Yearn V3 Vault 0x7d9a48273cf48c194086F6E79a56d7f23c0Ed4f2 ~45.2k <no version> 
      • Vyper_contract 0x7c868F045a60501A2F4159446545939771ddA323 ~0.4k <no version> 
    ... 24 more contracts
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639488 in `sub(local<n>, local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639520 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639552 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639584 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639616 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639648 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639680 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639712 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639744 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639776 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x Memory size too large creating Log: 115792089237316195423570985008687907853269984665640564039457584007913129639808 in `sub(add(0x20, add(local<n>, local<n>)), local<n>)` - 1 error(s)
      • FlatPriceSale_v_2_1 0x57c08f6827DC9A88b253830D73E0d8314b32E8D1 ~28.4k v0.8.21 
    x JUMP(0x56)@<pc> offset should be numeric but found `add(local<n>, local<n>)` - 3 error(s)
      • Acidmen_nfts 0x1316cd513db5b9944101b652ffe0137708998079 ~17.0k v0.8.22 (x2)
      • gameboys 0x1010ea28cac9a75f4da9c388bd87c96e7f4866a1 ~33.3k v0.8.22 
    x Memory size too large creating Sha3: 115792089237316195423570985008687907853269984665640564039457584007913129639808 in `sub(local<n>, local<n>)` - 5 error(s)
      • LOLWS 0xf4c2706e5c53869337ed5ab9e3bd801c224bba19 ~5.3k v0.8.23 
      • SIG 0xa9ec2f0ee0ae09b8a1d00d6653418f202ce91d44 ~6.3k v0.8.23 
      • WFW 0x32b819e2306e77dcb1c4a6fb7a796da69b9e356a ~6.3k v0.8.23 
      • Token 0xaeB3607eC434454ceB308f5Cd540875efb54309A ~10.7k v0.8.10 
      • OmniMerlin 0x234F534D322dF1a8a236a2F952d6657bf800F1FA ~5.2k v0.8.13 
    x Memory size too large creating Revert: 115792089237316195423570985008687907853269984665640564039457584007913129639808 in `sub(0x0, local<n>)` - 3 error(s)
      • GoldFeverMaskBoxStore 0x986BE1392a313e9246e6B871AC42Eaf6c643A2C3 ~15.2k v0.8.17 
      • GoldFeverMaskBoxStore 0xD9d1f6BFBD32B5942B230d611733BCFC4805480f ~15.0k v0.8.17 
      • GoldFeverMaskBoxStore 0xd734f49358917695137f6c79Bd9757b7156840Bf ~14.2k v0.8.17 
    x JUMP(0x56)@<pc> offset should be numeric but found `add(0x1, local<n>)` - 5 error(s)
      • PointFarmors 0x37ef980d65841c4c018e2a514a91ea07d7772ba7 ~34.3k v0.8.22 (x5)

  Bench Stats
    • Contract decode & execution average 10.3 ms (total 67922 ms)
    • Generate Solidity source average 6.3 ms (total 41772 ms)
    • Generate Yul source average 19.6 ms (total 129297 ms)

  Metadata Stats
    • No metadata 41
    • Protocols ipfs(6482)|(20)|bzzr0(43)|bzzr1(18)
    • SOLC versions 0.8.24(45)|0.8.19(1077)|0.8.20(1514)|0.8.9(156)|0.8.23(1101)|0.8.21(536)|0.8.12(49)|0.8.17(274)|(42)|0.8.22(756)|0.8.18(286)|0.8.16(102)|0.8.0(78)|0.8.11(29)|0.8.14(34)|0.6.12(80)|0.8.13(34)|0.8.10(105)|0.6.9(7)|0.8.15(51)|0.8.4(30)|0.8.7(48)|0.5.17(9)|0.7.4(4)|0.5.15(1)|0.8.6(40)|0.7.6(10)|0.8.8(10)|0.7.0(8)|0.5.16(7)|0.8.2(6)|0.7.5(3)|0.6.0(1)|0.8.1(5)|0.8.3(8)|0.7.3(1)|0.6.4(2)|0.6.10(2)|0.6.6(1)|0.5.9(2)|0.8.5(4)|0.6.7(1)|0.5.12(1)|0.7.1(2)|0.5.10(1)

  Selector Stats
    Hit selectors(2000) | Missed selectors(14872)

  ERCs Stats
    ERC20(2286) | ERC20Metadata(2283) | ERC165(282) | ERC173(174) | ERC721(26)

  Precompiled Contract Stats
    0x4(44) | 0x1(206) | 0x0(393) | 0x5(187) | 0x2(7) | 0x6(3) | 0x8(2)

  PC Stats
    PCs(0)

  Revert Selector Stats
    4e487b71(106812) | 08c379a0(38351) | 118cdaa7(619) | 96c6fd1e(357) | e450d38c(354) | ec442f05(305) | 3e8be92f(285) | df2d9b42(230) | 1e4fbdf7(182) | 2e076300(147) | 272772ea(139) | d93c0665(136) | e602df05(123) | 8404f626(114) | 533ce786(114)
    ... 411 more revert selectors