Skip to content

iscc/iscc-did-driver

Repository files navigation

ISCC - DID Driver

Tests

About iscc-did-driver

The International Standard Content Code (ISCC) is a similarity preserving identifier for digital media assets.

ISCC-CODEs are generated algorithmically from digital content, just like cryptographic hashes. However, instead of using a single cryptographic hash function to identify data only, the ISCC uses various algorithms to create a composite identifier that exhibits similarity-preserving properties (soft hash). ISCC-CODEs can also be registered using a decentralized protocol to obtain a short, unique and resolvable ISCC-ID.

iscc-did-driver is a service application that resolves Decentralized Identifiers (DIDs) for the ISCC DID method based on the W3C DID Core 1.0 and DID Resolution specifications.

Overview

The service provides a REST API for resolving did:iscc identifiers sourced from public ledger registrations. The service can be run standalone or plugged in as a driver for the DIF Universal Resolver.

A public instance with interactive API documentation is available at https://did.iscc.id.

How it works

A did:iscc identifier is the lowercase base32 of an ISCC-IDv1, which encodes its issuing ISCC-HUB as a (realm, hub_id) pair (realm 1 = mainnet, 0 = testnet sandbox). To resolve a DID the driver decodes that pair, looks the HUB up in the HUB-LIST, fetches the signed declaration JSON from the HUB, and maps it to a DID document. The HUB-LIST is loaded at startup from its canonical location and refreshed periodically so newly added HUBs resolve without redeploying the driver.

Note: only ISCC-IDv1 is resolvable. Legacy V0 (blockchain-anchored) identifiers no longer resolve.

Configuration

The service is configured via environment variables:

  • ISCC_DID_DRIVER_DEBUG - Run the service in debug mode (default: False)
  • ISCC_DID_DRIVER_HUBLIST_REFRESH - Interval in seconds for refreshing the HUB-LIST, 0 to disable (default: 3600)
  • ISCC_DID_DRIVER_SENTRY_DSN - Optional connection string to sentry.io for error reporting (default: "").

An enviroment configuration placed in a .env file in the working directory will be automatically loaded at application startup.

Development Setup

Requirements:

Get up and running with:

git clone https://github.com/iscc/iscc-did-driver.git
cd iscc-did-driver
uv sync
uv run poe run

Common tasks (see [tool.poe.tasks] in pyproject.toml):

uv run poe test            # run the test suite with coverage
uv run poe format          # format with ruff
uv run poe precommit       # run all prek quality gates
uv run poe codegen         # regenerate schema.py from openapi.yaml

Maintainers

@titusz

Contributing

Pull requests are welcome. For significant changes, please open an issue first to discuss your plans. Please make sure to update tests as appropriate.

You may also want join our developer chat on Telegram at https://t.me/iscc_dev.

About

ISCC DID driver for Uniresolver

Topics

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors