Available Now

Hanzo ID

Decentralized identity for Web3

Extend your IAM to support Web3 identities. DIDs, Verifiable Credentials, and on-chain attestations—with single sign-on across all Hanzo services and your own applications.

Decentralized Identifiers (DIDs)

Self-sovereign identity using W3C DID standards. Users own their identity.

Verifiable Credentials

Issue and verify credentials that users can share across applications.

On-Chain Attestations

Permanent, verifiable attestations stored on-chain for compliance and reputation.

Single Sign-On

One identity across all Hanzo services and integrated applications.

Back to Web3 Overview

Get Your API Key

Start building in under 5 minutes

99.999%
Uptime
<50ms
Latency
100+
Chains

No credit card required. Free tier includes 300M compute units/month.

Trusted by developers building:

DeFiNFTsPaymentsGamingAI Agents

Key Capabilities

Everything you need, nothing you don't.

Decentralized Identifiers (DIDs)

Self-sovereign identity using W3C DID standards. Users own their identity.

Verifiable Credentials

Issue and verify credentials that users can share across applications.

On-Chain Attestations

Permanent, verifiable attestations stored on-chain for compliance and reputation.

Single Sign-On

One identity across all Hanzo services and integrated applications.

KYC Integration

Connect to KYC providers and issue verified identity credentials.

Privacy-Preserving

Zero-knowledge proofs for selective disclosure. Prove attributes without revealing data.

Credential Types

Built-in schemas for identity, age verification, accreditation, and more.

Wallet Integration

Store credentials in Hanzo Wallet. Users control their identity.

Simple to Integrate

Get started with just a few lines of code. SDKs for every language.

IdentityAttestation.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@hanzo/identity/IEAS.sol";
import "@hanzo/identity/ISchemaRegistry.sol";

/// @title IdentityAttestation - On-chain identity and verifiable credentials
/// @notice DID-linked attestations using Ethereum Attestation Service (EAS)
contract IdentityAttestation {
    IEAS public eas;
    ISchemaRegistry public schemaRegistry;

    // Schema UIDs for different credential types
    bytes32 public constant KYC_SCHEMA = keccak256("bool verified,uint64 expiry,string provider");
    bytes32 public constant AGE_SCHEMA = keccak256("bool ageOver18,bool ageOver21,uint64 verifiedAt");
    bytes32 public constant ACCREDITATION_SCHEMA = keccak256("string accreditationType,string jurisdiction,uint64 validUntil");

    // DID to attestation mapping
    mapping(bytes32 => bytes32[]) public didAttestations;

    event AttestationCreated(
        bytes32 indexed did,
        bytes32 indexed attestationId,
        bytes32 indexed schemaId
    );

    event CredentialRevoked(
        bytes32 indexed did,
        bytes32 indexed attestationId
    );

    constructor(address _eas, address _schemaRegistry) {
        eas = IEAS(_eas);
        schemaRegistry = ISchemaRegistry(_schemaRegistry);
    }

    // Create KYC attestation for a DID
    function attestKYC(
        bytes32 did,
        address recipient,
        bool verified,
        uint64 expiry,
        string calldata provider
    ) external returns (bytes32 attestationId) {
        bytes memory data = abi.encode(verified, expiry, provider);

        AttestationRequest memory request = AttestationRequest({
            schema: KYC_SCHEMA,
            data: AttestationRequestData({
                recipient: recipient,
                expirationTime: expiry,
                revocable: true,
                refUID: bytes32(0),
                data: data,
                value: 0
            })
        });

        attestationId = eas.attest(request);
        didAttestations[did].push(attestationId);
        emit AttestationCreated(did, attestationId, KYC_SCHEMA);
    }

    // Create age verification attestation
    function attestAge(
        bytes32 did,
        address recipient,
        bool ageOver18,
        bool ageOver21
    ) external returns (bytes32 attestationId) {
        bytes memory data = abi.encode(ageOver18, ageOver21, block.timestamp);

        AttestationRequest memory request = AttestationRequest({
            schema: AGE_SCHEMA,
            data: AttestationRequestData({
                recipient: recipient,
                expirationTime: 0, // No expiry
                revocable: true,
                refUID: bytes32(0),
                data: data,
                value: 0
            })
        });

        attestationId = eas.attest(request);
        didAttestations[did].push(attestationId);
        emit AttestationCreated(did, attestationId, AGE_SCHEMA);
    }

    // Verify an attestation is valid
    function verifyAttestation(bytes32 attestationId) external view returns (
        bool valid,
        address recipient,
        uint64 expirationTime,
        bool revoked
    ) {
        Attestation memory attestation = eas.getAttestation(attestationId);
        valid = attestation.uid != bytes32(0);
        recipient = attestation.recipient;
        expirationTime = attestation.expirationTime;
        revoked = attestation.revocationTime > 0;
    }

    // Revoke a credential
    function revokeCredential(bytes32 did, bytes32 attestationId) external {
        eas.revoke(RevocationRequest({
            schema: KYC_SCHEMA,
            data: RevocationRequestData({
                uid: attestationId,
                value: 0
            })
        }));
        emit CredentialRevoked(did, attestationId);
    }

    // Get all attestations for a DID
    function getAttestations(bytes32 did) external view returns (bytes32[] memory) {
        return didAttestations[did];
    }
}

Built For

Compliant DeFi

Enable permissioned DeFi with verified identity credentials. Meet regulatory requirements while preserving privacy.

Token Gating

Gate access to content, communities, or features based on verifiable credentials.

Reputation Systems

Build on-chain reputation from verified credentials and past interactions.

Cross-App Identity

Users carry their verified identity and reputation across multiple applications.

Start Building with Hanzo ID

Get your free API key and ship your first request in under 5 minutes. No credit card required.

Get Hanzo ID

Deploy in seconds or self-host with the open-source release.