Deploy the token
The full supply — market float plus whatever the project reserves — is printed in the constructor to the deployer. There is no mint function to call afterwards, so this is the only block in which the supply is ever decided.
A launch is a sequence of transactions signed by your own wallet. The private key stays in an encrypted keystore on your machine — the pipeline never reads it, never transmits it, and never accepts it as an argument. Today it runs from a terminal; the one-click browser version is not built yet and is labelled accordingly.
cast wallet import mytoken --interactivePrompts for the key with the input hidden, then a password, and writes an encrypted keystore. Never pass a key as --private-key on the command line: it lands in your shell history and is visible to anything that can list processes.
cast wallet address --account mytokenReads the address out of the keystore without decrypting the key. Check it matches the wallet you funded before you spend gas on a launch.
The full supply — market float plus whatever the project reserves — is printed in the constructor to the deployer. There is no mint function to call afterwards, so this is the only block in which the supply is ever decided.
A contract that will hold the reserve and, later, the liquidity position. It can pay out from its own balance but cannot create tokens, because the token has no function that would let it.
The reserve is transferred from the deployer into the contract. From here the project spends a balance like anybody else. When it runs out, it runs out.
This also freezes the metadata URI permanently, so it is done after the URI is final. After this block the token has no privileged caller.
A Uniswap V3 pool at the chosen fee tier, initialised at the starting price. Token order is decided by address comparison, which flips the price arithmetic — the pipeline computes it rather than trusting a guess.
Tokens only, in a range that sits entirely on one side of the current price, so no counter-asset is required. Buyers walk the price up through the range.
The position NFT is transferred into the project contract, which is what makes a locked-liquidity check pass. It is not on a wallet that can quietly sell it.
Both contracts are verified on the explorer so the bytecode can be read as source. An unverified contract is an unfalsifiable promise.
Fees are collected through the contract owner, and the position can be unwound if the launch has to be reversed. The pipeline exposes each of these as an explicit, confirmed action.
./launch.sh aRuns 01 through 06 in order, asking for the keystore password once for the whole sequence. Steps 07 to 09 are deliberately separate: they move real liquidity and should never run as part of an unattended chain.
The whole supply is created in the constructor and there is no mint entry point afterwards — not for the owner, not for a minter role, not for anyone. Analysers flag capped inflation the same as uncapped, so the only way to clear the flag is for the function not to exist.
The Uniswap V3 position NFT is held by the project contract rather than a deployer wallet, which is what makes a locked-liquidity check pass. Fees stay collectable through the contract owner; the position itself is not on an EOA that can quietly sell it.
After the metadata URI is set, ownership is renounced, which freezes the URI permanently. From that block the token has no privileged caller at all.
Contracts are verified on the explorer at launch, so the bytecode running on chain can be read as source by anyone. An unverified contract is an unfalsifiable promise.
| Contract | Address | |
|---|---|---|
| Uniswap V3 factory | 0x1f7d…2EfA | explorer |
| Position manager | 0x7399…E0D3 | explorer |
| WETH | 0x0Bd7…AD73 | explorer |
These are the public Uniswap V3 deployments on Robinhood Chain. The pipeline calls them directly; there is no router or wrapper of ours in the path. Read the full mechanics.