Bitcoin, but as a Uniswap hook
The supply is capped at 21 million. Half was placed into a Uniswap pool as liquidity and the contract rejects every attempt to remove it, including from the deployer. The other half is distributed by mining: every ten minutes, whoever predicts the token’s own average price most closely receives that block’s reward. The 1% fee on each trade is destroyed.
What is happening right now
Every buy and sell on the pool as it lands. 1% of each one is taken and destroyed.
Nobody can mine yet
Right now BITHOOK only trades. Mining is switched on separately, so the first predictions are made against a price that trading has already set, rather than the opening price written into the contract.
The emission schedule starts when mining is switched on, not when the contract was deployed.
It counts down to a time the deployer has stated. The contract has no scheduled start and no deadline — mining begins only when startMining() is actually called, which could be later than this, or not at all. Until that transaction lands, every mining function reverts.
What has actually been destroyed
“Burned” gets used for two completely different things here, and only one of them really shrinks the supply. Fees the pool collected, and deposits miners forfeited, were real tokens that now no longer exist.
The other kind is just bookkeeping. When a block receives no predictions, its reward is created and destroyed in the same transaction. Explorers show that as a burn, but nothing was ever really added, so nothing was really taken away — it is a reward that was never handed out. Add the two together and the burn looks about twice as big as it is, which is why they are split here.
Burn the fees yourself
The 1% fee sits in the contract until someone triggers the burn — contracts cannot act on their own. These three functions do that. Any address can call them, no reward is paid for doing so, and the caller pays the gas.
Spends the 0 ETH collected in fees on a swap against this pool, and burns the BITHOOK it receives.
Burns the 0 BITHOOK the pool has collected in fees, removing it from the total supply.
Checkpoints the TWAP boundaries that mining targets are measured from. Keeping this current is what stops miners losing deposits to an unresolvable block.
How it actually works
Two contracts, with no admin functions and no upgrade mechanism. What is described below is what the deployed bytecode does, and it cannot be changed by anyone, including the deployer.
The two contracts
The token is an ordinary ERC-20 capped at 21 million. At launch it created 10.5M and then permanently handed the power to create any more over to the second contract. That handover was a one-time switch and it cannot be flipped back — not by the creator, not by anyone. The only tokens that can ever appear now are mining rewards, on the fixed schedule.
The hook plugs directly into Uniswap so it runs on every single trade. It holds all the liquidity, runs the mining mechanism, takes the 1% fee and destroys it.
The launch curve
Every one of the 10.5M tokens went into the pool with no ETH alongside them. The opening price therefore follows from where that liquidity was placed. There was no pre-sale and no allocation was withheld.
After that the liquidity is sealed. Every attempt to add or remove any of it reverts, for every address, with no exception for the deployer.
Mining: three blocks in flight
Blocks are ten minutes long and run purely on the clock — block n starts at miningStart + 600n seconds, and that is the whole rule. No transaction is needed to open the next block, and no account has the ability to start or stop one.
- You predict. You send in a scrambled version of your prediction —
keccak(tick, salt, sender)— plus a deposit worth 1% of the block reward. Nobody, including you, can change it later, and nobody else can read it. - The answer forms. Over the next ten minutes the pool records its own average price. That average is the target. Predictions closed before this window even started, so there was nothing to copy.
- You reveal it. In the third window you unscramble it. Your deposit comes back and, if you are closest so far, you take the lead.
By the time anyone reveals, the target is already public, so each prediction scores itself on the spot. There is no counting round at the end and no limit on how many addresses can take part. Exact ties are settled by hashing the address, not by who showed first — otherwise whoever could pay to jump the queue would take every tie.
What the deposit really costs
The deposit is not a fee. If you reveal, you get every token of it back — nothing is taken, nothing is taxed. What it actually costs you is time: the deposit is frozen for a while afterwards, so submitting many predictions means having a lot of tokens tied up at once.
A prediction that is never revealed forfeits the whole deposit. The contract has no recovery path for it.
Fees: 100% destroyed
Every trade pays 1%, and the contract burns all of it. No portion is routed to a treasury, a deployer address or any other recipient — the contract contains no function that would allow it.
Fees collected in BITHOOK are burned directly. Fees collected in ETH are spent buying BITHOOK on this pool, and whatever is bought is burned. That second path executes a swap, so it moves the pool price exactly as any other trade of the same size would.
Emission, and why it never ends
Rewards run on the clock and nothing else. No amount of trading volume, hype or activity speeds them up or slows them down. Every block is worth exactly what the schedule says it is worth, whether a thousand people are taking part or none.
If a block receives no predictions, its reward is destroyed rather than carried forward. It does not roll into the next block and does not increase any later reward. As a result, the timing of a claim and the ordering of transactions cannot change what anyone receives.
How the emission schedule works
Each era runs twice as long as the one before it — 7 days, then 14, then 28 — and each hands out half of whatever mining supply is left. The total creeps toward 10.5M forever without ever quite arriving.
Because each era lasts twice as long but pays out half as much, the reward per block drops to a quarter at every transition. Era one emits 5.25M BITHOOK, a quarter of the 21M total.
| Era | Days | Starts day | Era total | Per block | Deposit (1%) |
|---|---|---|---|---|---|
| 1 | 7 | 0 | 5.25M | 5,208.33 | 52.08 |
| 2 | 14 | 7 | 2.63M | 1,302.08 | 13.02 |
| 3 | 28 | 21 | 1.31M | 325.52 | 3.26 |
| 4 | 56 | 49 | 656.3k | 81.38 | 0.81 |
| 5 | 112 | 105 | 328.1k | 20.35 | 0.20 |
| 6 | 224 | 217 | 164.1k | 5.09 | 0.05 |
| 7 | 448 | 441 | 82.0k | 1.27 | 0.01 |
How the liquidity is set up
All 10.5M tokens were placed into the pool as liquidity, with no ETH alongside them. The opening price was determined by where that liquidity sits, not by anyone buying in first.
That liquidity is then sealed. Every attempt to add or remove any of it reverts, for every address, permanently. It covers a fixed price range, and the pool can only trade inside that range.
A swap that would move the price outside the seeded range reverts in full rather than partially filling. The transaction fails and its gas is spent.
Verify everything yourself
Liquidity is permanently sealed: every external add or remove reverts, at all times, by design. Minting authority was handed to the hook irreversibly at launch.