{
"consensusAlgorithm": {
"name": "CometBFT",
"description": "CometBFT is the canonical implementation of the Tendermint consensus algorithm.\n CometBFT allows for a state transition machine to be written in any programming language, and it allows for secure replication across many machines.\n The consensus protocol is fork-free by construction under an honest majority of stake assumption.",
"blockTime": 15,
"consensusFinality": 1,
"unbondingPeriod": 1814400
},
"dataAvailabilitySampling": {
"erasureCodingScheme": "2D Reed-Solomon",
"erasureCodingProof": "Fraud proofs"
},
"economicSecurity": {
"token": {
"symbol": "TIA",
"decimals": 6,
"coingeckoId": "celestia"
}
},
"finality": 6,
"pruningWindow": 2592000,
"risks": {
"economicSecurity": {
"value": {
"value": "Staked assets",
"sentiment": "good",
"description": "There are staked assets on the DA layer that can be slashed in case of a data withholding attack. A dishonest supermajority of validators must collude to finalize a block with missing or invalid data. The invalid block would be added to the chain but rejected by honest full nodes.\n "
},
"adjustSecurityRisk": true
},
"fraudDetection": {
"value": "DAS",
"sentiment": "warning",
"description": "The DA layer uses data availability sampling (DAS) to protect against data withholding attacks. However, the block reconstruction protocol, which enables the minimum number of light nodes to collectively reconstruct the block, is still under development.",
"secondLine": ""
}
},
"sovereignProjectsTrackingConfig": [
{
"projectId": "battle-for-blockchain",
"name": "Battle for Blockchain",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5047670,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAKzFLTn1xOipecg="
}
]
},
{
"projectId": "camp",
"name": "Camp",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 6459709,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAAeQ="
}
]
},
{
"projectId": "civitia",
"name": "Civitia",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 4492300,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAEwLOhV+kOUlUq4="
}
]
},
{
"projectId": "clique",
"name": "Clique",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3161819,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAARQV7t6sd4A="
}
]
},
{
"projectId": "echelon",
"name": "Echelon",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5659637,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAItyY42OaTC/skE="
}
]
},
{
"projectId": "echos",
"name": "Echos",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3161819,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/cZMN1XLG8="
}
]
},
{
"projectId": "embr-fun",
"name": "Embr.fun",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5954601,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAMbONmnisjTDz4I="
}
]
},
{
"projectId": "flame",
"name": "Flame",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3161819,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAL2dxfeNrJ+tg6Y="
}
]
},
{
"projectId": "flynet",
"name": "Flynet",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5188001,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAACyPE7Ql9zwA="
}
]
},
{
"projectId": "forma",
"name": "Forma",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3161819,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAKKnitomrCy/HoY="
}
]
},
{
"projectId": "foundation-network",
"name": "Foundation Network",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3667737,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAN/xAxpagCrjLVQ="
}
]
},
{
"projectId": "hibachi",
"name": "Hibachi",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5979823,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAABoaWJhY2hpLXM="
},
{
"type": "celestia",
"sinceBlock": 5981133,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhpYmFjaGk="
}
]
},
{
"projectId": "ing",
"name": "ING",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5945453,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAALdhUSKgKHU0Zx0="
}
]
},
{
"projectId": "inertia",
"name": "Inertia",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5941532,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAEg2If2QGyq4ZRQ="
}
]
},
{
"projectId": "intergaze",
"name": "Intergaze",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5748411,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAIoZCJNLh1XvOZA="
}
]
},
{
"projectId": "milkyway",
"name": "Milkyway",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5298640,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAB2AZsEwLd1LLHk="
}
]
},
{
"projectId": "onchain",
"name": "Onchain",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3161819,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAABNfLrOLSCTY="
}
]
},
{
"projectId": "perennial",
"name": "Perennial",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 3886561,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaToZYrE0tA="
}
]
},
{
"projectId": "rave",
"name": "Rave",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5645296,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAF45zaUciayEPXE="
}
]
},
{
"projectId": "rena",
"name": "Rena",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5775045,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAMxohfftlR5t59s="
}
]
},
{
"projectId": "rivalz-network",
"name": "Rivalz Network",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 4932528,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMJ/xGlNMdE="
}
]
},
{
"projectId": "xo-market",
"name": "XO Market",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 8164261,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAACnGTcXcpKRnenc="
},
{
"type": "celestia",
"sinceBlock": 8383370,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAEjr00EdZDGvoMU="
}
]
},
{
"projectId": "yominet",
"name": "Yominet",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5966190,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAFjh+OUc/ORU/0o="
}
]
},
{
"projectId": "zaar",
"name": "Zaar",
"daTrackingConfig": [
{
"type": "celestia",
"sinceBlock": 5587852,
"namespace": "AAAAAAAAAAAAAAAAAAAAAAAAAM8NBxiaOQwFwQc="
}
]
}
],
"systemCategory": "public",
"technology": {
"description": "\n ## Architecture\n\n \n\n ## Consensus\n Celestia uses CometBTF, the canonical implementation of Tendermint consensus protocol. The consensus protocol is fork-free by construction under an honest majority of stake assumption.\n Celestia achieves finality at each block, with an average time between blocks of 6 seconds.\n ## Blobs\n In Celestia, blobs are user-submitted data that do not modify the blockchain state. \n Each blob has two components, one is a binary object of raw data bytes, and the other is the namespace of the specific application for which the blob data is intended for.\n\n\n \n\n All data posted in a Celestia blob is divided into chunks of fixed size, called shares, and each blob is arranged in a k * k matrix of shares. Currently k = 64, for a total of 4096 shares.\n\n\n \n\n Celestia shares' rows and columns are erasure-coded into a 2k * 2k matrix and committed to in a Namespaced Merkle Trees (NMTs), a version of a standard Merkle tree using a namespaced hash function. \n In NMTs, every node in the tree includes the range of namespaces of all its child nodes, allowing applications to request and retrieve data for a specific namespace sub-tree while maintaining all functionalities (e.g., inclusion and range proofs) of a standard Merkle tree.\n\n\n \n\n Ultimately, a single data root (availableDataRoot) of the Merkle tree is computed with the row and column roots as leaves. This data root is included in the block header as the root of commitments to erasure-coded data so that individual shares in the matrix can be proven to belong to a single data root.\n\n\n \n\n ## Data Availability Sampling (DAS)\n\n To ensure data availability, Celestia light nodes perform sampling on the 2k x 2k data matrix. Each light node randomly selects a set of unique coordinates within the extended matrix and requests the corresponding data shares and Merkle proofs from full nodes.\n Currently, a Celestia light node must perform a minimum of 16 samples before declaring that a block is available.\n This sampling rate ensures that given the minimum number of unavailable shares, a light client will sample at least one unavailable share with a 99% probability.\n\n For more details on DAS probabilistic analysis, see the Fraud and Data Availability Proofs paper.\n\n\n \n\n ## Erasure Coding Proof\n Light nodes performing data availability sampling must have the guarantee that the sampled data is erasure coded correctly. In Celestia, light nodes can be notified of a maliciously encoded block through Bad Encoding Fraud Proofs (BEFPs). Full nodes receiving invalid erasure-coded data can generate a fraud-proof to be transmitted to all light and full nodes in the DA network. The proof is generated by full nodes reconstructing the original data from the block data, and verifying that the recomputed data root matches the data root of the block header. \n Upon receiving and verifying the BEFP, all Celestia nodes should halt providing services (e.g., submitTx).\n\n ## L2s Data Availability\n L2s can post data to Celestia by submitting blobs through a payForBlobs transaction. The transaction can include data as a single blob or multiple blobs, with the total maximum size determined by the maximum block size. The transaction fee is determined by the size of the data and the current gas price. \n Applications can then retrieve the data by querying the Celestia blockchain for the data root of the blob and the namespace of the application. The data can be reconstructed by querying the Celestia network for the shares of the data matrix and reconstructing the data using the erasure coding scheme.\n ",
"references": [
{
"title": "Celestia Specifications",
"url": "https://celestiaorg.github.io/celestia-app/data_structures.html"
},
{
"title": "Celestia Core - CometBFT",
"url": "https://github.com/celestiaorg/celestia-core"
},
{
"title": "Celestia Node - Data Retrieval",
"url": "https://github.com/celestiaorg/celestia-node/blob/9ff58570ef86e505b718abfc755fd18643a2284c/share/eds/retriever.go#L60"
},
{
"title": "Bad Encoding Fraud Proofs",
"url": "https://github.com/celestiaorg/celestia-node/blob/main/docs/adr/adr-006-fraud-service.md"
},
{
"title": "Fraud and Data Availability Proofs paper",
"url": "https://arxiv.org/pdf/1809.09044"
}
],
"risks": [
{
"category": "Funds can be lost if",
"text": "a dishonest supermajority of Celestia validators finalizes an unavailable block, and there aren't light nodes on the network verifying data availability, or they fail at social signaling unavailable data."
},
{
"category": "Funds can be lost if",
"text": "a dishonest supermajority of Celestia validators finalizes an unavailable block, and the light nodes on the network cannot collectively reconstruct the block."
}
]
},
"throughput": [
{
"size": 8388608,
"frequency": 6,
"sinceTimestamp": 1738022400
},
{
"size": 1974272,
"frequency": 6,
"sinceTimestamp": 1733961600
},
{
"size": 1974272,
"frequency": 12,
"sinceTimestamp": 1698710400
}
],
"type": "Public Blockchain",
"usedWithoutBridgeIn": [
{
"id": "ancient",
"name": "Ancient8",
"slug": "ancient8"
},
{
"id": "b3",
"name": "B3",
"slug": "b3"
},
{
"id": "lyra",
"name": "Derive",
"slug": "derive"
},
{
"id": "eclipse",
"name": "Eclipse",
"slug": "eclipse"
},
{
"id": "form",
"name": "Form",
"slug": "form"
},
{
"id": "ham",
"name": "Ham",
"slug": "ham"
},
{
"id": "karak",
"name": "K2",
"slug": "k2"
},
{
"id": "lightlink",
"name": "LightLink",
"slug": "lightlink"
},
{
"id": "mantapacific",
"name": "Manta Pacific",
"slug": "mantapacific"
},
{
"id": "orderly",
"name": "Orderly Network",
"slug": "orderly"
},
{
"id": "syndicateframe",
"name": "Syndicate Frame Chain",
"slug": "syndicateframe"
},
{
"id": "river",
"name": "Towns",
"slug": "towns"
}
],
"validators": {
"type": "dynamic"
}
}