Files
universe/manifests/tokenomics-allocation.yaml
zeekay 4740f3de52 chore: sync working tree
Commits 3 outstanding change(s) that were sitting uncommitted.
No build artifacts and no secrets in the changeset (both checked).
2026-07-26 10:16:32 -07:00

80 lines
4.3 KiB
YAML

# Zoo tokenomics allocation โ€” STAGED, owner-gated. Executes nothing.
# Canonical spec: ZIP-0035 (supply/split), ZIP-0036 (Safes/ownership),
# ZIP-0038 (history evidence), ZIP-0039 (migration). Preserve Zoo EVM genesis.
version: "1"
org: zoo
chainId: 200200
status: staged # BLOCKED: Zoo EVM 200200 not bootstrapped (crash-loop)
token:
symbol: ZOO
decimals: 18
totalSupply: "2000000000000" # 2 trillion; = 200200 genesis mint; preserves BSC 2T 1:1
genesisHolder: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714" # holds full 2T at genesis
split:
foundation: # 50%
amount: "1000000000000" # 1 trillion
to: "0x5232991515a671f745d3530A996E3503783E2939" # Zoo DAO Safe (verified deterministic)
nonFoundation: # 50%
amount: "1000000000000" # 1 trillion
migrationPool_P: "FLAG_OWNER" # ZIP-0035 flag: default P=1T (whole half) OR owner value
teamPermanent: "FLAG_OWNER" # = 1T - P
unclaimedTo: "0x3Be393fb0cDFc9BC5a11fDb4F1eA6bD7e4C815B5" # Zoo Z/Team Safe
# STAGED transfer batch (owner-signed, single batch, after execution gate clears)
transfers:
- desc: "Foundation half"
from: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714"
to: "0x5232991515a671f745d3530A996E3503783E2939" # Zoo DAO Safe
amount: "1000000000000"
- desc: "Migration claim pool"
from: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714"
to: "ZooMigrationClaim (deploy first; owner=Zoo DAO Safe)"
amount: "FLAG_OWNER(P)"
- desc: "Team permanent remainder"
from: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714"
to: "0x3Be393fb0cDFc9BC5a11fDb4F1eA6bD7e4C815B5" # Zoo Z/Team Safe
amount: "FLAG_OWNER(1T - P)"
foundationOwnership: # ZIP-0036: Zoo DAO Safe owns Zoo Labs Foundation
timelock: "0x45389804C25b3575b710474a948128C69e5B423f" # OZ TimelockController, minDelay 86400
proposerCanceller: "0x5232991515a671f745d3530A996E3503783E2939" # Zoo DAO Safe
executor: "0x0000000000000000000000000000000000000000" # open exec after delay
reassign: "enumerate live Foundation-owned Ownable/AccessControl contracts on 200200; transfer to DAO Safe"
migration: # ZIP-0039
sources_bsc: # symbol()="ZOO", each ~2T supply (verified live 2026-07-02)
v1: "0x8e7788ee2b1d3e5451e182035d6b2b566c2fe997"
v2: "0x19263f2b4693da0991c4Df046E4bAA5386F5735E"
v3: "0x7fFC1243232da3Ac001994208E2002816b57c669"
exclude: ["0x6D392eF5EE135EE40B83e1Dd3f68A40aF20c5023"] # V3 reserve EOA (not a holder)
eligibleAddresses: 18680 # union V1/V2/V3, peak>=1 ZOO, excl reserve (evidence 2024-11 replay)
canonicalSource: "FLAG_OWNER" # (A) V2 @ fixed block [recommended] OR (B) dedup union
snapshotBlockBSC: "FLAG_OWNER"
creditRule: "pro-rata: floor(P * bal / snapshotTotal)" # NOT nominal 1:1 (sum > available)
claim: "Merkle (mirror ZIP-0002 ZooGenesisAirdrop); owner=Zoo DAO Safe; unclaimed->Z Safe"
lzoo: # ZIP-0038 ยง5 โ€” coordination pending w/ Lux tokenomics agent
heldBy: "0x51284dC2133e8d3a8e213DCa6a6FA768cfDfcce2" # Lux DAO Safe (C-Chain)
approxBalance: "~7.6e9 LZOO"
contract: "FLAG_LUX_AGENT" # LZOO ERC-20 addr on Lux C-Chain โ€” unknown
denomination: "FLAG_LUX_AGENT" # 1:1 vs redenominated? (~263x gap vs 2T ZOO)
proposedRoute: "bridge-burn/transfer LZOO -> Zoo DAO Safe on 200200 (Foundation ZOO)"
executionGate: # all must be true before ANY transfer
- "Zoo EVM 200200 bootstrapped & healthy (consensus v1.32.11 repair)"
- "canonicalSource + snapshotBlockBSC chosen"
- "migrationPool_P chosen"
- "old-mainnet 800-block balances merged-or-excluded"
- "Safes deployed & verified at predicted addrs"
- "LZOO denomination confirmed"
- "owner sign-off on merkle_root + funding batch"
preserveGenesis: # fork-proof (ZIP-0039)
genesisUnchanged: true # no re-genesis; claim contract is post-genesis tx
checks:
- "eth_getBlockByNumber(0).hash == recorded genesis hash"
- "block 799 (imported old-mainnet tip).hash == recorded RLP tip hash"
- "eth_chainId == 0x30dc8 (200200)"
conservation: "foundation(1T) + P + teamPermanent(1T-P) = 2T ; sum(credits) <= P"