project screenshot 1
project screenshot 2
project screenshot 3

Cove

Simple, reliable, open-source contract verification built for an L2 centric Ethereum ecosystem

Cove

Created At

Scaling Ethereum 2023

Winner of

trophy

πŸ›  Polygon β€” Best Developer or Community Tool

trophy

πŸ₯‡ Gnosis Chain β€” Most Innovative

trophy

πŸ† Scaling Ethereum Finalist

Project Description

Why is Cove necessary?

The current state of smart contract verification has a lot of room for improvement:

  • Verification often fails, with no useful feedback as to why.
  • Every Layer 2 chain has a different block explorer
    • Need to manually verify with each verification provider.
    • Verifying on every single chain doesn't scale for developers.
  • Verified contracts are not linked to git commits.
    • Hard to verify the audited code is what’s actually deployed.
    • Hard to verify yourself if you don't trust the hosted verification.
  • 1:1 mapping of verification providers to UIs
    • Anyone can spin up a novel frontend to interact with a smart contract, but not to view verified contracts

The State of Cove

  • [x] Verify contracts in forge projects with just a repo URL, commit hash, and contract address.
  • [x] Verify contracts on all supported chains with a single API call.
  • [x] Return decompiled bytecode, ABI, and Solidity for unverified contracts[^2].
  • [ ] More robust verification for all contracts (i.e. smarter bytecode matching and fallbacks).
  • [ ] Save verified contracts to a publicly available database.
  • [ ] Support other development frameworks such as Hardhat and Ape.
  • [ ] Support other languages such as Vyper and Huff.
  • [ ] Publish the Cove backend as a crate for easy local verification.
  • [ ] Multi-file verification orders files logically.
  • [ ] Automatically verify on Etherscan and Sourcify after successful verification.
  • [ ] Support traditional methods of verification (e.g. standard JSON input).
  • [ ] Build a first-party UI to showcase the functionality of Cove.

How it's Made

The frontend is a simple React app intended to demonstrate functionality, so here we'll focus on the backend. The backend is written in rust, using axum to power the API. The ethereum-specific code is powered by ethers-rs, and heimdall-rs is used for decompilation of unverified contracts.

background image mobile

Join the mailing list

Get the latest news and updates