Tokenized Block

Tokenized-Block.app · Build a block → B-20 on Base · no admin, no minter.

⚠ Base mainnet — real money

Create, Launch, Liquidity, Swap, Send, and Market pay spend real ETH (measured network gas beside those CTAs; Real Create also sends a separate 0.00005 ETH service fee). Lookup, Quote, Read, gallery, and browsing asks do not spend — they are free to try. What you create is permanent: no admin, no minter, no way to change the name, the logo or the description afterwards. Nobody can undo it — not you, not us.

Consent restored — re-confirm before Create / Launch / LP / Swap / Send

This account accepted mainnet cost within the last 30 days. A pre-checked box is only a reminder. Create, Launch, Liquidity, Swap, and Send stay closed until you tick the money re-ack below for this visit — restore alone must not authorize irreversible sends (Create fee included). Re-ticking the box above is not enough after restore.

Create your block

Name and symbol first — everything else is optional or comes after.

Live preview · engraved on create

Add an image — optional, permanent (replaces the generated logo)
Your block look Colours, shards and material — engraved on create. Optional; preview updates live.

Network: Practice · Base Sepolia · Permanent · Practice: no Tokenized Block fee · no admin · What you will sign

⚠ Soft-gate — empty fingerprint after a mined Create

A Create transaction already mined for this address, but this page still reads no code there (Blocked). Clicking Create again can pick a new salt and burn a second fee for a different block. This page does not invent an explorer answer — check the address yourself, then confirm below.

Address:

⚠ Address changed — check before Create

Free-salt (or a salt edit) reserved a different block address than the one you last previewed in « What you will sign ». This page will not open your wallet until you confirm the new address below.

New address:

Name your block, then connect your wallet to Create.

After Create + connect — Share and Send need your block address and wallet.

What you will sign Destination, data head, gas — open before you confirm in the wallet.
On-chain state Re-read after create — never inferred from a successful send.
No key here — this page presents the tx; your wallet signs. No custody.
No admin / no minter — supply = cap; name, logo, description permanent.
Fees — network gas → Base validators (not us). Real Create: separate 0.00005 ETH Tokenized Block service fee → fee wallet. Practice: 0.
Re-read only — state comes from the chain, not from “sent”.
Next steps After create: launch the pool, add liquidity, or swap — open one at a time.

Put the whole supply in the pool with only the token. Buyers bring the ETH — no capital needed to launch.

Launch quote on this page is native ETH only (Uniswap v4 PoolKey fee 5000 = 0.5 % · tickSpacing 200). This selector does not price the Launch pool in WETH, USDC, or a tokenized stock. Enterprise self-stock valuation (buyers pay in NVDAc / AAPLc / …) ships on OpenLaunch Launch — registry addresses only, never invented tickers.

The 0.5 % goes to you, because you own the liquidity position — nothing is routed to us, and there is no platform cut. Know the other half of that: the key that collects the fee is the same key that can withdraw the liquidity. Uniswap v4 governs both with one check, and they cannot be separated without a purpose-built contract. So this pool is not "locked forever" — you keep control, and anyone buying can see that on chain.

Fee is NONE forever — cannot be raised later. This valuation sets the irreversible start price. Below 1 ETH whole-supply (floor documented 2026-09-07) Launch needs a second confirm — snipers can buy nearly free; this page does not invent a “correct” price.

⚠ Too-cheap valuation — permanent sniper risk

Whole-supply start is below 1 ETH (threshold documented 2026-09-07). Initialize engraves that price forever; snipers can buy nearly free. Prefer raising the valuation — or tick below if you mean it. Fee stays NONE (unchanged).

⚠ Unlimited allowance — lasts until you revoke

This step asks for unlimited allowances (not limited to this one Launch / Liquidity / Swap):

ERC20 → Permit2 uses MAX_UINT256 (token approve).
Permit2 → PositionManager / Router uses MAX_UINT160 amount, with the expiry set to MAX_UINT48 — that is the year ~8,900,000, so it does not expire in any human sense. These are different ceilings — both stay until you revoke.

⚠ Not the Launch pool

This page just Launched with native ETH · fee 0 · spacing 200. WETH and USDC use a different PoolKey (fee 3000 · spacing 60) — usually empty right after Launch. Liquidity / Swap stay on ETH to match the pool that holds your supply, unless you knowingly want a second pool. Swap has the same ack (quote shared via this selector).

Tokenized stocks are not offered in this quote list — selecting one is refused (fail-closed). No soft-gate path for stock pairs on GH Pages.

If the pool is empty, this starting value engraves the price forever — it cannot be reinitialized. Initialize + mint are ONE transaction (same as Launch) — refusing mid-way cannot leave an empty pool. Below 1 whole quote unit (ETH/WETH mirrors Launch <1 ETH; other quotes use 1 whole quote-unit) needs a sniper confirm before Run init+mint.

⚠ Too-cheap starting value — permanent sniper risk

Pool is empty: this starting value will engrave the price forever. Whole-supply start is below 1 whole quote unit (ETH/WETH = Launch <1 ETH floor; USDC/other = 1 whole quote-unit equivalent). Snipers can buy nearly free. Prefer raising the value — or tick below if you mean it.

⚠ Unlimited allowance — lasts until you revoke

This step asks for unlimited allowances (not limited to this one Launch / Liquidity / Swap):

ERC20 → Permit2 uses MAX_UINT256 (token approve).
Permit2 → PositionManager / Router uses MAX_UINT160 amount, with the expiry set to MAX_UINT48 — that is the year ~8,900,000, so it does not expire in any human sense. These are different ceilings — both stay until you revoke.

Quote currency is the Liquidity selector (#poolDevise) — native ETH matches Launch; WETH/USDC is a different PoolKey.

⚠ Not the Launch pool

After native Launch (ETH · fee 0 · spacing 200), WETH/USDC hit a different PoolKey (3000/60) — often empty. Tick here (or on Liquidity) before Run, or switch quote back to ETH on the Liquidity tab.

Tokenized stocks are not in the Liquidity quote selector — Quote/Swap refuse them here (fail-closed).

⚠ Unlimited allowance — lasts until you revoke

This step asks for unlimited allowances (not limited to this one Launch / Liquidity / Swap):

ERC20 → Permit2 uses MAX_UINT256 (token approve).
Permit2 → PositionManager / Router uses MAX_UINT160 amount, with the expiry set to MAX_UINT48 — that is the year ~8,900,000, so it does not expire in any human sense. These are different ceilings — both stay until you revoke.

Lookup Find blocks you made, or read any block address on-chain.

Your blocks

Read a block

How a Tokenized Block works Secondary — what a block is, and what nobody can change once it exists.

A block is bytes you own. You choose a name, a symbol, a supply and a description. The app turns that into a B-20 token — Base's native token standard, where the token is a precompile rather than a deployed contract. Its address always starts with 0xb200, and its code is exactly one byte: 0xef.

Explorers will call it an ERC-20, and they are not wrong. A block emits the same Transfer events as any token, on purpose — that is what lets Uniswap, wallets and explorers handle it without knowing anything about B-20. What sets it apart is not the interface but the code behind it: a deployed contract carries thousands of bytes and can be put behind a proxy, while EIP-3541 forbids any deployed contract from starting with 0xEF. A block's one byte cannot be produced by a deployment at all — measured today: this block carries 1 byte, USDC carries 1852.

It is born finished. In the same single transaction, the block is created, its supply cap is set, and the whole supply is minted to you. There is no window in between. No account holds DEFAULT_ADMIN_ROLE or MINT_ROLE — not you, not us, not anyone. That is not a promise we make; it is a consequence of the transaction you sign, and you can check it yourself with hasRole on any block.

What that costs you: nothing about the block can ever change. Not its name, not its logo, not its description. Minting one more unit is impossible because the supply already equals the cap and no one holds the role. And you cannot destroy them either: burn needs BURN_ROLE, which nobody holds — so the supply can never go down. Sending units to a dead address takes them out of circulation, but totalSupply does not move. Immutability is the feature and the price, in both directions.

The salt fixes the address. Your block's address is derived from the standard, your wallet address, and the salt you choose. Two different wallets with the same salt get two different blocks. The same wallet with the same salt gets the same address — so a salt you have already used is already taken.

Then it can be traded. On this GH Pages create track, Launch pairs the block with native ETH (fee 0 · spacing 200). Liquidity / Swap may also target WETH or USDC on Base Real — those are different PoolKeys (fee 3000 · spacing 60), often empty after Launch. Tokenized-stock quotes are not selectable here (Coinbase B20 stocks live in the issuer registry / OpenLaunch LaunchForm). The app builds every offered transaction in your browser and shows you the state it reads back from the chain between each step.

This page never holds a key and never holds funds. It encodes a transaction and hands it to your wallet. Your wallet shows it to you, and you decide. Nothing is charged: what you pay is the network's gas, to the network, and nothing else.

⚠️ What is not proven yet. Everything above has been exercised end to end on Base Sepolia — a test network. The encoders are compared byte for byte against the reference toolchain, but nothing here has been used at scale by anyone other than its author. Treat it as working code, not as a finished product.