Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

StreamID

A StreamID is a unique, content-addressed identifier for a mutable data stream on the Ceramic Network, representing evolving user data like a profile or social graph.
Chainscore © 2026
definition
DATA IDENTIFIER

What is StreamID?

A StreamID is a unique, content-addressed identifier for a data stream within the Ceramic Network, enabling decentralized, mutable data structures.

A StreamID is a globally unique identifier that points to a stream of mutable data on the Ceramic Network. Unlike a traditional pointer, a StreamID is content-addressed, meaning its value is derived from the cryptographic hash of the stream's initial state and metadata. This ensures the identifier is immutable and verifiable, even as the data it points to can be updated over time. The structure typically includes the stream type (e.g., tile), the CommitID of its genesis commit, and a network identifier.

The primary function of a StreamID is to provide a permanent, decentralized reference for mutable documents. When an application requests data using a StreamID, the Ceramic protocol can deterministically locate the current state of the stream across the peer-to-peer network. This is crucial for building applications with user-controlled data, as it allows for versioning, forking, and secure updates without relying on a central registry or database. Each update creates a new commit, but the StreamID remains constant, acting as a stable pointer to the evolving document.

Technically, a StreamID is represented as a multicodec string, such as kjzl6cwe1jw14.... It is composed of several encoded parts: a multicodec prefix indicating the stream type, the CID (Content Identifier) of the stream's genesis commit, and an optional multibase prefix for the encoding. This standardized format ensures interoperability across different tools and clients in the ecosystem. Developers interact with StreamIDs through Ceramic's APIs to create, update, and query streams.

StreamIDs are foundational to Ceramic's data model, enabling use cases like decentralized social graphs, user profiles, and dynamic application settings. For example, a user's profile might be stored in a stream, and its StreamID can be used as a DID (Decentralized Identifier) or linked from other streams. This creates a web of interconnected, user-owned data where references are secure and resilient to central points of failure. The integrity of these references is guaranteed by the underlying content addressing.

In practice, working with StreamIDs involves understanding related concepts like StreamState, which represents the current data and metadata of a stream, and CommitID, which pins a specific historical version. While a StreamID always points to the tip of the stream (the latest state), a CommitID points to a fixed point in its history. This architecture supports complex data interactions, allowing developers to build applications with the flexibility of mutable data and the security guarantees of immutable content addressing.

how-it-works
TECHNICAL PRIMER

How a StreamID Works

A StreamID is the unique, cryptographically verifiable identifier for a data stream on the Ceramic Network, enabling decentralized, mutable data structures.

A StreamID is a Uniform Resource Name (URN) that uniquely and permanently identifies a stream—a mutable data structure—on the Ceramic Network. It is composed of several encoded components: a StreamType, the StreamID itself (a CommitID for the genesis commit), and an optional commit reference. This structure allows any client to deterministically locate and verify the entire history of a stream's data, starting from its creation. Unlike a simple hash, a StreamID points to a living document that can be updated over time by its controller.

The core components of a StreamID are derived from the stream's initial state. When a stream is created, its first operation is a genesis commit. The hash of this commit, known as the StreamID, becomes the immutable root identifier. The StreamID is then combined with a StreamType (e.g., tile or caip10-link) to form the complete URN, following the format: ceramic://<stream-type>/<stream-id>. This design ensures global uniqueness and allows the network to route requests to the correct stream type handler for state resolution and validation.

To interact with a stream, clients use the StreamID to query the Ceramic network. Nodes use the StreamID to fetch the stream state, which is reconstructed by replaying the cryptographic chain of signed commits stored on the decentralized ledger. The StreamID itself does not change when the stream is updated; instead, updates are appended as new commits referenced by their CommitID. This mechanism separates the permanent identity of the stream from its evolving content, which is a fundamental pattern for versioned, decentralized data.

CommitIDs are closely related to StreamIDs. A CommitID is a URN that pinpoints a specific version (commit) within a stream's history, formatted as ceramic://<stream-type>/<stream-id>?commit=<commit-hash>. While a StreamID always resolves to the current state, a CommitID is immutable and resolves to a historical state. This enables powerful features like data provenance, version control, and cacheable references to specific snapshots, all anchored to the stream's primary StreamID.

In practice, developers encounter StreamIDs when creating new streams, loading existing data, or sharing references to ceramic documents. For example, a decentralized social profile might have a StreamID like ceramic://kjzl6cwe1.... Any application can use this ID to fetch the latest profile data, verify all updates were signed by the correct DID, and display it. This interoperable addressing system is foundational for building composable, user-centric applications where data is owned by users and shared across platforms.

key-features
ARCHITECTURE

Key Features of a StreamID

A StreamID is a decentralized identifier (DID) that provides a permanent, cryptographically verifiable address for a data stream on the Ceramic network.

01

Decentralized Identifier (DID)

A StreamID is a type of Decentralized Identifier (DID) as defined by the W3C standard. It is a self-sovereign identifier that is not issued or controlled by a central registry, but is derived from a user's DID method (e.g., did:key or did:pkh). This ensures the identifier is portable and censorship-resistant.

02

Composed of a Stream Type and Commit ID

The core structure is ceramic://<stream-type>@<commit-id>. The Stream Type (e.g., tile or caip10-link) defines the data model and validation rules. The Commit ID (CID) is a Content Identifier from IPFS, pointing to the specific state of the stream. This composition links the logical type to its immutable data.

03

Immutable Pointer to Evolving Data

A StreamID remains constant for the lifetime of a stream, even as its underlying data is updated. It points to the tip of a Merkle DAG (Directed Acyclic Graph) of commits. Each update creates a new commit with a new CID, but the StreamID provides a stable address to always resolve the latest state.

04

Cryptographically Verifiable

Every commit in the stream is signed by the stream controller's DID. The StreamID, through its linked CIDs, enables anyone to cryptographically verify the integrity of the data and the authenticity of all updates, ensuring the history is tamper-proof.

05

Human-Readable vs. Stream Reference

For usability, applications often use a Stream Reference, a shorter, deterministic string derived from the initial commit (e.g., kjzl6cwe1...). This is not the full StreamID but is a stable alias that the Ceramic node can resolve to the canonical StreamID, improving developer experience.

06

Interoperability via CAIP-10 Links

A key use case is the caip10-link stream type. It creates a Ceramic Account ID by linking a blockchain account (using CAIP-10 format, e.g., eip155:1:0x...) to a DID. This StreamID becomes a portable, chain-agnostic identity root for a user across applications.

technical-details
TECHNICAL DETAILS & STRUCTURE

StreamID

A StreamID is a unique, cryptographically verifiable identifier for a data stream within the decentralized Streamr Network, analogous to a URL or a public key in other systems.

A StreamID is a Uniform Resource Name (URN) that uniquely and permanently identifies a specific data stream on the Streamr Network. Its canonical format is urn:streamr:<network>:<chain>/<path>, where the <path> is a hierarchical namespace, often represented as a human-readable domain-like string (e.g., /eth/mainnet/price/eth/usd). This structure allows for logical organization and discovery of streams. The identifier is immutable; once a stream is created with a given StreamID, it cannot be changed, ensuring a permanent reference for publishers and subscribers.

Under the hood, a StreamID resolves to a stream's metadata and its partitioning scheme. The core technical component is the stream's public key, which is derived from the owner's private key during creation. This public key is hashed to form part of the identifier, providing cryptographic proof of ownership and enabling secure permission management. The StreamID is therefore not just a label but a verifiable claim that links the data to its creator, forming the foundation for access control and data provenance on the network.

From a developer's perspective, the StreamID is the primary handle used in all Streamr client libraries (e.g., JavaScript, Python) to publish data to, subscribe to, or query the history of a stream. It decouples the logical stream from its underlying storage and transport mechanisms, allowing the network to handle scalability and redundancy transparently. When a subscriber requests a StreamID, the network locates the relevant broker nodes and storage nodes that host the stream's data partitions, facilitating efficient and decentralized data delivery.

examples
STREAMID

Examples & Use Cases

A StreamID is a unique, persistent identifier for a data stream on The Graph network, enabling precise querying and composability of decentralized data.

02

Data Composability & Referencing

StreamIDs enable cross-subgraph data relationships. One subgraph can reference an entity from another by storing its StreamID. This creates a web of interconnected data, allowing a dashboard to pull user data from one stream and their DeFi positions from another, using the IDs as the linking key.

03

Immutable Data Provenance

Each StreamID is cryptographically tied to the subgraph manifest and deployment transaction. This provides an immutable record of the data's source and version. Analysts and auditors can verify that the data they are querying (e.g., historical treasury balances for a DAO) comes from a specific, unaltered indexer setup.

04

Integration in dApp Frontends

dApps configure their data layer by specifying the StreamIDs for the subgraphs they depend on. For instance, a lending platform's frontend would be configured with StreamIDs for:

  • Oracle Price Feeds
  • User Collateral Data
  • Protocol Reserve Statistics This decouples the frontend logic from the underlying indexing infrastructure.
05

Indexer & Curator Operations

Network participants use StreamIDs to manage economic signals. Curators signal on StreamIDs to indicate valuable data, directing indexer resources. Indexers allocate stake to specific StreamIDs they choose to index and serve. The ID is the atomic unit for this decentralized coordination mechanism.

06

Versioning & Upgrades

When a subgraph developer publishes an update (e.g., adding a new field or event), a new StreamID is generated for the new version. This allows for seamless upgrades—applications can migrate queries to the new ID at their own pace while the old stream remains available, preventing breaking changes.

ecosystem-usage
STREAMID

Ecosystem Usage

A StreamID is a unique, decentralized identifier for a data stream, enabling verifiable data provenance and composability across applications. It is a core component of the Ceramic Network's data infrastructure.

02

Composable Data in DeFi & DAOs

In decentralized finance and governance, StreamIDs enable reusable, verifiable data objects. A DAO's proposal history, member reputation scores, or a DeFi protocol's configurable parameters can be stored as streams. This allows different applications to read from and write to the same canonical data source, ensuring consistency and enabling complex, interoperable systems.

03

Verifiable Content & Publishing

StreamIDs provide a permanent, tamper-evident anchor for digital content. Platforms for blogging, documentation, or NFT metadata (like Metaverse projects) can store articles or asset descriptions as streams. The StreamID acts as a content-addressable pointer, allowing anyone to verify the authenticity and full revision history of the published material.

04

Cross-Application Data Portability

The primary utility of a StreamID is breaking down data silos. A user's playlist created in one music dApp, a game character's inventory, or a professional credential can be represented by a StreamID. Any other application with the correct permissions can discover, read, and potentially update this stream, creating a seamless user experience across the Web3 ecosystem.

05

Technical Implementation & Tooling

Developers interact with StreamIDs through client libraries like Glaze or Ceramic HTTP API. Key operations include:

  • Creating a new stream (generates a new StreamID).
  • Loading a stream by its StreamID to read its state.
  • Updating a stream by making a signed commit.
  • Anchoring streams to a blockchain (like Ethereum) for finality via CACAO capabilities.
COMPARISON

StreamID vs. Other Identifiers

A technical comparison of StreamID with other common decentralized identifier (DID) and data referencing methods.

FeatureStreamIDIPFS CIDSmart Contract AddressTraditional URL

Primary Purpose

Immutable reference to a dynamic data stream

Immutable reference to static content

Executable code and state on-chain

Mutable reference to a server resource

Data Mutability

Immutable pointer, mutable underlying data

Fully immutable

Mutable internal state

Fully mutable

Decentralization

Yes, anchored to a blockchain

Yes, content-addressed network

Yes, on a blockchain

No, relies on centralized authority

Native Data Indexing

Yes, via ComposeDB

No, requires external indexer

No, requires event parsing

No

Verifiable Provenance

Yes, via blockchain attestations

Yes, via content hash

Yes, via transaction history

No

Human-Readable

No, uses cryptographic hash

No, uses cryptographic hash

No, uses hexadecimal address

Yes, uses domain names

Update Mechanism

New commit CID linked to StreamID

New CID required

Contract function call

Server-side file replacement

Typical Latency

< 2 sec for updates

Variable, depends on pinning

~15 sec (Ethereum)

< 100 ms

STREAMID

Common Misconceptions

StreamID is a core identifier in the Streamr Network, but its specific role and technical implementation are often misunderstood. This section clarifies the most frequent points of confusion.

No, a StreamID is not a smart contract address. While both are unique identifiers, they serve fundamentally different purposes. A smart contract address is a location on a blockchain (like Ethereum) that holds executable code and state. A StreamID is a decentralized identifier for a specific real-time data stream within the Streamr Network. It points to a stream's metadata and its partition nodes, not to a contract. You cannot send tokens to a StreamID, and it does not execute logic.

STREAMID

Frequently Asked Questions

StreamID is the unique, permanent identifier for a Ceramic stream, which is a mutable data structure on the decentralized Ceramic network. These questions address its core functions and practical use.

A StreamID is a unique, content-addressed identifier that permanently references a specific Ceramic stream, which is a mutable data document on the decentralized Ceramic network. It works by encoding three critical pieces of information: the Stream Type (defining its data schema and controller logic), the Commit ID of the genesis commit (the stream's initial state), and a checksum for integrity. This structure ensures that any node can deterministically locate, verify, and reconstruct the current state of the stream's data from the decentralized InterPlanetary File System (IPFS) network, even as the stream is updated over time. Unlike a simple hash, a StreamID points to a living document, not a static file.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team
What is a StreamID? | Ceramic Network Identifier | ChainScore Glossary