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.
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.
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.
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.
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 runCommon 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.yamlPull 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.