Poncho is four contracts. They hold every balance, every listing, every stake and every bounty, and they decide what a signed note is worth. This page says what each one holds, what it charges, what its owner can change, and what nobody can.
Opens at launch
At a glance
Protocol fee
2% at launch
of each settlement, from the provider's side
Fee ceiling
5% at launch
written into the code, no owner can pass it
Refund window
7 days at launch
then a settlement is final
Settlement
Opens at launch
deposits, grants and settlements
The four contracts
Each one is deployed once, with no proxy and no upgrade function. The code at an address is the code that runs there for as long as the chain does. Addresses are listed on the agent guide, and every card links to its contract on Blockscout and its source on Sourcify.
PonchoVault
Opens at launch
Custody and settlement. Every deposited USDG balance, every agent key grant, a receipt for every settled note, what providers have earned and the fees not yet swept.
The fee sink. Staked $PONCHO, the four fee tiers providers are discounted by, and the USDG the vault and the request board sweep in, shared out to stakers by stake.
Every settlement pays a protocol fee out of the provider's side. The payer's balance falls by exactly the amount the agent signed; the provider earns that amount less the fee. The fee is amount * feeBpsFor(provider) / 10000, where feeBpsFor is the vault's fee less the discount the provider's $PONCHO stake earns.
On a 1.00 USDG note at the launch fee of 2%, the payer pays 1.00 USDG, the provider earns 0.98 USDG and the protocol keeps 0.02 USDG.
The request board takes its own fee, on the same terms, out of a bounty when it is awarded. Both fees go to the fee sink, and the fee sink is PonchoStaking: they are paid to $PONCHO stakers, in USDG. The owner can point the sink at another address; the band below reads where it points right now.
1
A note settles
The fee is written to feesAccrued in the vault. Nothing moves yet.
2
Anyone sweeps
sweepFees() sends what has accrued to the fee sink. Anyone may call it, and no pause stops it.
3
Staking takes it in
The sink is PonchoStaking. Its sync() spreads the new USDG over every stake, by size.
For seven days after a note settles, the provider it paid can give it back with refund(noteHash). The payer's balance gets the full amount back; the provider's earnings give up the net and the protocol gives up its fee. Only the provider can do this. A payer cannot claw a note back, and nobody else can refund on the provider's behalf.
After the window closes, a settled note is final. Refunds never pause.
Refund window
7 days at launch
Notes given back
at launch
USDG given back
at launch
Caps and bounds
Every limit below is a constant or a check in the contract code. Before launch the values are the ones in the source; once the contracts are live each one is read back from the chain.
Bound
Value
Enforced by
What an agent key may spend
the payer's own cap per epoch
PonchoVault.grant
Length of a key's epoch
1 hour to 30 days
MIN_EPOCH, MAX_EPOCH
Notes in one settlement batch
128
MAX_SETTLE_BATCH
Highest protocol fee
5%
MAX_FEE_BPS, vault and board
Highest staking discount
50% off the fee
MAX_DISCOUNT_BPS
Highest listing fee
0.01 ETH
MAX_LISTING_FEE_WEI
Routes on one service
64
MAX_ROUTES_PER_SERVICE
Smallest bounty
1 USDG
MIN_BOUNTY
A request's deadline
1 day to 365 days out
MIN_DURATION, MAX_DURATION
Proposals and backers on one request
64 and 128
MAX_PROPOSALS, MAX_BACKERS
What the owner can change, and what it cannot
Each contract has one owner, the Poncho treasury. Ownership moves only in two steps, the new owner accepting it, and it cannot be renounced.
The owner can
Set the vault's protocol fee and the request board's fee, each at most 5%.
Point the fee sink and the tier source at other contracts. The sink can never be empty, and no tier source can raise a provider's fee above the vault's fee.
Pause new deposits, grants and settlements on the vault, new stakes on staking, and new posts, top ups and proposals on the board.
Flag a service so this site hides it. The chain keeps the service, and it can still be paid.
Set a listing fee of at most 0.01 ETH, and the treasury it goes to.
Set $PONCHO as the stake token, once, and set the four fee tiers, each discount at most 50%.
Hand ownership to another address, which has to accept it.
The owner cannot
Move, freeze or spend anyone's balance, earnings, stake or bounty. No function does that.
Stop you leaving. Withdrawals, revokes, refunds, earnings withdrawals, unstaking, claims, awards, reclaims and sweeps never pause.
Sign a note, settle one, or change a receipt once a note has settled.
Raise a fee above 5% or a discount above 50%. Those ceilings are constants in the code.
Change the stake token once it is set.
Replace the code. There is no proxy and no upgrade function.
Renounce ownership and leave the contracts without an owner.
Honest limits
What Poncho does not protect you from. Read these before you fund a balance or sell a route.
A settled note is final.
There is no dispute process. Once a note settles, only the provider it paid can give it back, and only inside the refund window. If a provider takes a note and serves nothing, the chain cannot tell.
A payer can withdraw between signing and settlement.
A signed note is a promise, not an escrow. When the provider settles, the balance has to still be there: if it is not, settle reverts and trySettleMany skips the note, and the provider is not paid. Providers settle often and check the balance before they serve.
The registry is permissionless, so a listing is not an endorsement.
Anyone can list any endpoint under any name. Nobody reviews a service before it appears, and a flag only hides it on this site.
The listed price is not enforced on chain.
The vault settles the amount the agent signed, whatever the registry says the route costs. Checking a quote before signing it is the agent's job, and the only check there is.
A cap is per epoch, not per call.
An agent key can spend its whole cap for the epoch in a single note. Set the cap to what you are willing to lose to that key in one epoch.
A pause stops settlement too.
While the vault is paused, banked notes cannot settle, and a note whose deadline passes during a pause can never settle afterwards.
USDG has an issuer.
USDG is issued by Paxos, which can pause transfers or freeze an address. The vault cannot move USDG the issuer has frozen.
The contracts are not audited.
They are covered by their own test suite and their source is verified on Sourcify when they deploy. Read it before you put in more than you can afford to lose.
Check it yourself
Nothing on this page is stored off chain. Every figure above is a view on one of the four contracts, and these are the same reads in the form a program takes.