Appendix C. The SDK (Proofs-as-a-Library)
Copy/paste (plain text):
Jason St George. "Appendix C. The SDK (Proofs-as-a-Library)" in Next‑Gen Store of Value: Privacy, Proofs, Compute. Version v1.0. /v/1.0/read/appendix/c-sdk/ Appendix C: The SDK (Proofs-as-a-Library)
At the top of the stack, the application layer, you work with a small vocabulary:
- “Prove this computation.”
- “Prove this provenance.”
- “Settle this payment under these privacy and finality constraints.”
- “Anchor this result to hardware with this security profile.”
The SDK turns those sentences into types. A claim is a first-class object: ComputationClaim, ProvenanceClaim, SettlementClaim, optionally decorated with requirements. The compiler and runtime then map those claims to whatever combination of proving backends, settlement rails, and verifiable machines currently clear the SLA at the best VerifyPrice.
Core types:
class Policy:
max_verify_time_sec: float
max_verify_cost_usd: float
privacy_level: str # e.g. "encrypted_io", "public"
finality_target: str # e.g. "1m", "30m", "2h"
allowed_hardware_profiles: list # e.g. ["open_tee_v2", "pure_zk_only"]
class ComputationClaim:
fn: Callable
inputs: Any
policy: Policy
class ProvenanceClaim:
media_bytes: bytes
device_profile: str
policy: Policy
class SettlementClaim:
payments: list # [(recipient, amount, asset), ...]
policy: Policy
class Receipt:
claim_id: str
proof_bytes: bytes
settlement_txid: str | None
metadata: dict # verify_time, verify_cost, hw_profile, etc.
SDK surface:
sdk = ProofSDK(networks=[...]) # PoUW chains, zk rollups, open-TEE clusters
claim = sdk.make_claim(...)
receipt = sdk.prove_and_settle(claim, pay_with=user_wallet)
result = sdk.verify(receipt) # -> {accept: bool, metadata: ...}
Everything else—choice of proving backend, choice of settlement rail, choice of hardware profile—is a routing decision made under the hood, constrained only by the policy you declared.
Example 1: Proofed medical inference on verifiable machines
policy = Policy(
max_verify_time_sec = 1.0,
max_verify_cost_usd = 0.001,
privacy_level = "encrypted_io",
finality_target = "30s",
allowed_hardware_profiles = ["open_tee_v2", "pure_zk_only"]
)
@proofed(policy=policy)
def diagnose(image: EncryptedImage) -> Diagnosis:
return model.predict(image)
# In request handler:
claim = sdk.make_computation_claim(fn=diagnose, inputs=enc_image, policy=policy)
receipt = sdk.prove_and_settle(claim, pay_with=clinic_wallet)
result = sdk.verify(receipt)
Example 2: Camera provenance anchored in open hardware
# On capture (running on "open_camera_v1" device):
raw_bytes = camera.capture()
policy = Policy(
max_verify_time_sec = 0.5,
max_verify_cost_usd = 0.0005,
privacy_level = "hide_location_and_identity",
finality_target = "5m",
allowed_hardware_profiles = ["open_camera_v1"]
)
prov_claim = sdk.make_provenance_claim(
media_bytes=raw_bytes,
device_profile="open_camera_v1",
policy=policy
)
receipt = sdk.prove_and_settle(prov_claim, pay_with=newsroom_wallet)
bundle = MediaBundle(media=raw_bytes, provenance_receipt=receipt.export())
Example 3: Private payroll over neutral rails
policy = Policy(
max_verify_time_sec = 3.0,
max_verify_cost_usd = 0.002,
privacy_level = "shielded_settlement_with_auditable_receipts",
finality_target = "2h",
allowed_hardware_profiles = ["pure_zk_only"]
)
payroll_batch = [
Payment(recipient=alice_addr, amount=1000, asset="USDt"),
Payment(recipient=bob_addr, amount=1200, asset="USDt"),
]
settle_claim = sdk.make_settlement_claim(payments=payroll_batch, policy=policy)
receipt = sdk.prove_and_settle(settle_claim, pay_with=treasury_wallet)
Tip: hover a heading to reveal its permalink symbol for copying.