Skip to main content

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.

  • contentHash identifies canonicalized content independently of lineage.
  • blockHash identifies 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:

  • 0x prefix
  • 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.

RequirementIdentity
Compare canonical contentcontentHash
Compare complete Block identityblockHash
Distinguish the same content across different declared parent setsblockHash
Verify a Block's recorded identityRecompute both hashes
Verify declared lineageblockHash
Verify relationships across a derivation graphblockHash 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.