Skip to content

Commit 2786341

Browse files
Merge pull request #5 from 0xPolygonID/move-docs-issuer
Includes Issuer files
2 parents eb7f666 + 19430cc commit 2786341

30 files changed

+3663
-211
lines changed

docs/contracts/credential-linkage.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
id: credential-linkage
3+
title: Credential Linkage
4+
sidebar_label: Credential Linkage
5+
description: Description of the relationships between credentials and issuers.
6+
keywords:
7+
- docs
8+
- polygon id
9+
- anchoring
10+
- credential
11+
- linkage
12+
---
13+
14+
There are 2 types of relationships between credentials and their issuers:
15+
16+
- Issuer DID anchoring: as an issuer of credentials, issuers can choose to just leave their identifier in the genesis state. However, it is recommended that they publish their issuer DID on-chain for visibility and traceability purposes. This is done by calling the “Transit State function” so that the issuer can register their identity state and identifier in the identity `StateV2.sol` contract. At this point, we can consider that the **Issuer DID is anchored**.
17+
18+
- Credential Linkage: after the issuer’s DID is anchored to the blockchain, then the issuer can generate credentials with its identifier and signature (using either the BJJ or MTP, see [credential issuance methods](../issuer/cred-issue-methods.md) for more). At this point, we can consider that the credential has a linkage to the blockchain in which the issuer registered its DID.
19+
20+
![img](/img/anchoring-linkage.png)
21+
22+
!!!note
23+
If the credential is issued using the MTP method, then the credential data is also “anchored” (via an indirect merkle tree proof) to the blockchain. Otherwise, only the Issuer’s DID is anchored to the blockchain.
24+
25+
26+
## Credential Linkage to Different Blockchains
27+
28+
Credentials could be linked to different Ethereum Virtual Machine (EVM) blockchains, they are not limited to only being linked to the Polygon Mainnet when they are issued. For instance, credentials could be linked to a Supernets chain or another EVM chain. The issuer state contract could be deployed to other EVM-compatible chains, and verifiers could validate the proofs from these credentials as long as they have access to the particular chain.
29+
30+
!!!note
31+
Credential linkage is only supported for a single chain for each credential (a credential cannot be linked to multiple blockchains at the same time).
32+
33+
![img](/img/linkage-multiple.png)

docs/contracts/overview.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Smart Contracts
2+
3+
<a href="https://github.com/0xPolygonID/contracts" target="_blank">**Polygon ID Smart Contracts - Github**</a>
4+
5+
## Blockchain addresses
6+
7+
For situations where one needs to publish data on the blockchain, such as creating a mtp-type credential, generating on-chain proofs and make credential revocations effective, it is important to have the Smart Contracts addresses:
8+
9+
- Testnet(mumbai) -> `0x134B1BE34911E39A8397ec6289782989729807a4`
10+
- Mainnet -> `0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D`
11+
12+
## Validator addresses
13+
Current addresses on Polygon Mumbai testnet.
14+
15+
| | Sig | MTP |
16+
|:------------------:|:------------------------------------------:|:-----------------------------------------:|
17+
| **Validators** |0xF2D4Eeb4d455fb673104902282Ce68B9ce4Ac450 |0x3DcAe4c8d94359D31e4C89D7F2b944859408C618 |
18+
| **ERC20 examples** |0x9017a99afb69CB7B21C7DD29827b4762DECD53FD |0x3Bf7f4774DC3f92431fA690fa000f636562dCC18 |
19+
20+
21+
Current addresses on Polygon Main. (ERC20 example with airdrop use case, restricted to 1 request).
22+
23+
| | Sig | MTP |
24+
|:------------------:|:------------------------------------------:|:-----------------------------------------:|
25+
| **Verifier** |0x6f6E19781600d6B06D64A6b86431FB7dB3E919e0 |0x9DB901F3AFdAAA73F5B2123B186F566fA3Ed1551 |
26+
| **Validators** |0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b |0x5f24dD9FbEa358B9dD96daA281e82160fdefD3CD |
27+
| **ERC20 examples** |0x8732e29eE329fD19Ff868a3Df3D5F6A3116027A2 |0x5c31BB88AA57C69FF537C5d86102246D61712C90 |
28+
29+
30+
ERC20 examples with airdrop use case, not restricted.
31+
32+
| | Sig | MTP |
33+
|:------------------:|:------------------------------------------:|:-----------------------------------------:|
34+
| **Validators** |0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b |0x5f24dD9FbEa358B9dD96daA281e82160fdefD3CD |
35+
| **ERC20 examples** |0x7C14Aa764130852A8B64BA7058bf71E4292d677F |0xa3Bc012FCf034bee8d16161730CE4eAb34C35100 |
36+
37+
## CredentialAtomicQuerySigValidator
38+
39+
<a href="https://github.com/0xPolygonID/contracts/blob/main/contracts/validators/CredentialAtomicQuerySigValidator.sol" target="_blank">**CredentialAtomicQuerySigValidator.sol - Github**</a>
40+
41+
The CredentialAtomicQuerySigValidator contract is used to verify any credential-related zk proof generated by user using the <a href="https://docs.iden3.io/protocol/main-circuits/#credentialAtomicQuerySigV2OnChain" target="_blank">`credentialAtomicQuerySigV2OnChain`</a> circuit. The contract only verifies proofs based on credential of type `Signature`
42+
43+
The core of the contract is its <a href="https://github.com/0xPolygonID/contracts/blob/main/contracts/validators/CredentialAtomicQuerySigValidator.sol#L41" target="_blank">`verify`</a> function that takes the proof generated by a user and executes a set of verifications:
44+
45+
- Verifies that the proof is valid. This verification is actually performed inside the
46+
<a href="https://github.com/0xPolygonID/contracts/blob/main/contracts/verifiers/circuits/verifierSig.sol" target="_blank">`verifierSig`</a> contract which is automatically generated using circom.
47+
- Verifies that the input used to generate the proof matches the query associated to that specific Request.
48+
- Verifies that the user's and the Issuer's identity states are valid based on the State Contract.
49+
50+
> The CredentialAtomicQuerySigValidator executes the same set of verifications of the [Verification Library](../verifier/verification-library/verification-api-guide.md#verification---under-the-hood). The former is required when performing on-chain verification while the latter is required for off-chain verification.
51+
52+
CredentialAtomicQuerySigValidator address:
53+
54+
- <a href="https://mumbai.polygonscan.com/address/0xF2D4Eeb4d455fb673104902282Ce68B9ce4Ac450" target="_blank">Mumbai: 0xF2D4Eeb4d455fb673104902282Ce68B9ce4Ac450</a>
55+
56+
## CredentialAtomicQueryMTPValidator
57+
58+
<a href="https://github.com/0xPolygonID/contracts/blob/main/contracts/validators/CredentialAtomicQueryMTPValidator.sol" target="_blank">**CredentialAtomicQueryMTPValidator.sol - Github**</a>
59+
60+
Performs the same set of verifications of the CredentialAtomicQuerySigValidator but for credential of type `MTP`
61+
62+
CredentialAtomicQueryMTPValidator address:
63+
64+
- <a href="https://mumbai.polygonscan.com/address/0x3DcAe4c8d94359D31e4C89D7F2b944859408C618" target="_blank">Mumbai: 0x3DcAe4c8d94359D31e4C89D7F2b944859408C618</a>
65+
66+
> Further protocol related contracts can be found at <a href="https://docs.iden3.io/contracts/state/" target="_blank">Iden3 - Smart Contracts</a>

0 commit comments

Comments
 (0)