Fees
Every fee in Grail, who receives it and when it applies. Grail takes no percentage of deposits or withdrawals, and its tokens have no tax.
The pool fee
Every trade of a Grail token in its pool pays Uniswap's 1% fee, from any app or terminal, public or private.
| Share of volume | Who receives it | How |
|---|---|---|
| About 0.167% | Uniswap | On mainnet, anyone can apply the 1% tier's protocol fee of one sixth to a pool. Keepers do this within minutes of a pool's creation |
| About 0.583% | The creator's fee recipient | 70% of what reaches the locked position |
| 0.25% | The Grail treasury | 30% of what reaches the locked position |
Uniswap pays fees in the token that came in: WETH on buys, the launched token on sells. Both sides are split 70/30, so creators receive some of each. The 70/30 split is hard-coded for the life of the pool. Uniswap governance can raise its own share to at most one quarter. Third-party liquidity added to the same pool shares the fee while it is in range.
Collecting fees
GrailLocker.collectFees(positionId) can be called by anyone, and it always pays the token's fee recipient and the treasury directly. Nobody who calls it can redirect the money. Creators can collect from the Rewards page at any time, and Grail's keeper can call it on a schedule. The keeper wallet only pays gas, and it never holds or receives fees.
The launch fee
A launch costs 0.002 ETH plus gas. The fee is fixed at deployment and cannot change. It accrues in the launchpad, and anyone can call claimProtocolFees() to send it to the treasury.
Railgun's fees
Railgun's contracts deduct 0.25% each time funds cross into or out of a private balance. Grail does not receive any of this.
| Action | Railgun's deduction | Pool fee | Who pays gas |
|---|---|---|---|
| Deposit | 0.25% | None | The connected wallet |
| Private buy or sell | 0.25% unshield and 0.25% shield | 1% | Private balance, through the broadcaster |
| Withdrawal | 0.25% | None | Private balance, through the broadcaster |
| Move to a new private wallet | None | None | Private balance, through the broadcaster |
| Public buy or sell | None | 1% | The connected wallet |
The broadcaster's fee
The broadcaster charges the gas it pays plus 10%, as WETH from the private balance. It is based on gas, not on trade size. A withdrawal uses about 1.2M gas, so it cost about 0.0002 ETH at 0.146 gwei and would cost about 0.004 ETH at 3 gwei. These fees refill the broadcaster's gas wallet.
A worked example
A private buy with 1 ETH from the private balance, before gas:
| Step | Amount |
|---|---|
| Railgun unshield, 0.25% | 0.0025 ETH |
| Goes into the swap | 0.9975 ETH |
| Pool fee, 1% of that | 0.009975 ETH, of which about 0.0058 ETH to the creator and about 0.0025 ETH to Grail |
| Railgun shield on the tokens received | 0.25% of the tokens |
Small trades feel gas the most. When gas is high, it can outweigh every percentage above.
Grail is an independent project built on Railgun's public contracts and SDK. Railgun contributors do not run, review or endorse Grail, and they did not write this documentation. Their own documentation is at docs.railgun.org.