OVERVIEW
Registry nodes are the persistence layer of the PoHW protocol. They maintain Merkle trees of attestations and anchor roots to multiple blockchains and archival substrates.
HOW TO RUN A PoHW REGISTRY NODE
Prerequisites:
- Server with persistent storage
- Network access to blockchain nodes
- SSL certificate for HTTPS
- Public IP address
Step 1: Install Registry Software
$ git clone https://github.com/pohw/registry-node
$ cd registry-node
$ npm install # or appropriate package manager
Step 2: Configure Node
Create config.json:
{
"node_id": "your-node-id",
"merkle_batch_size": 1000,
"anchor_interval": 3600,
"chains": ["bitcoin", "ethereum"],
"storage": {
"type": "postgresql",
"connection": "..."
}
}
Step 3: Initialize Merkle Tree
$ pohw-registry init
Step 4: Start Node
$ pohw-registry start
MERKLE BATCHING
Registry nodes batch attestations into Merkle trees:
- Accept attestation submissions
- Validate signatures
- Add to pending batch
- When batch size reached, build Merkle tree
- Generate Merkle root
- Anchor root to chains
- Make proofs available
Batch Size: Configurable (default: 1000 attestations)
Anchor Interval: Periodic anchoring even if batch not full
MULTI-CHAIN ANCHORING
Registry nodes anchor Merkle roots to multiple chains:
Supported Chains:
- Bitcoin (OP_RETURN)
- Ethereum (contract or transaction)
- IPFS (content addressing)
- Arweave (permanent storage)
Anchor Format:
{
"merkle_root": "0x...",
"timestamp": "2025-11-25T00:00:00Z",
"block_height": 12345,
"tx_hash": "0x...",
"chain": "bitcoin"
}
CROSS-REGISTRY SYNC
Registry nodes sync with each other:
- Discover other nodes via registry list
- Exchange Merkle roots periodically
- Verify roots match (consensus)
- Replicate attestations for redundancy
- Handle conflicts via transparency logs
Sync Protocol:
- HTTP-based sync API
- Merkle root exchange
- Conflict resolution
- State reconciliation
AUDIT LOGS
Every registry node maintains public audit logs:
Log Entries Include:
- Attestation submissions (hash, timestamp)
- Merkle tree constructions (root, size)
- Chain anchorings (chain, tx, height)
- Sync events (peer, action)
- Errors and warnings
Audit Log Format:
{
"timestamp": "2025-11-25T00:00:00Z",
"type": "attestation|merkle|anchor|sync|error",
"data": {...}
}
Public Access: GET /pohw/audit?from=timestamp&to=timestamp
REVOCATION RULES
Attestations can be revoked by signer:
- Signer submits revocation request
- Registry validates signature
- Mark attestation as revoked
- Update Merkle tree (new root)
- Anchor revocation to chains
- Propagate to other nodes
Revocation Format:
{
"hash": "0x...",
"signature": "...",
"revocation_reason": "optional",
"timestamp": "2025-11-25T00:00:00Z"
}
FEDERATION POLICIES
Registry nodes form federations:
Federation Rules:
- Nodes must maintain public keys
- Nodes must provide audit logs
- Nodes must anchor to at least 2 chains
- Nodes must sync with peers
- Nodes must follow consensus protocol
Federation Discovery:
- Central registry list (proofofhumanwork.org)
- DNS-based discovery
- Peer-to-peer announcement
REQUIREMENTS FOR REGISTRY OPERATORS
Minimum Requirements:
- 99% uptime
- < 1 hour anchoring latency
- Public audit logs
- CORS enabled for verification
- SSL certificate
- Persistent storage
- Multiple chain access
Recommended:
- Redundant infrastructure
- Monitoring and alerting
- Backup procedures
- Rate limiting
- DDoS protection
REGISTRY API ENDPOINTS
POST /pohw/attest
Submit attestation
Auth: Signature verification
Response: {receipt_hash, merkle_root}
GET /pohw/verify/{hash}
Verify attestation
Response: {valid, signer, timestamp, merkle_proof}
GET /pohw/proof/{hash}
Get Merkle proof
Response: {proof, root, anchors}
GET /pohw/status
Node status
Response: {status, latest_root, anchored_at, sync_status}
GET /pohw/audit
Audit logs
Query: from, to, limit
Response: [{timestamp, type, data}, ...]
GET /pohw/peers
List peer nodes
Response: [{node_id, url, status}, ...]
MONITORING
Registry nodes should expose metrics:
- Attestations per second
- Merkle tree size
- Anchoring latency
- Sync status
- Error rates
- Storage usage
Monitoring Endpoint: GET /pohw/metrics