Docs

How Pullmint works.

Pledge, merge, seal, claim, pay out, withdraw: every rule, what it costs, where the contract lives, who can do what, and what can go wrong.

What Pullmint is

Pullmint is a bounty board for open source that shareholders fund. Anyone can pledge tokenized stock (MSFT, META, NVDA and others on Robinhood Chain) or USDG to any public GitHub issue, without asking the repository's owner. All pledges on one issue form a single pot.

When a pull request that closes the issue is merged by the project's maintainers, the pot is paid, in one transaction, to the wallet of that pull request's author. If no such pull request is merged before a pledge's lock ends, the pledger takes the pledge back.

  • Maintainers decide. Pullmint never judges code. The only signal is a merge that closes the issue, read from GitHub's public API.
  • Nobody claims an issue in advance. Anyone can work on it; the merged pull request wins.
  • Pots stack. Many people can pledge different tokens to the same issue. The board ranks issues by pot value, so the pot is also a vote with stock.
  • No GitHub app, no OAuth. Developers link a wallet once with a signed public gist (a "seal").
  • Payouts run 24/7. Tokenized stocks move on Robinhood Chain at any hour, even while the NYSE is closed.

How to pledge

  1. Open the App and paste a GitHub issue: a URL like https://github.com/owner/repo/issues/123, or owner/repo#123.
  2. Pullmint checks the issue on GitHub (it must be public, open, and an issue rather than a pull request) and shows its pot certificate: title, repository, number, house, current pot by token and its value.
  3. Pick a token, an amount and a lock between 7 and 180 days (30 by default). The form shows the exact unlock date.
  4. Connect a wallet on Robinhood Chain (chain id 4663). The App adds or switches the network for you.
  5. Approve the vault to take exactly that amount of the token (skipped when an earlier approval already covers it), then Pledge. Both are ordinary wallet transactions; you pay gas in ETH on Robinhood Chain.

The pledge is recorded on-chain against the issue's key, keccak256("github.com/<owner>/<repo>#<n>") in lowercase, so anyone can recompute which issue a pledge belongs to.

A pot can hold up to 8 different tokens. Once it does, new pledges must use one of those tokens. Pledges are refused once a claim is proposed or the pot is paid.

How payouts work

1 · A merged pull request closes the issue

The issue must be closed on GitHub by a pull request that was merged. Pullmint finds it from the issue's public timeline: the closed event that points at a commit of a merged pull request, or a linked merged pull request whose description says closes, fixes or resolves with the issue number or URL.

2 · The attester checks

Our attester service signs a claim only when all of these are true at the time it checks:

  • the issue is public and closed;
  • a merged pull request that closes it is found as above;
  • that pull request was merged after the first pledge on the issue (a pot can't be won by work that was already done);
  • the pull request's author has a seal, so there is a wallet to pay;
  • the pot is not empty and its on-chain state is still open.

The signature is an EIP-712 message for the vault: issue key, recipient wallet, pull request number, merge time and a deadline 3 days ahead.

3 · Anyone submits the claim

On the issue's pot page, Submit claim asks the attester for that signature and sends it to the vault with propose(). Anyone can do this, usually the author; the sender pays gas, and the pot can only ever go to the recipient in the signed claim.

4 · A 24-hour notice

A proposed claim waits 24 hours. During the notice the pot is frozen: no new pledges and no withdrawals. Pledgers and the public can check the pull request; the vault owner can cancel the claim if it is fraudulent (see Trust model), which returns the pot to open.

5 · Pay out

After the notice, anyone presses Pay out (finalize()). For each token in the pot, the fee goes to the treasury and the rest to the recipient, in one transaction. The pot is marked paid for good, and the payout appears in the Ledger.

How to seal

A seal links one GitHub account to one wallet, without giving Pullmint any access to your GitHub account.

  1. On the Seal page, connect the wallet that should receive payouts.
  2. Enter your GitHub username and sign this exact text with your wallet (a free signature, not a transaction):
    Pullmint seal
    GitHub: <your username>
    Wallet: <your wallet address, checksummed>
  3. Create a public gist on gist.github.com, signed in as that user, with a file named pullmint-seal.txt containing the text plus the line Signature: 0x…. The Seal page gives you the exact content with a copy button.
  4. Paste the gist URL and submit. The server reads the gist from GitHub's public API, checks that the gist's owner is the username in the message, and that the signature recovers to the wallet.

One GitHub account maps to one wallet. Sealing again replaces the old seal; claims signed after that pay the new wallet. Keep the gist up: it is the public proof of your seal.

Refunds & locks

  • Each pledge has its own lock, from 7 to 180 days, chosen when you pledge.
  • After the unlock date, only the wallet that pledged can call withdraw() and get exactly what it pledged back. Nobody else can withdraw it, and there is no fee on withdrawals.
  • Withdrawal works while the pot is open. It is blocked while a claim is in its 24-hour notice, and impossible once the pot is paid (the pledge became part of the payout).
  • Nothing happens automatically at unlock. An unlocked pledge stays in the pot, and still counts toward a payout, until you withdraw it.
  • If an issue is closed without a merged pull request, there is no claim. Pledges wait for their unlock dates, then their owners withdraw.

Your pledges and their withdraw buttons are on My pledges and on each pot page.

Fees

  • 2% of each token in a pot is taken only when the pot is paid out, and sent to the treasury.
  • Pledging and withdrawing carry no Pullmint fee. You pay network gas in ETH on Robinhood Chain.
  • The fee is capped at 5% in the contract code (MAX_FEE_BPS = 500). The owner can change it only within that cap, and every change emits a public FeeSet event.

Treasury: 0x85D6AAFd098a951531c4797ef2E415e22Cbf59a8

Which tokens

The vault accepts an allowlist of tokens: USDG and the tokenized stocks that trade in Uniswap pools on Robinhood Chain. Each address was checked on-chain (symbol() and decimals()). Tokens that take a fee on transfer are refused by the vault.

Loading the token list…

Pot values use prices from Robinhood Chain Uniswap pools against USDG. They are estimates for ranking, not quotes, and a token without a pool shows no price.

Houses

A house is a label: issues in repositories owned by a company's GitHub organisations are tagged with that company's ticker, so MSFT holders can find Microsoft's issues. It changes nothing in the contract: any token can be pledged to any issue, and pledging to a house says nothing about the company's involvement.

Loading houses…

Trust model & risks

Read this before you pledge. Pullmint is designed so that very little depends on trusting us, but not nothing.

What you trust

  • The attester key, run by us. It signs a claim only for what GitHub's public API shows (the merged pull request, its author, the author's seal). Every claim names the pull request and issue, so anyone can check it against GitHub. A compromised or buggy attester could sign a wrong claim; the 24-hour notice exists to catch that.
  • The vault owner during the notice. The owner can cancel() a proposed claim during its 24-hour notice, returning the pot to open. That is meant for fraudulent claims. There is no other path for the owner to move pledges: no withdraw-on-behalf, no sweep, no upgrade. The owner can also change the fee (within the 5% cap), the treasury, the attester and the token allowlist.
  • GitHub. Issues, pull requests, gists and accounts can be edited, transferred or deleted, and GitHub's API can be down or rate-limited. Claims are checked at the time of signing; what GitHub shows later can differ.

Risks

  • Unaudited code. The PullmintVault contract has tests but no external audit. Smart-contract bugs can lose funds.
  • Tokenized stocks are third-party tokens. They are issued on Robinhood Chain by their issuer, not by Pullmint or the listed companies. Their value, redeemability and transfer rules depend on that issuer, and their prices move, including while the NYSE is closed.
  • Maintainers decide. A maintainer can merge a pull request that you consider incomplete, or close an issue in a way that does not count. A pot rewards the merge, not your opinion of it.
  • Gaming. Someone who controls a repository could open an issue, attract pledges and merge their own pull request. Pledge on issues in projects you know, and watch claims during their notice.
  • Wallet safety. Approve only the amount you pledge (the App does this by default) and check the vault address below before signing.

Nothing on Pullmint is financial advice. Pledge only what you are ready to give away to whoever's merged pull request closes the issue.

Contract addresses

Robinhood Chain mainnet, chain id 4663. Explorer: robinhoodchain.blockscout.com.

Loading addresses…

The only official addresses are the ones on this page, also pinned on our X and Telegram.

$PULL

$PULL is Pullmint's community token. It launches on Pons, the Robinhood Chain launchpad, at launch.

  • $PULL has no claim on fees, pots or the treasury, and the vault does not know it exists.
  • There is no promise of return. It is a community token for people who want this to exist.
  • The contract address is published here, on our X and on our Telegram at launch. Anything else is not ours.

Launch:

FAQ

Do maintainers need to sign up or install anything?

No. Pullmint reads public GitHub data only. A maintainer might not know a pot exists; their only role is the same as always: deciding what to merge.

Two pull requests fix the same issue. Who gets paid?

The author of the merged pull request that closes the issue, as GitHub's timeline shows it. If several merged pull requests reference it, the one that closed the issue counts.

The pull request has several authors.

The pot goes to the pull request's author as GitHub reports it (the account that opened it). Splitting with co-authors is up to them.

I merged before anyone pledged. Can I claim?

No. The merge must happen after the first pledge on the issue, so pots pay for new work.

The author hasn't sealed. What happens to the pot?

It waits. Nothing expires on the pot side: once the author seals, anyone can submit the claim. Meanwhile pledgers can still withdraw after their unlock dates, which shrinks the pot.

The issue was reopened after it closed.

Claims are checked against the issue's current state when the attester signs. A reopened issue isn't claimable until it is closed again by a merged pull request.

Can I add to a pot after unlocking?

Yes. Each pledge is separate, with its own lock and its own withdraw.

Why tokenized stock?

Many of the largest open-source projects belong to listed companies. Holders of those stocks can now fund the issues they care about directly, and developers are paid in an asset they can hold or swap on Robinhood Chain.

Is Pullmint affiliated with GitHub, Robinhood or the companies listed?

No. Pullmint is an independent interface and contract. Tickers and organisation names are used only to label public repositories.

Which wallet should I use?

Any EVM wallet that supports custom networks, such as MetaMask or Rabby. The App adds Robinhood Chain (chain id 4663) for you. You need a little ETH on Robinhood Chain for gas.