Receipts & Proofs Guide

Understand cryptographic verification and integrity checking in NOBLEID.

Receipt Structure
Every work version gets a cryptographic receipt for verification
{ "ark": "ark:/nobleid/20092025/7X9K2Q", "version": 1, "receipt_id": "rcpt_2025_01_15_abc123", "timestamp": "2025-01-15T10:30:00Z", "content_hash": "sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3", "metadata_hash": "sha256:b775a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae4", "signature": { "algorithm": "Ed25519", "public_key": "302a300506032b657003210033d4aa063f7a2c8b4e3d...", "signature": "5d41402abc4b2a76b9719d911017c592..." }, "fixity_status": "verified", "chain_proof": { "block_height": 12345, "merkle_root": "c775a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae5", "inclusion_proof": ["hash1", "hash2", "hash3"] } }

Key Fields

  • content_hash - SHA-256 of the actual content file
  • metadata_hash - SHA-256 of the structured metadata
  • signature - Ed25519 signature over the receipt
  • fixity_status - Current integrity verification status
  • chain_proof - Merkle tree inclusion proof
Signature Verification
Verify receipt authenticity and content integrity
# Verify receipt signature curl -X POST https://api.nobleid.org/v1/receipts/verify \ -H "Content-Type: application/json" \ -d '{ "receipt_id": "rcpt_2025_01_15_abc123", "content_hash": "sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3" }' # Response: { "valid": true, "verified_at": "2025-01-15T11:00:00Z", "signature_valid": true, "content_match": true, "chain_verified": true }

Verification Process

  1. Fetch current content from content_url
  2. Calculate SHA-256 hash of fetched content
  3. Compare with content_hash in receipt
  4. Verify Ed25519 signature using NOBLEID public key
  5. Check Merkle tree inclusion proof
Fixity Status Meanings
Understanding what each status means for content integrity
verified
Content hash matches, signature valid, chain verified
Content is authentic and unmodified
pending
Recently submitted, verification in progress
Check again in a few minutes
failed
Content hash mismatch or signature invalid
Content may have been modified or corrupted
unreachable
Cannot fetch content for verification
Content URL may be temporarily unavailable
Detailed Proofs
Access comprehensive verification data and provenance chains
# Get detailed proofs curl https://api.nobleid.org/v1/proofs/ark:/nobleid/20092025/7X9K2Q/v1 # Response includes: { "content_proofs": { "sha256": "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3", "sha512": "b775a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae4", "fixity_checks": [ { "timestamp": "2025-01-15T10:30:00Z", "status": "verified", "method": "remote_fetch" } ] }, "provenance_chain": [...], "signatures": [...] }

Proof Types

  • Content Proofs - Multiple hash algorithms, fixity check history
  • Provenance Chain - Complete version history with timestamps
  • Signatures - All cryptographic signatures and public keys
  • Merkle Proofs - Blockchain inclusion proofs
Best Practices
How to implement robust verification in your applications

Implementation Guidelines

  • ✓ Always verify receipts before trusting content
  • ✓ Cache verification results with appropriate TTL
  • ✓ Handle network failures gracefully
  • ✓ Display verification status to users
  • ✓ Log verification attempts for audit trails
  • ✓ Use HTTPS for all verification API calls
  • ✓ Implement retry logic with exponential backoff

Security Considerations

  • • Never trust content without verifying its receipt
  • • Store NOBLEID public keys securely
  • • Validate certificate chains for HTTPS connections
  • • Use constant-time comparison for hash verification