Skip to content
Phlogiston

The contracts, and how to check them

Everything the furnace does happens in one contract, a Uniswap v4 hook. It has no owner and no settings that can be changed. You do not have to take this page's word for any of it: every figure can be read from the chain with one command.

Where it is deployed

Uniswap v4 sits at the same addresses on both networks, and its contracts were checked to have identical bytecode on testnet and mainnet. The last step in the next section shows how to check that yourself.

The parameters

Read from the deployed contract just now. Every one is either a constant or set once in the constructor. None can be changed afterwards.

Time between firingsinterval, set once at deploy
180 seconds
Fee on every swapfeeBps, set once at deploy; the constructor refuses more than 5%
100 bps (1%)
Share of a launched coin's fees that burns $PHLOflagshipShareBps, set once at deploy; capped at 50%
1000 bps (10%)
Tip for whoever lights itigniterTipBps, set once at deploy; capped at 1%
100 bps (1%)
Smallest pot that firesminIgnition; smaller pots carry over
0.0010 ETH
Starting tick for every launchstartTick; about 654 million coins per ETH at the opening price
203,000
Tick spacingTICK_SPACING, a constant
200
Pool's own LP feeLP_FEE, a constant; the furnace fee is the only fee
0
Largest price move per firingIMPACT_SQRT_NUM, a constant
5%
Supply of every coinSUPPLY, minted once into the pool
1,000,000,000
Engraving of a combustion apparatus: a large gas holder on the left, a tall glass vessel in the middle, and a line of tubes and two round flasks along a long table.
Planche XI of the Traité élémentaire de chimie (1789). Lavoisier weighed and measured what went into a fire and what came out of it. Source. Internet Archive Book Images, via Wikimedia Commons. No known copyright restrictions.

Verify it yourself

These use Foundry's cast and the public RPC of Robinhood Chain mainnet. Reading costs nothing and needs no wallet.

  1. 1. Point cast at the network and the contracts

    export RPC=https://rpc.mainnet.chain.robinhood.com
    export FURNACE=0x2564357f5F49dc09Ff1250A4B79C81026beAE0cc
    export COIN=0x141F9C2300493402C05370Ea1eE2D31A2676f1A8

    For the other network, use https://rpc.testnet.chain.robinhood.com and its addresses instead.

  2. 2. Read the rules it was deployed with

    cast call $FURNACE "interval()(uint256)" --rpc-url $RPC
    cast call $FURNACE "feeBps()(uint256)" --rpc-url $RPC
    cast call $FURNACE "flagshipShareBps()(uint256)" --rpc-url $RPC
    cast call $FURNACE "igniterTipBps()(uint256)" --rpc-url $RPC
    cast call $FURNACE "minIgnition()(uint256)" --rpc-url $RPC

    The minimum is in wei: 1000000000000000 is 0.001 ETH.

  3. 3. Read a coin's pot and its burn totals

    cast call $FURNACE "coinView(address)((address,address,bool,uint64,uint64,uint32,uint32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint160,int24))" $COIN --rpc-url $RPC

    The fields come back in this order: coin, creator, is it the flagship, launched at, last epoch, ignitions, firings, ETH in the pot, coins in the pot, lifetime fees, lifetime ETH fired, coins burned, total supply, next ignition time, can it be lit now, pool price and tick. Amounts are in wei and in 18-decimal coin units.

  4. 4. Check the supply on the coin itself

    cast call $COIN "totalSupply()(uint256)" --rpc-url $RPC

    It started at exactly 1000000000 followed by 18 zeros. Every firing makes it smaller, and nothing can make it larger.

  5. 5. Look for an owner

    cast call $FURNACE "owner()(address)" --rpc-url $RPC
    cast call $COIN "owner()(address)" --rpc-url $RPC

    Both revert. Neither contract has an owner function, an admin role or an upgrade path.

  6. 6. Light the furnace yourself

    cast call $FURNACE "nextIgnitionAt(address)(uint256)" $COIN --rpc-url $RPC
    date +%s
    cast send $FURNACE "ignite(address)" $COIN --rpc-url $RPC --account <yours>

    Once the current time passes the next ignition time, anyone may call ignite. Earlier, it reverts with NotYet and tells you when. The call costs only gas, and pays you 1% of the pot when it fires. Replace <yours> with a keystore you made with cast wallet import; never paste a private key into a command.

  7. 7. Compare Uniswap v4 on both networks

    cast keccak $(cast code 0x8366a39CC670B4001A1121B8F6A443A643e40951 --rpc-url https://rpc.testnet.chain.robinhood.com)
    cast keccak $(cast code 0x8366a39CC670B4001A1121B8F6A443A643e40951 --rpc-url https://rpc.mainnet.chain.robinhood.com)

    The two hashes match. Do the same with the Quoter (0x8dC178eFB8111BB0973Dd9d722ebeFF267c98F94) and StateView (0xF3334192D15450CdD385c8B70e03f9A6bD9E673b).

What the contract cannot do

  • No owner functions. There is no owner, admin or pause. The deployer could launch the flagship once, and that is the only special power anyone ever had.
  • No mint after launch. Each coin's billion is minted once, at launch, straight into its pool. The token has no mint function.
  • Liquidity cannot be removed. The billion minted at launch sits in a position the hook owns, and no code path in the hook takes it out.
  • Fees cannot be withdrawn. The only way ETH leaves a pot is ignite: one buy of the coin, and every coin bought is burned in the same transaction.
  • Parameters are immutable. The interval, fee, shares and minimum are fixed at deploy. There is no setter and no upgrade.

Known limits

  • A very large pot burns over several firings. One firing may move the price at most 5%. Whatever that buy could not spend stays in the pot for the next one.
  • Some sells pay their fee in the coin. A sell that asks for an exact amount of ETH out pays its fee in the coin itself. Those coins are not sold; they are burned at the next firing.
  • Every route pays the same fee. Trades through this site and trades through any other v4 router pay the same 1%, because the fee is taken inside the pool.
  • Other people can add liquidity of their own. Uniswap v4 lets anyone add a position to any pool. It earns nothing here, since the pool's LP fee is 0, and its owner can take it out again. That never touches the launch liquidity.
  • A firing needs someone to send it. If nobody calls ignite, nothing is lost: the pot keeps growing until the next call, from the keeper or anyone else.

On the record

The furnace runs on Robinhood Chain mainnet, and the same contract was tested end to end on testnet first. Every line below is a transaction you can open on the explorer.

Robinhood Chain testnet

Tested end to end

Chain 46630

Deployed
November 6, 2026 at 07:49 UTC, block 149,409,535
$PHLO launched
0xc2922c…6b3f9f
Gas for both
0.000054 ETH
Source code
Verified on Blockscout: Furnace, PhloToken

The test run, in order

  1. 1Buy 0.003 ETH of PHLO; 1% went into the pot. 0x6b6ff8…05d019
  2. 2Sell half of it back; 1% into the pot again. 0xc386f6…974aa5
  3. 3Launch a second coin, CALX, with a 0.001 ETH first buy. 0x301f57…7784e3
  4. 4Light the pot bought PHLO and burned all of it; the lighter got the 1% tip. 0xb094d2…1b9f2d

29,647.8 PHLO burned on the first firing; total supply fell to 999,970,352.2.

Contract tests: 19 unit and fuzz tests, plus a fork test that runs the whole flow against the real Uniswap v4 PoolManager on both networks. Both furnaces were deployed from 0x6C079ff20B77fBbc89Fb5C90c5f43Cf24166d7D4, the only address that could launch $PHLO, once. The source of all four contracts is verified as an exact match of the deployed bytecode.

Where mainnet stands

The furnace went live on mainnet on 6 November 2026. These are the steps a launch like this should have, and which of them are done.

  1. 1Done

    A full run on testnet

    One wallet bought, sold, launched a second coin and lit the furnace; the burn and the tip both landed.

  2. 2Not yet

    An independent review

    No outside review or audit of Furnace.sol has been done. The contract is immutable, so read it before you trade.

  3. 3Not yet

    A hardware-wallet deployer

    The deployer key is in an encrypted keystore on a computer, not a hardware wallet. It has no power left over the furnace.

  4. 4Done

    A simulated deploy

    The deploy script ran against mainnet without sending anything first; the gas was about 0.0001 ETH.

  5. 5Done

    Deploy, then verify the source

    The contracts are live, and their source is verified as an exact match: on Sourcify for mainnet, on Blockscout for testnet.

  6. 6Done

    Switch the site to mainnet

    This site reads the mainnet furnace and shows its addresses.

  7. 7Not yet

    Fund the keeper

    Until a keeper runs, visitors light the furnace themselves and keep the 1% tip.

Questions about a figure on this site? Every firing is in the ledger, with its transaction once the furnace is live.