01 / The core primitive
Escrow Protocol
A term-bound, non-custodial escrow. The issuer can only release. The receiver can only cancel. When the term ends untouched, the escrow returns to the issuer — automatically.

How it flows
STEP 01
Open
The issuer opens an escrow, names the receiver, and sets the term.
STEP 02
Lock
The escrow locks on-chain — visible to both parties, spendable by neither.
STEP 03
Two keys
The issuer can only release it forward. The receiver can only cancel it back. Neither can pull it toward themselves.
STEP 04
Settle
Released, cancelled, or expired — every path ends with the escrow settled to the receiver or returned to the issuer.
The transaction
Every escrow resolves to the same on-chain object: a term-bound escrow with one key on each side. This is what both parties see for the entire term.
What makes it hold
One term, set up front
Every escrow has an opening time and an expiry. Between them, the rules cannot change.
Asymmetric keys
release() belongs to the issuer, cancel() to the receiver. There is no action that moves the escrow toward the caller.
Automatic expiry
If nothing happens by the end of the term, the escrow returns to the issuer. No claims process, no intervention.
Non-custodial
The escrow lives in the smart contract. BitRegalo never takes custody, and there is no admin key.
Next protocol
Request for Proposal