Tokenomics
Every number here is generated from src/lib/token.ts, which the landing
page also reads. If you change an allocation, change it there — src/lib/token.test.ts fails if
the buckets stop adding up, and the site and this document would otherwise drift apart.
The token
| Name | Niulai |
| Symbol | NIULAI |
| Meaning | 牛来 (niú lái) — "the bull is coming". 牛 is also slang for awesome. |
| Chain | Solana mainnet-beta |
| Standard | SPL Token (classic Token Program) + Metaplex metadata |
| Decimals | 6 |
| Total supply | 1,000,000,000 |
| Buy / sell tax | 0% / 0% |
| Mint authority | Revoked at launch |
| Freeze authority | Never set — see below |
Why one billion. It is a round number and the memecoin convention. There is no cleverer reason, and inventing one would be worse than saying so. There is no split to divide, either — all of it goes into the pool.
The freeze authority was never set, not revoked. spl-token create-token only creates one
when asked with --enable-freeze, and the launch script never asks — so there is no
freeze-revocation transaction to link, because there was never anything to revoke. Both read as
null on the mint account and both are checkable, but they are not the same claim: a revoked
authority existed for a window, and this one never did. See SECURITY.md.
Why 6 decimals. It matches what Solana memecoins generally use — WIF and the pump.fun default
are both 6 — and keeps raw amounts small and readable. Nine would also fit at this supply
(10¹⁸, inside u64::MAX at ≈ 1.84 × 10¹⁹), so this is a preference rather than a limit.
That is worth stating precisely, because it used to be a limit. Under the previous supply of
roughly 88.9 billion, nine decimals produced ≈ 8.89 × 10¹⁹ and overflowed u64 outright — the
mint could not have been created at all. Anyone raising the supply later needs to know the ceiling
moved with it: above about 18.4 billion whole tokens, 9 decimals stops being possible.
token.test.ts pins that boundary.
Allocation
| Bucket | Share | Tokens | Release |
|---|---|---|---|
| Liquidity | 100% | 1,000,000,000 | Paired into the pool at launch, LP tokens burned |
That is the whole supply. There is no second bucket.
This used to be split nine parts community to one part liquidity, with the community share distributed by claim. It was removed rather than adjusted, because a claim needs somewhere to hold the supply until it is claimed — and that place is a wallet or a program holding nearly all of the token. Every version of that is the arrangement this document spent a paragraph explaining it would not do. Putting everything in the pool makes the promise structural instead of stated.
No rounding to explain. One bucket at 100% is the supply exactly. allocationBreakdown() still
folds any remainder into the largest bucket, and a test asserts the total is exact — that safeguard
is kept because a split which does not divide evenly is one edit away, and publishing figures that
don't sum to the stated supply is the detail people screenshot.
What is zero
Not small. Not vested. Not locked behind a cliff. Zero, because the bucket above is 100% of supply and there is nothing left to allocate:
| Founder | No founder wallet is funded at launch. |
| Team | No contributor allocation, no vesting schedule. |
| Private sale | Nothing was sold before launch. |
| VC | No fund holds an allocation or a discount. |
These are enumerated as data in NO_ALLOCATIONS and a test asserts the funded buckets stay
exactly ["liquidity"]. Adding a second bucket breaks the suite before the page can ship,
which is the point — "0% to insiders" is the load-bearing claim on the entire site and it
should be impossible to quietly stop being true.
There is no distribution
No airdrop. No claim. No presale, no allowlist, no snapshot, no merkle root. Buying on a decentralized exchange is the only way to obtain the token, and that is true for everyone including the people who made it.
This is worth stating as plainly as possible, because the absence is the feature. Nobody custodies the supply — not a treasury wallet "on the community's behalf", not a vesting contract, not a distributor program. Those arrangements are indistinguishable from a team allocation with better wording, and they are the single most common way a "fair launch" turns out not to be one. The way to not have that problem is to not hold anything.
A consequence worth being direct about. Anyone offering a $NIULAI airdrop, claim link, presale or allowlist spot is running a scam, without exception, because there is nothing for them to be offering. Nobody from this project will ever send a claim link, and the mint address is only ever published on this site.
Liquidity
All 1,000,000,000 tokens, paired into a decentralized pool at launch, LP tokens burned rather than locked.
Burning rather than locking is deliberate. A lock is a promise with an expiry date and a counterparty; a burn is arithmetic. The trade-off is real and worth stating: burned LP cannot be migrated to a better pool later, and the project gives up the ability to rebalance. That is the cost of not asking anyone to trust a locker contract or a 12-month calendar.
Emissions
There are none. Mint authority is revoked at launch, so the supply is fixed at 1,000,000,000 from the first block it exists and the only thing that changes over time is who holds it.
One chain
Solana, and only Solana. No bridge, no wrapped version, no second deployment planned.
This is a security position more than a technical one. Every bridge and every "v2" is a place someone can be told to move their tokens into something that is not the token, and that instruction is much easier to believe when the project itself has a history of asking people to migrate. There is no version of this project where you should swap your NIULAI for a new one.
What this is not
NIULAI is a memecoin. It has no cash flows, no revenue share, no staking yield, no treasury backing and no promise of return. It is not equity, not a security offering and not an investment product. Its value is whatever the market decides a joke about a bull is worth on a given day, which may be nothing. See SECURITY.md for what is enforced by code and what is still trusted.