The Block
An ALX Block combines application-defined JSON content with deterministic content and lineage identities. Four fields define the core Block structure, allowing conforming implementations to recreate and verify equivalent Blocks independently.
The Four Fields
type Block = {
content: unknown;
parentHashes: string[];
contentHash: string;
blockHash: string;
};
content is the JSON-serializable application payload.
parentHashes contains the normalized identities of declared parent Blocks.
contentHash is the deterministic identity of the canonicalized content.
blockHash is the deterministic identity of the content together with its normalized declared parent set.
contentHash allows the same content to be identified independently of lineage. blockHash binds that content to its declared parents, allowing identical content to appear within different declared lineages while retaining the same contentHash.
ALX canonicalizes content before deriving contentHash. The protocol validates, deduplicates, and lexicographically sorts parentHashes before deriving blockHash.
Example Block Content
The examples below represent application-defined content payloads, not complete Blocks. A complete Block also contains parentHashes, contentHash, and blockHash.
- Financial Analysis
- Source-Code Artifact
- Reference Document
- AI-Generated Result
Market inputs and an application-defined assessment.
{
"type": "market-analysis",
"symbol": "NVDA",
"observationDate": "2026-07-28",
"inputs": {
"price": 182.41,
"revenueGrowth": 0.34
},
"assessment": "positive"
}
The parent Blocks could point to the market dataset, prior analysis, model output, and analyst review.
A repository revision and the source file represented by the payload.
{
"type": "source-code",
"repository": "https://github.com/example/payment-api",
"commit": "8f36c9a",
"path": "src/api/authorization.ts",
"language": "TypeScript"
}
The parent Blocks could identify the design specification, security requirements, and earlier source revision.
A versioned external document represented by its identifying metadata.
{
"type": "reference-document",
"title": "Information Security Policy",
"uri": "https://example.org/policies/security.pdf",
"version": "3.1",
"publishedAt": "2026-05-10"
}
A derived policy assessment could declare this document as a parent, preserving the source relationship.
An application-defined agent task, result, model label, and timestamp.
{
"type": "agent-output",
"task": "Summarize the security review",
"result": "The review identified three high-priority findings.",
"model": "application-defined",
"createdAt": "2026-07-28T14:30:00Z"
}
When to Create a Block
Create a Block when JSON-serializable content needs deterministic identity, declared lineage, or both.
A Block with no declared parents is a root Block. Adding one or more parents connects a new Block to prior Blocks, allowing applications and intelligent systems to preserve relationships as work develops across multiple steps.