Skip to content

canow-co/did-resolver

Repository files navigation

cheqd DID Resolver

GitHub Workflow Status (branch)

GitHub release (latest SemVer) GitHub Release Date

GitHub release (latest SemVer including pre-releases) GitHub commits since latest release (by date)

GitHub contributors GitHub repo size

ℹ️ Overview

DID methods are expected to provide standards-compliant methods of DID and DID Document ("DIDDoc") production.

The cheqd DID Resolver is designed to implement the W3C DID Resolution specification for did:cheqd method.

📝 Architecture

The Architecture Decision Record for the cheqd DID Resolver describes the architecture & design decisions for this software package.

✅ Quick Start

If you do not want to install anything and just want to resolve a did:cheqd entry from the ledger, you can load the REST API endpoint for resolver.cheqd.net in your browser.

Or, make a request from terminal to this hosted REST API:

curl -X GET https://resolver.cheqd.net/1.0/identifiers/did:cheqd:mainnet:zF7rhDBfUt9d1gJPjx7s1JXfUY7oVWkY

Running your own cheqd DID Resolver using Docker

Docker Compose command

Spinning up a Docker container from the pre-built did-resolver Docker image on Github is as simple as the command below:

docker-compose -f docker/docker-compose.yml --env-file docker/docker-compose.env up --no-build

Docker Compose environment variable configuration

Environment variables needed in Docker Compose are defined in the docker/docker-compose.env file. There are defaults already specified, but you can edit these.

  1. IMAGE_VERSION (default: latest): Version number / tag of the Docker image to run. By default, this is set to pull images from Github Container Registry.
  2. RESOLVER_PORT (default: 8080): Port on which the Resolver service is published/exposed on the host machine. Internally mapped to port 8080 in the container.
  3. RESOLVER_HOME_DIR (default: /resolver): Default config directory inside the Docker container

Configure resolver settings

To configure the resolver, edit the config.yaml file in the root of the @cheqd/did-resolver repository. The values that can be edited are as follows:

  1. ledger
    1. networks: A string specifying the Cosmos SDK gRPC endpoint from which the Resolver pulls data. Format: <did-namespace>=<resource_url>:<resource_port>;...
    2. useTls: Specify whether gRPC connection to ledger should use secure or insecure pulls. Default is true since gRPC uses HTTP/2 with TLS as the transport mechanism.
    3. timeout: Timeout (in seconds) to wait for before any ledger requests are considered to have time out.
  2. resolver
    1. method: A string describing DID Method that the resolver uses. Set to cheqd.
  3. api
    1. listener: A string with address and port where the resolver listens for requests from clients.
    2. resolverPath: A string with path for DID Doc resolution. Example: /1.0/identifiers/:did for requests like /1.0/identifiers/did:cheqd:testnet:MTMxDQKMTMxDQKMT
  4. logLevel: debug/warn/info/error - to define the application log level

Example config.yaml file

ledger:
  # Provide gRPC endpoints for one of more networks "namespaces" to fetch DIDs/DIDDocs from
  # Must be in format "namespace=endpoint:port"
  networks: "mainnet=grpc.cheqd.net:443;testnet=grpc.cheqd.network:443"
  # Specify whether gRPC connection to ledger should use secure or insecure pulls
  # default: true
  useTls: true
  # Specify a timeout value
  timeout: "5s"

resolver:
  method: "cheqd"

api:
  listener: "0.0.0.0:1313"
  resolverPath: "/1.0/identifiers/:did"

logLevel: "warn"

📖 Documentation

Further documentation on cheqd DID Resolver is available on the cheqd Identity Documentation site. This includes instructions on how to do custom builds using Dockerfile / Docker Compose.

💬 Community

The cheqd Community Slack is our primary chat channel for the open-source community, software developers, and node operators.

Please reach out to us there for discussions, help, and feedback on the project.

🙋 Find us elsewhere

Telegram Discord Twitter LinkedIn Slack Medium YouTube

Packages

No packages published

Languages

  • Go 86.9%
  • Python 11.4%
  • Dockerfile 1.1%
  • Shell 0.6%