oasisprotocol / oasisprotocol/explorer

[Feature]: Support for minimal proxy contracts (EIP-1167)

Open
#1,536 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature
Dominant language
TypeScript
Stars
13
Forks
13
Avg merge
58m
Merged PRs (30d)
2

Description

Is there an existing issue for this?
  • I have searched the existing issues
SUMMARY

Detect EIP-1167 proxies, show information about the target contract (and whether it's verified)

DESCRIPTION

EIP-1167 minimal proxy contracts have a well known bytecode format, unfortunately they can also not be verified using Sourcify.

This makes it difficult to find information about a contract if it was deployed using minimal proxies (such as clone factories).

For example, the following contract is an EIP-1167 proxy: https://explorer.oasis.io/testnet/sapphire/address/0xbA7F3eE55b7939294caFA0F1e096E79722e1BD88/code#code

The runtime bytecode is 0x363d3d373d3d3d363d73243e9b626bc3ca61795600ed5295377423cd4e695af43d82803e903d91602b57fd5bf3, the target of this contract is 0x243e9b626bc3ca61795600ed5295377423cd4e69 - the target contract is verified.

For more details on the minimal proxy: https://blog.openzeppelin.com/deep-dive-into-the-minimal-proxy-contract

So, while the proxy contract isn't verified, the target of the proxy is verified.


Suggestion:
  • In the 'Verification' row, if it's an EIP-1167 proxy, show that it's a proxy, and extract the destination contract with a link.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Verification row and the code paths that obtain contract runtime bytecode and verification status. Use the EIP-1167 runtime bytecode and Oasis example in the issue as a reference; done means the row identifies the proxy, links to the extracted destination contract, and shows whether that target is verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
blockchain, typescript
Domain
blockchain
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.