Proof of Physical Work · PoPW

A receipt anyone can check.

Every accepted task becomes a claim: what was asked, who did it, where the evidence came from and which policy accepted it. Claims are hashed, batched and anchored on Base.

How a proof is builtA photo, a robot odometry trace and a verification policy are hashed into one claim, 0xe7e7…d547. The claim joins three others in a Merkle tree. Only the 32-byte root, 0x15c3…01c4, is anchored on Base. The photo itself never goes on-chain.IMAGEODOMETRYPOLICY v1.0OTHER CLAIMSCLAIM 0xe7e7…d547ROOTBASE · ROOT 0x15c3…01c4BATCH ANCHOREDON-CHAIN: 32 BYTES. NOT ON-CHAIN: THE PHOTO.
Test vectors · PoPW Canonical Encoding v0.1
§ 01

A blockchain is not a camera.

It remembers exactly what it was told. That's why we're careful about what we tell it — and honest about where it came from.

A PoPW receipt proves

  • A defined task existed, posted by a known kind of requester for an accountable person or organization.
  • This exact evidence bundle — of this declared origin — was submitted.
  • It was evaluated under this exact, versioned verification policy.
  • This outcome was decided, under this rights record and settlement.
  • None of it has changed since the batch was anchored.

It does not prove

  • That a blockchain saw anything. It didn't. Capture and verification did.
  • “A human definitely folded this towel.” That remains the result of capture and verification.
  • Who you are, where you live or what the photo shows. None of it is on-chain.
  • That a model is right. Models estimate; a named policy decided.
  • Anything about the value of $PORT.
§ 02

What's on the receipt.

A claim has 25 fields. Names, places and raw media never appear — people and organizations are salted commitments, revealed only to an authorized auditor, one claim at a time.

PROOF OF PHYSICAL WORKclaim 0xe7e7efca…d547
VERIFIED

Task
Open door 3B for a delivery robot
Requested by
Robot, for a verified org
Performed by
Human
Evidence
Guided capture + robot odometry
Policy
door-assist v1.0
Decision
Accepted
Paid
$3.00 · USDC
Anchored
Base · batch 0xf376…77ad

STATUS: FINAL
Example receipt.
The task
taskSpecHashtriggerHashmandateHashworkflowIdHash
Who asked, who did it
requesterTypeprincipalCommitmentactorTypeactorCommitment
The evidence
evidenceRootevidenceOriginFloormanifestHash
The decision
verificationPolicyHashverificationEvidenceHashdecisionrightsHash
Money and security
settlementReferenceHashassurancePolicyHashsecurityReferenceHash
Time
executedAtverifiedAt
§ 03

Change one character.

This is the real trigger document from the door-assist test vectors, and the hash committed in its claim. Edit the robot's ID by one digit and see what survives. Both hashes were computed when this page was built.

trigger · RFC 8785 canonical JSON

{"occurredAt":"2026-10-29T21:02:11Z","sourceRef":"amr-0042","type":"ROBOT_EXCEPTION"}
{"occurredAt":"2026-10-29T21:02:11Z","sourceRef":"amr-0043","type":"ROBOT_EXCEPTION"}

keccak256( keccak256("teleport.tap.trigger") ‖ keccak256(JCS(trigger)) )

Committed in the claim
0x239107ca225bb55a3ec8ee68bfbdd1cd8869a73722c4554adf6a3c0a409cba45
Recomputed from the document
0x239107ca225bb55a3ec8ee68bfbdd1cd8869a73722c4554adf6a3c0a409cba450xb603ea26c065fdd9d44ec8a15c6bde843ca3d74cbe2cff7e7260c8acd1dd3768
MatchNo longer matches the claim

The claim, its batch root and the Base anchor all still agree.

One digit, a completely different hash. The claim, the root and the anchor now disagree with the document — anyone can see it was altered.

§ 04

From claim to Base, in four hashes.

Keccak-256 for anything structured, SHA-256 for raw files. Only the root goes on-chain. These are the published test vectors, on Base Sepolia.

  1. 01

    Claim

    All 25 fields are hashed as one EIP-712 struct, bound to Base and to the registry contract.

    claimHash0xe7e7efca66…53d547

  2. 02

    Leaf

    The claim hash is hashed again to make a Merkle leaf, so a leaf can never pose as a node.

    keccak256(claimHash)0x1668f74701…9a7904

  3. 03

    Batch

    Leaves are sorted and paired into a tree. One 32-byte root stands for the whole batch.

    merkleRoot0x15c33e99ae…7601c4

  4. 04

    Anchor

    The verifier posts the root to the PhysicalWorkRegistry on Base, which emits BatchAnchored.

    batchId0xf37679174f…c977ad

Want to check it yourself? The verification walkthrough takes three steps and only public data.

§ 05

How much to trust it is written on it.

Every proof carries an assurance tier, capped by its weakest evidence. Uploaded photos can reach Standard; Teleport capture and attested devices can go higher. See the caps.

  1. Standard

    Routine observations and ordinary operational work. One verifier, a short challenge window.

  2. Verified

    Higher-value datasets and enterprise workflows. More review, more $PORT behind it, a longer window.

  3. High assurance

    Multiple verifiers and human adjudication. Planned; not live at launch.

§ 06 · The proof network

Dollars pay for the work. PoPW proves it. $PORT secures the proof.

A verifier locks $PORT as a bond behind every batch it anchors. If it signs something provably false, part of that bond is taken. Nobody needs $PORT to post a task, do one, or get paid.

  1. Bond

    The verifier locks $PORT against a batch before anchoring it on Base.

  2. Challenge

    During the challenge window, an authorized challenger can point to a specific, checkable fault.

  3. Slash, rarely

    Only provable misconduct costs bond. Otherwise the bond is released when the window closes.

Can cost a bond

  • Signing two conflicting attestations
  • Building an invalid batch
  • Signing without authorization
  • Citing a policy that doesn't exist
  • Signature fraud or replay
  • Misstating where evidence came from
  • Claiming more assurance than the evidence allows

Never costs a bond

  • “The room did not look clean.”
  • “I disagree with the AI.”
  • A model that was honestly wrong
  • A good-faith judgment call

Canonical $PORT is the existing Ethereum token; proof operations run on Base. $PORT is a network-security asset, not payment for work and not an investment offer. Protocol is a draft.

Get proof

Put a receipt on the work you already pay for.

Verify-only mode checks work done anywhere — by your team, your contractors or your robots.