Content Fabric Concepts

What is the Content Fabric?

The Content Fabric is a blockchain-controlled, decentralized system designed from the ground up to manage and distribute content through a unified architecture, using a built-in commerce and access control framework.

Content Fabric nodes provide functions that are conventionally provided by separate services and software stacks:

  • content storage and retrieval
  • data storage and query APIs
  • encryption and access control
  • content processing - in particular for audio/video encoding and packaging
  • high-capacity, high-quality consumer-grade content delivery - in particular for audio/video HLS/DASH (optionally DRMed) delivery to all standard devices and browsers
  • full application backend - ability to build fully functional sites without the need of any additional backend services for media and metadata
  • commerce via blockchain liquidity and conventional payment gateways
  • ‘programmable content’ - ability to run server-side custom logic and content processing

Architecture

The Content Fabric architecture is a network of nodes, providing the following functions:

  • Validator Nodes
    • Ensure transactions are packed in blocks and committed correctly to the blockchain
  • Content Nodes
    • Computers specified to the required hardware capacity and performance, running the Content Fabric software stack
    • Store and serve content, and are in charge of executing all content processing functions
    • Provide both the content API and blockchain RPC endpoints
  • Key Services Nodes
    • A “Key Service” is commonly referred to as a “KMS” and can be provided by one or multiple key services nodes (for capacity and redundancy)
    • Provide cryptographic API endpoints for encryption, proxy re-encryption and decryption, conforming to blockchain contract policies.

Logical Architecture and Data Model

The logical structure of the Content Fabric is implemented by EVM contracts - also called ‘base contracts’. These contracts correspond to specific functionalities in a hierarchical fashion.

Content Spaces

The top-level contract is the Content Space. There can be any number of Content Space contracts on a given network. The Content Space is a registry of all Content Nodes (the providers of content resources) participating in the space, as well as all Tenants.

Tenants

The first step in using the Content Fabric is the set up of a Tenant. A Tenant can represent a single user, a large organization, and everything in between. A Tenant is created in a Content Space by a special key pair, conventionally called the ’tenant root key’. The term ’tenancy’ is commonly used to collectively refer to everything controlled by a specific Tenant.

Users and Access Groups

Users (which can be humans or applications) have Ethereum keys (private/public key pairs). Each human and automated process (application) should use a different key. (If you are looking for information how to create a new key, see Creating a New User.)

Once a Tenant is created, the ’tenant root key’ can be used to create Access Groups, which are used to grant users access to operate the tenancy’s administrative functions and its content. An Access Group has members and managers (a list of users who can add and remove members).

Typically the following Access Groups are created for each Tenant:

  • Tenant Admins - Access to all administrative functions of the tenancy, including creating other groups and managing membership.

  • Content Admins - Access to read and edit all content in the tenancy.

  • Content Viewers - Access to view and inspect content, but not to edit.

While these groups are granted appropriate access to everything created during initial Tenant provisioning, they are not automatic for new objects and must be specified explicitly for each created. (If you are looking for information how to manage Access Groups, see Managing Access Groups.)

Content Objects

Content is stored in Content Objects - these are the unit of operating any kind of content on the Content Fabric (what the file is to the file system, basically). A Content Object can contain any amount of data - binary data, media, textual metadata.

Libraries

Content Objects are organized into Libraries. A user with the necessary access rights to a tenancy can create Libraries and further give access to other users or Access Groups to create and operate content within the Library. A Content Object can only belong to one Library.

Typically the following Libraries are created for each Tenant:

  • Title Masters - stores the media sources (also called “Production Masters”), which are mostly accessed by the content operator and never exposed to consumers or external users.
  • Title Mezzanines - stores serviceable and playable media (mezzanine foramats), which are typically exposed to applications and consumers.
  • Properties - stores tenant-level objects: sites, indexes, permissions, global profiles, logos, terms and conditions, etc.

Content Types

Content Objects are also classified by Content Types. For example, a playable feature film would be stored in a Content Object with Content Type ‘Title’. This Content Type is specifically designed to store one or multiple media tracks along with audio, subtitles (potentially multi-variant, multi-language, multi-region, etc.) along with all associated artwork, media assets and metadata (e.g. film title, synopsis, cast, ratings). Each Content Object can only have one Content Type.

Typically the following Content Types, among others, are created for each Tenant:

  • Title Master - used for Content Objects storing your source material.
  • Title - used for playable Content Objects, usually associated with the Title Mezzanines library.
  • Title Collection - used for Content Objects representing a list of content, such as sites, playlists, series, or seasons.
  • Permissions - used for Content Objects that specify advanced permissions policies.
  • NFT Template - used for Content Objects storing NFT media and metadata.
  • Live Stream - used for Content Objects representing live streams.

Files

Content Fabric objects can store files efficiently as content parts. A large number of small files can be stored in one content part, while a very large file can be split between multiple content parts, analogous to a zip file. Files can be encrypted or unencrypted and may be organized into directories.

Files are commonly used to store the source media for playable objects, and to store images (e.g. artwork, UI elements).