A permanent market from the first block.
Stank is a BNB Smart Chain launchpad for fixed-supply tokens. Every launch opens a canonical concentrated-liquidity pool with the full launch-token supply on one side of the range. The position is sent to a permanent locker, so there is no graduation event and no later liquidity migration to wait for.
Once a launch confirms, the token is a normal transferable ERC-20 and its canonical pool is available through the Stank router path. Wallets and aggregators may index a new pool on their own schedules.
Trade the token. Stake when you want rewards.
Connect to BNB Chain
Use a compatible wallet on chain 56, choose a token page, and review the pair, fee, pool, and lock details before swapping.
Buy or sell
Trades use the selected bStock or BNB asset. The launch token has no transfer tax, blacklist, pause switch, or trading delay.
Stake to earn
Stake the launch token in its holder distributor. A 24-hour activation delay helps reduce flash-stake capture, then rewards stream over seven days.
Rewards are paid in the paired asset. Unstaking returns principal; claiming only withdraws earned rewards.
How staking to earn rewards works.
When a token launches with a holder share (its holderRewardBps is above zero), part of every trade's 1% fee is set aside for the people who hold and stake it — paid in the token's paired asset (e.g. TSLAB, WBNB, or a stablecoin), never in the launch token itself. Each launch gets its own HolderRewardsDistributor; holders stake there directly from the token page.
Stake your tokens
Approve and deposit your launch tokens into the distributor. Your stake begins in a 24-hour pending state.
Activate after 24 hours
Once the activation delay passes, activate your stake so it starts earning. The delay stops anyone from flash-staking right before a big trade and skimming the rewards.
Earn, streamed over 7 days
Active stakers share the holder allocation of every trade's fee, split pro-rata by stake size. New fees stream over seven days instead of paying in one lump, so rewards accrue smoothly.
Claim anytime
Withdraw your earned paired-asset rewards to your wallet whenever you like. Claiming takes only the rewards — your stake keeps working.
Unstake anytime
There is no lock on principal — withdraw your staked tokens whenever you want. Rewards you already earned stay claimable.
Every trade pays a 1% fee. The protocol always takes 20%; the remaining 80% is divided at launch between the creator and holders (for example 30% creator / 50% holders). The launch-token side of the fee is burned (deflationary), while the paired-asset side funds the reward vault — which credits the creator's share and the holder distributor. Stakers claim the holder share; the creator claims theirs from the same token page.
A token launched with holderRewardBps = 0 shares nothing with holders, so there is nothing to stake for — the token page says so plainly.
Your launch, your split, a market that stays open.
Choose the pair
Pick an enabled bStock or BNB Chain asset. The pair is the asset used for opening price, trades, and rewards.
Set the opening market
Choose a fully diluted opening market cap. Stank derives a non-zero, tick-aligned starting price.
Set the split
The protocol always receives 20%. You choose how the remaining 80% is divided between creator and holders.
Confirm the pool fee
The current BNB launcher uses the fixed 1% V3 tier. If a future factory exposes 2% or 3%, verify that fee on-chain before signing.
Review and launch
The factory deploys the token, pool, locker, vault, and holder distributor in one flow.
Share the market
Trading starts in the canonical pool immediately. Send users to the token page using its token address.
Fixed share of rewards.
Choose your share of the 80% community pool.
Stakeholders receive the rest of the 80%.
Creator and holder basis points must add up to 8,000. A common split is 3,000 creator / 5,000 holders. The reward recipient can be a separate creator wallet, but the holder distributor is wired automatically.
One-sided liquidity, permanently held.
fixed-supply token
at the chosen price
the permanent locker
- The launched token is minted once; there is no owner mint path.
- The pool position cannot be transferred, approved, or decreased.
- Fees are collected separately from principal. The lock stays in place while rewards are paid.
- There is no graduation threshold, migration event, or second “official” pool.
Build on the same primitives Stank uses.
Builders can index launches from events, resolve a launch with getLaunch(token), quote swaps through the configured V3 router, and link users to the token page with the token address. Treat the factory events as the source of truth rather than scraping UI cards.
0x6f62ed8940B08c53aBD072EcE07d2f6de7e11eD9 ↗0x645aaAc10028360862c8703780f7C892aeC9E094 ↗0xC90169e8A3D29f76eb6F6C2295BaC18012989332 ↗interface IStankLaunchFactory {
struct LaunchParams {
string name;
string symbol;
uint256 totalSupply;
address pairedAsset;
uint256 initialMarketCapPaired;
uint16 creatorRewardBps;
uint16 holderRewardBps;
address rewardRecipient;
uint256 initialBuyAmount;
address buyRecipient;
string metadataURI;
bytes32 userSalt;
}
struct Launch {
address token;
address pairedAsset;
address creator;
address rewardRecipient;
address pool;
address permanentLocker;
address rewardVault;
address holderRewardsDistributor;
uint256 positionId;
uint256 totalSupply;
uint256 launchTokenLiquidityAmount;
uint256 permanentlyLockedDust;
int24 tickLower;
int24 tickUpper;
uint16 creatorRewardBps;
uint16 holderRewardBps;
uint64 launchedAt;
}
function launch(LaunchParams calldata params)
external payable returns (Launch memory created);
function predictNextTokenAddress(
address creator, bytes32 userSalt, string calldata name,
string calldata symbol, uint256 totalSupply
) external view returns (address);
function getLaunch(address token)
external view returns (Launch memory);
}const tx = await factory.launch({
name: "Example Token",
symbol: "EXAMPLE",
totalSupply: ethers.parseUnits("1000000000", 18),
pairedAsset: pairAddress,
initialMarketCapPaired: openingMarketCap,
creatorRewardBps: 3000, // 30% of total fees
holderRewardBps: 5000, // 50% of total fees
rewardRecipient: creator,
initialBuyAmount: 0,
buyRecipient: creator,
metadataURI: "ipfs://...",
userSalt: ethers.keccak256(ethers.toUtf8Bytes("my-launch")),
});
const receipt = await tx.wait();
// Index LaunchCreated and LaunchEconomicsConfigured.
// Route users to /token?address=<created.token>.LaunchCreated, LaunchEconomicsConfigured, and InitialBuyExecuted.
Persist token, pool, locker, reward vault, holder distributor, position ID, ticks, and split values from the launch result.
Only launch with assets where isPairAssetActive(asset) is true and the contract has code.
Read the source. Verify every address.
These are the contracts a builder may integrate with. The source links below are the exact files bundled with the app; always compare deployed bytecode and constructor arguments on BscScan before sending a transaction.
Deploys the fixed-supply token, creates the pool, seeds one-sided liquidity, and wires rewards.
Source ↗Fixed supply with no owner mint, transfer tax, blacklist, trading switch, or graduation step.
Source ↗Admin-curated bStock and BNB asset list. Deactivation affects future launches only.
Source ↗Holds the pool NFT without a liquidity decrease, transfer, approval, rescue, or destroy path.
Source ↗Accepts paired-asset rewards and applies the fixed 20% protocol / 80% creator-plus-holder split.
Source ↗Streams the holder allocation to staked launch-token holders after the activation delay.
Source ↗Creates the immutable locker, vault, and holder distributor bundle for each launch.
Source ↗What protocol operators can change.
Add, label, update, or deactivate pairing assets. Deactivation only blocks new launches; it does not strand historical pools.
The factory can pause new creation during an incident. Existing transfers, swaps, claims, and exits remain separate.
Protocol treasury and conversion-keeper settings govern future fee routing. Existing launch economics are snapshotted.
The public Admin page is an operations console, not a replacement for multisig controls. Confirm the connected wallet and chain before signing.
Smart-contract risk is real.
Stank launches are permissionless markets, not investments or endorsements. Tokenized stocks can have issuer controls, regional restrictions, pauses, or other behavior that a launchpad cannot remove. A permanent pool can remain locked even if a paired asset becomes unavailable.
Never trust a copied address, ticker, screenshot, or private message. Verify the chain, token, pool, pair asset, fee tier, and transaction details in your wallet and on BscScan. Use only funds you can afford to lose.
The contract source and deployment manifest are provided for integration and verification. Independent audits, exact-core fork tests, and operational review should be completed before treating any deployment as production-safe.