{
  "project": "p/zec",
  "wallet": "4hR2XeB58LtES43KmKQEtesCZtSrUDxdQe8yL71TjScC",
  "x_account": "@tundrique",
  "one_line": "a pump.fun style bonding curve coin that exists entirely on Zcash. the token is a Zcash Shielded Asset, every order is a shielded note with a 512 byte memo, the curve is run by a threshold signer set that anyone can audit through a published full viewing key, and nothing in the system runs on a clock.",
  "chain": {
    "network": "Zcash mainnet",
    "other_chains": "none. no Solana, no EVM, no bridge, no wrapped asset, no exchange account. the only thing that exists off Zcash is the read only site.",
    "node": "zebrad 2.x with lightwalletd in front of it. the signer set runs full nodes. the site reads through lightwalletd only.",
    "block_time_seconds": 75,
    "smallest_unit": "zatoshi, 1 ZEC = 100000000 zat",
    "shielded_pool_used": "Orchard only. Sapling and Sprout outputs to the curve address are treated as donations to the reserve and never produce a token. transparent outputs to the curve address are treated the same way, because a transparent output carries no memo and an order without a memo is not an order.",
    "protocol_pieces_relied_on": {
      "zip_226": "Zcash Shielded Assets transfer and burn. the token moves as Orchard notes tagged with its asset base, and a sell is a burn action in the same bundle that pays ZEC out.",
      "zip_227": "issuance. tokens come into existence only through issuance actions signed by the issuance key. the issuance key is the threshold key described under signer_set. issuance is finalized at graduation and can never reopen.",
      "zip_302": "memo field. the first memo byte 0xF5 marks arbitrary data. every order and every settlement record is a 0xF5 memo laid out exactly as under order_memo and settlement_memo.",
      "zip_312": "FROST threshold signing over RedPallas. the curve's spend authority and issuance authority are t of n FROST keys. no single machine can move the reserve or mint a token.",
      "zip_316": "unified addresses. the curve publishes one unified address with an Orchard receiver only. buyers embed a raw Orchard receiver in the memo so the curve knows where to send tokens back.",
      "zip_317": "proportional fees. every settlement transaction pays 5000 zat per logical action, so the signer leg of the fee split exists to pay real transaction fees and nothing else.",
      "zip_320": "TEX addresses. a payment that arrives from a TEX (transparent source) address is treated as a donation to the reserve because its memo cannot be trusted to carry a return receiver. the site says this in plain words on the order page.",
      "halo_2": "every shielded action the curve makes is a Halo 2 proof. there is no trusted setup anywhere in the system."
    }
  },
  "asset": {
    "name": "p/zec",
    "standard": "ZIP 226 Zcash Shielded Asset",
    "asset_base": "derived from the issuance validating key and the asset description string exactly as ZIP 227 specifies. the asset base is the single value pasted into the dev panel; everything the site shows derives from it.",
    "asset_description_string": "p/zec",
    "decimals": 8,
    "total_supply_units": 100000000000000000,
    "total_supply_human": "1000000000 tokens at 8 decimals",
    "supply_split": {
      "curve_real_tokens": 79310000000000000,
      "curve_real_tokens_human": "793100000 tokens sold across the curve",
      "graduation_pool_tokens": 20690000000000000,
      "graduation_pool_tokens_human": "206900000 tokens that become the permanent pool's token side at graduation",
      "creator_allocation": 0,
      "team_allocation": 0,
      "airdrop_allocation": 0
    },
    "issuance_policy": "lazy issuance. tokens are not pre minted. each settled buy issues exactly the tokens the curve owes that buyer in the same transaction that sweeps the buyer's ZEC into the reserve. this means the issued supply visible through the viewing key is always equal to tokens sold minus tokens burned, and there is never an unsold pile sitting in any wallet.",
    "finalization": "at graduation the signer set emits one issuance action with the finalize flag set. after that block no issuance action for this asset base is valid on the Zcash network. the site links that transaction as the supply lock proof.",
    "burn_policy": "every sell burns the tokens received using the ZIP 226 burn field. burned units are subtracted from issued supply in the same block. tokens are never held by the curve, only issued to buyers and burned from sellers."
  },
  "curve": {
    "type": "constant product with virtual reserves, the same shape as pump.fun, denominated in zat and token units",
    "constants": {
      "virtual_zec_reserve_zat": 3000000000,
      "virtual_zec_reserve_human": "30 ZEC",
      "virtual_token_reserve_units": 107300000000000000,
      "virtual_token_reserve_human": "1073000000 tokens",
      "real_token_reserve_units_at_start": 79310000000000000,
      "graduation_real_zec_zat": 8500000000,
      "graduation_real_zec_human": "85 ZEC of real ZEC in the reserve",
      "k": "virtual_zec_reserve_zat times virtual_token_reserve_units, fixed at curve creation, 321900000000000000000000000"
    },
    "state": {
      "x": "virtual ZEC reserve in zat, starts at 3000000000, grows by net ZEC in",
      "y": "virtual token reserve in units, starts at 107300000000000000, shrinks by tokens issued and grows by tokens burned",
      "real_zec_zat": "actual spendable ZEC held at the reserve address, starts at 0",
      "tokens_sold_units": "cumulative issued minus cumulative burned",
      "seq": "settlement sequence number, starts at 0, increments by one per settled order",
      "state_root": "BLAKE2b-256 over the concatenation of x, y, real_zec_zat, tokens_sold_units, seq, each as 8 byte little endian, personalization string p/zec-state"
    },
    "buy_math": {
      "input": "zec_in_zat, the value of the buyer's Orchard note to the curve address",
      "fee_zat": "floor(zec_in_zat times 100 divided by 10000)",
      "net_zat": "zec_in_zat minus fee_zat",
      "tokens_out_units": "y minus floor(k divided by (x plus net_zat))",
      "new_x": "x plus net_zat",
      "new_y": "y minus tokens_out_units",
      "spot_price_zat_per_token_after": "new_x times 100000000 divided by new_y, shown at 12 decimals",
      "reject_if": "tokens_out_units is less than memo.min_out, or tokens_out_units would exceed remaining real_token_reserve_units, or zec_in_zat is below the dust floor of 100000 zat"
    },
    "sell_math": {
      "input": "tokens_in_units, the value of the seller's asset note to the curve address",
      "gross_zat": "x minus floor(k divided by (y plus tokens_in_units))",
      "fee_zat": "floor(gross_zat times 100 divided by 10000)",
      "zec_out_zat": "gross_zat minus fee_zat minus the ZIP 317 fee of the settlement transaction",
      "new_x": "x minus gross_zat",
      "new_y": "y plus tokens_in_units",
      "reject_if": "zec_out_zat is less than memo.min_out, or gross_zat exceeds real_zec_zat, or tokens_in_units is below 100000000 units"
    },
    "partial_fill_at_the_top": "if a buy would take more tokens than remain in real_token_reserve_units, the curve fills exactly the remaining tokens, computes the ZEC that portion costs at curve price, sweeps that much into the reserve, and refunds the rest of the buyer's ZEC to the receiver in the memo in the same settlement transaction. that buy is the graduation buy and its settlement memo carries op 0x11.",
    "order_of_processing": "orders are processed in the order they appear in the Zcash block, by transaction index inside the block, then by action index inside the transaction. two orders in the same block see different curve states. the site shows the block position beside every settled order so this is checkable."
  },
  "order_memo": {
    "size_bytes": 512,
    "encoding": "raw bytes, little endian for integers, zero padded to 512",
    "layout": [
      { "offset": 0, "length": 1, "field": "marker", "value": "0xF5, ZIP 302 arbitrary data" },
      { "offset": 1, "length": 1, "field": "version", "value": "0x01" },
      { "offset": 2, "length": 1, "field": "op", "value": "0x01 buy, 0x02 sell. any other value rejects the order and refunds it" },
      { "offset": 3, "length": 8, "field": "min_out", "value": "u64. for a buy, the minimum token units the buyer accepts. for a sell, the minimum zat the seller accepts" },
      { "offset": 11, "length": 4, "field": "nonce", "value": "u32 chosen by the client, echoed in the settlement memo so a client can match its order without knowing the txid in advance" },
      { "offset": 15, "length": 43, "field": "receiver", "value": "raw Orchard receiver, diversifier 11 bytes then pk_d 32 bytes. tokens, ZEC, and refunds go here. if this decodes to an invalid point the order is rejected and the ZEC stays in the reserve as a donation because there is nowhere to send it" },
      { "offset": 58, "length": 32, "field": "quoted_state_root", "value": "the state_root the client quoted against. informational. the signer set records whether it matched at settlement" },
      { "offset": 90, "length": 8, "field": "quoted_out", "value": "u64. the output the client's own math predicted. informational, recorded for the slippage readout" },
      { "offset": 98, "length": 414, "field": "padding", "value": "zero bytes. any nonzero byte here rejects the order" }
    ],
    "note_requirements": "exactly one Orchard output to the curve receiver per order transaction. a transaction with two outputs to the curve receiver is treated as two orders processed in action order. the order's value is the note value. for a sell the note must be an asset note of asset_base; a sell memo on a ZEC note is rejected and refunded, a buy memo on an asset note is rejected and the tokens are returned."
  },
  "settlement_memo": {
    "purpose": "every settlement transaction includes one Orchard output of 1 zat back to the curve's own receiver carrying a 0xF5 memo that records the event. because the curve's full viewing key is public, this makes the entire order history readable by anyone with a wallet that can scan, not only by the site.",
    "layout": [
      { "offset": 0, "length": 1, "field": "marker", "value": "0xF5" },
      { "offset": 1, "length": 1, "field": "version", "value": "0x01" },
      { "offset": 2, "length": 1, "field": "op", "value": "0x10 buy settled, 0x11 graduation buy settled, 0x20 sell settled, 0x30 refund, 0x40 donation absorbed, 0x50 issuance finalized, 0x60 halt, 0x61 resume" },
      { "offset": 3, "length": 8, "field": "seq", "value": "u64 settlement sequence" },
      { "offset": 11, "length": 4, "field": "nonce", "value": "u32 copied from the order memo" },
      { "offset": 15, "length": 32, "field": "order_txid", "value": "txid of the order transaction" },
      { "offset": 47, "length": 4, "field": "order_block_height", "value": "u32" },
      { "offset": 51, "length": 2, "field": "order_tx_index", "value": "u16 position in block" },
      { "offset": 53, "length": 8, "field": "amount_in", "value": "u64 zat for a buy, token units for a sell" },
      { "offset": 61, "length": 8, "field": "amount_out", "value": "u64 token units for a buy, zat for a sell" },
      { "offset": 69, "length": 8, "field": "fee_zat", "value": "u64" },
      { "offset": 77, "length": 8, "field": "x_after", "value": "u64" },
      { "offset": 85, "length": 8, "field": "y_after", "value": "u64" },
      { "offset": 93, "length": 8, "field": "real_zec_after", "value": "u64" },
      { "offset": 101, "length": 8, "field": "tokens_sold_after", "value": "u64" },
      { "offset": 109, "length": 32, "field": "state_root_after", "value": "BLAKE2b-256 as defined under curve.state" },
      { "offset": 141, "length": 1, "field": "quote_matched", "value": "0x01 if the order's quoted_state_root equalled the state root the order was actually filled against, else 0x00" },
      { "offset": 142, "length": 1, "field": "signer_bitmap", "value": "bit i set if signer i contributed a FROST share to this settlement" },
      { "offset": 143, "length": 369, "field": "padding", "value": "zero" }
    ]
  },
  "signer_set": {
    "why_it_exists": "Zcash has no scripting. a bonding curve needs something to compute outputs and sign issuance. instead of one server with one key, the curve authority is a FROST threshold key split across independent machines that all run the same deterministic binary and refuse to sign anything they did not compute themselves.",
    "n": 5,
    "t": 3,
    "keys": {
      "spend_authority": "Orchard spend authorizing key for the curve address, split 3 of 5 with ZIP 312 FROST over RedPallas. the full viewing key derived from it is published. the spending key never exists in one place, not even at ceremony time, because the ceremony uses distributed key generation.",
      "issuance_authority": "ZIP 227 issuance authorizing key, split 3 of 5 the same way. the issuance validating key is published and is part of the asset base derivation.",
      "ceremony": "distributed key generation across the five signers with a published transcript. the transcript hash is a fixed string on the site's program page."
    },
    "binary": "pzec-signerd, one open source binary, reproducible build, the build hash pinned on the site. each signer runs it against its own zebrad. a signer whose binary hash differs from the pinned hash cannot join a signing round because the round transcript includes the hash.",
    "signing_round": {
      "trigger": "a new Zcash block arrives at a signer's node containing one or more transactions with an Orchard output to the curve receiver. blocks without such outputs trigger nothing.",
      "step_1_observe": "the signer decrypts every output to the curve receiver with the incoming viewing key, parses the memo, and classifies each as buy, sell, or donation.",
      "step_2_confirm": "the signer waits until the order's block has confirmation depth 3. depth is a chain event, not a timer. an order that is reorganized out of the chain before depth 3 is forgotten.",
      "step_3_compute": "the signer applies the curve math to each order in block order against its own copy of the curve state and produces a proposed settlement transaction, byte for byte deterministic.",
      "step_4_agree": "signers exchange the BLAKE2b-256 hash of their proposed settlement transaction. a round proceeds only when at least t signers produced the identical hash. if the identical hash count is below t, the curve enters the halted state and emits op 0x60 as soon as any t signers can agree on the halt memo.",
      "step_5_sign": "FROST round one and round two over the agreed transaction. the settlement transaction includes the ZEC sweep to the reserve receiver, the issuance action or burn field, the payout to the order's receiver, and the 1 zat settlement memo output.",
      "step_6_broadcast": "any signer broadcasts. the transaction is the same regardless of which signer sends it.",
      "step_7_advance": "each signer advances its curve state only when it sees the settlement transaction confirmed to depth 1. state never advances on a broadcast alone."
    },
    "halted_state": "no new orders are settled. incoming orders accumulate as observed notes and are settled in block order when the set resumes. the set resumes only when t signers with the pinned binary hash agree on the same curve state root and emit op 0x61. halted is a chain readable state because the halt memo is on chain."
  },
  "addresses": {
    "curve_unified_address": "one ZIP 316 unified address containing only an Orchard receiver. this is the address every order is sent to. it is the single address on the site's order page.",
    "reserve_receiver": "a second Orchard receiver derived from the same spend authority at diversifier index 1. swept ZEC lives here. it is readable with the same published full viewing key so the reserve balance is public while every buyer and seller stays private.",
    "creator_wallet": "4hR2XeB58LtES43KmKQEtesCZtSrUDxdQe8yL71TjScC",
    "creator_fee_destination": "the creator leg of every fee is paid in ZEC to an Orchard receiver the creator publishes. the string above is the identity the site prints beside the creator leg. the settlement memo records the leg amount so the creator income is auditable through the viewing key even though the creator's own address does not have to be disclosed.",
    "no_admin_address": "there is no address that can change a constant, pause the curve, or move the reserve other than through settlement. the halted state is the only pause and it is an agreement failure, not a switch."
  },
  "fees": {
    "per_trade_bps": 100,
    "split": {
      "creator_bps": 50,
      "reserve_bps": 30,
      "signer_bps": 20
    },
    "creator_leg": "50 bps of every buy and every sell, paid in ZEC in the settlement transaction to the creator's published Orchard receiver. never in tokens.",
    "reserve_leg": "30 bps of every trade stays at the reserve receiver and is added to real_zec_zat but not to x. this makes real ZEC accumulate faster than the virtual curve assumes, so the reserve is always at least the curve's own accounting of it and the graduation threshold is reached on real ZEC, never on virtual ZEC.",
    "signer_leg": "20 bps of every trade to a signer fee receiver at diversifier index 2 of the same spend authority. this leg pays ZIP 317 transaction fees for settlements. any surplus above 1 ZEC at the signer fee receiver is swept into the reserve on the next settlement and recorded as op 0x40.",
    "no_fee_on_refunds": "a refunded order pays only the ZIP 317 fee of the refund transaction, taken from the refunded amount."
  },
  "graduation": {
    "trigger": "real_zec_zat reaches 8500000000 or the graduation buy (op 0x11) settles, whichever is first. this is a settlement event, not a time.",
    "what_happens_in_the_graduation_settlement": [
      "issuance action with the finalize flag set. supply is locked forever at tokens_sold_units at that moment plus graduation_pool_tokens.",
      "the 206900000 pool tokens are issued to the pool receiver at diversifier index 3 in the same action set, so the finalize flag covers them.",
      "all real ZEC at the reserve receiver moves to the pool receiver in the same transaction.",
      "the curve state root is frozen and recorded. the last curve settlement memo carries op 0x11 or the final 0x10 followed by 0x50."
    ],
    "after_graduation": {
      "mode": "permanent constant product pool run by the same signer set with no virtual reserves. x_pool equals real ZEC at the pool receiver, y_pool equals real tokens at the pool receiver, k_pool equals their product at the graduation block.",
      "fee_bps": 30,
      "fee_split": "30 bps stays in the pool. the creator and signer legs stop at graduation. the signer set pays its ZIP 317 fees from the remaining signer fee receiver balance and, if that runs dry, from 5 bps of pool fees, which is the only post graduation change the set can make and it is recorded with its own memo op 0x62.",
      "order_format": "identical order memo. a buy is ZEC in, tokens out from the pool receiver. a sell is tokens in, ZEC out from the pool receiver. tokens received on a sell are not burned after graduation, they return to the pool receiver, because supply is final.",
      "why_not_an_external_dex": "there is no shielded DEX on Zcash and the point of the project is that the coin never leaves Zcash. the pool is the same threshold machine that ran the curve, with the same published viewing key, so the audit story does not change at graduation."
    }
  },
  "audit": {
    "published_full_viewing_key": "the Orchard full viewing key for the curve spend authority is printed on the site's program page as a unified full viewing key string. anyone can import it into a view only wallet (zcashd, zebra plus zingo, or any ZIP 316 aware wallet) and see every order note, every settlement memo, the reserve balance, the signer fee balance, and the pool balance, without any ability to spend.",
    "what_the_viewing_key_reveals": [
      "every incoming order: value, memo, block, position",
      "every settlement memo: full curve state after every fill",
      "reserve, signer fee, and pool receiver balances",
      "every issuance and burn action for the asset base"
    ],
    "what_the_viewing_key_does_not_reveal": [
      "who sent an order. Orchard notes do not carry the sender",
      "who holds tokens. asset notes are shielded and the curve never learns holder balances",
      "the creator's own receiver, only the amounts paid to it"
    ],
    "recompute_procedure": "start from x 3000000000, y 107300000000000000, seq 0. scan the curve receiver with the viewing key in block order. for each order note apply buy_math or sell_math. after each settlement memo compare your computed x, y, real_zec, tokens_sold and state root to the memo's fields. any mismatch is a signer set fault and is provable by pointing at the memo.",
    "issued_supply_check": "sum of issuance actions for the asset base minus sum of burn fields for the asset base equals tokens_sold_units in the latest settlement memo. both sides are on chain."
  },
  "states": {
    "curve": ["accumulating", "graduated", "halted"],
    "order": ["observed", "confirmed", "computed", "agreed", "signed", "settled", "refunded", "rejected", "absorbed"],
    "meanings": {
      "accumulating": "real ZEC below the graduation threshold, issuance open, curve math live",
      "graduated": "issuance finalized, pool mode",
      "halted": "signer agreement below t, orders queue in block order",
      "observed": "note decrypted by at least one signer, depth below 3",
      "confirmed": "depth 3 reached",
      "computed": "settlement proposed by at least one signer",
      "agreed": "t identical proposal hashes",
      "signed": "FROST signature complete",
      "settled": "settlement transaction at depth 1, state advanced",
      "refunded": "order failed min_out or a format rule and its value was returned minus fee",
      "rejected": "order failed a format rule and had no valid receiver, value absorbed into the reserve as a donation",
      "absorbed": "a Sapling, Sprout, transparent, or TEX sourced payment with no usable memo, added to the reserve"
    }
  },
  "no_clocks_rule": {
    "statement": "nothing fires on wall time. every transition is caused by a Zcash block containing an order, a settlement reaching confirmation depth, or a signer agreement outcome.",
    "things_deliberately_absent": ["epochs", "snapshots on a schedule", "cron sweeps", "vesting timers", "cooldown windows", "daily limits", "streaks"],
    "the_only_counters": ["block height", "confirmation depth", "settlement sequence", "tokens sold", "real ZEC"]
  },
  "failure_modes": {
    "reorg_before_depth_3": "order forgotten, nothing signed, nothing to undo",
    "reorg_after_settlement_broadcast_before_depth_1": "signers do not advance state. the settlement transaction either reappears in the new chain (state advances when it does) or its inputs are gone with the reorged order and the signers recompute from the new block contents",
    "two_orders_same_block_second_one_now_unfillable": "the second is refunded or partially filled per curve rules. the settlement memos show both and the block position field shows why",
    "signer_offline": "any 3 of 5 continue. the signer bitmap in every settlement memo shows who signed",
    "two_signers_disagree_on_math": "if the remaining agreeing count is still at least 3 the round proceeds and the disagreeing signers are visibly absent from the bitmap. if fewer than 3 agree the curve halts on chain",
    "malformed_memo_with_valid_receiver": "refunded, op 0x30",
    "malformed_memo_with_invalid_receiver": "absorbed, op 0x40",
    "buy_below_dust_floor": "refunded if the refund would exceed the ZIP 317 fee, otherwise absorbed",
    "sell_larger_than_real_zec": "refunded with the tokens returned, never partially filled, because a partial sell against a reserve that cannot pay is a bank run primitive and the curve will not have one",
    "creator_receiver_unreachable": "cannot happen, an Orchard receiver is always spendable to. if the creator never publishes one, the creator leg is added to the reserve and recorded under op 0x40 until one is published through a signed message from the wallet above"
  },
  "site": {
    "builder": "Lovable, on the existing Privy connect wallet template, wallet restyled only, never touched functionally",
    "purpose": "a readout. visitors operate nothing. the only clickable things are nav links, the wallet button, and technical verification links to a Zcash block explorer, the settlement transactions, and the issuance transactions.",
    "data_layer": {
      "supabase_edge_functions": {
        "pzec-scan": "holds the published full viewing key, connects to lightwalletd, scans the curve, reserve, signer fee, and pool receivers, decodes every order and settlement memo per the layouts in this file, and writes rows to Supabase tables. runs on every new block notification from lightwalletd, never on an interval.",
        "pzec-price": "fetches ZEC in USD from a public price endpoint through the server so the site can show market cap in USD beside market cap in ZEC. key, if any, stored as a Supabase secret and never in the client bundle."
      },
      "tables": ["orders", "settlements", "curve_state", "receiver_balances", "issuance_actions", "burns", "signer_rounds", "halts"],
      "realtime": "the client subscribes to every table. values fill the moment a row lands. no polling loop in the browser."
    },
    "dev_panel": "the usual small top right button, present only when the hostname is a Lovable preview host or localhost, never on the published site. it opens an overlay with one field: the asset base hex. paste, save. the site derives the issuance validating key display, the curve receiver, and every readout from that value. no passphrase.",
    "blank_rule": "every panel, label, and slot renders from first load. value slots stay literally blank until the asset base is set and the scan has rows. no placeholder numbers, no dots, no awaiting text.",
    "pages": {
      "home": {
        "fit": "one viewport, no page scroll, small type, dense",
        "readouts": ["spot price in ZEC per token at 12 decimals", "market cap in ZEC and in USD computed as spot price times tokens_sold_units", "real ZEC reserve", "progress to graduation as real ZEC over 85 ZEC as a numeric fraction and a thin bar", "tokens sold and tokens burned", "settlement sequence", "curve state word", "last settlement block height and position", "signer bitmap of the last settlement drawn as five squares"],
        "chart": "one clean market cap line in ZEC from the settlements table, thin single line, faint fill, hairline gridlines, a few axis labels, no legend, no second series",
        "tape": "the last twenty settlements: block, position, op word, amount in, amount out, fee, state root first eight hex characters, each row linking to the settlement transaction on the explorer"
      },
      "order": "the curve unified address as text, the memo layout table from this file rendered as a fixed byte map drawing, the rules for what gets refunded versus absorbed, and a worked example that uses only the curve constants, never a fake order",
      "curve": "the constants table, both math blocks written out, the state root definition, and a computed table of price at every 5 ZEC of real reserve from 0 to 85 derived from the constants (this is arithmetic on constants, not market data)",
      "signers": "n, t, the pinned binary hash, the DKG transcript hash, the seven step signing round as a flow drawing, the halted state explanation, and a table of the last fifty settlement bitmaps",
      "audit": "the published unified full viewing key as text, the reveal and non reveal lists, the recompute procedure, and the issued supply check with both sides shown live from issuance_actions and burns",
      "program": "the asset base, the issuance validating key, the finalization transaction link once it exists, the graduation rules, and the pool mode rules",
      "docs": "one long scrolling page with every section of this file written as prose in order, no chapter switcher"
    },
    "banned_on_site": ["socials of any kind", "footer furniture", "numbered section headings", "double hyphens", "generic crypto buzzword naming", "any ticker", "any image not supplied by the owner", "sliders, toggles, filters, collapsibles, load more", "fake or placeholder values", "the owner's name or handle in site copy"],
    "x_account_note": "@tundrique is recorded at the top of this file as the account associated with the project. it is not printed anywhere on the site."
  },
  "verification_checklist": [
    "the token is a ZIP 226 asset whose asset base derives from the published issuance validating key and the string p/zec",
    "no token exists before the first settled buy",
    "every settled buy has an issuance action equal to its amount_out",
    "every settled sell has a burn field equal to its amount_in until graduation",
    "recomputing the curve from the constants and the order notes reproduces every settlement memo state root",
    "the reserve receiver balance is at least real_zec_after in the latest settlement memo",
    "every settlement carries a signer bitmap with at least three bits set",
    "no settlement exists for an order below depth 3",
    "no transition in the system is caused by wall time",
    "the graduation settlement contains an issuance action with the finalize flag and no issuance action exists after it",
    "the full viewing key on the site decrypts every note referenced above",
    "the wallet string at the top of this file appears beside the creator leg and nowhere else",
    "the site shows structure with blank values until the asset base is set, then fills live"
  ]
}
