Protocol
Contracts and powers
The contracts behind POO.MEME, what its powers reach, and what every token keeps.
Addresses
| Contract | Address | Role |
|---|---|---|
| PooTokenFactory | 0xe1F55E2edf044F1E631Bb0baD300905DEB525C4A | Creates tokens |
| PooModuleRegistry | 0x11473e2f9a90ce03338fF6a9e7cB024D11c6FC74 | Publishes modules |
| PooVenueRegistry | 0xCcFcF37B8221Ba39002cD900c3Ef0F6b7454E7F9 | Lists markets and quote assets |
| PooMetadata | 0x7F20A1FefcA84FD31C3E0cef540Ba49f3b01315B | Profiles, labels and handles |
| PooBlueprint | 0xD099a2187083550f4dE0f1A33f463E423714FF40 | Holds the code new tokens are made from |
| PooProbeStandIn | 0x136930bf28cDd90B5B1fE4760EC2f15A9b6eC437 | The token a module is tested against before it is published |
| Contract | Address | Role |
|---|---|---|
| PooTokenFactory | 0xa0175A0e2FeE1cB31AD97CC96E02d18f328F0e95 | Creates tokens |
| PooModuleRegistry | 0x978CbfFB4e0Dd734Bae289e04Bc03a98F7d92560 | Publishes modules |
| PooVenueRegistry | 0x891EeC4ed32489065c96E60c3Ea7AA149d6362d0 | Lists markets and quote assets |
| PooMetadata | 0xc0E71f117dBE394e3c9d38d01aAC2da96F8C8f0e | Profiles, labels and handles |
| PooBlueprint | 0x778C1933474CEC97E693E5975c4E47A5Bc7B8401 | Holds the code new tokens are made from |
| PooProbeStandIn | 0xFC18AEF98Df78E434e24c08E9d4664E329B0963b | The 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.
| Contract | Address | Role |
|---|---|---|
| Token factory implementation | 0x2Fcc14Cd0F7b149729877438fADE98cDAA66BfEd | The code the token factory's proxy runs |
| Token factory proxy admin | 0x69F8bb0D22C416C946E8A7aa4EceC0126bc8234F | Can replace that code |
| Module registry implementation | 0x87CDee52c4574f8823E703D61b6AF3f5e4349068 | The code the module registry's proxy runs |
| Module registry proxy admin | 0x22e2f4FA33435269399fD1388D15b24c9Dc6F775 | Can replace that code |
| Hooks | 0xcb82e5150c298d695aec1be5d4910f707a404960 | Library: reads what a module asked to be called for |
| ManifestChecks | 0xf562aae3620e0e6bca521d6205f00cb1268e62f4 | Library: holds a manifest to the standard |
| GasFloors | 0x1cc1aceb6035698760c831ab6856ec305feecef8 | Library: the gas a token guarantees each hook |
| Contract | Address | Role |
|---|---|---|
| Token factory implementation | 0x4C3647f32d2339fDf59CecDA80dD53071BF3FC4c | The code the token factory's proxy runs |
| Token factory proxy admin | 0x3d50356358cfc478C794e62833EA7f006e52C17D | Can replace that code |
| Module registry implementation | 0x9e6Bc79E815Fd35C8D4C5cFD2572d6FBecB6ef08 | The code the module registry's proxy runs |
| Module registry proxy admin | 0xF8011a5b904f81c503D29A30578b81229c9434aE | Can replace that code |
| Hooks | 0xcb82e5150c298d695aec1be5d4910f707a404960 | Library: reads what a module asked to be called for |
| ManifestChecks | 0xf562aae3620e0e6bca521d6205f00cb1268e62f4 | Library: holds a manifest to the standard |
| GasFloors | 0x1cc1aceb6035698760c831ab6856ec305feecef8 | Library: 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.
| Contract | Address | Role |
|---|---|---|
| Fixed Presale factory | 0xc0E71f117dBE394e3c9d38d01aAC2da96F8C8f0e | Publishes and creates a presale for a token |
| Fixed Presale code | 0x17646068dDd75396aD15912f3a8050BF59EFD42c | Holds the code each presale is made from |
| Fixed Presale locker | 0x978CbfFB4e0Dd734Bae289e04Bc03a98F7d92560 | Holds a locked liquidity receipt until its time is up |
| Fixed Presale manifest | 0xa0175A0e2FeE1cB31AD97CC96E02d18f328F0e95 | The page a presale asks the interface to draw |
| Holder Rewards factory | 0xA2E8f24293D6Ca27a8c36Cb91c8A3d3B9487D243 | Publishes and creates a holder reward pot |
| Volume Boost factory | 0x0fBd019bC7Cf82862A3981e86246be0e8fffAEE2 | Publishes and creates a volume module |
| Contract | Address | Role |
|---|---|---|
| Fixed Presale factory | 0x7EBF6981aDCC4dd4Ef9316539353f4081e1A7D4c | Publishes and creates a presale for a token |
| Fixed Presale code | 0x7d22d2a6Ab0909A7800a1B6fa2adc4523D925D7e | Holds the code each presale is made from |
| Fixed Presale locker | 0x5FD63F5d13Fd23312F513613333A0D6F96875844 | Holds a locked liquidity receipt until its time is up |
| Fixed Presale manifest | 0xD7aAcA30862C4FC5B72B8AA8F47E3f8eC6b7ab73 | The page a presale asks the interface to draw |
| Holder Rewards factory | 0x7C2C7B7557AfF5c70444BBECDbcAa25b547349CD | Publishes and creates a holder reward pot |
| Volume Boost factory | 0x86f800158f300Af9DD64f972ef29D0b949fEC50a | Publishes 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:
| Setting | Affects |
|---|---|
| POO.MEME’s share and who receives it | New tokens |
| Creation and publish fees, and who receives them | New tokens and modules |
| Markets and quote assets | New tokens |
| The code new tokens are made from | New tokens |
| The gas a creation must fit | New tokens |
| The token factory the module registry works with | New 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.
| When | What is checked |
|---|---|
| Publishing | The manifest is well formed, every read it names works, and every hook runs within its gas limit, within that hook’s ceiling. |
| Creation | Each module runs exactly the published code, belongs to this token, has exactly its published hooks and takes only the shares it accepts. |
| Every trade | Every 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
| Hook | The module can |
|---|---|
| Gate | Turn away a buy. It can never move the token |
| Track | See transfers and the balances they leave. It can never move the token |
| Receive | Be told when its tax share is paid. It can never move the token |
| Operate on sell | Act in a run — just before a sell, or when the token’s tax sale is processed — including trading the token |
| Operate on buy | Act 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.
