Protocol Match
Campaigns, Match Escrow, retention checkpoints and slashing.
The internet-native employer match
An employer match works because someone else pays into an account you keep. Protocol Match rebuilds that relationship without an employer: any application can fund matching for the users who transact through it, and the account those matches land in belongs to the user.
The application's incentive is retention. A user with a growing account inside your product behaves differently from a user chasing a temporary rebate, and the Console measures exactly that difference.
Match Escrow
Every advertised rate is backed by capital already deposited. Publication is rejected if escrow cannot cover the campaign's advertised exposure, and escrow is drawn down as matches settle.
1// MatchEscrow.sol2pragma solidity ^0.8.24;34interface IMatchEscrow {5 event CampaignFunded(bytes32 indexed campaign, uint256 amount);6 event MatchReleased(bytes32 indexed campaign, address indexed account, uint256 amount);78 /// @notice Deposit the capital that backs an advertised match rate.9 function fund(bytes32 campaign, uint256 amount) external;1011 /// @notice Released by settlement once a contribution receipt is verified.12 function release(bytes32 campaign, address account, uint256 amount) external;1314 /// @notice Remaining capital behind a published campaign.15 function available(bytes32 campaign) external view returns (uint256);16}- Funding
- Deposited before publication, in the settlement currency.
- Release
- Callable only by the settlement contract, against a verified receipt.
- Exhaustion
- A campaign with empty escrow stops matching and is marked exhausted in the registry.
- Return
- Unspent escrow returns to the workspace when the campaign window closes.
Campaign parameters
A campaign is a published, funded offer. Six parameters decide what it pays and to whom.
- Kind
- Contribution Match, Feeback, Win Sweep Bonus, Retention Match or First Contribution.
- Trigger
- The activity that makes a match owed, such as a completed trade or a closed position.
- Rate
- The share of the user's contribution the application will pay.
- Cap
- A per-user ceiling per day, week or month.
- Budget
- Total escrow committed to the campaign.
- Audience
- Which accounts qualify, expressed as an activity rule rather than an address list.
1import { investor } from "@/lib/investor";23await investor.campaigns.publish({4 name: "September Future Match",5 kind: "contribution-match",6 trigger: "trade.completed",7 rate: 0.2, // 20% of the user's Future Split8 cap: { amount: 5, period: "day" },9 budget: 100_000,10 window: { start: "2026-09-01", end: "2026-09-30" },11 retentionCheckpointDays: 30,12 funding: "escrow",13});- MeridianContribution Match20%$184.2K
- ValeContribution Match15%$92.4K
- NorthstarRetention Match25%$64.9K
- ParcelFirst Contribution10%$212.8K
- CurrentFeeback30%$128.6K
Contribution retention
A Retention Match is only confirmed once the contribution survives a checkpoint. The match is reserved at the moment of the contribution, held in escrow, and released when the checkpoint clears. If the user withdraws the contribution first, the reservation is returned to the campaign.
- Checkpoint
- None, 7, 30 or 90 days from the contribution.
- Reservation
- Escrow is committed at contribution time so the advertised rate stays solvent.
- Release
- On clearing the checkpoint, the match settles into the user's recipe.
- Reversal
- If the contribution is withdrawn before the checkpoint, the reservation is released.
Slashing
Two failures are slashable, and both are provable from onchain state: advertising a match that escrow cannot fund, and settling a batch that does not correspond to verified receipts.
- Unfunded advertising
- Publishing a rate the escrow cannot cover for the advertised audience.
- Invalid settlement
- Producing a batch that does not reconcile to the receipts it claims.
- Penalty
- A portion of the bonded $INVESTOR, sized to the shortfall, plus registry suspension.
- Destination
- Slashed capital covers the affected accounts first, then the security reserve.
$INVESTOR bonding
Bonding is the condition of participating, not a yield product. An application bonds before it can publish; an operator bonds before it can settle.