4PACK
The paper · BNB Chain · PancakeSwap v2

How 4PACK works

Written to be read once, by somebody who does not write code. Every claim below is a thing you can check on chain. Where a number matters we give the exact number, and where we cannot know something we say so instead of guessing.

1   The idea

Most tokens are paired with one thing. 4PACK is paired with four, and every one of those four pairs is locked shut forever.

When a token launches, somebody puts the token and some money into a pool so people can trade. Whoever put the money in can usually take it back out. That is the single most common way people lose everything: the pool empties, the price goes to nothing, and there is nobody to complain to.

4PACK removes the option. The contract that holds the liquidity has no function that sends liquidity anywhere. Not a locked one, not a delayed one, not an owner-only one. The code to do it was never written, so there is nothing to disable, nothing to renounce, and nothing to trust.

Two promises, and no others. The liquidity cannot be removed. The supply cannot rise.

2   Why these four

The four are BTCB (Bitcoin on this chain), ETH (Ether on this chain), CAKE (the token of PancakeSwap, where all four pools live) and USDT (dollars). That is roughly what a normal BNB Chain wallet already holds. Nothing clever about it.

We picked them on measured depth, not taste. A shallow pool is expensive to buy into, because your own buy pushes the price up against you. We measured what a 10 BNB buy does to the price in each pool on PancakeSwap v2:

PoolRolePrice move on a 10 BNB buy
USDTthe unit of account0.015%
CAKEthe venue's token0.073%
BTCBhard money0.409%
ETHprogrammable money0.411%
DOGE, XRP, LINK, ADAthe next four down1.4% to 2.4%, left out

The gap between fourth and fifth place is the whole argument. Four is where the depth stops being good.

3   The one transaction

Everything is built in a single transaction. It creates the token, the lock, the fee engine and the creator vesting, then makes four pairs, fills all four with liquidity, hands every LP token to the lock, and seals it. When that transaction ends, the system is finished and nobody can add to it.

This matters more than it sounds. If you deploy a token first and add liquidity second, then between those two moments the token exists with no pool. Anybody watching can open a pool themselves, at any price they choose, and sell into the people who arrive next. Doing it in one transaction closes that window completely, because there is no moment where the token exists without its pools.

Afterwards the deployer holds one key on the token, and that key can do exactly two things: set the project fee anywhere between 0% and 10%, and change the address it is sent to. The lock, the fee engine and the vesting have no owner at all.

4   The fee, both ways

Every trade against any of the four pools pays 3%, taken in 4PACK, inside the transaction. 1% is the part described below and it has no setter at all. The other 2% is a project fee, and that part the owner can move between 0% and 10%.

What happens to that 1% depends on which way you traded:

  • You sell. The 1% is burned in the same transaction. It is not sent to a treasury and not parked in a wallet somebody holds the keys to. It stops existing, and the total supply drops by exactly that much.
  • You buy. The 1% is banked inside the token contract instead. It sits there until somebody presses the button described next, and then it becomes liquidity inside the lock.

So selling shrinks the supply and buying deepens the pools. Both directions leave the system holding more per token than it did before, which is the entire mechanism. There is no third destination.

5   The feed button

The banked fees do not move themselves, because something has to pay the gas. The function that moves them is feed(leg) and anyone at all can call it. There is no keeper role and no permission check.

When you call it for one pool, the fee engine takes a slice of the bank, keeps half as 4PACK, swaps the other half for that pool's coin, and adds both sides as liquidity. The LP tokens that come back go straight into the lock, where they stay.

RuleValueWhy
Bounty to the caller1% of the slicePays your gas and a little more, so somebody always has a reason to press it.
Cooldown12 hours per poolEach pool can be fed twice a day at most, so it cannot be drained in one go.
Slice cap2% of that pool's 4PACKKeeps each feed small next to the pool it goes into.

The cap is the part worth understanding. Half of every slice gets swapped, and a swap moves the price. Push the whole bank in at once and that swap is large, which means bots get most of the value instead of the lock. Feeding 2% at a time keeps each swap small enough that almost all of it lands where it is supposed to. As the pool grows, 2% of it grows too, so the feeds get bigger on their own.

6   The free part

PancakeSwap charges its own 0.25% on every trade, separately from the token's 1%. That money does not leave the pool. PancakeSwap keeps 0.08% of it, so 0.17% of every trade stays with whoever holds the liquidity, and the holder is the lock.

Nobody presses anything for this. No cooldown, no bounty, no gas, no transaction at all. It happens on every single trade forever, in both directions, and it accrues into reserves the lock already owns.

This is also why the pools are PancakeSwap v2 and not a version with position NFTs. On the newer designs, fees sit in a claim that somebody has to remember to collect, which means somebody has to be alive and paying gas years from now. On v2 the fee simply lands in the reserves. A locked v2 position gets deeper on its own with nobody watching it.

7   Why the liquidity is safe

LiquidityLock is the contract that holds all four LP balances. It has eleven functions in total, and none of them can send an LP token anywhere. This is the full list of what people usually look for, and what they find:

What you would look forWhat is actually there
withdraw, sweep, rescue, migrateNo such function. Calling it does not fail, it does not resolve at all.
owner, transferOwnershipNo such function. There is no owner variable in the contract.
upgradeTo, pauseNo such function. It is not a proxy and it cannot be stopped.
transfer, approve on the LP tokensNo such function. The lock never approves a spender.
intake, after the sealReverts. It is how the genesis transaction loaded it, and it is shut afterwards.
seal, a second timeReverts. It can only ever happen once.
deepenOpen to anyone, and it can only add. There is no matching subtract.

The remaining functions are views: held(), all(), locked() and addedAfterSeal(). They read numbers and change nothing.

The token has one owner key. It can set the project fee, and change the address it is sent to. That is the whole list. FourPack has no mint, no pause, no blacklist, no way to change the 1%, and no way to move the 2% limits. The ceiling is a constant, so no owner can raise the project fee past 10%. The only other privileged call is draw(), usable by the fee engine alone, and all it can do is move already-collected fees toward a pool.

8   Supply and the creator share

Supply is 1,000,000,000, fixed at genesis. There is no mint function, so it cannot go up. Sell fees burn, so it goes down.

Where it wentShareStatus
The four locked pools95%Locked at genesis, cannot be removed
Creator vesting5%Nothing for 30 days, then daily until day 210

The creator share unlocks on a schedule written into the contract at genesis. Nothing at all for the first 30 days, then a little more each day for the next 180. It cannot be sped up, slowed down, cancelled or moved, because the contract has no function that would do any of those things. You can read exactly how much has vested at any moment on the front page.

9   The two limits

Two caps apply, and they never come off.

LimitValueWhat it means
Max per trade2% of supply20,000,000 4PACK is the most one buy or one sell can move.
Max wallet2% of supply20,000,000 4PACK is the most one address can hold.

Both are constant in the code, worked out from the fixed supply. There is no setter for either one, so nobody can raise them, lower them, or switch them off. The pools and the system contracts are exempt, because a pool has to hold far more than 2% for the market to function at all.

What that means in practice depends on how deep the pools are. The cap is written in tokens, not in BNB, so the amount of BNB it corresponds to moves with the price.

10   The contracts

ContractWhat it doesWho can call it
FourPackThe token. Holds the fee logic, the burn, the bank and the two 2% limits.Anyone can trade. One owner key sets the project fee, capped at 10%.
LiquidityLockHolds all four LP balances forever.deepen is open to all. Nothing else writes.
FeeRouterTurns banked buy fees into locked liquidity.feed is open to all, with a cooldown.
VestingReleases the creator share on a fixed schedule.claim, by the beneficiary only.
LauncherBuilds everything in one transaction, then has no further role.Ran once, at genesis.

11   How to check all of it

None of this needs to be taken on faith. Every claim on this page maps to something readable:

  • That the liquidity is locked. Read the lock's LP balance for each pool, then read the pool's own totalSupply. Compare the two.
  • That there is no way out. Open the lock's verified source on BscScan and read all eleven functions. It is short enough to read in a couple of minutes.
  • That the supply only falls. Search the token's source for a mint. There is not one. Then watch totalSupply over time.
  • That the fee does what we say. Make a small buy and a small sell, and compare burned() and banked() before and after each.
  • That the vesting is real. Read CLIFF and DURATION on the vesting contract. They are constants, not variables.
  • That it was all one transaction. Open the genesis transaction on BscScan. Every contract creation and every pool is inside it.

The front page reads all of these live and shows nothing at all where it cannot get an answer. There are no dollar values anywhere on this site, because we do not have a price feed and would rather show nothing than make a number up.

Everything here is bytecode. Read it before you buy anything, including this.