FAQ: Ceramic Network & ComposeDB

Answers to the most commonly asked questions about Ceramic Network and ComposeDB

FAQ: Ceramic Network & ComposeDB

A roundup of the most commonly asked questions on our Discord and Forum. If you have questions for the team please ask them on our Forum.

General FAQ

What is Ceramic?

Ceramic is a shared data network for managing verifiable data at scale, providing the trust of a blockchain with the flexibility of an event streaming system. Thousands of developers use it to manage reputation data, store attestations, log user activity, and build novel data infrastructure. Ceramic frees developers from the constraints of traditional data infrastructure, enabling them to tap into a shared data ecosystem and network effects, so they can focus on bringing their unique vision to life.

What is ComposeDB

ComposeDB, built on Ceramic, is a decentralized graph database that uses GraphQL to offer developers a familiar interface for interacting with data stored on Ceramic. This enables seamless data model publication, discovery, and reuse, fostering a composable data ecosystem.

What is the difference between Ceramic and ComposeDB?

ComposeDB provides a graph structure for interacting with data on the Ceramic network (i.e. native indexing). The nodes in the graph are ‘accounts’ or ‘documents’, each possessing a globally unique ID, while ‘edges’ are queryable relationships.You can read more about these concepts in our docs.

Why did we choose GraphQL for ComposeDB?

We achieve interoperability with a wide ecosystem of existing programing environments by allowing GraphQL queries over JSON documents.

What is the difference between Ceramic and The Graph?

The Graph is a service indexing and querying data on L1 and L2 blockchains. You do not write data to The Graph, you write data to the blockchain and then query it with The Graph.

Ceramic is more like a decentralized version of a traditional database (like Postgres or MongoDB). It’s optimized for writes and speed. It provides its own built-in indexing and querying functionality (via ComposeDB).

The Graph is good for querying large amounts of data from blockchains. Ceramic is good for storing, managing and querying large amounts of data.

What makes Ceramic a better choice than alternatives?

What’s the difference between Ceramic and a traditional blockchain?

Unlike financial asset blockchains that rely on slow and unscalable synchronous global state changes, Ceramic uses fast, asynchronous, parallel transaction processing and eventual consistency to enable the scale and throughput needed by large data applications.

Current blockchain protocols cannot scale to support the level of processing needed for data applications, for the simple fact that there are so many data events occurring all day, every day, in every application. That’s why Ceramic’s data consensus properties can be treated differently than value consensus properties, like those you’d find on Bitcoin or an L2. Ceramic supports data that changes (i.e. mutable) with fast, decentralized, high-volume transaction processing.

What’s the difference between using Ceramic to store and query data and storing the data on the blockchain?

Ceramic shares many similarities with a blockchain, while simultaneously offering features that optimize for low-cost mutable data at scale, thus underlining key differences. Below are some similarities and differences:

Accounts: Ceramic uses the Decentralized Identifier standard for user accounts (DID PKH and Key DID are supported in production). Similar to blockchains, they require no centralized party or registry. Additionally, both PKH DIDs and Key DIDs ultimately rely on public key infrastructure (PKH DIDs enable blockchain accounts to sign, authorize, and authenticate transactions, while Key DIDs expand cryptographic public keys into a DID document).

Signing Transactions: data in Ceramic (or streams) support CACAO (Chain Agnostic Capability Object), which enables the ability for one account to authorize another account to construct signatures over limited data on their behalf. Therefore, unlike manually signing individual transactions on a blockchain, Ceramic allows accounts to cryptographically authorize multiple writes in a given window, which is ideal for settings in which a database would be used to support user data that’s meant to change over time. These transactions also occur at no cost to individual users, which is yet another key difference between writing data to Ceramic vs. a blockchain.

Immutability: streams in Ceramic are organized into immutable event logs, with each commit representing an unchangeable, tamper-evident snapshot of a piece of data. Similar to how blockchains act as an immutable ledger revealing a history of the deterministic outputs of accounts transacting with other accounts and smart contracts, event logs in Ceramic give developers insight into both the immutable data provenance and lineage of data relevant to their users.

Querying: while developers can leverage libraries like Web3.js to read past transaction history or actively listen to transactions across accounts and contracts, blockchains (like Ethereum) do not offer native network support for querying or indexing blockchain data. This should come as no surprise - they are not designed to do this.Conversely, Ceramic is specifically designed to provide simple structure and open access to data events as they occur in the network, while simultaneously offering credibly decentralized qualities.

Ceramic’s underlying data structure (a self-certifying event log) also allows for endless database “flavors” to be built on top to further improve the developer experience. ComposeDB, for example, offers native GraphQL support, automatically splits read/write load capability, and allows developers to index on data “families” (or model instance documents related to preexisting schema definitions) across the network.

How much does it cost to use Ceramic Network?

At the moment, the only costs associated with building on Ceramic are the costs of running a Ceramic node on the cloud provider of your choice. The protocol doesn’t charge a direct fee nor are there any ecxplicit costs to store and load data from the network. This fee structure is subject to change as the Ceramic community may decide to support crypto-economic incentives and rewards.

Which blockchains does Ceramic support?

The standard use of SIWXCACAO and DID:PKH allows anyone to implement support for another blockchain or account type to authenticate and authorize writes to the Ceramic Network. Additionally a few standard interfaces enables you to implement an auth and verification library that allows anyone to use it with did-session, the primary library to use DID based accounts with Ceramic. There is just a few steps you have to take, outlined here.

Does Ceramic have a native token?

Ceramic does not have a native token.

Technical FAQ

Do I have to run a node if I want to use ComposeDB?

It depends on your use case. If you just want to play around to learn and understand ComposeDB, it is not necessary to run a node. You can use our ComposeDB Sandbox or Wheel (which can run in memory). For development purposes, you can either use a third party node operator, such as hirenodes.io, or run your own node (follow our guide here).

Is running a node a public, permission-less thing or does one need to sign up for it?

Running a node is permissionless! However, to anchor commits to mainnet, it is necessary to register your node’s DID with the Ceramic Anchor Service.

What are the benefits to running a node?

You have control over performance and costs of your own data without relying on others.

What operating system do I need to run a Ceramic node?

Currently, Ceramic nodes use Node.js, so any system that can run Node.js may be used. Ceramic nodes are most often run on Linux servers but have also been run on MacOS.To run on Windows we recommend using WSL2 (Windows Subsystem for Linux).

Is there an official RPC that can be used directly for Ceramic?

When used in a Web3 context, an RPC (Remote Procedure Call) node consists of a server that generally runs a protocol’s client software. An RPC endpoint is the network location that an application can access to perform requests (for example, dApp retrieving blockchain data for its users).The Ceramic Network does not currently offer hosted RPC node-running (and corresponding community endpoints) as a service. Instead, for both decentralization and performance purposes, we encourage developers to either run their own node or work with a node-running service (such as Hirenodes) to set up performant and available endpoints for their applications.

What is a DID?

DID stands for Decentralized Identifier which is a W3 standard. Whenever a document is updated, it is signed by the user's DID, so that the ownership and provenance of all writes is verifiable.

What’s the “admin DID” for?

It’s the identity required on the “server” side of the ComposeDB to set up a composite for your node, which instructs your node which Models it should index. You can write data into your Ceramic node with any DID, but the admin DID is the only one able to change the set of Models used by the node.

What’s the difference between the “node DID” and the “admin DID”?

The Node DID is used for anchoring and the Admin DID is used to deploy composites.

Can I use an Ethereum address as a DID?

Yes you can! You can use Ethereum as well as Solana addresses via the did:pkh DID method. Check this link for details.

How do you run queries on ComposeDB?

ComposeDB is a graph database because the documents within it can reference other documents and form a graph, using GraphQL to query that relationship graph. You should reference supported scalars.

Who can modify the data?

Each document in ComposeDB is represented by a Ceramic stream that has a single DID that is the controller. The controller DID is the only one allowed to write data into that stream and updates to the stream must be signed by the controller DID’s private key.

Is the data on Ceramic Network public or private?

All the data on Ceramic (including ComposeDB) is public by default. One can encrypt the data before putting it onto the network. You can follow the Encrypted Data Tutorial tutorial for one possible method and you can also utilize the integration between Ceramic and Lit protocol.

Can data be deleted on Ceramic Network?

All data written to Ceramic are signed payloads that are organized in the core data structure (a self-certifying event log) that the protocol relies on.

This structure relies on IPLD content addressing to form an immutable log (on top of which applications, or databases like ComposeDB, can be built). Ceramic nodes also encompass several layers of the libp2p stack to help communicate stream updates in the network.

It’s important to understand how the services described above play an important role in answering the question of whether data on Ceramic can be deleted. While developers can pin streams on their node to prevent Ceramic’s default garbage collection behavior (and unpin, or discontinue indexing on models if using ComposeDB), data in its raw format may still be accessible within the IPFS network (though, if not pinned by any Ceramic nodes, it will effectively be “deleted” from the Ceramic network).

Do I need my private key to create a composite on ComposeDB?

Yes! While creating a composite, you sign some bytes with your private key. The signature becomes part of the composite. Don’t worry, private keys are not leaked through composites. We encourage making composites public.

Can you transfer the ownership of a stream on Ceramic Network?

Ceramic uses a DID as the controller of the stream. This means that if you use a DID that can be transferred you can transfer ownership by transferring the DID. Most of the time you will not need to transfer ownership, but rather sign a CACAO to grant some device or service the capabilities that you wish to delegate.

How can I incorporate ComposeDB into my dApp?

We have a starter application here.

What is a CACAO?

Chain Agnostic Capability Object

Company FAQ

What is the relationship between 3Box Labs and Ceramic?

While 3Box Labs is the original inventor of the Ceramic Network and have been integral to bootstrapping the Ceramic ecosystem, we're committed to migrating Ceramic to an independently-governed foundation and stepping back to play a reduced role over time. In a way, 3Box Labs is just like any other contributor to an early stage protocol.

What is the corporate structure of 3Box Labs?

3Box Labs is a US corporation registered in Delaware with employees and contractors located across the US and Europe.

How will Ceramic be governed?

Ceramic is already 100% open source, peer-to-peer software and anyone can participate in the network by simply running a Ceramic node. Formal governance of the network will progressively decentralize over time, eventually exiting to the community and a standalone foundation.

Have a question that’s not here? Check out our Forum to either search or post your question!