etherflow.fun
live on Robinhood Chainfees to anyone

Your coin pays
someone
every trade.

Launch an ERC-20 on Robinhood Chain and name a wallet. Up to 2% of the ETH side of every swap goes straight to it. A cause, a creator, a treasury, yourself. The cut is taken inside the pool, so a trade routed through an aggregator pays exactly what a trade from a wallet pays.

launch a coinshare the feesall on ethliquidity lockedno allowlistlaunch a coinshare the feesall on ethliquidity lockedno allowlistlaunch a coinshare the feesall on ethliquidity lockedno allowlistlaunch a coinshare the feesall on ethliquidity lockedno allowlist

Fresh off the chain

read live, nothing cached, nothing curated

Nothing has launched yet

The contracts are not deployed. This table fills itself straight from the chain the moment they are, with no curation and nothing that can be paid for.

the important bit

Taxes leak.
Hooks don't.

The 2021 way to share fees was a tax in the token's transfer function, firing when the pool was on one side of the trade. It worked until it didn't: route the same swap through an aggregator and the pool was never the counterparty, so the tax never fired. By 2026 that pattern mostly reads as a honeypot.

Uniswap v4 moved the extension point into the pool itself. Our hook runs on every swap the pool serves, whoever sent it and however it got there, and it only ever touches the ETH side. Your coin stays a plain ERC-20 anyone can integrate without reading a tax table.

Wallet swaps, aggregator routes and solver fills all reach the same Uniswap v4 pool, where the hook takes its cut of the ETH before splitting it between the nominated wallet and the treasury.wallet swapaggregator routesolver fillUNISWAP V4 POOLFLOWHOOKtakes its cut of the ETHthe curve, untouchedliquidity locked at launchTHE WALLET YOU NAMEDclaimable any timeTREASURYkeeps the site runningno route reaches the curve without passing the hook first

Set the terms, then live with them

Two numbers decide everything: what the pool charges on the ETH leg, and how much of that reaches the wallet you named. Both are written into the pool at launch and there is no function to change either afterwards. Drag them around and see what they mean.

Fee on the ETH leg1.00%

Hard cap in the contract is 2%. Set once at launch, never editable.

Share to your wallet80%

The remainder funds the platform. Also fixed at launch.

Volume, for the sake of the sum
On 100 ETH of volume

0.8ETH

reaches the wallet you named

fee collected
1 ETH
to your wallet
0.8 ETH
to treasury
0.2 ETH

Volume is something a coin either gets or does not. Most do not.

No black box.
Just code.

Every coin launched here is the same fixed-supply ERC-20 with nothing added to it. All of the fee logic lives in one hook attached to the pool, and every line of it is on this page or in the repo.

Read it before you send anything. It is short on purpose.

the fee, taken inside the poolFlowHook.sol · solidity 0.8.26
function beforeSwap(
    address, PoolKey calldata key, SwapParams calldata params, bytes calldata
) external onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24) {
    PoolId id = key.toId();
    PoolConfig memory c = _config[id];

    // ETH is currency0. It is the specified currency exactly when the swap
    // is exact-input zeroForOne, or exact-output the other way.
    bool exactIn = params.amountSpecified < 0;
    if (c.feeBps == 0 || exactIn != params.zeroForOne) {
        return (IHooks.beforeSwap.selector, ZERO_DELTA, 0);
    }

    uint256 named = exactIn
        ? uint256(-params.amountSpecified)
        : uint256(params.amountSpecified);
    uint256 fee = (named * c.feeBps) / BPS;
    if (fee == 0) return (IHooks.beforeSwap.selector, ZERO_DELTA, 0);

    poolManager.take(key.currency0, address(this), fee);
    _credit(id, c, fee);

    return (
        IHooks.beforeSwap.selector,
        toBeforeSwapDelta(int128(uint128(fee)), 0),
        0
    );
}

Pick a wallet. Launch the coin.

Minimum 0.005 ETH of liquidity, no allowlist, no application form, no waiting. Whether anyone trades it is a different question entirely.