---
# System prepended metadata

title: Goals of the Sourcify project

---

# Goals of the Sourcify project

1. Help users be aware of what they are doing (contract interactions) by displaying NatSpec in wallets and show that NatSpec has been verified
2. Help with recompiling multi-file projects

## Action Items
- Research MM snaps
- Create a Proof-of-Concept snap / plugin that works on MetaMask (Idea for a MVP snap: https://github.com/MetaMask/metamask-snaps-beta/wiki/Snaps-API#recipient-address-auditing)
- Finish validation script and get feedback from EtherScan
- Research if we can support proxies in the snap
- Finish the monitor rewrite


### MetaMask

- Initially the main goal was to display NatSpec in wallets
- Goal not reached yet, how can we reach it?
- Is MetaMask the priority? Or WalletConnect?
- WalletConntect doesn't really display anything
- MetaMask is still most used wallet
- Can we make them do it? 
- Can we do it via a Snap?
- Maybe build a PoC e.g. with an optional plugin
- Plugins for MetaMask are called Snaps: https://github.com/MetaMask/metamask-snaps-beta
- Starting with a Snap is a good idea
- Going through IPFS instead of a server, but make it work first

### Proxy Contracts

- Proxy Contracts - What to do about them? 
- They are extremely common
- Can the wallet support them somehow?
- Regx for bytecode and checking if it's a proxy, then fetch NatSpec for that
- Need to read storage to find the proxy target

### EtherScan

- EtherScan -> verify non-flattenable contracts
- Create script, show it to EtherScan and ask if they can use it