Skip to content

iscc/iscc-registry

Repository files navigation

ISCC - Decentralized Content Registry

Tests

About iscc-registry

iscc-registry is a web application for running a decentralized, cross-chain, content registry (also called Meta-Registry) based on the declaration protocol of the International Standard Content Code (ISCC).

Overview

Frontend

The frontend application at the site root shows a listing of the latest ISCC registrations and allows for basic search and detail views of declaration data. URL of the scheme my-install.site/ are resolved to their indended redirection target.

API

The app provides a REST API for ISCC-ID lookups and syncronization with observers. An interactive demo frontend is available at my-install.site/api/v1/docs

Dashboard

The backend application supports content moderation for operators at my-install.site/dashboard.

Background

An ISCC-CODE is an open-source, content-based identifier and fingerprint for digital media assets. By declaring ISCC-CODEs on public blockchains users can obtain a short and globally unique ISCC-ID which associates the ISCC-CODE with their blockchain wallet address/identity and optionally a link to machine-readable external metadata.

ISCC Decentralized Content Registry Architecture

Public ISCC-CODE declarations from different blockchains are monitored by ISCC-OBSERVERs and registered with an iscc-registry via its REST Api. The iscc-registry calculates and indexes ISCC-IDs based on the events received from observers. The resulting ISCC-IDs are identifiers for digital media assets with the following mandatory information attached:

  • An ISCC-CODE, which is a content-based identifier and fingerprint of a media assset
  • A DECLARER, which is the blockchain address of entity that signed a declaration transaction
  • A timestamp of the declaration

An ISCC declaraton can optionally provide

  • A URL with extended metdadata about the digital media asset
  • A redirection target that can be used like a URL-shortener (e.g. https://iscc-reg.tld/<iscc-id>)
  • The blockchain address of a registrar that facilitated the declaration

Develoment Setup

Requirements:

Get up and running:

git clone https://github.com/iscc/iscc-registry.git
cd iscc-registry
poetry install
poe demo
python manage.py runserver

Configuration

The service is configured via environment variables:

  • DEBUG - Run the service in debug mode (True/False). Disable for production use.
  • TESTNET - Enable if you are indexing declarations from testnetworks (True/False).
  • HUEY_SIMULATE - Run background tasks in immediate/blocking mode (True/False). Disable for production use.
  • SECRET_KEY - Set to a unique, unpredictable value (used by Django for cryptographic signing).
  • OBSERVER_TOKEN - Set to a secure string used for authentication of observers.
  • SITE_ADDRESS - Set to domain (including scheme) of the installation.
  • SITE_EMAIL - Set to operators email address (if using Caddyfile).
  • ALLOWED_HOSTS - All domains (without scheme) the web app will respond to.
  • CSRF_TRUSTED_ORIGINS - A comma separated list of trusted origins for unsafe requests (e.g. POST).
  • CORS_ALLOW_ALL_ORIGINS - If True, all origins will be allowed to make api requests.
  • DATABASE_URL - Database url including username password for connecting to database.
  • POSTGRES_USER - Postgres username (if using local postgress containter).
  • POSTGRES_PASSWORD - Postgress password (if using local postrgress container).
  • REDIS_URL - Redis connection string for (used by task queue).
  • IPFS_GATEWAY - IPFS Gateway URL used for ingesting metadata.
  • IPFS_RETRIES - Number of times to try loading metadata via IPFS.
  • IPFS_RETRY_DELAY - Delay between retries in number of seconds.
  • SENTRY_DSN - Optional connection string to sentry.io for error reporting.
  • READ_TIMEOUT - Read timeout in seconds for metadata downloads.

See example values