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).
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.
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.
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
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
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