Protocol

Contracts and powers

The contracts behind POO.MEME, what its powers reach, and what every token keeps.

Addresses

Robinhood Chain · 4663Deployment record
ContractAddressRole
PooTokenFactory0xe1F55E2edf044F1E631Bb0baD300905DEB525C4ACreates tokens
PooModuleRegistry0x11473e2f9a90ce03338fF6a9e7cB024D11c6FC74Publishes modules
PooVenueRegistry0xCcFcF37B8221Ba39002cD900c3Ef0F6b7454E7F9Lists markets and quote assets
PooMetadata0x7F20A1FefcA84FD31C3E0cef540Ba49f3b01315BProfiles, labels and handles
PooBlueprint0xD099a2187083550f4dE0f1A33f463E423714FF40Holds the code new tokens are made from
PooProbeStandIn0x136930bf28cDd90B5B1fE4760EC2f15A9b6eC437The token a module is tested against before it is published
BNB Smart Chain · 56Deployment record
ContractAddressRole
PooTokenFactory0xa0175A0e2FeE1cB31AD97CC96E02d18f328F0e95Creates tokens
PooModuleRegistry0x978CbfFB4e0Dd734Bae289e04Bc03a98F7d92560Publishes modules
PooVenueRegistry0x891EeC4ed32489065c96E60c3Ea7AA149d6362d0Lists markets and quote assets
PooMetadata0xc0E71f117dBE394e3c9d38d01aAC2da96F8C8f0eProfiles, labels and handles
PooBlueprint0x778C1933474CEC97E693E5975c4E47A5Bc7B8401Holds the code new tokens are made from
PooProbeStandIn0xFC18AEF98Df78E434e24c08E9d4664E329B0963bThe token a module is tested against before it is published

Every address here is verified on its chain's explorer, so the source behind it can be read there — except the two PooBlueprint holders (the one above, and the Fixed Presale blueprint below). A holder's runtime IS another contract's code rather than compiled output, so no bytecode match can verify it; what a reader checks instead is the factory, which pins the blueprint's codehash and answers it from blueprint().

Both registries are proxies, so each has an implementation behind it and an admin that can replace it. What those powers reach is below; the addresses are here so a reader can check them.

Robinhood Chain · 4663Deployment record
ContractAddressRole
Token factory implementation0x2Fcc14Cd0F7b149729877438fADE98cDAA66BfEdThe code the token factory's proxy runs
Token factory proxy admin0x69F8bb0D22C416C946E8A7aa4EceC0126bc8234FCan replace that code
Module registry implementation0x87CDee52c4574f8823E703D61b6AF3f5e4349068The code the module registry's proxy runs
Module registry proxy admin0x22e2f4FA33435269399fD1388D15b24c9Dc6F775Can replace that code
Hooks0xcb82e5150c298d695aec1be5d4910f707a404960Library: reads what a module asked to be called for
ManifestChecks0xf562aae3620e0e6bca521d6205f00cb1268e62f4Library: holds a manifest to the standard
GasFloors0x1cc1aceb6035698760c831ab6856ec305feecef8Library: the gas a token guarantees each hook
BNB Smart Chain · 56Deployment record
ContractAddressRole
Token factory implementation0x4C3647f32d2339fDf59CecDA80dD53071BF3FC4cThe code the token factory's proxy runs
Token factory proxy admin0x3d50356358cfc478C794e62833EA7f006e52C17DCan replace that code
Module registry implementation0x9e6Bc79E815Fd35C8D4C5cFD2572d6FBecB6ef08The code the module registry's proxy runs
Module registry proxy admin0xF8011a5b904f81c503D29A30578b81229c9434aECan replace that code
Hooks0xcb82e5150c298d695aec1be5d4910f707a404960Library: reads what a module asked to be called for
ManifestChecks0xf562aae3620e0e6bca521d6205f00cb1268e62f4Library: holds a manifest to the standard
GasFloors0x1cc1aceb6035698760c831ab6856ec305feecef8Library: the gas a token guarantees each hook

POO.MEME's own modules

Published to the same registry as anyone else's, and held to the same checks. Each has its own page under Modules.

Robinhood Chain · 4663Deployment record
ContractAddressRole
Fixed Presale factory0xc0E71f117dBE394e3c9d38d01aAC2da96F8C8f0ePublishes and creates a presale for a token
Fixed Presale code0x17646068dDd75396aD15912f3a8050BF59EFD42cHolds the code each presale is made from
Fixed Presale locker0x978CbfFB4e0Dd734Bae289e04Bc03a98F7d92560Holds a locked liquidity receipt until its time is up
Fixed Presale manifest0xa0175A0e2FeE1cB31AD97CC96E02d18f328F0e95The page a presale asks the interface to draw
Holder Rewards factory0xA2E8f24293D6Ca27a8c36Cb91c8A3d3B9487D243Publishes and creates a holder reward pot
Volume Boost factory0x0fBd019bC7Cf82862A3981e86246be0e8fffAEE2Publishes and creates a volume module
BNB Smart Chain · 56Deployment record
ContractAddressRole
Fixed Presale factory0x7EBF6981aDCC4dd4Ef9316539353f4081e1A7D4cPublishes and creates a presale for a token
Fixed Presale code0x7d22d2a6Ab0909A7800a1B6fa2adc4523D925D7eHolds the code each presale is made from
Fixed Presale locker0x5FD63F5d13Fd23312F513613333A0D6F96875844Holds a locked liquidity receipt until its time is up
Fixed Presale manifest0xD7aAcA30862C4FC5B72B8AA8F47E3f8eC6b7ab73The page a presale asks the interface to draw
Holder Rewards factory0x7C2C7B7557AfF5c70444BBECDbcAa25b547349CDPublishes and creates a holder reward pot
Volume Boost factory0x86f800158f300Af9DD64f972ef29D0b949fEC50aPublishes and creates a volume module

What POO.MEME can do

Over things that already exist, POO.MEME has one power:

Handles
Drop a handle; restore a dropped one to the wallet that held it, replacing any handle that wallet took since; or reopen a dropped handle nobody held. Modules published under a dropped handle keep working.

No power reaches an existing token’s tax table or modules, and none writes a profile or a label.

Every other setting reaches only what is created later:

SettingAffects
POO.MEME’s share and who receives itNew tokens
Creation and publish fees, and who receives themNew tokens and modules
Markets and quote assetsNew tokens
The code new tokens are made fromNew tokens
The gas a creation must fitNew tokens
The token factory the module registry works withNew tokens

The token factory and the module registry can be upgraded. An upgrade reaches later creations and publications, never a token or module that already exists.

What every token keeps

  • Its tax table and POO.MEME’s share, as created.
  • Its supply. Nobody can mint more.
  • Its modules, running the exact code checked at creation.
  • Its launch money, inside the launch module. No POO.MEME contract can set a deadline on a claim or refund.
  • Its scheduled opening.

How modules are held in check

Every module is treated as untrusted, POO.MEME’s own included.

WhenWhat is checked
PublishingThe manifest is well formed, every read it names works, and every hook runs within its gas limit, within that hook’s ceiling.
CreationEach module runs exactly the published code, belongs to this token, has exactly its published hooks and takes only the shares it accepts.
Every tradeEvery call to a module has a gas limit. A failed call is skipped and the trade goes on. Only Gate can turn away a buy; nothing can stop a one-hop sell, a sale straight to the pool, or a wallet transfer. A sell routed through another pool runs its module calls before the router’s later hops, so a module trading its own money there can take the slippage that sell allowed, and no more. An Operate run that leaves this token’s pool worse for the seller behind it is undone, and the sell goes on.

Being listed as a module gives no power over anyone’s balance. A module moves its own tokens, or tokens a wallet approved to it directly, exactly as any other address would — the list changes nothing about that.

Checks cannot prove a module behaves as it says: how a launch module holds contributions, whether it locks its liquidity, and when it opens trading are its own code. Nobody reviews that code — not POO.MEME, not anyone. What publishing fixes is identity, not conduct: a module’s code, its hooks and its gas caps are set when it is published and can never change, so the module a creator chose is the module the token runs, and a newer version is a separate entry a creator picks for a new token. Inside those bounds a module does whatever its code does, and what holds it there is the table above — limits the token applies to every module on every call, POO.MEME’s own included, and that nobody can waive. A module’s description is its developer’s own account of what it does, pinned with the entry; read it as that, and read it before you pick a module or buy a token that uses one.

Hooks

HookThe module can
GateTurn away a buy. It can never move the token
TrackSee transfers and the balances they leave. It can never move the token
ReceiveBe told when its tax share is paid. It can never move the token
Operate on sellAct in a run — just before a sell, or when the token’s tax sale is processed — including trading the token
Operate on buyAct in a run inside a buy, after the gate has let it through, including trading the token

A run is armed by one trade and delivered inside the next of its kind: a taxed sell arms the sell side, a taxed buy arms the buy side, and an exempt trade or a wallet transfer arms neither. A module can also ask for a sell-side run without a trade; nothing can reach the buy side except a buy. A run is told the trader and amount that triggered it. The guard watches this token’s own pool. If an Operate run leaves that pool worse for that seller — less quote, a lower price with more quote, or tokens left unsynced — the run is undone and the sell goes on. A run that only adds tokens to the pool passes, so leave room for it in your slippage.

A route around the tax

Modules trade with their token tax-free. If a module can pass on tokens bought into it, a buyer could use it to skip the tax. The standard requires its description to say whether it can — a statement its developer writes and nothing behind it proves, so read it.