mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
Docs/contracts (#467)
* add new columns in contracts readme * update contracts readme
This commit is contained in:
@@ -1,14 +1,119 @@
|
||||
# OpenPassport Contracts
|
||||
# Self Contracts
|
||||
|
||||
Contracts for OpenPassport.
|
||||
## Overview
|
||||
|
||||
This is the implementation of contracts for verification and management of identities in Self.
|
||||
|
||||
## ⚠️Cautions⚠️
|
||||
|
||||
When you do the upgrade, be careful with this storage patterns
|
||||
- You can not change the order in which the contract state variables are declared, nor their type.
|
||||
|
||||
Pls see this page for more details: https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#modifying-your-contracts
|
||||
|
||||
## When you run test and see the coverage
|
||||
## Integration Guide
|
||||
In the npm package, you'll find the following directory structure:
|
||||
|
||||
```bash
|
||||
.
|
||||
├── abstract
|
||||
│ └── SelfVerificationRoot.sol # Base impl in self verification
|
||||
├── constants
|
||||
│ ├── AttestationId.sol # A unique identifier assigned to the identity documents
|
||||
│ └── CircuitConstants.sol # Indices for public signals in our circuits
|
||||
├── interfaces
|
||||
│ ├── IDscCircuitVerifier.sol
|
||||
│ ├── IIdentityRegistryV1.sol
|
||||
│ ├── IIdentityVerificationHubV1.sol
|
||||
│ ├── IPassportAirdropRoot.sol
|
||||
│ ├── IRegisterCircuitVerifier.sol
|
||||
│ ├── ISelfVerificationRoot.sol
|
||||
│ └── IVcAndDiscloseCircuitVerifier.sol
|
||||
└── libraries
|
||||
├── CircuitAttributeHandler.sol # Library to extract each attribute from public signals
|
||||
└── Formatter.sol # Utility functions to manage public signals to meaningful format
|
||||
```
|
||||
|
||||
If you want to integrate SelfVerificationRoot.sol into your contract, you should also import these files.
|
||||
|
||||
```solidity
|
||||
import {SelfVerificationRoot} from "@selfxyz/contracts/contracts/abstract/SelfVerificationRoot.sol";
|
||||
|
||||
import {IVcAndDiscloseCircuitVerifier} from "@selfxyz/contracts/contracts/interfaces/IVcAndDiscloseCircuitVerifier.sol";
|
||||
|
||||
import {IIdentityVerificationHubV1} from "@selfxyz/contracts/contracts/interfaces/IIdentityVerificationHubV1.sol";
|
||||
|
||||
import {CircuitConstants} from "@selfxyz/contracts/contracts/constants/CircuitConstants.sol";
|
||||
```
|
||||
|
||||
And override verifySelfProof function and write your own logic.
|
||||
You can take a look at these examples.
|
||||
- [Airdrop](https://github.com/selfxyz/self/blob/main/contracts/contracts/example/Airdrop.sol)
|
||||
- [HappyBirthday](https://github.com/selfxyz/happy-birthday/blob/main/contracts/contracts/HappyBirthday.sol)
|
||||
|
||||
In the verifySelfProof function, you should add these validations
|
||||
- Mandatory
|
||||
- scope validation
|
||||
- attestation id validation
|
||||
- Optional
|
||||
- nullifier validation
|
||||
- user id validation
|
||||
- age verification with olderThan
|
||||
- forbidden countries validation
|
||||
- ofac validation
|
||||
|
||||
Also, if you want to play with some attributes in the passport, you should import these libraries.
|
||||
``` solidity
|
||||
import {CircuitAttributeHandler} from "@selfxyz/contracts/contracts/libraries/CircuitAttributeHandler.sol";
|
||||
import {Formatter} from "@selfxyz/contracts/contracts/libraries/Formatter.sol";
|
||||
```
|
||||
|
||||
CircuitAttributeHandler is the library to extract readable attributes in the passport from public signals.
|
||||
The formatter is responsible for converting other data included in the public signals.
|
||||
Use it when you want to validate information related to birthdays or the time when the proof was generated.
|
||||
|
||||
As an example, please refer to the following contract.
|
||||
- [HappyBirthday](https://github.com/selfxyz/happy-birthday/blob/main/contracts/contracts/HappyBirthday.sol)
|
||||
- [getReadableRevealedData function in the hub contract](https://github.com/selfxyz/self/blob/bdcf9537b01570b2197ae378815adbcc9c8747e8/contracts/contracts/IdentityVerificationHubImplV1.sol#L313-L357)
|
||||
|
||||
## Building Contracts
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
2. Compile the contracts:
|
||||
```bash
|
||||
yarn run compile
|
||||
```
|
||||
|
||||
## Deployments
|
||||
|
||||
1. Deploy verifiers
|
||||
```bash
|
||||
yarn run deploy:allverifiers:celo
|
||||
```
|
||||
|
||||
2. Deploy registry proxy and impl
|
||||
```bash
|
||||
yarn run deploy:registry:celo
|
||||
```
|
||||
|
||||
3. Deploy hub proxy and impl
|
||||
```bash
|
||||
yarn run deploy:hub:celo
|
||||
```
|
||||
|
||||
4. Update csca, ofac and hub address in registry
|
||||
```bash
|
||||
yarn run update:cscaroot:celo
|
||||
yarn run update:ofacroot:celo
|
||||
yarn run update:hub:celo
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
When you compile the circuits, make sure you set the build flag to true for these circuits:
|
||||
- register_sha256_sha256_sha256_rsa_65537_4096
|
||||
- dsc_sha256_rsa_65537_4096
|
||||
@@ -22,3 +127,48 @@ yarn run build-all
|
||||
cd ../contracts
|
||||
yarn run test:coverage:local
|
||||
```
|
||||
|
||||
## Deployed Contract Addresses
|
||||
|
||||
| Contract | Address |
|
||||
|----------|---------|
|
||||
| Verifier_dsc_sha1_ecdsa_brainpoolP256r1 | 0xE7B4A70fc1d96D3Fb6577206c932eF1e634Cf2d0 |
|
||||
| Verifier_dsc_sha1_rsa_65537_4096 | 0x19E25a5772df0D7D6Db59D94a4d6FBd7098a3012 |
|
||||
| Verifier_dsc_sha256_ecdsa_brainpoolP256r1 | 0x1F3afAe85992B1B8CF6946B091225dAF8307675d |
|
||||
| Verifier_dsc_sha256_ecdsa_brainpoolP384r1 | 0x52A6EF39655D662A8Cf8eB56CD853883fe43eb2b |
|
||||
| Verifier_dsc_sha256_ecdsa_secp256r1 | 0x643735Cd44F8b2BDa47b4a7962c8BDf12E6CDdf8 |
|
||||
| Verifier_dsc_sha256_ecdsa_secp384r1 | 0x00F0D1A32Def293DAB78100A6569ebb4EC035F82 |
|
||||
| Verifier_dsc_sha256_rsa_65537_4096 | 0x711e655c43410fB985c4EDB48E9bCBdDb770368d |
|
||||
| Verifier_dsc_sha256_rsapss_3_32_3072 | 0xDAFF470e561F3f96C7410AeF02196913E981fF1B |
|
||||
| Verifier_dsc_sha256_rsapss_65537_32_3072 | 0x07B6C2FFB098B131eAD104396d399177014ae15f |
|
||||
| Verifier_dsc_sha256_rsapss_65537_32_4096 | 0xFBDDADb864b24B2c4336081A22f41D04E7b35DA9 |
|
||||
| Verifier_dsc_sha384_ecdsa_brainpoolP384r1 | 0x6a40dfa6f99FA178aB6cc88928Bf30661e917A76 |
|
||||
| Verifier_dsc_sha384_ecdsa_secp384r1 | 0x1719430107E66717d8b34d4190838dfABAf810e6 |
|
||||
| Verifier_dsc_sha512_rsa_65537_4096 | 0xf5eE920d6D50a8A83C22f548bf406fCBcD558751 |
|
||||
| Verifier_dsc_sha512_rsapss_65537_64_4096 | 0x5438C4ebFD8Fcce6eb54542e3A5C192B22227f70 |
|
||||
| Verifier_register_sha1_sha1_sha1_ecdsa_brainpoolP224r1 | 0x8588e473428cf415F10AC96CAa701F6Cd1C8641F |
|
||||
| Verifier_register_sha1_sha1_sha1_rsa_65537_4096 | 0x15fd0d58cfF9DaA4A60105c0DAC73659530BB7f7 |
|
||||
| Verifier_register_sha1_sha256_sha256_rsa_65537_4096 | 0xaC5166A01Aee75A10703177896122F4d6e3836d1 |
|
||||
| Verifier_register_sha224_sha224_sha224_ecdsa_brainpoolP224r1 | 0x7d9b7D2A95541b50CECDB44d82c0570a818111Ac |
|
||||
| Verifier_register_sha256_sha224_sha224_ecdsa_secp224r1 | 0x48cEc90de8d746efD316968Ea65417e74C6A1a74 |
|
||||
| Verifier_register_sha256_sha256_sha256_ecdsa_brainpoolP256r1 | 0x9C5Af0FC9A32b457e300905929A05356D3C0DB25 |
|
||||
| Verifier_register_sha256_sha256_sha256_ecdsa_brainpoolP384r1 | 0x5286E20745A0d4C35E6D97832D56e30A28303BD6 |
|
||||
| Verifier_register_sha256_sha256_sha256_ecdsa_secp256r1 | 0xaC861bf9FC8B44ccbAde8E2A39C851bbCf38c392 |
|
||||
| Verifier_register_sha256_sha256_sha256_ecdsa_secp384r1 | 0x03FCc979cf2d69275647095E4079A3389F24525D |
|
||||
| Verifier_register_sha256_sha256_sha256_rsa_3_4096 | 0xbE036B26317F013D2c6cB092Aa1fa903220be846 |
|
||||
| Verifier_register_sha256_sha256_sha256_rsa_65537_4096 | 0xE80537B3399bd405e40136D08e24c250397c09F1 |
|
||||
| Verifier_register_sha256_sha256_sha256_rsapss_3_32_2048 | 0xe063BD3188341B2D17d96cE38FD31584147d3219 |
|
||||
| Verifier_register_sha256_sha256_sha256_rsapss_65537_32_2048 | 0xe93Be9382868f30150cAF77793aF384905c2C7E4 |
|
||||
| Verifier_register_sha256_sha256_sha256_rsapss_65537_32_3072 | 0xD39E5eAfb6d266E3c4AC8255578F23a514fd8B36 |
|
||||
| Verifier_register_sha384_sha384_sha384_ecdsa_brainpoolP384r1 | 0xd2F65a76A10f5E0e7aE9d18826ab463f4CEb33C9 |
|
||||
| Verifier_register_sha384_sha384_sha384_ecdsa_secp384r1 | 0xC33E6A04b7296A3062Cf438C33dc8D8157c3916d |
|
||||
| Verifier_register_sha384_sha384_sha384_rsapss_65537_48_2048 | 0xa7A5A581C2Eb8dF39f486e9ABBc4898546D70C3e |
|
||||
| Verifier_register_sha512_sha512_sha512_rsa_65537_4096 | 0x6C88A6Afc38cA2859e157532b1b872EcC1ED0424 |
|
||||
| Verifier_register_sha512_sha512_sha512_rsapss_65537_64_2048 | 0x04A1D0d51Bc078CB137088424b2ec569699dd7A5 |
|
||||
| Verifier_vc_and_disclose | 0x44d314c2F9b3690735808d26d17dFCc9F906A9B4 |
|
||||
| PoseidonT3 | 0xF134707a4C4a3a76b8410fC0294d620A7c341581 |
|
||||
| IdentityRegistryImplV1 | 0xC473d5F784e424A70Bf7aCf887E33448E64F8798 |
|
||||
| IdentityRegistry | 0x37F5CB8cB1f6B00aa768D8aA99F1A9289802A968 |
|
||||
| IdentityVerificationHubImplV1 | 0x85FD004B2312a6703F1ce293242Dc15B719772b1 |
|
||||
| IdentityVerificationHub | 0x77117D60eaB7C044e785D68edB6C7E0e134970Ea |
|
||||
| VerifyAll | 0xe6D61680A6ED381bb5A0dB5cF4E9Cc933cF43915 |
|
||||
11690
contracts/yarn.lock
11690
contracts/yarn.lock
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user