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.

An escrow cube of golden light flanked by the issuer's gold key and the receiver's silver key

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.

Escrow · example transactionLocked
ESCROW#4821 · locked
ISSUER0x3d9f…8a2c
RECEIVER0x7e4b…c3f1
OPENED2026-08-05 · 14:32 UTC
TERM ENDS2026-09-04 · 14:32 UTC
ISSUER CANrelease() → settles to receiver
RECEIVER CANcancel() → returns to issuer
ON EXPIRYreturns to issuer, automatically

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