Verification
Verification applies deterministic protocol rules to Blocks and their declared relationships. Applications can combine core verification with optional cryptographic evidence when a workflow requires additional assurances.
Each verification operation establishes a specific property and has a defined boundary.
Verification Model
Core ALX verification operates at two levels:
- Block verification checks deterministic Block identities.
- Graph verification checks the structure of declared parent relationships.
Optional signatures and Merkle proofs provide separate evidence when an application requires additional verification properties.
Verification Workflow
Block Verification
validateBlock() recomputes contentHash and blockHash and compares both values with the stored identities. The recomputation uses the Block’s protocol data.
Successful Block verification establishes that the recorded identities correspond to the canonicalized content and normalized declared parent set under ALX rules.
Graph Verification
validateGraph() evaluates relationships across a supplied collection of Blocks.
validateGraph() checks:
- Parent resolution
- Duplicate parent relationships
- Self-references
- Cycles
A missing parent indicates that a referenced Block is unavailable in the evaluated graph. The missing reference does not establish that the referenced Block does not exist elsewhere.
When all required Blocks are available, graph verification can establish structural completeness for the graph being evaluated.
Optional Evidence
Applications can evaluate additional cryptographic evidence without changing Block identity or the core verification model.
Signature verification checks whether a cryptographic signature is valid for the specified payload under the supplied signing domain and replay context.
Merkle verification checks whether a Block hash is included in the set represented by a supplied Merkle root hash.
Successful Merkle verification establishes inclusion relative to the supplied root. Merkle inclusion does not establish where the root was recorded, who selected the root, whether the root was recorded onchain, or whether an application should trust the root.
Verification Scope
Every operation establishes a specific protocol property.
| Operation | Establishes |
|---|---|
validateBlock() | Recorded Block identities match recomputed contentHash and blockHash values |
validateGraph() | Declared relationships in the evaluated graph satisfy ALX structural rules |
| Signature verification | The supplied signature is valid for the specified payload and verification context |
| Merkle verification | A Block hash is included in the set represented by the supplied Merkle root |
No single operation verifies every protocol layer.
Verification Boundary
ALX verification establishes protocol-defined properties of Blocks, declared relationships, and supported cryptographic evidence.
Verification does not, by itself, establish:
- Factual or semantic truth
- Authorship or ownership
- Authorization
- Quality
- Policy compliance
- Safety
- Legal validity
- Continued availability
Applications and external systems evaluate verification results according to application requirements.
When to Verify
Verify Blocks and related evidence whenever an application needs to establish protocol properties before relying on them.
Common verification points include:
- Loading Blocks from storage
- Receiving Blocks from another application or system
- Crossing an application trust boundary
- Processing declared parent relationships
- Traversing a derivation graph
- Using prior Blocks as context for subsequent processing
- Evaluating optional signatures or external commitments