Nodule is a token launchpad on Ethereum. Every token launched here charges a tax on the profit of each sale. The tax fades the longer the seller held, and it is paid to the people still holding the token. A token can also launch with an AI agent that lives on its fees.
Each token trades in one Uniswap v4 pool against its pair: ETH, USDC, another major crypto token or a tokenized stock from Ondo. A hook on that pool watches every trade. Buying is free of tax. Selling at a profit pays a share of that profit, and the share goes to the holders once per season, on Tax Day.
The hook remembers what you paid for your tokens, in the pair. When you sell, it compares what the sale is worth with what those tokens cost you.
The rate starts at the creator’s start rate and falls in a straight line to the floor over the decay time. After that it stays at the floor.
rate = start - (start - floor) x held / decay while held < decay rate = floor after that tax = rate x (sale value - cost of the tokens sold)
The example used across this site is a token that starts at 25%, falls to 1% and takes 7 days to get there.
| Sold on | Rate | Tax per 1 ETH profit | Weight |
|---|---|---|---|
| Day 0 | 25% | 0.250 ETH | 1.00x |
| Day 1 | 21.6% | 0.216 ETH | 1.29x |
| Day 2 | 18.1% | 0.181 ETH | 1.57x |
| Day 3 | 14.7% | 0.147 ETH | 1.86x |
| Day 5 | 7.9% | 0.079 ETH | 2.43x |
| Day 7+ | 1% | 0.010 ETH | 3.00x |
Your rate depends on how long you have held, counted from the average date of your purchases. One wallet has one clock per token.
A token runs in seasons. The creator picks the length, from 3 to 14 days, and the first season starts at launch.
claim.Claims do not expire. What you leave unclaimed stays yours and adds up across seasons.
Your share of each tax payment follows your weight. Weight is the amount you bought times a multiplier that grows from 1x to 3x over the decay time.
weight = tokens bought x (1 + 2 x min(1, held / decay))
poke for you. Between touches it stays at the last value, never above the real one.A sale of any size gives up what you earned in the current season and leaves you without weight until the next one. What you give up is split among the holders who stayed.
In the next season your weight comes back the first time your wallet is touched: a buy, a sale, a claim or a poke.
Rewards from earlier seasons that already unlocked are not affected. Only the season in progress is given up.
A creator can switch on a rebate for people who sell below their cost. When it is on, one fifth of every tax payment goes to the season’s rebate fund instead of the holders.
min(fund, total losses x rebate rate), shared in proportion to each loss. You take yours with claimRebate.The rebate rate can be at most one fifth of the floor rate, and never above 10%. A token with a 1% floor can offer 0.2%. To offer 1%, the floor has to be 5%. The cap exists because a larger rebate would let an old wallet with a lot of weight fake a loss through a second wallet and come out ahead.
The token is built to be bought and sold in its pool. Moving it between wallets works, with consequences.
Do not deposit a Nodule token anywhere. Keep it in the wallet that bought it.
At the first trade of each block the hook notes the pool price, which is where the previous block closed. If someone bought earlier in the same block and pushed the price up, a sale in that block is split in two.
You never receive less than you would have by selling first, from the previous close. Wait one block after a large buy and the normal rule applies to the whole sale.
Sells that ask for an exact amount of the pair out are refused. Sell an exact amount of tokens instead.
The fading rate is for the wallet that signs the transaction and delivers its own tokens. Anything else is treated as a new holder.
withdrawRefund.Quote tools and token scanners that only look at the swap output may show the start rate as the tax. The refund arrives separately in the same transaction.
One transaction creates the token, opens the pool, deposits the whole supply and locks it. You set five rules and they never change.
| Rule | Range | What it does |
|---|---|---|
| Start rate | 0% to 40% | Tax on profit for someone who sells right after buying. |
| Floor | 0% to the start rate | Tax on profit for long-term holders. |
| Decay time | 1 to 30 days | How long the rate takes to fall, and how long weight takes to reach 3x. |
| Tax Day | Every 3 to 14 days | Length of a season. |
| Loss rebate | 0% to 10%, at most one fifth of the floor | Share of a loss paid back on Tax Day. |
A token trades against one pair, chosen at launch from a list the protocol keeps. Prices, the tax, rewards, rebates and fees are all counted and paid in that pair.
| Pair | What it is | Starting market cap |
|---|---|---|
| ETH | Ether | About 1.9 ETH |
| USDC | USD Coin, by Circle | About 4,500 USDC |
| WBTC, SOL, UNI, ONDO, SEND | Crypto tokens on Ethereum | About $4,500 worth |
| AAPL, TSLA, NVDA and more | Tokenized stocks and ETFs, by Ondo | About $4,500 worth |
A token can launch with an agent. The creator picks its character, model and powers. From then on the creator share of the pool fee goes to the agent’s treasury instead of the creator.
| Limit | Range | What it does |
|---|---|---|
| Per buyback | Up to 25% of the treasury | The most one buyback can spend. |
| Per 24 hours | Up to 50% of the treasury | The most all buybacks can spend in a day. |
| Wait between buybacks | At least 10 minutes | Spacing between two buybacks. |
| Max price move | Up to 5% | A buyback stops when it has moved the price this much. |
| AI cost cap | Up to 30% of all fees | The most the agent can ever spend on its own thinking. |
The pool charges 1% on every trade, in both directions. This is separate from the tax.
Burned.
Anyone can call collect for a token. It gathers the pool fees, credits the pair side to the creator and the protocol, and burns the token side. Each of them takes their balance with withdraw.
The creator earns from pool fees only, and nothing at all when the token has an agent. None of the tax goes to the creator.
If almost nobody holds with weight, there is no fair way to split a tax payment. While the total weight is under 0.1% of the supply, tax is set aside instead of being credited.
What is set aside is released over time to whoever has weight at that moment. Each interaction with the token releases elapsed / (season + elapsed) of what is left. One call after a full season releases half. Leftovers from the rebate fund join the same pile.
How the design behaves at the edges. Worth reading before you trade.
0x3957…5AE20xda99…a8C4| Call | Contract | What it does |
|---|---|---|
launch( | Launcher | Creates a token, its pool and, if asked, its agent. The buy amount becomes the first buy. |
collect( | Launcher | Gathers pool fees, credits the pair side and burns the token side. Open to anyone. |
withdraw( | Launcher | Sends your credited pool fees in that currency. |
claim( | Hook | Sends your unlocked rewards. |
claimRebate( | Hook | Sends your rebate for a season that ended. |
withdrawRefund( | Hook | Sends a tax refund that could not be delivered during a sale. |
poke( | Hook | Refreshes a wallet's weight. Open to anyone. |
taxRateOf( | Hook | Reads the rate a wallet would pay now. |
rewardsOf( | Hook | Reads what a wallet can claim and what is still locked. |
sweep() | Agent treasury | Moves the agent's credited fees into its treasury. Open to anyone. |
buyback( | Agent treasury | Buys the token and burns it, inside the limits. The agent, or anyone after 30 quiet days. |