Trust-minimized OSS rewards on Optimism

Merge the PR.
The contributor gets paid.

A maintainer locks USDC in escrow and adds one workflow file. When a pull request is merged and verified through GitHub and UMA, the contributor gets paid in USDC with no gas cost.

payout trace
chain
optimism
escrow
funded
gas
0 ETH
repopullpay/core
issue#128 funded
mergePR #42 verified
payout$150 USDC sent
gas0 ETH contributor cost
Settlement ready
funds move after verified merge
$0
USDC locked now
$0
Paid out
0
Open rewards
0 ETH
Contributor gas
Simple flow

Fund an issue. Merge a PR. Pay the contributor.

PullPay connects GitHub work to an on-chain USDC reward. The contributor does not pay gas to receive the payout.

Current reward state
example
issue
owner/project #128
reward
$150 USDC locked
PR
#42 merged
check
GitHub verified
payout
sent to contributor
proof
EAS record

Maintainer creates a reward

Choose an open GitHub issue, set the USDC amount, and lock the funds.

USDC locked

Contributor opens a PR

The contributor fixes the issue and gets the pull request merged.

PR merged

PullPay sends the payout

PullPay checks the merge and sends USDC. The contributor pays no gas to receive it.

contributor gas = 0
How it works

Four steps from issue to payout.

Technical docs
01

Create reward

The maintainer picks an issue and locks USDC.

issue + amount
02

Connect repo

The PullPay GitHub App detects when a PR is merged.

GitHub App webhook
03

Check merge

PullPay verifies that the PR was really merged.

GitHub API check
04

Pay contributor

USDC goes to the contributor without contributor-paid gas.

USDC payout + EAS
Reward modes

Choose how much verification the reward needs.

Instant

Fast payout for rewards funded by one maintainer.

fast
UMA
not used first
bond
none
fallback
contributor can escalate
  • Use this when the maintainer trusts the normal merge flow.
  • If payout stalls after the deadline, the contributor can escalate.

Safeguarded

Extra verification for pooled or higher-risk rewards.

safer
UMA
used
bond
required
fallback
dispute window
  • PullPay sends the payout request to UMA before payment.
  • False requests can be disputed before funds move.
Go-to-Market

Who PullPay is built for.

PullPay targets the open-source ecosystem — from solo project maintainers to well-funded Web3 protocols — distributed through the channels developers already use.

OSS Maintainers

Project leads and core teams who want to reward external contributors without managing manual payments or treasury complexity.

channels
GitHub Marketplace · Dev Twitter · OSS forums

Open-Source Contributors

Developers who want to earn USDC for merged PRs — gasless, no wallet setup needed to receive payouts.

channels
GitHub notifications · Bounty boards · Discord communities

Web3 DAOs & Protocols

Decentralised teams that fund public-goods development and need on-chain proof of contribution via EAS attestations.

channels
Optimism ecosystem · Gitcoin · Farcaster
Revenue Streams

How PullPay sustains itself.

Revenue is generated on-chain, proportional to platform usage — no subscription lock-in for maintainers.

Protocol Fee

per payout

A small percentage fee is taken from each USDC payout when a reward is claimed, generating revenue proportional to platform activity.

Safeguarded Mode Premium

per verification

Rewards that opt into UMA dispute resolution pay an additional verification fee to cover the oracle cost and protocol margin.

Pooled Reward Facilitation

per pool

Multiple funders can pool USDC into one reward. PullPay earns a facilitation margin on larger coordinated funding rounds.

Pricing

Simple, usage-based fees.

No monthly subscriptions. You only pay a small protocol fee when a contributor is paid out.

Instant

~1%protocol fee per payout

Best for solo maintainers and low-risk issue rewards.

  • Single maintainer funds the reward
  • GitHub merge verification only
  • No UMA bond required
  • Contributor can escalate if stuck
  • Gas sponsored for contributor

Safeguarded

recommended
~2%protocol fee + UMA cost

Best for DAOs, pooled rewards, and higher-value contributions.

  • Multiple funders can pool USDC
  • UMA dispute-resolution layer
  • Bond required to submit payout
  • Dispute window before funds move
  • On-chain EAS proof of payout
If payout gets stuck

Contributors have a fallback.

If an Instant reward is not paid after the deadline, the contributor can escalate the payout to UMA.

Fallback paths
after deadline
No linked walletmaintainer can refund
Instant reward stuckcontributor can escalate
Invalid requestfunds return
Valid requestcontributor paid
Start small

Try one funded issue first.

Create one reward, connect the repo, and let a merged PR trigger payout.