From d9eef5d99dd32a1c41be22f5aac90e736ed288f4 Mon Sep 17 00:00:00 2001 From: Alex Monso Date: Mon, 13 May 2024 18:30:08 +0200 Subject: [PATCH] Format docs --- ...-identity-while-publishing-state-to-rhs.md | 2 + .../content/issuer-node-reusing-issuer-did.md | 1 + docs/issuer-node/install-kubernetes.md | 4 +- docs/issuer/issuer-configuration.md | 6 +- .../on-chain-issuer/on-chain-tutorial.md | 41 ++- docs/issuer/refresh-service/customization.md | 1 + docs/issuer/refresh-service/setup-guide.md | 245 ++++++++++-------- docs/quick-start-demo.md | 4 +- docs/smart-contracts.md | 87 +++---- .../on-chain-verification/overview.md | 16 +- docs/verifier/v3-circuit.md | 9 +- .../verification-library/verifier-set-up.md | 5 +- .../verification-library/zk-query-language.md | 118 ++++----- docs/verifier/verifier-backend.md | 139 +++++----- .../credential/get-credential-by-id.md | 2 +- ...t-circuits-download-and-get-info-stream.md | 2 +- ...already-downloaded-circuits-from-server.md | 2 +- docusaurus.config.js | 2 +- src/data/content-data.js | 1 - 19 files changed, 333 insertions(+), 354 deletions(-) diff --git a/docs/faqs/content/issuer-node-error-creating-identity-while-publishing-state-to-rhs.md b/docs/faqs/content/issuer-node-error-creating-identity-while-publishing-state-to-rhs.md index 8514ff63..39e61e3d 100644 --- a/docs/faqs/content/issuer-node-error-creating-identity-while-publishing-state-to-rhs.md +++ b/docs/faqs/content/issuer-node-error-creating-identity-while-publishing-state-to-rhs.md @@ -23,6 +23,7 @@ The error you're experiencing is typically due to an incorrect configuration of To resolve this issue, check your `.env-issuer` file for the `ISSUER_CREDENTIAL_STATUS_RHS_MODE` value. If it is set to `OffChain`, you must specify a valid Reverse Hash Service Endpoint in `ISSUER_CREDENTIAL_STATUS_RHS_URL`. For example, you could use our staging RHS: `https://rhs-staging.polygonid.me/`. If your `ISSUER_CREDENTIAL_STATUS_RHS_MODE` is configured for on-chain operation, ensure you have the correct smart contract information for your network, such as Amoy: + - `ISSUER_CREDENTIAL_STATUS_ONCHAIN_TREE_STORE_SUPPORTED_CONTRACT`=0x3d3763eC0a50CE1AdF83d0b5D99FBE0e3fEB43fb - `ISSUER_CREDENTIAL_STATUS_RHS_CHAIN_ID`=80002 @@ -34,4 +35,5 @@ For a comprehensive understanding and configuration guidance, please review the Wrong answer: Simply replace the RHS URL with the Issuer Node URL or remove the `ISSUER_CREDENTIAL_STATUS_RHS_URL` from your .env-issuer file without adjusting the `ISSUER_CREDENTIAL_STATUS_RHS_MODE` setting or ensuring the RHS endpoint's validity. + diff --git a/docs/faqs/content/issuer-node-reusing-issuer-did.md b/docs/faqs/content/issuer-node-reusing-issuer-did.md index 66520769..02233582 100644 --- a/docs/faqs/content/issuer-node-reusing-issuer-did.md +++ b/docs/faqs/content/issuer-node-reusing-issuer-did.md @@ -22,4 +22,5 @@ If you **have not deleted the database** and wish to reuse a previously configur Wrong answer: If you want to reuse a previously used DID, it's sufficient to manually edit the database entries to reflect the old DID, bypassing the need to update environment files or restart any services. This direct database manipulation ensures immediate reuse of the DID without considering system synchronization or security implications. + diff --git a/docs/issuer-node/install-kubernetes.md b/docs/issuer-node/install-kubernetes.md index 352135ea..925d5282 100644 --- a/docs/issuer-node/install-kubernetes.md +++ b/docs/issuer-node/install-kubernetes.md @@ -65,7 +65,7 @@ export ISSUERNAME="My Issuer" export ISSUER_ETHERUM_URL="https://polygon-network.XXXX" export INGRESS_ENABLED=true export VAULT_PWD=password -export RHS_MODE=None +export RHS_MODE=None export RHS_URL="https://reverse-hash-service.com" ``` @@ -142,7 +142,7 @@ export ISSUERNAME="My Issuer" export ISSUER_ETHERUM_URL="https://polygon-network.XXXX" export INGRESS_ENABLED=false export VAULT_PWD=password -export RHS_MODE=None +export RHS_MODE=None export RHS_URL="https://reverse-hash-service.com" ``` diff --git a/docs/issuer/issuer-configuration.md b/docs/issuer/issuer-configuration.md index 2786b352..58733234 100644 --- a/docs/issuer/issuer-configuration.md +++ b/docs/issuer/issuer-configuration.md @@ -19,7 +19,7 @@ import TabItem from '@theme/TabItem'; This guide will show you how to configure your Issuer Node. :::caution -*Polygon Mumbai testnet has been deprecated +\*Polygon Mumbai testnet has been deprecated ::: ## Revocation Status @@ -89,7 +89,6 @@ ISSUER_CREDENTIAL_STATUS_RHS_CHAIN_ID=80002 - ```bash @@ -173,7 +172,6 @@ ISSUER_API_IDENTITY_METHOD={polygonid | custom method} - ```bash @@ -237,7 +235,6 @@ Create Identity Payload example: - ```json @@ -253,7 +250,6 @@ Create Identity Payload example: - ```json diff --git a/docs/issuer/on-chain-issuer/on-chain-tutorial.md b/docs/issuer/on-chain-issuer/on-chain-tutorial.md index ed799225..c3393af1 100644 --- a/docs/issuer/on-chain-issuer/on-chain-tutorial.md +++ b/docs/issuer/on-chain-issuer/on-chain-tutorial.md @@ -55,30 +55,25 @@ There are two main components in this application: 1. Deploy an on-chain merklized issuer contract. You can use [this sample](https://github.com/0xPolygonID/contracts/blob/main/contracts/examples/IdentityExample.sol) or create your own smart contract with custom logic. Clone smart contracts repository: + ```bash git clone https://github.com/0xPolygonID/contracts.git ``` Deploy Identity Example contract: + ```bash export AMOY_PRIVATE_KEY={private_key} && \ export AMOY_RPC_URL={rpc_url} && \ npx hardhat run scripts/deployIdentityExample.ts --network amoy ``` - - + :::note You can find more information on how to deploy a smart contract using Hardhat [in this readme](https://github.com/iden3/contracts#readme). ::: - - - - - - 1. Use the utility to calculate the issuerDID from the smart contract address: ```bash @@ -97,23 +92,23 @@ You can find more information on how to deploy a smart contract using Hardhat [< - ```bash - SUPPORTED_RPC="80002=" - ISSUERS_PRIVATE_KEY="=" - EXTERNAL_HOST="" - SUPPORTED_STATE_CONTRACTS="80002=0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124" - ``` +```bash +SUPPORTED_RPC="80002=" +ISSUERS_PRIVATE_KEY="=" +EXTERNAL_HOST="" +SUPPORTED_STATE_CONTRACTS="80002=0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124" +``` - ```bash - SUPPORTED_RPC="137=" - ISSUERS_PRIVATE_KEY="=" - EXTERNAL_HOST="" - SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" - ``` +```bash +SUPPORTED_RPC="137=" +ISSUERS_PRIVATE_KEY="=" +EXTERNAL_HOST="" +SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" +``` @@ -192,7 +187,7 @@ You can use already deployed demo: https://onchain-merklized-issuer-demo.polygon 1. Visit the [Query builder website](https://schema-builder.polygonid.me/query-builder/). -2. You now need to define the query. +2. You now need to define the query. - **URL**: https://gist.githubusercontent.com/ilya-korotya/b06baa37453ed9aedfcb79100b84d51f/raw/balance-v1.jsonld - **Schema type**: BalanceCredential @@ -211,7 +206,6 @@ You can use already deployed demo: https://onchain-merklized-issuer-demo.polygon - 4. Click on Approve. After which, the process of generating the proof is starts:
@@ -219,6 +213,7 @@ You can use already deployed demo: https://onchain-merklized-issuer-demo.polygon
5.Finally, the proof is generated. The verifier will check the revocation status and some additional information. The proof is then sent and validated by the verifier. You will receive the following response on the Query builder website +
-
\ No newline at end of file + diff --git a/docs/issuer/refresh-service/customization.md b/docs/issuer/refresh-service/customization.md index 25e33684..4169fada 100644 --- a/docs/issuer/refresh-service/customization.md +++ b/docs/issuer/refresh-service/customization.md @@ -20,6 +20,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; Extend customization by incorporating custom providers and integrating them into the refresh flow. This is the easiest way to add custom business logic to retrieve data from a data provider. Go to [setup guide](/docs/issuer/refresh-service/setup-guide/#setup-with-custom-data-provider) for more information + ## 2. Flexible HTTP package Utilize the [flexible HTTP package](https://github.com/0xPolygonID/refresh-service/blob/main/providers/flexiblehttp/http.go) to configure HTTP requests to a data provider. Refer to the [configuration guide](https://github.com/0xPolygonID/refresh-service/blob/main/README.md) for instructions on how to set this up. diff --git a/docs/issuer/refresh-service/setup-guide.md b/docs/issuer/refresh-service/setup-guide.md index 3ed247a3..4eca00ac 100644 --- a/docs/issuer/refresh-service/setup-guide.md +++ b/docs/issuer/refresh-service/setup-guide.md @@ -17,146 +17,165 @@ keywords: import useBaseUrl from '@docusaurus/useBaseUrl'; > **NOTE: Current implementation of [refresh service](https://github.com/0xPolygonID/refresh-service) works only with [issuer-node](https://github.com/0xPolygonID/issuer-node/).** -> ## Preparation + 1. Run the issuer-node locally by following the [quick-start installation guide](https://github.com/0xPolygonID/issuer-node/#quick-start-installation). 1. Clone the refresh service using the command `git clone git@github.com:0xPolygonID/refresh-service.git`. 1. Build JSON and JSONLD schemas, utilizing the provided examples: - - [JSON](https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json/non-zero-balance.json) - - [JSONLD](https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/non-zero-balance.jsonld) +- [JSON](https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json/non-zero-balance.json) +- [JSONLD](https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/non-zero-balance.jsonld) - Generate custom schemas through the [schema builder](https://schema-builder.polygonid.me/builder). Additional details can be found in the [schema builder documentation](/docs/issuer/schema-builder/). +Generate custom schemas through the [schema builder](https://schema-builder.polygonid.me/builder). Additional details can be found in the [schema builder documentation](/docs/issuer/schema-builder/). ## Setup with custom data provider + Consider an example of integrating [polygon scan](https://polygonscan.com/) as a data provider for the refresh service. 1. Integrate the custom data provider into the [data provider module](https://github.com/0xPolygonID/refresh-service/tree/main/providers): - ```go - const polygonBalanceURL = "https://api.polygonscan.com/api?module=account&action=balance&address=%s&apikey=%s" - type BalanceResponse struct { - Status string `json:"status"` - Result string `json:"result"` - Message string `json:"message"` +```go +const polygonBalanceURL = "https://api.polygonscan.com/api?module=account&action=balance&address=%s&apikey=%s" + +type BalanceResponse struct { + Status string `json:"status"` + Result string `json:"result"` + Message string `json:"message"` +} + +func GetBalanceByAddress(address string) (map[string]any, error) { + resp, err := http.Get( + fmt.Sprintf(polygonBalanceURL, address, ""), + ) + if err != nil { + return nil, + fmt.Errorf("failed to get balance: %w", err) } - func GetBalanceByAddress(address string) (map[string]any, error) { - resp, err := http.Get( - fmt.Sprintf(polygonBalanceURL, address, ""), - ) - if err != nil { - return nil, - fmt.Errorf("failed to get balance: %w", err) - } - - balanceResp := &BalanceResponse{} - if err = json.NewDecoder(resp.Body).Decode(balanceResp); err != nil { - return nil, - fmt.Errorf("failed to decode balance response: %w", err) - } - defer resp.Body.Close() - - if balanceResp.Status != "1" { - return nil, - fmt.Errorf("invalid status in balance response: %s", balanceResp.Message) - } - - // convert to credential subject format - // ensure that these fields align with the attributes specified in the JSONLD schema. - return map[string]any{ - "balance": balanceResp.Result, - "address": address, - }, nil + balanceResp := &BalanceResponse{} + if err = json.NewDecoder(resp.Body).Decode(balanceResp); err != nil { + return nil, + fmt.Errorf("failed to decode balance response: %w", err) } - ``` + defer resp.Body.Close() + + if balanceResp.Status != "1" { + return nil, + fmt.Errorf("invalid status in balance response: %s", balanceResp.Message) + } + + // convert to credential subject format + // ensure that these fields align with the attributes specified in the JSONLD schema. + return map[string]any{ + "balance": balanceResp.Result, + "address": address, + }, nil +} +``` + 1. Use the custom data provider within the refresh service: - 1. Remove the default data provider: - ```go - flexibleHTTP, err := rs.providers.ProduceFlexibleHTTP(credentialType) - if err != nil { - return nil, - errors.Wrapf(ErrCredentialNotUpdatable, - "for credential '%s' not possible to find a data provider: %v", credential.ID, err) - - } - updatedFields, err := flexibleHTTP.Provide(credential.CredentialSubject) - if err != nil { - return nil, err - } - ``` - 1. Use the new polygon scan data provider: - ```go - // confirm the credentialType matches a supported type in the refresh service, - // and its urn:uuid aligns with the id in the JSONLD schema - if credentialType != "urn:uuid:f50cfcf6-ded4-470e-83be-2d6820a66998" { - return nil, errors.New("unknow credentialType") - } - - updatedFields, err := polygonscan.GetBalanceByAddress(credential.CredentialSubject["address"].(string)) - if err != nil { - return nil, err - } - ``` + + 1. Remove the default data provider: + + ```go + flexibleHTTP, err := rs.providers.ProduceFlexibleHTTP(credentialType) + if err != nil { + return nil, + errors.Wrapf(ErrCredentialNotUpdatable, + "for credential '%s' not possible to find a data provider: %v", credential.ID, err) + + } + updatedFields, err := flexibleHTTP.Provide(credential.CredentialSubject) + if err != nil { + return nil, err + } + ``` + + 1. Use the new polygon scan data provider: + + ```go + // confirm the credentialType matches a supported type in the refresh service, + // and its urn:uuid aligns with the id in the JSONLD schema + if credentialType != "urn:uuid:f50cfcf6-ded4-470e-83be-2d6820a66998" { + return nil, errors.New("unknow credentialType") + } + + updatedFields, err := polygonscan.GetBalanceByAddress(credential.CredentialSubject["address"].(string)) + if err != nil { + return nil, err + } + ``` + 1. Populate the .env variables: - ``` - export IPFS_GATEWAY_URL="https://infura..." - export SUPPORTED_RPC="137=https://infura..." - export SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" - export SUPPORTED_ISSUERS="*=https://my-issuer-node.com" - export ISSUERS_BASIC_AUTH="*=myuser:mypassword" - ``` + ``` + export IPFS_GATEWAY_URL="https://infura..." + export SUPPORTED_RPC="137=https://infura..." + export SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" + export SUPPORTED_ISSUERS="*=https://my-issuer-node.com" + export ISSUERS_BASIC_AUTH="*=myuser:mypassword" + ``` 1. Generate a blank config.yaml file: - ```bash - touch config.yaml - ``` + +```bash +touch config.yaml +``` + 1. Run the refresh service: - ```bash - source .env - go run . - ``` + +```bash +source .env +go run . +``` ## Setup with default provider + To integrate [polygon scan](https://polygonscan.com/) data provider with the default data provider, follow these general steps: + 1. Create a `config.yaml` file with the following content: - ```yaml - urn:uuid:f50cfcf6-ded4-470e-83be-2d6820a66998: - settings: - timeExpiration: 5m - provider: - url: https://api.polygonscan.com/api - method: GET - requestSchema: - params: - module: account - action: balance - address: "{{ credentialSubject.address }}" # this value will be substituted from the credentialSubject.address field - apikey: - headers: - Content-Type: application/json - responseSchema: - type: json - properties: - result: - type: string - match: credentialSubject.balance - ``` + +```yaml +urn:uuid:f50cfcf6-ded4-470e-83be-2d6820a66998: + settings: + timeExpiration: 5m + provider: + url: https://api.polygonscan.com/api + method: GET + requestSchema: + params: + module: account + action: balance + address: "{{ credentialSubject.address }}" # this value will be substituted from the credentialSubject.address field + apikey: + headers: + Content-Type: application/json + responseSchema: + type: json + properties: + result: + type: string + match: credentialSubject.balance +``` + 2. Populate the .env variables: - ``` - export IPFS_GATEWAY_URL="https://infura..." - export SUPPORTED_RPC="137=https://infura..." - export SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" - export SUPPORTED_ISSUERS="*=https://my-issuer-node.com" - export ISSUERS_BASIC_AUTH="*=myuser:mypassword" - ``` + +``` +export IPFS_GATEWAY_URL="https://infura..." +export SUPPORTED_RPC="137=https://infura..." +export SUPPORTED_STATE_CONTRACTS="137=0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D" +export SUPPORTED_ISSUERS="*=https://my-issuer-node.com" +export ISSUERS_BASIC_AUTH="*=myuser:mypassword" +``` + 3. Run the service: - ```bash - source .env - go run . - ``` + +```bash +source .env +go run . +``` ## Testing + 1. Go to the issuer-node UI and generate a credential with refresh service section:
@@ -200,4 +219,4 @@ To integrate [polygon scan](https://polygonscan.com/) data provider with the def
-
\ No newline at end of file + diff --git a/docs/quick-start-demo.md b/docs/quick-start-demo.md index 55da6d70..27ca8eeb 100644 --- a/docs/quick-start-demo.md +++ b/docs/quick-start-demo.md @@ -51,7 +51,6 @@ Polygon ID wallet is an implementation of the Wallet SDK, as a way of showcasing The process from downloading to creating an identity on the Polygon ID Wallet is just as it is shown below. You need to download the app, create a wallet, set up a PIN number and the wallet is ready to be used. -
@@ -180,8 +179,7 @@ Here are the steps to verify the credential:
-
- + 4. After clicking on **Test query**, you should scan the resulting QR code and follow the instructions on the mobile app. diff --git a/docs/smart-contracts.md b/docs/smart-contracts.md index 3daf4560..a0dc320b 100644 --- a/docs/smart-contracts.md +++ b/docs/smart-contracts.md @@ -13,7 +13,7 @@ keywords: Polygon ID Smart Contracts - Github :::caution -*Polygon Mumbai testnet has been deprecated +\*Polygon Mumbai testnet has been deprecated ::: ## State Contract addresses @@ -22,8 +22,7 @@ For situations where one needs to publish data on the blockchain, such as creati - Testnet(amoy) -> `0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124` - Mainnet -> `0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D` -- Testnet(mumbai)***** -> `0x134B1BE34911E39A8397ec6289782989729807a4` - +- Testnet(mumbai)**\*** -> `0x134B1BE34911E39A8397ec6289782989729807a4` :::info Check a contract codebase and algorithms of work [docs](https://docs.iden3.io/contracts/state/), [repository](https://github.com/iden3/contracts/tree/master/contracts/state). @@ -31,65 +30,55 @@ Check a contract codebase and algorithms of work [docs](https://docs.iden3. ## IdentityTreeStore contract (On-chain RHS) -| Network | Address | -|:--------------------------:|:------------------------------------------:| -| **Polygon Mainnet** | 0xbEeB6bB53504E8C872023451fd0D23BeF01d320B | -| **Polygon Amoy testnet** | 0x3d3763eC0a50CE1AdF83d0b5D99FBE0e3fEB43fb | -| Polygon Mumbai testnet* | 0x16A1ae4c460C0a42f0a87e69c526c61599B28BC9 | - +| Network | Address | +| :----------------------: | :----------------------------------------: | +| **Polygon Mainnet** | 0xbEeB6bB53504E8C872023451fd0D23BeF01d320B | +| **Polygon Amoy testnet** | 0x3d3763eC0a50CE1AdF83d0b5D99FBE0e3fEB43fb | +| Polygon Mumbai testnet\* | 0x16A1ae4c460C0a42f0a87e69c526c61599B28BC9 | ## Validator addresses Current addresses on **Polygon Mainnet** (V2.0.1 V2 validators): - - -| | Sig | MTP | -|:-----------------:|:-----------------------------------------------------------------:|:-----------------------------------------------------------------:| -| **Verifier** | 0xa0495df44ABBDbfCD1da30638869A3307BF21532 | 0x068b3dDE10b55643b55aA4820c7a977dEEEc3c07 | -| **Validators** | 0xEF8540a5e0F4f53B436e7C3A273dCAe1C05d764D | 0x03Ee09635E9946165dd9538e9414f0ACE57e42e1 | -| **ERC20 example** | 0xB9Ac8e785f854f9B76bBF6d495213d58226DE813 (request id = 1 (sig)) | 0xB9Ac8e785f854f9B76bBF6d495213d58226DE813 (request id = 2 (mtp) | - +| | Sig | MTP | +| :---------------: | :---------------------------------------------------------------: | :--------------------------------------------------------------: | +| **Verifier** | 0xa0495df44ABBDbfCD1da30638869A3307BF21532 | 0x068b3dDE10b55643b55aA4820c7a977dEEEc3c07 | +| **Validators** | 0xEF8540a5e0F4f53B436e7C3A273dCAe1C05d764D | 0x03Ee09635E9946165dd9538e9414f0ACE57e42e1 | +| **ERC20 example** | 0xB9Ac8e785f854f9B76bBF6d495213d58226DE813 (request id = 1 (sig)) | 0xB9Ac8e785f854f9B76bBF6d495213d58226DE813 (request id = 2 (mtp) | Current addresses on **Polygon Amoy** testnet. (V2.0.1 V2 validators) -| | Sig | MTP | -|:-----------------:|:-----------------------------------------------------------:|:------------------------------------------------------------:| -| **Verifier** | 0x35178273C828E08298EcB0C6F1b97B3aFf14C4cb | 0x789D95794973034BFeDed6D4693e7cc3Eb253B3a | -| **Validators** | 0x8c99F13dc5083b1E4c16f269735EaD4cFbc4970d | 0xEEd5068AD8Fecf0b9a91aF730195Fef9faB00356 | -| **ERC20 example** | 0x2b23e5cF70D133fFaA7D8ba61E1bAC4637253880 (request id = 1) | 0x2b23e5cF70D133fFaA7D8ba61E1bAC4637253880 (request id = 2) | - - - +| | Sig | MTP | +| :---------------: | :---------------------------------------------------------: | :---------------------------------------------------------: | +| **Verifier** | 0x35178273C828E08298EcB0C6F1b97B3aFf14C4cb | 0x789D95794973034BFeDed6D4693e7cc3Eb253B3a | +| **Validators** | 0x8c99F13dc5083b1E4c16f269735EaD4cFbc4970d | 0xEEd5068AD8Fecf0b9a91aF730195Fef9faB00356 | +| **ERC20 example** | 0x2b23e5cF70D133fFaA7D8ba61E1bAC4637253880 (request id = 1) | 0x2b23e5cF70D133fFaA7D8ba61E1bAC4637253880 (request id = 2) | -Current addresses on **Polygon Mumbai** testnet*****. (V2.0.1 V2 validators): - -| | Sig | MTP | -|:-----------------:|:-----------------------------------------------------------:|:------------------------------------------------------------:| -| **Verifier** | 0x81ef49013627F363570a1C60B0D2215E23651B01 | 0xe5DB0489979C5671D9785cF1cBA9D9028041c9Bf | -| **Validators** | 0x59f2a6D94D0d02F3a2F527a8B6175dc511935624 | 0xb9b51F7E8C83C90FE48e0aBd815ef0418685CcF6 | -| **ERC20 example** | 0x3a4d4E47bFfF6bD0EF3cd46580D9e36F3367da03 (request id = 1) | 0x3a4d4E47bFfF6bD0EF3cd46580D9e36F3367da03 (request id = 2) | +Current addresses on **Polygon Mumbai** testnet**\***. (V2.0.1 V2 validators): +| | Sig | MTP | +| :---------------: | :---------------------------------------------------------: | :---------------------------------------------------------: | +| **Verifier** | 0x81ef49013627F363570a1C60B0D2215E23651B01 | 0xe5DB0489979C5671D9785cF1cBA9D9028041c9Bf | +| **Validators** | 0x59f2a6D94D0d02F3a2F527a8B6175dc511935624 | 0xb9b51F7E8C83C90FE48e0aBd815ef0418685CcF6 | +| **ERC20 example** | 0x3a4d4E47bFfF6bD0EF3cd46580D9e36F3367da03 (request id = 1) | 0x3a4d4E47bFfF6bD0EF3cd46580D9e36F3367da03 (request id = 2) | Current addresses for V3 beta circuit on **Polygon Amoy** testnet. (2.0.1-beta.1 V3 validator): -| | V3 validator 2.0.1-beta.1 | -|:--------------------:|:-----------------------------------------------------------------------------------------------------------:| -| **Verifier** | 0x07Bbd95505c44B65D7FA3B08dF6F5859373Fa1DC | -| **Validators** | 0xa5f08979370AF7095cDeDb2B83425367316FAD0B | -| **ERC20 SD example** | 0xc5Cd536cb9Cc3BD24829502A39BE593354986dc4 (request id = 3) | -| **ERC20 example** | 0xc5Cd536cb9Cc3BD24829502A39BE593354986dc4 (request id = 100 - 1100 merklized / 10000 - 65000 nonmerklized | - +| | V3 validator 2.0.1-beta.1 | +| :------------------: | :--------------------------------------------------------------------------------------------------------: | +| **Verifier** | 0x07Bbd95505c44B65D7FA3B08dF6F5859373Fa1DC | +| **Validators** | 0xa5f08979370AF7095cDeDb2B83425367316FAD0B | +| **ERC20 SD example** | 0xc5Cd536cb9Cc3BD24829502A39BE593354986dc4 (request id = 3) | +| **ERC20 example** | 0xc5Cd536cb9Cc3BD24829502A39BE593354986dc4 (request id = 100 - 1100 merklized / 10000 - 65000 nonmerklized | +Current addresses for V3 beta circuit on **Polygon Mumbai** testnet**\***. (2.0.1-beta.1 V3 validator): -Current addresses for V3 beta circuit on **Polygon Mumbai** testnet*****. (2.0.1-beta.1 V3 validator): - -| | V3 validator 2.0.1-beta.1 | -|:--------------------:|:-----------------------------------------------------------------------------------------------------------:| -| **Verifier** | 0xDE27fc243Bf4eDAaB72E1008c9828C480582f672 | -| **Validators** | 0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a | -| **ERC20 SD example** | 0x36eB0E70a456c310D8d8d15ae01F6D5A7C15309A (request id = 3) | -| **ERC20 example** | 0x36eB0E70a456c310D8d8d15ae01F6D5A7C15309A (request id = 100 - 1100 merklized / 10000 - 65000 nonmerklized | +| | V3 validator 2.0.1-beta.1 | +| :------------------: | :--------------------------------------------------------------------------------------------------------: | +| **Verifier** | 0xDE27fc243Bf4eDAaB72E1008c9828C480582f672 | +| **Validators** | 0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a | +| **ERC20 SD example** | 0x36eB0E70a456c310D8d8d15ae01F6D5A7C15309A (request id = 3) | +| **ERC20 example** | 0x36eB0E70a456c310D8d8d15ae01F6D5A7C15309A (request id = 100 - 1100 merklized / 10000 - 65000 nonmerklized | :::note More about [v3 circuit](./verifier/v3-circuit). @@ -97,7 +86,6 @@ More about [v3 circuit](./verifier/v3-circuit). Check the examples of deployment for [ v3 validator](https://github.com/0xPolygonID/contracts/blob/main/scripts/deployV3Validator.ts) ::: - ## CredentialAtomicQuerySigValidator CredentialAtomicQuerySigValidator.sol - Github @@ -120,6 +108,3 @@ The core of the contract is its Iden3 - Smart Contracts - - - diff --git a/docs/verifier/on-chain-verification/overview.md b/docs/verifier/on-chain-verification/overview.md index 442f630d..bea424a8 100644 --- a/docs/verifier/on-chain-verification/overview.md +++ b/docs/verifier/on-chain-verification/overview.md @@ -278,10 +278,7 @@ async function main() { const verifierSymbol = "zkERC20"; const ERC20Verifier = await ethers.getContractFactory(verifierContract); - const erc20Verifier = await upgrades.deployProxy( - ERC20Verifier, - [verifierName, verifierSymbol] - ); + const erc20Verifier = await upgrades.deployProxy(ERC20Verifier, [verifierName, verifierSymbol]); await erc20Verifier.deployed(); console.log(verifierName, " contract address:", erc20Verifier.address); @@ -448,7 +445,14 @@ function coreSchemaFromStr(schemaIntString) { return SchemaHash.newSchemaHashFromInt(schemaInt); } -function calculateQueryHashV2(values, schema, slotIndex, operator, claimPathKey, claimPathNotExists) { +function calculateQueryHashV2( + values, + schema, + slotIndex, + operator, + claimPathKey, + claimPathNotExists +) { const expValue = prepareCircuitArrayValues(values, 64); const valueHash = poseidon.spongeHashX(expValue, 6); const schemaHash = coreSchemaFromStr(schema); @@ -639,5 +643,5 @@ Now that you have been able to create your first on-chain ZK-based application, Another possibility to customize your Smart Contract involves setting different ZK requests. First of all, multiple `REQUEST_ID` must be defined inside the main Smart Contract. Therefore, the contract deployer can set a different query for each request ID and create different outcomes inside `_afterProofSubmit` according to the type of proof received. For example, an airdrop contract can verify the role of a user inside a DAO and distribute a different amount of tokens based on the role. ## Estimated Gas Costs for On-Chain Verifier -While it is clear that gas cost is highly dependent on the complexity of the logic that you add to the `_afterProofSubmit` and `_beforeProofSubmit` functions, the sample code for the on-chain verifier in this tutorial costs approximately 700k gas to execute on-chain. The zk proof verification function specifically costs approximately 520k gas. The above estimates are accurate as of January 2024. +While it is clear that gas cost is highly dependent on the complexity of the logic that you add to the `_afterProofSubmit` and `_beforeProofSubmit` functions, the sample code for the on-chain verifier in this tutorial costs approximately 700k gas to execute on-chain. The zk proof verification function specifically costs approximately 520k gas. The above estimates are accurate as of January 2024. diff --git a/docs/verifier/v3-circuit.md b/docs/verifier/v3-circuit.md index f76938ab..dcdd163b 100644 --- a/docs/verifier/v3-circuit.md +++ b/docs/verifier/v3-circuit.md @@ -21,15 +21,14 @@ We want to introduce new circuits - СredentialAtomicQueryV3 and CredentialAtomi Newest version is СredentialAtomicQueryV3-beta.1
Changelog from beta.0 to beta.1 - - 1. ValueArrSize input is introduced, which fixes behaviour for IN / NIN operations. + + 1. ValueArrSize input is introduced, which fixes behaviour for IN / NIN operations. 2. Exists / Noop / Less Than Or Equal / Greater Than or Equal / Not between / Between operators support. 3. Query hash calculation algorithm changes. 4. Constraints and security optimizations. - -
+ ::: @@ -37,8 +36,6 @@ More about new supported operators [here](./verification-library/zk-query-langua Link to latest sdk circuit wrappers: [js](https://github.com/0xPolygonID/js-sdk/pull/181) / [go](https://github.com/iden3/go-circuits/releases/tag/v2.1.0) - - In general it's an improved version of V2 circuits with several important key features: 1. SIG and MTP checks are united in single circuit. Now you can use only one circuit without sig/mtp suffixes. Proof will be taken from user wallet and authorization response will contain information about verifiable credential proof type which has been used. It is possible to request the needed proof from user by using `proofType` property in the authorization request message. Possible values are `Iden3SparseMerkleTreeProof` and `BJJSignature2021`. If `proofType` is not provided - available proof will be used. In case there are two proofs available - MTP will be used as more prior. diff --git a/docs/verifier/verification-library/verifier-set-up.md b/docs/verifier/verification-library/verifier-set-up.md index ad713d8b..a2eb683f 100644 --- a/docs/verifier/verification-library/verifier-set-up.md +++ b/docs/verifier/verification-library/verifier-set-up.md @@ -422,10 +422,7 @@ async function callback(req, res) { } catch (error) { return res.status(500).send(error); } - return res - .status(200) - .set("Content-Type", "application/json") - .send(authResponse); + return res.status(200).set("Content-Type", "application/json").send(authResponse); } ``` diff --git a/docs/verifier/verification-library/zk-query-language.md b/docs/verifier/verification-library/zk-query-language.md index 3463b40f..97e9fabe 100644 --- a/docs/verifier/verification-library/zk-query-language.md +++ b/docs/verifier/verification-library/zk-query-language.md @@ -77,10 +77,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/0xPolygonID/tutorial-examples/main/credential-schema/schemas-examples/proof-of-humanity/proof-of-humanity.jsonld", credentialSubject: { isHuman: { - $eq: 1 - } - } - } + $eq: 1, + }, + }, + }, }; ``` @@ -153,10 +153,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { birthday: { - $lt: 20010101 - } - } - } + $lt: 20010101, + }, + }, + }, }; ``` @@ -228,10 +228,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/0xPolygonID/tutorial-examples/main/credential-schema/schemas-examples/employee-data/employee-data.jsonld", credentialSubject: { monthlySalary: { - $gt: 1000 - } - } - } + $gt: 1000, + }, + }, + }, }; ``` @@ -305,10 +305,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/0xPolygonID/tutorial-examples/main/credential-schema/schemas-examples/proof-of-dao-role/proof-of-dao-role.jsonld", credentialSubject: { role: { - $in: [4, 5] - } - } - } + $in: [4, 5], + }, + }, + }, }; ``` @@ -380,9 +380,9 @@ const proofRequest: protocol.ZKPRequest = { credentialSubject: { countryCode: { $nin: [840, 120, 340, 509], - } - } - } + }, + }, + }, }; ``` @@ -426,11 +426,10 @@ Corresponding QR Code } } ``` +
- - ## Not-equal - Operator 6 **Credential Schema** @@ -455,10 +454,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { countryCode: { - $ne: 840 - } - } - } + $ne: 840, + }, + }, + }, }; ``` @@ -502,17 +501,15 @@ Corresponding QR Code } } ``` + - - :::info Operators 7-11 are supported only by [V3 circuit](../v3-circuit.md) ::: - ## Less-than-equal - Operator 7 **Credential Schema** @@ -537,10 +534,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { birthday: { - $lte: 20010101 - } - } - } + $lte: 20010101, + }, + }, + }, }; ``` @@ -549,7 +546,6 @@ const proofRequest: protocol.ZKPRequest = { Please, check out our [Onchain verification tutorial to build a query](/docs/verifier/on-chain-verification/overview.md) to learn more how to set zk request for onchain - Corresponding QR Code ```json @@ -589,7 +585,6 @@ Corresponding QR Code - ## Greater-than-equal - Operator 8 **Credential Schema** @@ -614,10 +609,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { birthday: { - $gte: 20010101 - } - } - } + $gte: 20010101, + }, + }, + }, }; ``` @@ -626,7 +621,6 @@ const proofRequest: protocol.ZKPRequest = { Please, check out our [Onchain verification tutorial to build a query](/docs/verifier/on-chain-verification/overview.md) to learn more how to set zk request for onchain - Corresponding QR Code ```json @@ -666,7 +660,6 @@ Corresponding QR Code - ## Between - Operator 9 **Credential Schema** @@ -691,10 +684,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { birthday: { - $between: [19960101, 20010101] - } - } - } + $between: [19960101, 20010101], + }, + }, + }, }; ``` @@ -703,7 +696,6 @@ const proofRequest: protocol.ZKPRequest = { Please, check out our [Onchain verification tutorial to build a query](/docs/verifier/on-chain-verification/overview.md) to learn more how to set zk request for onchain - Corresponding QR Code ```json @@ -743,7 +735,6 @@ Corresponding QR Code - ## Non-between - Operator 10 **Credential Schema** @@ -768,10 +759,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { birthday: { - $nonbetween: [19960101, 20010101] - } - } - } + $nonbetween: [19960101, 20010101], + }, + }, + }, }; ``` @@ -780,7 +771,6 @@ const proofRequest: protocol.ZKPRequest = { Please, check out our [Onchain verification tutorial to build a query](/docs/verifier/on-chain-verification/overview.md) to learn more how to set zk request for onchain - Corresponding QR Code ```json @@ -820,7 +810,6 @@ Corresponding QR Code - ## Exists - Operator 11 **Credential Schema** @@ -846,10 +835,10 @@ const proofRequest: protocol.ZKPRequest = { "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { countryCode: { - $exists: true - } - } - } + $exists: true, + }, + }, + }, }; ``` @@ -858,7 +847,6 @@ const proofRequest: protocol.ZKPRequest = { Please, check out our [Onchain verification tutorial to build a query](/docs/verifier/on-chain-verification/overview.md) to learn more how to set zk request for onchain - Corresponding QR Code ```json @@ -894,11 +882,10 @@ Corresponding QR Code } } ``` + - - ## Proof of credential issuance ($noop) By not including the credentialSubject in the query, a verifier requests proof of the presence of a credential in the user's wallet without requiring any condition to be met or revealing any specific detail about the credential. @@ -915,12 +902,11 @@ const proofRequest: protocol.ZKPRequest = { allowedIssuers: ["*"], type: "KYCCountryOfResidenceCredential", context: - "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld" - } + "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", + }, }; ``` - ## Selective Disclosure Selective Disclosure is a feature that enables requests for specific data from the ID Holder. Using a similar approach to the ZK language equal operation, the Verifier sends a verification request for a piece of the Holder's identity. As seen below, the way to make this request is by sending an empty object as a value. @@ -939,11 +925,11 @@ const proofRequest: protocol.ZKPRequest = { context: "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v4.jsonld", credentialSubject: { - countryCode: {} - } - } + countryCode: {}, + }, + }, }; -```` +``` ## Multi query diff --git a/docs/verifier/verifier-backend.md b/docs/verifier/verifier-backend.md index 0286fdd8..d9024c63 100644 --- a/docs/verifier/verifier-backend.md +++ b/docs/verifier/verifier-backend.md @@ -3,7 +3,7 @@ id: verifier-backend title: Verifier Backend API sidebar_label: Verifier Backend API description: Verifier Backend API. -keywords: +keywords: - docs - polygon id - ID holder @@ -16,23 +16,26 @@ The [Verifier Backend](https://github.com/0xPolygonID/verifier-backend) project It is built using libraries developed by the iden3 protocol team. Below, we'll explain how to install it using Docker and how it can be used to perform zero knowledge proofs. -You can try our [Verifier Backend API](https://verifier-backend.polygonid.me/) running. +You can try our [Verifier Backend API](https://verifier-backend.polygonid.me/) running. ## Local Installation + To run the verifier backend with Docker, after cloning the code from the repository, simply follow these steps: 1. Create a file named `resolvers_settings.yaml`, using the `resolvers_settings_samples.yaml` file as a base. In this file, configure only your RPC for the Polygon Amoy and Main networks, i.e., the two variables named `networkURL`. + ```yaml polygon: amoy: contractAddress: 0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124 - networkURL: https://polygon-amoy.g.alchemy.com/v2/ + networkURL: https://polygon-amoy.g.alchemy.com/v2/ main: contractAddress: 0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D networkURL: https://polygon-mainnet.g.alchemy.com/v2/X2 ``` 2. Create a .env file (you can use the .env-sample file as a base). + ```shell VERIFIER_BACKEND_HOST=https://your-public-ip VERIFIER_BACKEND_PORT=3010 @@ -42,7 +45,9 @@ VERIFIER_BACKEN_AMOY_SENDER_DID=did:polygonid:polygon:amoy:2qH7TstpRRJHXNN4o49Fu VERIFIER_BACKEND_MAIN_SENDER_DID=did:polygonid:polygon:main:2q4Q7F7tM1xpwUTgWivb6TgKX3vWirsE3mqymuYjVv VERIFIER_BACKEND_RESOLVER_SETTINGS_PATH=./resolvers_settings.yaml ``` + From this file, it's important and necessary to modify the following variable: + ```shell VERIFIER_BACKEND_HOST: must be the public IP of the machine where the verifier backend is running. ``` @@ -51,34 +56,34 @@ VERIFIER_BACKEND_HOST: must be the public IP of the machine where the verifier b If everything went well, you will be able to see the API documentation at: `https://your-public-ip/` - ### Alternative 1 + The following image shows the simplest flow to generate a QR code to request a ZK Proof as a verifier:
- The endpoint `/sign-in` allows creating that QR code and configuring the backend to later validate the proof. A possible body for this endpoint could be the following: ```json { "chainID": "80001", "circuitID": "credentialAtomicQuerySigV2", - "skipClaimRevocationCheck": false, + "skipClaimRevocationCheck": false, "query": { "context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld", "allowedIssuers": ["*"], "type": "KYCAgeCredential", "credentialSubject": { - "birthday": { - "$eq": 19960424 - } + "birthday": { + "$eq": 19960424 + } } } } ``` + Keep in mind that: - the `chainID` field can be 80002 for Amoy or 137 for the Mainnet. @@ -88,87 +93,81 @@ This endpoint will respond with a similar response to the following: ```json { - "qrCode": { - "body": { - "callbackUrl": "https://your-public-ip/callback?sessionID=975903", - "reason": "test flow", - "scope": [ - { - "circuitId": "credentialAtomicQuerySigV2", - "id": 1, - "query": { - "allowedIssuers": [ - "*" - ], - "context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld", - "credentialSubject": { - "birthday": { - "$eq": 19960424 - } - }, - "skipClaimRevocationCheck": false, - "type": "KYCAgeCredential" - } - } - ] - }, - "from": "did:polygonid:polygon:amoy:2qH7TstpRRJHXNN4o49Fu9H2Qismku8hQeUxDVrjqT", - "id": "7f38a193-0918-4a48-9fac-36adfdb8b542", - "thid": "7f38a193-0918-4a48-9fac-36adfdb8b542", - "typ": "application/iden3comm-plain-json", - "type": "https://iden3-communication.io/authorization/1.0/request" + "qrCode": { + "body": { + "callbackUrl": "https://your-public-ip/callback?sessionID=975903", + "reason": "test flow", + "scope": [ + { + "circuitId": "credentialAtomicQuerySigV2", + "id": 1, + "query": { + "allowedIssuers": ["*"], + "context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld", + "credentialSubject": { + "birthday": { + "$eq": 19960424 + } + }, + "skipClaimRevocationCheck": false, + "type": "KYCAgeCredential" + } + } + ] }, - "sessionID": 975903 + "from": "did:polygonid:polygon:amoy:2qH7TstpRRJHXNN4o49Fu9H2Qismku8hQeUxDVrjqT", + "id": "7f38a193-0918-4a48-9fac-36adfdb8b542", + "thid": "7f38a193-0918-4a48-9fac-36adfdb8b542", + "typ": "application/iden3comm-plain-json", + "type": "https://iden3-communication.io/authorization/1.0/request" + }, + "sessionID": 975903 } ``` - The value of the `qrCode` field is the one that should be displayed as a QR code to be scanned by the Polygon ID wallet. The `sessionID` should be used to check the status of the proof. To query the status of the proof, i.e., whether it was valid or not, you should call the endpoint `/status?sessionID=975903`. ### Alternative 2 - QR Store -Flow 2 allows the generation of QR codes that are sometimes more comfortable to read for certain mobile phones. +Flow 2 allows the generation of QR codes that are sometimes more comfortable to read for certain mobile phones.
- In this case, after calling the '/sign-in' endpoint, you should call the '/qr-store' endpoint using as a body the response obtained from the '/sign-in' endpoint in the 'qrCode' field. For example, ```json { - "body": { - "callbackUrl": "https://your-public-ip/callback?sessionID=975903", - "reason": "test flow", - "scope": [ - { - "circuitId": "credentialAtomicQuerySigV2", - "id": 1, - "query": { - "allowedIssuers": [ - "*" - ], - "context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld", - "credentialSubject": { - "birthday": { - "$eq": 19791109 - } - }, - "type": "KYCAgeCredential" - } + "body": { + "callbackUrl": "https://your-public-ip/callback?sessionID=975903", + "reason": "test flow", + "scope": [ + { + "circuitId": "credentialAtomicQuerySigV2", + "id": 1, + "query": { + "allowedIssuers": ["*"], + "context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld", + "credentialSubject": { + "birthday": { + "$eq": 19791109 } - ] - }, - "from": "did:polygonid:polygon:amoy:2qH7TstpRRJHXNN4o49Fu9H2Qismku8hQeUxDVrjqT", - "id": "7f38a193-0918-4a48-9fac-36adfdb8b542", - "thid": "7f38a193-0918-4a48-9fac-36adfdb8b542", - "typ": "application/iden3comm-plain-json", - "type": "https://iden3-communication.io/authorization/1.0/request" + }, + "type": "KYCAgeCredential" + } + } + ] + }, + "from": "did:polygonid:polygon:amoy:2qH7TstpRRJHXNN4o49Fu9H2Qismku8hQeUxDVrjqT", + "id": "7f38a193-0918-4a48-9fac-36adfdb8b542", + "thid": "7f38a193-0918-4a48-9fac-36adfdb8b542", + "typ": "application/iden3comm-plain-json", + "type": "https://iden3-communication.io/authorization/1.0/request" } ``` @@ -180,6 +179,6 @@ iden3comm://?request_uri=https://your-public-ip/qr-store?id=9d5beb41-3108-4341-a This response is the one you should then display as a QR code. - ### Some extra commands -To stop the verifier backend, you can execute `make stop`. The preceding command halts the Docker container. If you want to restart the verifier backend, for instance, if you updated the code, you can execute `make restart`. \ No newline at end of file + +To stop the verifier backend, you can execute `make stop`. The preceding command halts the Docker container. If you want to restart the verifier backend, for instance, if you updated the code, you can execute `make restart`. diff --git a/docs/wallet/wallet-sdk/polygonid-sdk/credential/get-credential-by-id.md b/docs/wallet/wallet-sdk/polygonid-sdk/credential/get-credential-by-id.md index c020aed3..994db1af 100644 --- a/docs/wallet/wallet-sdk/polygonid-sdk/credential/get-credential-by-id.md +++ b/docs/wallet/wallet-sdk/polygonid-sdk/credential/get-credential-by-id.md @@ -33,4 +33,4 @@ where: This method is essential for retrieving credentials based on their unique identifiers, allowing for specific operations on individual credentials within the SDK. -::: \ No newline at end of file +::: diff --git a/docs/wallet/wallet-sdk/polygonid-sdk/proof/init-circuits-download-and-get-info-stream.md b/docs/wallet/wallet-sdk/polygonid-sdk/proof/init-circuits-download-and-get-info-stream.md index 8c9c8cf6..b07a8f17 100644 --- a/docs/wallet/wallet-sdk/polygonid-sdk/proof/init-circuits-download-and-get-info-stream.md +++ b/docs/wallet/wallet-sdk/polygonid-sdk/proof/init-circuits-download-and-get-info-stream.md @@ -35,4 +35,4 @@ so far. This method is used to download the necessary circuits for proof generation. The download progress can be monitored by listening to the returned stream. -::: \ No newline at end of file +::: diff --git a/docs/wallet/wallet-sdk/polygonid-sdk/proof/is-already-downloaded-circuits-from-server.md b/docs/wallet/wallet-sdk/polygonid-sdk/proof/is-already-downloaded-circuits-from-server.md index f3c78a5c..e8255688 100644 --- a/docs/wallet/wallet-sdk/polygonid-sdk/proof/is-already-downloaded-circuits-from-server.md +++ b/docs/wallet/wallet-sdk/polygonid-sdk/proof/is-already-downloaded-circuits-from-server.md @@ -33,4 +33,4 @@ returns `true`, otherwise, it returns `false`. This method is used to avoid unnecessary downloads of the circuits for proof generation. It checks if the circuits file already exists in the local storage. -::: \ No newline at end of file +::: diff --git a/docusaurus.config.js b/docusaurus.config.js index fc0a5b82..e2d19ab7 100755 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -104,7 +104,7 @@ module.exports = { { href: "/docs/smart-contracts/", label: "Smart Contracts", - } + }, ], }, { diff --git a/src/data/content-data.js b/src/data/content-data.js index 21c0d380..92160546 100644 --- a/src/data/content-data.js +++ b/src/data/content-data.js @@ -13,7 +13,6 @@ export const contentData = { target: "", type: "secondary", }, - ], headVideoLink: "https://www.youtube.com/embed/i3exuUa65sE?autoplay=1&controls=0&cc_load_policy=0&showinfo=0&rel=0&modestbranding=1",