Creating a Standalone Token
The Deploy Token flow creates an ICRC token without running a Liquidity Generation Event (LGE). It is the path to take when you want a token your own dApp drives — custom minting account, custom parameters, programmatic minting — rather than a fair-launch campaign with a bonding curve and a DAO. The two paths are distinct: standalone tokens are deliberately not auto-listed on OhShii Locker (only LGE tokens are). See the full flow in Core Workflows.
Creation flow
Section titled “Creation flow”Standalone creation is a two-call ICRC-2 payment then a deploy. The user pays 5 ICP; the backend verifies the payment and deploys the token’s ledger and index canisters. No governance canister, bonding curve, escrow, or pool is involved — those belong to the LGE path.
| Step | Method (ohshii_launcher_backend) | What happens |
|---|---|---|
| Prepare | prepare_token_creation() | Returns payment_info (amount, expiry, subaccount). |
| Approve | ICP ledger icrc2_approve(backend, amount) | User authorizes the 5 ICP collection. |
| Deploy | create_token_with_icrc2_payment(args) | Backend runs icrc2_transfer_from to collect, allocates funds, deploys the ledger + index, returns Ok(ledger_id, index_id). |
The deployed token is ICRC-1/2/3 compliant and ships with an index canister for transaction tracking — the same ledger + index infrastructure every OhShii token receives.
What you can configure
Section titled “What you can configure”The standalone minter exposes the token’s economic and custody parameters at creation time:
| Parameter | Notes |
|---|---|
| Minting account | The account authorized to create supply. Set this to your dApp’s backend canister to mint programmatically (see below). |
| Subnet selection | Choose the subnet the token canisters are deployed on. |
| Transaction fees | The per-transfer ICRC ledger fee. |
| Decimals | Token decimal precision. |
| Initial balance distribution | The starting supply allocation. May be set to 0 when supply will be minted later by your backend. |
| Controller | The token creator may be the controller (not mandatory). |
Because these parameters are creator-defined rather than the LGE’s standardized, pre-tested configuration, standalone tokens are not added to OhShii Locker — this preserves the Locker’s security and integrity by only listing tokens whose configuration is verified and uniform and whose creator is not the controller.
Non-modifiable security controllers
Section titled “Non-modifiable security controllers”For security, every standalone token’s canisters include a fixed set of platform
controllers that cannot be modified or removed — separate from the
creator-configurable Controller parameter above:
| Controller | Canister ID | Role |
|---|---|---|
| Blackhole Monitor | e3mmv-5qaaa-aaaah-aadma-cai | Cycle monitoring to prevent canister freezing. |
| CycleOps Balance Checker | — | Automated cycle top-up service. |
| NNS Root | r7inp-6aaaa-aaaaa-aaabq-cai | IC-level governance for emergency recovery. |
These are permanent. They differ from the LGE token controller structure, where the OhShii backend and OHSHII governance are temporary and are removed at finalization to hand the DAO full autonomy.
Backend minting via icrc1_transfer
Section titled “Backend minting via icrc1_transfer”When you set your dApp’s backend canister as the minting account at creation time,
minting becomes a single ICRC-1 call: because the minting account is authorized to
create supply, calling icrc1_transfer from that backend canister to a target
address effectively mints new tokens to that address. No separate mint endpoint is
needed.
This is the model for dApps that need dynamic or continuous issuance — usage-based
rewards, activity incentives, performance payouts in skill-based games, referral
programs, and gamification (XP, boosts, digital items). Pair it with an initial
balance of 0 so all supply originates from your backend’s icrc1_transfer calls.
Standalone vs LGE — when to use which
Section titled “Standalone vs LGE — when to use which”| Path | What it gives you | Locker listing |
|---|---|---|
| LGE (Launch LGE) | Bonding-curve fair launch, per-campaign governance canister, automatic ICPSwap pool at finalization, standardized parameters, refund-on-failure. | Automatic — only LGE tokens are auto-listed. |
| Standalone (Deploy Token) | Custom minting account, controller, subnet, decimals, transfer fees, initial balance; programmatic minting from your backend. | Not auto-listed (creator-defined config). |
For the LGE creation, participation, and finalization flows, see Core Workflows.
References
Section titled “References”ohshii_launcher_backend—prepare_token_creation,create_token_with_icrc2_payment(src/backend/src/lib.rs).- Core Workflows — Create Token (§2), Create LGE, finalization, refunds.