You can claim your Galxe Passport here: https://app.galxe.com/passport

Passport v2.1

In mid-September 2024, we upgraded Passport from version v2.0 to v2.1. Key updates include:

  • Added document_expiration_date to the schema, allowing rejection of documents that are near expiration.
  • Introduced proof_of_time to the schema, which tracks the time difference between the first and most recent verification. For example, if a user first verified their government ID in 2022 and re-verified their selfie in 2024, the time delta is 2 years, increasing confidence in the user’s authenticity.
  • Added last_revoke_time to the schema to store the timestamp of the user’s most recent passport revocation.

New users will automatically receive their passport credential in v2.1. Existing users on v1 and v2 can upgrade by clicking the upgrade button at https://app.galxe.com/passport.

Type

”Galxe Passport v2.1” credential type is registered onchain as a custom primitive type with type ID 10001.

Type IDNameDescriptionDefinitionExample
10001Galxe Passport v2.1Galxe Passport v2.1birthdate:uint<64>; gender:prop<8,c,1>; id_country:prop<16,c,1>; id_class:prop<8,c,1>; document_expiration_date:uint<64>; proof_of_time:uint<64>; last_revoke_time:uint<64>; last_selfie_date:uint<64>; total_sefie_verified:uint<8>Your Personal Identifiable Information (PII) after creating your passport here

Galxe Passport v2.1 type definition contains the following fields:

  • birthdate:uint<64>: User’s birthdate in unix timestamp.
  • gender:prop<8,c,1>: User’s gender, according to their government issued ID.
    • Custom hash function mapping:
      • Male = 1
      • Female = 2
      • X = 3 (undermined from government ID)
  • id_country:prop<16,c,1>: Country of ID issurance.
    • Custom hash function mapping:
      • ISO-3166-1 Alpha 2 format (2-letter country code) = ISO-3166-1 numeric code
  • id_class:prop<8,c,1>:
    • Custom hash function mapping:
      • CertificateOfCitizenship = 1
      • ConsularID = 2
      • DriversLicense = 3
      • ColombiaForeignerID = 4
      • CanadaHealthInsuranceCard = 5
      • IdentificationCard = 6
      • RussiaInternalPassport = 7
      • AustraliaKeypassID = 8
      • SingaporeLongTermVisitPass = 9
      • MunicipalID = 10
      • JapanMyNumberCard = 11
      • PhilippinesNationalBureauOfInvestigationCertificate = 12
      • SingaporeNationalResidencyID = 13
      • PhilippinesOverseasForeignWorkerCard = 14
      • ResidencePermit = 15
      • IndiaPermanentAccountNumberCard = 16
      • PhilippinesPostalIdentificationCard = 17
      • Passport = 18
      • PassportCard = 19
      • PermanentResidenceCard = 20
      • PhilippinesSocialSecuritySystemCard = 21
      • USRefugeeTravelDocument = 22
      • CanadaTribalID = 23
      • PhilippinesUnitedMultiPurposeID = 24
      • VoterID = 25
      • ImmigrationVisa = 26
      • WorkPermit = 27
    • More information can be found here: https://docs.withpersona.com/reference/government-id-verifications#government-id-types
  • document_expiration_date:uint<64>: Government ID expiration date in unix timestamp.
  • proof_of_time:uint<64>: Time delta in Unix timestamp between first and latest verification.
  • last_revoke_time:uint<64>: Unix timestamp of user’s latest Galxe Passport revocation date.
  • last_selfie_date:uint<64>: Unix timestamp of user’s latest Galxe Passport Selfie verification date.
  • total_sefie_verified:uint<8>: Count of user’s successful Selfie Verifications.

Example signed credential

{
  "header": {
    "version": "1",
    "type": "10001",
    "context": "238277854774670540602918445255683183190672363274",
    "id": "<omitted>"
  },
  "body": {
    "birthdate": "<omitted>",
    "gender": { "str": "M", "value": "1" },
    "id_country": { "str": "US", "value": "840" },
    "id_class": { "str": "dl", "value": "3" },
    "document_expiration_date": "<omitted>",
    "proof_of_time": "<omitted>",
    "last_revoke_time": "0",
    "last_selfie_date": "<omitted>",
    "total_sefie_verified": "1"
  },
  "signatures": [
    {
      "metadata": {
        "verification_stack": 1,
        "signature_id": "<omitted>",
        "expired_at": "<omitted>",
        "identity_commitment": "<omitted>",
        "issuer_id": "278006727486904618205999958244923369060433544",
        "chain_id": "97",
        "public_key": "GtrdrhiIorbpEkCJb15QN5UgE392xCR1Uhet4A+LLRhaBakE10XuJGktkc90Ql1CcYF+ZOYwEVRp8/KJ0NBrLw=="
      },
      "signature": "<omitted>",
      "attachmentsSignature": "<omitted>"
    }
  ],
  "attachments": {
    "country_code": "US",
    "first_verification_date": "<omitted>",
    "passport_version": "v2.1",
    "first_name": "<omitted>",
    "birth_date": "<omitted>",
    "sex": "M",
    "id_issue_date": "<omitted>",
    "id_expiration_date": "<omitted>",
    "persona_id": "<omitted>",
    "last_name": "<omitted>",
    "nationality": "<omitted>",
    "id_number": "<omitted>",
    "id_class": "dl"
  }
}

Passport v2.0

Type

”Galxe Passport v2” credential type is registered onchain as a custom primitive type with type ID 10000.

Type IDNameDescriptionDefinitionExample
10000Galxe Passport v2Galxe Passport v2birthdate:uint<64>; gender:prop<8,c,1>; id_country:prop<16,c,1>; id_class:prop<8,c,1>; issue_date:uint<64>; first_verification_date:uint<64>; last_selfie_date:uint<64>; total_sefie_verified:uint<8>Your Personal Identifiable Information (PII) after creating your passport here

Galxe Passport v2 type definition contains the following fields:

  • birthdate:uint<64>: User’s birthdate in unix timestamp.
  • gender:prop<8,c,1>: User’s gender, according to their government issued ID.
    • Custom hash function mapping:
      • Male = 1
      • Female = 2
      • X = 3 (undermined from government ID)
  • id_country:prop<16,c,1>: Country of ID issurance.
    • Custom hash function mapping:
      • ISO-3166-1 Alpha 2 format (2-letter country code) = ISO-3166-1 numeric code
  • id_class:prop<8,c,1>:
    • Custom hash function mapping:
      • CertificateOfCitizenship = 1
      • ConsularID = 2
      • DriversLicense = 3
      • ColombiaForeignerID = 4
      • CanadaHealthInsuranceCard = 5
      • IdentificationCard = 6
      • RussiaInternalPassport = 7
      • AustraliaKeypassID = 8
      • SingaporeLongTermVisitPass = 9
      • MunicipalID = 10
      • JapanMyNumberCard = 11
      • PhilippinesNationalBureauOfInvestigationCertificate = 12
      • SingaporeNationalResidencyID = 13
      • PhilippinesOverseasForeignWorkerCard = 14
      • ResidencePermit = 15
      • IndiaPermanentAccountNumberCard = 16
      • PhilippinesPostalIdentificationCard = 17
      • Passport = 18
      • PassportCard = 19
      • PermanentResidenceCard = 20
      • PhilippinesSocialSecuritySystemCard = 21
      • USRefugeeTravelDocument = 22
      • CanadaTribalID = 23
      • PhilippinesUnitedMultiPurposeID = 24
      • VoterID = 25
      • ImmigrationVisa = 26
      • WorkPermit = 27
    • More information can be found here: https://docs.withpersona.com/reference/government-id-verifications#government-id-types
  • issue_date:uint<64>: Government ID issurance date in unix timestamp.
  • first_verification_date:uint<64>: Unix timestamp of user’s first Galxe Passport verification date.
  • last_selfie_date:uint<64>: Unix timestamp of user’s latest Galxe Passport Selfie verification date.
  • total_sefie_verified:uint<8>: Count of user’s successful Selfie Verifications.

Type Artifacts can be found here: https://ipfs.io/ipfs/QmZ4UghikEohVtpJaiAQorBeHNPFZ9vq5TfnE8jTAyLU9k

Example signed credential

{
  "header": {
    "version": "1",
    "type": "385359061158288630711736738957938254712651867393",
    "context": "934334657093539700167251502022510933841607943105",
    "id": "1052489016591343323470769874470399378961347062869"
  },
  "body": {
    "birthdate": "<omitted>",
    "gender": {
      "str": "M",
      "value": "1"
    },
    "id_country": {
      "str": "US",
      "value": "840"
    },
    "id_class": {
      "str": "dl",
      "value": "3"
    },
    "issue_date": "<omitted>",
    "first_verification_date": "<omitted>",
    "last_selfie_date": "<omitted>",
    "total_sefie_verified": "1"
  },
  "signatures": [
    {
      "metadata": {
        "verification_stack": 1,
        "signature_id": "174358...<omitted>",
        "expired_at": "<omitted>",
        "identity_commitment": "2025432...<omitted>",
        "issuer_id": "278006...<omitted>",
        "chain_id": "97",
        "public_key": "Gtrdr...<omitted>"
      },
      "signature": "1+PIQA...<omitted>",
      "attachmentsSignature": "yU8eI8...<omitted>"
    }
  ],
  "attachments": {
    "last_name": "Doe",
    "id_number": "ID-123456",
    "passport_version": "v2.0",
    "first_name": "John"
  }
}

Issurance Workflow

Once user passes KYC verification with Persona, our KYC provider, upon user request, Galxe backend will:

  1. Retrieve all necessary personal identifiable information to issue a Galxe Passport credential.
  2. Generate credential using pre-defined type.
  3. Append other relevant information as attachments.
  4. Galxe-managed issuer sign the credential and its attachments, then add both signatures to the credential.
  5. Return the signed credential back to user, and user will encrypt it with their own passport.
  6. User store the encrypted file in their preferred storage. For now, user will use Galxe Vault for storage with no charge.