resolc contract verifier
Blockscout could not verify a single contract on a PolkaVM chain, because its verifier only speaks solc. I taught it resolc.
I couldn’t find anyone who had done it. No fork, no docs — just Parity’s compiler, Blockscout’s Rust service, and bytecode that refused to match.
- Rust
- fork of blockscout-rs
smart-contract-verifier - RISC-V
- PolkaVM bytecode via Parity’s revive / resolc
- 3 days
- from “cargo won’t even build” to verified contracts
- Swapped the compiler path to always drive the resolc CLI (
solc_compiler_cli.rs), threading the real solc through as resolc’s own dependency. - Rewrote verification matching for PolkaVM output — resolc doesn’t follow solc’s
optimize-runsconventions, so the stock match rules rejected bytecode that was in fact correct. - Built LLVM 18 with the RISC-V embedded target to get
revivecompiling, and wrote the whole thing up as a repro gist so the next person doesn’t lose the days I did. - Runs behind the Blockscout compose for the Reef Pelagia testnet.






















