Client-side validation
Every participant validates the chain relevant to them, from the file in their hands. Nothing is taken on a server's word — not the signatures, not the ordering, not the state.
Stage I · Proof of Promise · in development
Programmable Promise turns an agreement into a signed, hash-linked record that every party checks for themselves and Bitcoin makes unique. People, companies, DAOs and AI agents can make commitments whose rules, evidence and consequences are machine-checkable.
How it works · 01
Stage I
A promise is a chain of signed transitions. Each one commits to the one before it, and the ones that matter are committed to Bitcoin by spending a seal that can only ever be spent once.
Step one
One party — the minter — writes the parties, the roles, the obligations, the milestones and their acceptance criteria, the documents, and where a dispute would go. Up to 10 parties and 50 roles. The contract is agreed as a whole, not clause by clause.
Step two
Every party signs the genesis with their VERV ID key — unanimous, or there is no promise. Signing is asynchronous by default: each party reviews and signs through the VERV ID ceremony in their own browser, in their own time, and the promise is minted once the last signature lands.
An agreement that wants everyone present at the same moment sets the optional
Ceremony flag — policies.ceremony, off unless you turn it on — and the
co-signing happens live instead. Only the minter installs software; everybody else needs
a browser and a link.
Step three
The minter spends a seal UTXO in a transaction that commits to the transition hash. A seal can be spent once, so a promise can only ever have one history. This is the RGB mechanism — client-side validation, single-use seals, consignments — implemented natively. It is not an RGB asset.
Step four
The chain travels as a portable .pp file — transitions, signatures, the DID
documents used, and the anchor proofs. Anyone holding it recomputes every hash and every
signature themselves, offline. No server is trusted for validity.
Step five
A dispute goes to mediation — VERV DAO by default, 50 USD-equivalent in stablecoin paid by the party filing it — and then, if that fails, to arbitration: Kleros v2, the private court KEBE, or a provider the parties name themselves. Every outcome is a signed attestation the chain verifies for itself.
What it does · 02
The primitive
Stage I ships the agreement, its evidence and its consequences. It never touches your money.
Every participant validates the chain relevant to them, from the file in their hands. Nothing is taken on a server's word — not the signatures, not the ordering, not the state.
Each anchor spends the current seal and commits to the next transition, so no second history
of the same promise can exist. The RGB mechanism, implemented natively —
pp-core is shaped to become an RGB codex when that toolchain is usable again.
Parties are did:verv subjects. People sign through a browser ceremony that shows
them what they are signing, in their own time; AI agents sign with their own controller keys.
Keys can rotate without invalidating what was signed before.
VERV DAO mediates by default for 50 USD-equivalent in stablecoin — USDT on TON first — paid by whoever files. Escalation goes to Kleros v2, KEBE, or a custom provider whose key the parties put in the agreement themselves.
One service layer sits behind the local JSON API, the MCP server and the interface. A feature does not exist until an agent can reach it over MCP with tests to prove it.
.pp filesThe chain, the signatures, the DID documents as they stood, the evidence hashes and the anchor proofs — one container you can hand to a counterparty, a mediator or an auditor, and they can check it without you.
Creating the promise, amending it, cancelling it and declaring it fulfilled take every party's signature. Everything in between runs on policies you write yourself — k-of-n verification, custom roles, a named party, or a provider's key.
The full node keeps the promises, the keys and the wallet locally, and reaches other nodes peer-to-peer. Only the party who mints installs it; the rest need nothing but a browser and a link.
Apache-2.0, written in Rust, with the protocol documented as a normative specification — canonical form, envelopes, policies, consignment and anchor layout — so somebody else can build an implementation that agrees with ours.
Privacy · 03
35 bytes
Anchoring publishes a commitment, not a contract. What goes into the block is a three-byte tag and one hash — the same 35 bytes whether the promise is a handshake or a hundred-page facility agreement.
Everything that means anything stays in the consignment, and the consignment goes only to the people entitled to it. Parties get the chain, because a contract is agreed as a whole. A mediator or an arbitrator gets a disclosure bundle that the filing party exports deliberately — the registry stores only its hash.
What the chain stores public
OP_RETURN 50 50 31 8f3c9a04b1e77d25c60af9138b5ee4a027d1c8f36ba490e7715c2d0846fb39ca
A 3-byte tag "PP1" plus a 32-byte commitment. 35 bytes, and they mean nothing to anyone without the consignment.
What never leaves the parties private
Stages · 04
Roadmap
Custody is the part that is easy to promise and hard to be trusted with, so it comes after the primitive is real and running.
Iin development
The agreement, its evidence and its consequences — with no custody and no escrow.
IIplanned
The promise starts carrying transferable things, and stops depending on one node.
IIIplanned
Value moves inside the promise instead of alongside it.
Ecosystem · 05
VERV
did:verv identities, and the signing ceremony every party signs through.
athanor.market
Athanor
The first client integration — real deals structured as programmable promises.
Support the work · 06
Bitcoin
The protocol is Apache-2.0 and the specification is public. There is no token, no sale, and no investor deck behind this — a protocol that has to sell you something before you can read it is a protocol asking to be trusted first.
Nobody is being paid to write this. If the idea is worth something to you, the address below takes bitcoin, and it pays for the time that goes into Stage I.
Bitcoin, on-chain
bc1qfm3msz7vha9sthz6760zu80mu8ff92nz22k0x7
It buys nothing. Not a token, not equity, not a place on the waitlist, not a say in what gets built, and not a line of code you will not be able to clone for free under Apache-2.0 anyway. It is a thank-you, and that is all it is.
Most people's bitcoin sits inside an exchange, which holds the keys on their behalf. Open its withdrawal screen, paste the address, and choose the Bitcoin network itself — not a wrapped version of it running on some other chain, which would not arrive. The exchange sets its own fee and its own minimum. Once a withdrawal is confirmed, neither it nor we can call it back.
Paste the address, choose a fee you are willing to wait for, and send. Nothing here asks for your name, your email, or an account of any kind. The address is a single reused one, so anyone who cares to look can see everything that has ever arrived at it — including you.
Waitlist · 07
One email
Stage I is being built now. Leave an address and we will write once — when there is a node you can run and a promise you can mint.
A promise nobody can quietly rewrite is a small thing to build and a large thing to have.