Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(iam, app, platforms): add micapass stamp #2194

Closed
wants to merge 2 commits into from

Conversation

dimonkov
Copy link

@dimonkov dimonkov commented Feb 20, 2024

Intro

Micapass is AML compliance on-chain solution preventing bad actors getting access to DeFi protocols by offering wallet screening, KYC/AML person, and other proofs on-chain (humanity, geo location, etc.)

This pull request adds Micapass that validates the completion of several interactions with Micapass dApp. These actions can be performed on https://app.micapass.com/, where user can deploy their identity, perform KYC and do their wallet screening checks.

Micapass provides an API that can be used to check completion for each of these objectives(API key protected)*:

User story

As a passport holder, I want to verify my profile with Micapass and present one of / or all requested proofs: my identity deployment proof, KYC status, wallet screening proof, etc. in order to showcase my unique humanity to the community, compliancy with AML requirements and ensure transparency in verification process.

Acceptance criteria

GIVEN I have deployed Micapass Identity, with or without proofs
WHEN I verify my stamp
THEN I should get credential(s) from Micapass providers

Tech details

API endpoints for each type of verification are provided below. All of the endpoints may or may not return expiration period for the stamps (that is subject to change from the Micapass system side). In case API responds with expiration interval, it is used for the stamp's expiration, otherwise(for example, for a relatively immutable proof, such as identity deployment fact) - it's not provided and a default is used.

For API key, please reach out to [email protected].

Identity Deployment check

Checks if the user has successfully deployed an identity on any of the supported chains

curl --location 'https://api.micapass.com/api/v1/check/gitcoin/identity?address=[blockchain_address]' \
--header 'x-api-key: [MICAPASS-API-KEY]'

KYC verification check

Checks if the user has passed KYC verification and has an active proof in Micapass system.

curl --location 'https://api.micapass.com/api/v1/check/gitcoin/kyc-verified?address=[blockchain_address]' \
--header 'x-api-key: [MICAPASS-API-KEY]'

Wallet screening check

Checks if the user has an active wallet screening proof in Micapass system.

curl --location 'https://api.micapass.com/api/v1/check/gitcoin/wallet-verified?address=[blockchain_address]' \
--header 'x-api-key: [MICAPASS-API-KEY]'

Open questions

Micapass want to dynamically/conditionally include records into the stamps, based on the Micapass backend response for each of the above verification links. Is that allowed, or the records structure/amount for each provider must be fixed and documented?

Checklist

Stamp Provider MicapassIdentityProvider

  • The Stamp provider name is globally unique (and should not have been used previously). This is because the provider name will be included in the record used to create the Stamp hash:
  • The implementation has been unit tested
  • Verification payload
    json
    valid: true / false,
    record: {
    ... // Unique payload identifying user
    }
    - [x] The attribute valid is false if the Stamp verification fails
    - [x] The record must contain the following attributes:
    • 1 or more attributes uniquely identifying the user:
      • An ETH address - it should always be lower case (not checksummed)
  • The payload should never contain a field named pii
    • This field is reserved for internal use

Stamp Provider MicapassKycProvider

  • The Stamp provider name is globally unique (and should not have been used previously). This is because the provider name will be included in the record used to create the Stamp hash:
  • The implementation has been unit tested
  • Verification payload
    json
    valid: true / false,
    record: {
    ... // Unique payload identifying user
    }
    - [x] The attribute valid is false if the Stamp verification fails
    - [x] The record must contain the following attributes:
    • 1 or more attributes uniquely identifying the user:
      • An ETH address - it should always be lower case (not checksummed)
  • The payload should never contain a field named pii
    • This field is reserved for internal use

Stamp Provider MicapassWalletScreeningProvider

  • The Stamp provider name is globally unique (and should not have been used previously). This is because the provider name will be included in the record used to create the Stamp hash:
  • The implementation has been unit tested
  • Verification payload
    json
    valid: true / false,
    record: {
    ... // Unique payload identifying user
    }
    - [x] The attribute valid is false if the Stamp verification fails
    - [x] The record must contain the following attributes:
    • 1 or more attributes uniquely identifying the user:
      • An ETH address - it should always be lower case (not checksummed)
  • The payload should never contain a field named pii
    • This field is reserved for internal use

@dimonkov dimonkov closed this Nov 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

1 participant