Verax Attestation Registry
Verax is a shared registry for storing attestations of
public interest on EVM
chains, designed to enhance data discoverability and consumption for dApps across
the network.
Links •
Repository Organisation •
Getting Started •
Contributing •
Contracts Addresses •
Subgraphs URLs •
Network Prefixes •
License
## Links
📚 [Documentation](https://docs.ver.ax/)
🔍 [Subgraphs](#subgraphs-urls)
🧱 [Verax SDK](https://www.npmjs.com/package/@verax-attestation-registry/verax-sdk)
🌍 [Explorer](https://explorer.ver.ax)
## Repository Organisation
```
.
├── contracts # All smart contracts needed to run Verax
├── explorer # Explorer frontend to discover the main objects
├── governance # Governance NFTs
├── sdk # An SDK to easily interact with the contracts and the subgraphs
├── snap # A MetaMask Snap to leverage the attestations in transactions
├── subgraph # The subgraph indexing all the data generated by the contracts
├── website # Verax landing page and
```
Each package has its own README file for more details and installation process description.
## Getting Started
### Prerequisites
- [Node.js](https://nodejs.org/en/) (>= 18)
- [pnpm](https://pnpm.io/installation) (>=9.10.0)
### Global setup
```bash
pnpm i
```
## Contributing
Verax Attestation Registry is a community-led initiative, with developers from various companies and different
backgrounds. While we are more than happy to get help from multiple sources, we need to rely on strong Ways of Working.
Don't hesitate to check our [Contribution Guide](./CONTRIBUTING.md) before pushing your first code to the repo!
## Contracts Addresses
The main contracts (i.e. the "registries") and the helpers contracts are deployed on:
- Linea Sepolia
- Linea Mainnet
- Arbitrum Sepolia
- Arbitrum Mainnet
- Base Sepolia
- Base Mainnet
- BSC Testnet
- BSC Mainnet
Here are the addresses on those networks:
Linea Sepolia
- Router =
[0xAfA952790492DDeB474012cEA12ba34B788ab39F](https://sepolia.lineascan.build/address/0xAfA952790492DDeB474012cEA12ba34B788ab39F)
- AttestationRegistry =
[0xDaf3C3632327343f7df0Baad2dc9144fa4e1001F](https://sepolia.lineascan.build/address/0xDaf3C3632327343f7df0Baad2dc9144fa4e1001F)
- ModuleRegistry =
[0x3C443B9f0c8ed3A3270De7A4815487BA3223C2Fa](https://sepolia.lineascan.build/address/0x3C443B9f0c8ed3A3270De7A4815487BA3223C2Fa)
- PortalRegistry =
[0xF35fe79104e157703dbCC3Baa72a81A99591744D](https://sepolia.lineascan.build/address/0xF35fe79104e157703dbCC3Baa72a81A99591744D)
- SchemaRegistry =
[0x90b8542d7288a83EC887229A7C727989C3b56209](https://sepolia.lineascan.build/address/0x90b8542d7288a83EC887229A7C727989C3b56209)
Linea Mainnet
- Router =
[0x4d3a380A03f3a18A5dC44b01119839D8674a552E](https://lineascan.build/address/0x4d3a380A03f3a18A5dC44b01119839D8674a552E)
- AttestationRegistry =
[0x3de3893aa4Cdea029e84e75223a152FD08315138](https://lineascan.build/address/0x3de3893aa4Cdea029e84e75223a152FD08315138)
- ModuleRegistry =
[0xf851513A732996F22542226341748f3C9978438f](https://lineascan.build/address/0xf851513A732996F22542226341748f3C9978438f)
- PortalRegistry =
[0xd5d61e4ECDf6d46A63BfdC262af92544DFc19083](https://lineascan.build/address/0xd5d61e4ECDf6d46A63BfdC262af92544DFc19083)
- SchemaRegistry =
[0x0f95dCec4c7a93F2637eb13b655F2223ea036B59](https://lineascan.build/address/0x0f95dCec4c7a93F2637eb13b655F2223ea036B59)
- AttestationReader =
[0x40871e247CF6b8fd8794c9c56bB5c2b8a4FA3B6c](https://lineascan.build/address/0x40871e247CF6b8fd8794c9c56bB5c2b8a4FA3B6c)
Arbitrum Sepolia
- Router =
[0x374B686137eC0DB442a8d833451f8C12cD4B5De4](https://sepolia.arbiscan.io/address/0x374B686137eC0DB442a8d833451f8C12cD4B5De4)
- AttestationRegistry =
[0xee5e23492bf49C1F4CF0676b3bF49d78A6dD61c5](https://sepolia.arbiscan.io/address/0xee5e23492bf49C1F4CF0676b3bF49d78A6dD61c5)
- ModuleRegistry =
[0xEC572277d4E87a64DcfA774ED219Dd4E69E4BDc6](https://sepolia.arbiscan.io/address/0xEC572277d4E87a64DcfA774ED219Dd4E69E4BDc6)
- PortalRegistry =
[0x1ceb52584B6C45C7049dc7fDC476bC138E4beaDE](https://sepolia.arbiscan.io/address/0x1ceb52584B6C45C7049dc7fDC476bC138E4beaDE)
- SchemaRegistry =
[0x025531b655D9EE335B8E6cc4C118b313f26ACc8F](https://sepolia.arbiscan.io/address/0x025531b655D9EE335B8E6cc4C118b313f26ACc8F)
Arbitrum Mainnet
- Router =
[0xa77196867bB03D04786EF636cDdD82f37A1248a9](https://arbiscan.io/address/0xa77196867bB03D04786EF636cDdD82f37A1248a9)
- AttestationRegistry =
[0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C](https://arbiscan.io/address/0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C)
- ModuleRegistry =
[0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba](https://arbiscan.io/address/0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba)
- PortalRegistry =
[0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD](https://arbiscan.io/address/0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD)
- SchemaRegistry =
[0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27](https://arbiscan.io/address/0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27)
- AttestationReader =
[0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1](https://arbiscan.io/address/0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1)
Base Sepolia
- Router =
[0xE235826514945186227918325D3E5b5f873861A6](https://sepolia.basescan.org/address/0xE235826514945186227918325D3E5b5f873861A6)
- AttestationRegistry =
[0x374B686137eC0DB442a8d833451f8C12cD4B5De4](https://sepolia.basescan.org/address/0x374B686137eC0DB442a8d833451f8C12cD4B5De4)
- ModuleRegistry =
[0xEC572277d4E87a64DcfA774ED219Dd4E69E4BDc6](https://sepolia.basescan.org/address/0xEC572277d4E87a64DcfA774ED219Dd4E69E4BDc6)
- PortalRegistry =
[0x025531b655D9EE335B8E6cc4C118b313f26ACc8F](https://sepolia.basescan.org/address/0x025531b655D9EE335B8E6cc4C118b313f26ACc8F)
- SchemaRegistry =
[0x66D2F3DCc970343b83a6263E20832184fa71CFe7](https://sepolia.basescan.org/address/0x66D2F3DCc970343b83a6263E20832184fa71CFe7)
- AttestationReader =
[0xbCcC37Ea3bEeAE614817f53542F1F4FfAE5E19c7](https://sepolia.basescan.org/address/0xbCcC37Ea3bEeAE614817f53542F1F4FfAE5E19c7)
Base Mainnet
- Router =
[0x63b2d528805Fc9373586366705852FA89debd4d0](https://basescan.org/address/0x63b2d528805Fc9373586366705852FA89debd4d0)
- AttestationRegistry =
[0xA0080DBd35711faD39258E45d9A5D798852b05D4](https://basescan.org/address/0xA0080DBd35711faD39258E45d9A5D798852b05D4)
- ModuleRegistry =
[0xAd0C12db58098A6665CBEf48f60eB67d81d1F1ff](https://basescan.org/address/0xAd0C12db58098A6665CBEf48f60eB67d81d1F1ff)
- PortalRegistry =
[0xcbf28432C25B400E645F0EaC05F8954e8EE7c0d6](https://basescan.org/address/0xcbf28432C25B400E645F0EaC05F8954e8EE7c0d6)
- SchemaRegistry =
[0x8081dCd745f160c148Eb5be510F78628A0951c31](https://basescan.org/address/0x8081dCd745f160c148Eb5be510F78628A0951c31)
- AttestationReader =
[0xbEDd72a8cCfBEC4e575dCdC1659A891018051a5C](https://basescan.org/address/0xbEDd72a8cCfBEC4e575dCdC1659A891018051a5C)
BSC Testnet
- Router =
[0x90b8542d7288a83EC887229A7C727989C3b56209](https://testnet.bscscan.com/address/0x90b8542d7288a83EC887229A7C727989C3b56209)
- AttestationRegistry =
[0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe](https://testnet.bscscan.com/address/0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe)
- ModuleRegistry =
[0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a](https://testnet.bscscan.com/address/0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a)
- PortalRegistry =
[0xA4a7517F62216BD42e42a67dF09C25adc72A5897](https://testnet.bscscan.com/address/0xA4a7517F62216BD42e42a67dF09C25adc72A5897)
- SchemaRegistry =
[0x51929da151eC2C5a5881C750E5b9941eACC46c1d](https://testnet.bscscan.com/address/0x51929da151eC2C5a5881C750E5b9941eACC46c1d)
BSC
- Router =
[0x7a5C1fAC7fF9908a8b2ED479e060619213116A47](https://bscscan.com/address/0x7a5C1fAC7fF9908a8b2ED479e060619213116A47)
- AttestationRegistry =
[0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261](https://bscscan.com/address/0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261)
- ModuleRegistry =
[0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB](https://bscscan.com/address/0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB)
- PortalRegistry =
[0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0](https://bscscan.com/address/0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0)
- SchemaRegistry =
[0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd](https://bscscan.com/address/0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd)
## Subgraphs URLs
### Subgraph V1
- [Linea Sepolia](https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.12)
- [Linea Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-linea/v0.0.1)
- [Linea Mainnet (Backup)](https://graph-query.linea.build/subgraphs/name/Consensys/linea-attestation-registry/graphql)
- [Arbitrum Sepolia](https://api.studio.thegraph.com/query/67521/verax-v1-arbitrum-sepolia/v0.0.3)
- [Arbitrum Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-arbitrum/v0.0.1)
- [Base Sepolia](https://api.studio.thegraph.com/query/67521/verax-v1-base-sepolia/v0.0.2)
- [Base Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-base/v0.0.2)
- [BSC Testnet](https://api.studio.thegraph.com/query/67521/verax-v1-bsc-testnet/v0.0.1)
- [BSC Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-bsc/v0.0.1)
### Subgraph V2
- [Linea Sepolia](https://api.studio.thegraph.com/query/67521/verax-v2-linea-sepolia/v0.0.2)
- [Linea Mainnet](https://api.studio.thegraph.com/query/67521/verax-v2-linea/v0.0.1)
- [Linea Mainnet (Backup)](https://api.goldsky.com/api/public/project_clxx488osyuf501vygg71f86w/subgraphs/verax-v2-linea/0.0.1/gn)
- [Arbitrum Sepolia](https://api.studio.thegraph.com/query/67521/verax-v2-arbitrum-sepolia/v0.0.2)
- [Arbitrum Mainnet](https://api.studio.thegraph.com/query/67521/verax-v2-arbitrum/v0.0.2)
- [Base Sepolia](https://api.studio.thegraph.com/query/67521/verax-v2-base-sepolia/v0.0.2)
- [Base Mainnet](https://api.studio.thegraph.com/query/67521/verax-v2-base/v0.0.1)
- [BSC Testnet](https://api.studio.thegraph.com/query/67521/verax-v2-bsc-testnet/v0.0.1)
- [BSC Mainnet](https://api.studio.thegraph.com/query/67521/verax-v2-bsc/v0.0.1)
## Network Prefixes
To easily differentiate the networks on which an attestation has been made, we use network prefixes for the Attestation
ID. This prefix is defined in the `contracts/script/utils.ts` file.
- Linea Sepolia - `0x0000`
- Linea Mainnet - `0x0000`
- Arbitrum Sepolia - `0x0001`
- Arbitrum Mainnet - `0x0001`
- Base Sepolia - `0x0005`
- Base Mainnet - `0x0005`
- BSC Testnet - `0x0006`
- BSC Mainnet - `0x0006`
## Deployment of a new Verax instance
Deploying a new Verax instance requires four main steps to cover the four main parts of the stack. Even if these steps
are independent, and must not be done right away, they should be done in order.
1. Deploy the core contracts (cf. [documentation](contracts/README.md) in the `contracts` folder)
2. Deploy the subgraph (cf. [documentation](subgraph/README.md) in the `subgraph` folder)
3. Upgrade and deploy the SDK (cf. [documentation](sdk/README.md) in the `sdk` folder)
4. Deploy the Explorer (cf. [documentation](explorer/README.md) in the `explorer` folder)
## License
[MIT](./LICENSE)