Block Identity
ALX derives two deterministic identities for every Block. contentHash identifies canonicalized content. blockHash identifies that content together with its normalized declared parent set.
Equivalent protocol inputs produce the same deterministic identities.
Identity Model
contentHash and blockHash identify different aspects of a Block.
contentHashidentifies canonicalized content independently of lineage.blockHashidentifies canonicalized content together with its normalized declared parent set.
The same content can retain the same contentHash while participating in different declared lineages with different blockHash values.
Identity Derivation
ALX derives both identities using Keccak-256.
contentHash is computed from canonicalized content:
contentHash = keccak256(canonicalize(content))
blockHash is computed from canonicalized content together with the normalized declared parent set:
blockHash = keccak256(canonicalize({
content,
parentHashes
}))
The blockHash input contains exactly two fields: content and parentHashes. Before hashing, ALX normalizes parentHashes and canonicalizes the resulting object according to the protocol's canonicalization rules.
Hash Format
Both identities use the same format:
0xprefix- 64 lowercase hexadecimal characters
- Keccak-256 digest
Implementations must use Keccak-256. Standardized SHA3-256 produces different results.
Hash Selection
Use the identity that corresponds to what needs to be identified or compared.
| Requirement | Identity |
|---|---|
| Compare canonical content | contentHash |
| Compare complete Block identity | blockHash |
| Distinguish the same content across different declared parent sets | blockHash |
| Verify a Block's recorded identity | Recompute both hashes |
| Verify declared lineage | blockHash |
| Verify relationships across a derivation graph | blockHash relationships + required Block data |
Identity Boundary
ALX identities represent protocol-defined data.
A matching contentHash establishes that the canonicalized content produces the same content identity. A matching blockHash establishes that the canonicalized content and normalized declared parent set produce the same Block identity.
contentHash and blockHash establish deterministic correspondence to protocol data. Neither identity independently establishes authorship, ownership, authenticity, approval, semantic truth, quality, policy compliance, or legal validity.
Neither identity represents ownership, trust, approval, authenticity, policy, authorship, or legal validity.