DealSeal logoDealSeal· NZ
Avalanche Fuji demo · Web3 NZ 2026

Signing is
paying.

DealSeal turns countersigning into the escrow deposit. Party A creates the agreement first; Party B completes the deal in one on-chain transaction that signs and funds the escrow together.

Avalanche Fuji· dNZD deposit token· Non-custodial
Services Agreement
Engagement of services
between parties
Signature - Party A
DepositAvalanche · dNZD
$4,800 NZD
Counterparty funds move into escrow
Sign & deposit
SIGNED · SEALEDDealSeal logo
1 transaction · atomic
result escrow funded and active
cycle
Fig. 1 · Sign + deposit, atomicLive
§ 00 / Trust

Know you're being paid
before you start the work.

The deposit isn't a promise. Once Party B countersigns, the deposit is already in escrow in that same transaction: verifiable, on-chain, before the work starts.

The question · 01
Will they actually pay?
They already have.
Party B countersigns and funds the escrow in one transaction. If the token transfer fails, the countersign transaction reverts too.
safeTransferFrom + countersign() · atomic
The question · 02
What can I verify before signing?
The contract page shows the deal itself.
Before any wallet prompt, the counterparty flow loads the PDF preview, Party A identity details from the audit record, the deposit amount, and the document hash.
PDF preview · amount · hash
The question · 03
Can they pull the deposit back?
No. Each side can only release funds to the other side.
Each escrow clone has no admin key and no upgrade path. Party B can release funds to Party A when the work's done; Party A can release them back to Party B if the deal falls through. Neither side can pay themselves.
immutable clone · symmetric release
Held in escrow
$4,800 NZD
ESCROW MODEL
Per-deal contract clone
COUNTERPARTY LINK
Secret lives in URL fragment
RELEASE
Each side releases to the other
§ 01 / Premise
Today, a contract and its deposit are two forms, two systems, and two legal risks. “I signed but never paid.” “I paid but never received the doc.” DealSeal removes both, by removing the gap between them.
§ 02 / Flow

Three steps. One commitment.

01Step
Create the escrow draft
Party A uploads the PDF, sets the deposit, signs an attestation, and deploys an escrow clone with the PDF hash, token amount, and share-link secret hash.
02Step
Send the share link
The counterparty receives the escrow link with the secret in the URL fragment. They can load the document and review the amount before they connect a wallet.
03Step
They sign + pay, atomic
One transaction calls countersign() and transfers dNZD into escrow. Later, either signer can release the deposit to the other side; neither can pull funds to themselves.
§ 03 / State

The whole protocol fits on a single line.

This matches the contract enum and methods in `Escrow.sol`, including the terminal withdraw and rescue paths.

DraftInternal defaultAwaitingParty A signedLink sentActiveParty B signedDeposit heldReleasedEither side gaveup their claimClosedFunds withdrawnto recipientDisputedflagDispute()cancelDispute() restores prior stateRescuedrescue() after 365d timeoutinitialize()countersign() + depositreleaseToA() / refundToB()withdraw()
Fig. 2 · Escrow lifecycleEIP-1167 minimal proxy·Closed after withdraw · rescue after timeout
§ 04 / Reputation

Carry your record
across borders.

Reputation in this build is wallet-based. The app surfaces contract counts and dispute status without exposing counterparty names or raw payment amounts on the landing page.

Completedcounted from released deals
Disputedcounted from disputed deals
Dispute ratederived from totals
First seenbased on indexed history
Public lookup
Search any wallet.

ENS names resolve on Sepolia. Counterparties, raw amounts, and document contents never appear in public profiles.

§ 05 / Get started
Sign in with your wallet.
Seal your first contract in under five minutes.

Start from a wallet session, upload the PDF, set the deposit, then send the counterparty link. If Privy is configured, the app can also create an embedded wallet during sign-in.