robinhood chain · pons v2
Trade the repo.
Every trade feeds its maintainer.
Any public GitHub repository can have one market. Every trade pays into a pot that belongs to the repo, and it fills up until the people who actually maintain it sign in with GitHub and take it.
The river
Markets show up here as they open, with what each pot is holding.
springs · new repos with no market yet
Every river starts somewhere. These are young repositories picking up stars fastest this month; none has a market, and any of them could become one, with its fees waiting for whoever maintains it.
- Asking GitHub what's climbing…
Follow one trade
Say someone buys 1 ETH of a repo's token. Here is where every bit of it goes.
Dear maintainer,
Somebody may have opened a market on your repository. You didn't ask for it, and on most launchpads that would be the end of it: the people who list your work keep the fees, and you get a ticker with your name on it.
Here it works the other way. Each market has a pot, a small contract that Pons records as the market's fee recipient. Every trade adds to it, before and after the token graduates into its Uniswap pool, and the pot holds your share until you come for it. No single key can move it, ours included: every claim waits in public, and a separate guardian can stop a forged one.
To claim, open your repo's market, connect a wallet and sign in with GitHub. If your account administers the repository, we sign a note saying so. The claim sits in public for a day so a forged one can be stopped, and then the pot pays everything it holds to your wallet and keeps paying it from then on. If the repo changes hands, the new admins can claim it too, after three days in public.
What we can't do is take the market down. It lives on-chain. What we can promise is that it pays you.
— tributary
The fine print, in Solidity
Anyone can write nice things on a homepage. Here are the actual lines that make them true, each with a plain reading beside it.
Tributary.sol
if (marketOf[l.repoId] != address(0))
revert AlreadyListed(marketOf[l.repoId]);
One repo, one market, for good. Markets are keyed by GitHub's numeric repository id, which survives renames and transfers. Nobody can open a second one under a new name.
Tributary.sol
creatorFeeRecipient: pot,
The fees go to the repo, not to us. Pons pays a market's creator fees to whoever is named here. We name the repo's own pot.
Tributary.sol
uint16 public constant MAX_PLATFORM_CUT_BPS = 3_000;
RepoPot.sol
uint256 cut = (fresh * platformCutBps) / 10_000;
Our cut is capped and frozen. Each pot remembers the share it opened with (20% of what reaches it today) and nothing can raise it later. The ceiling for any future market is 30%.
RepoPot.sol
uint256 at = block.timestamp +
(maintainer == address(0) ? FIRST_BIND_DELAY : REBIND_DELAY);
Claims wait in public. A first claim waits a day, a change of maintainer three. That is the window to stop a forged claim before any money moves.
RepoPot.sol
function pull() public nonReentrant {
Anyone can collect. Pressing collect sweeps the market's fees from Pons into the pot and pays the maintainer if there is one. No keeper of ours has to be awake. (After graduation, the share Pons takes in the token reaches the pot once Pons' own keeper converts it to ETH.)
What you are not buying
A market on a repo is not a share in it. It gives you no say in the project and no claim on its code or its money, and the people who maintain it never asked for it. The price only moves because other people buy and sell.
Prices on a bonding curve can fall as fast as they rise, and most new tokens go to nearly nothing. The contracts are not audited yet. Pons controls its own factory and can, after a three-day public notice, redirect any launch's fees; we can't change that. Only trade what you can afford to lose.