[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-uniswap-configurator":3,"mdc--fhblwo-key":36,"related-org-uniswap-configurator":8568,"related-repo-uniswap-configurator":8714},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"configurator","configure auction smart contract parameters","Configure CCA (Continuous Clearing Auction) smart contract parameters through an interactive bulk form flow. Use when user says \"configure auction\", \"cca auction\", \"setup token auction\", \"auction configuration\", \"continuous auction\", or mentions CCA contracts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"uniswap","Uniswap","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Funiswap.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":17,"slug":18,"type":15},"Web3","web3",{"name":20,"slug":21,"type":15},"Smart Contracts","smart-contracts",{"name":23,"slug":24,"type":15},"Ethereum","ethereum",215,"https:\u002F\u002Fgithub.com\u002FUniswap\u002Funiswap-ai","2026-07-17T06:08:08.974641","MIT",35,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"AI tools for building on Uniswap — skills, plugins, and agents for any coding agent.","https:\u002F\u002Fgithub.com\u002FUniswap\u002Funiswap-ai\u002Ftree\u002FHEAD\u002Fpackages\u002Fplugins\u002Funiswap-cca\u002Fskills\u002Fconfigurator","---\nname: configurator\ndescription: Configure CCA (Continuous Clearing Auction) smart contract parameters through an interactive bulk form flow. Use when user says \"configure auction\", \"cca auction\", \"setup token auction\", \"auction configuration\", \"continuous auction\", or mentions CCA contracts.\nallowed-tools: Read, Write, Edit, Glob, Grep, Bash(curl:*), WebFetch, AskUserQuestion, cca-supply-schedule__generate_supply_schedule, cca-supply-schedule__encode_supply_schedule\nmodel: opus\nlicense: MIT\nmetadata:\n  author: uniswap\n  version: '1.0.0'\n---\n\n# CCA Configuration\n\nConfigure Continuous Clearing Auction (CCA) smart contract parameters for fair and transparent token distribution.\n\n> **Runtime Compatibility:** This skill uses `AskUserQuestion` for interactive prompts. If `AskUserQuestion` is not available in your runtime, collect the same parameters through natural language conversation instead.\n\n## Instructions for Claude Code\n\nWhen the user invokes this skill, guide them through a **bulk interactive form configuration flow** using AskUserQuestion. Collect parameters in batches to minimize user interaction rounds.\n\n### Bulk Interactive Form Rules\n\n1. **Batch questions** - Ask up to 4 questions at once using a single AskUserQuestion call\n2. **Allow direct input** - For fields requiring custom values (addresses, numbers):\n   - Provide a \"Not available yet\" or \"Skip for now\" option\n   - The \"Other\" option (automatically provided) allows direct custom input\n   - **NEVER** ask \"Do you have X?\" as a separate question\n3. **Store answers** - Keep track of all collected values in a configuration object\n4. **Validate after collection** - After each batch, validate all inputs before proceeding\n5. **Show progress** - After each batch, show which parameters are collected and which remain\n\n### Configuration Flow\n\nCollect parameters in these batches:\n\n#### Batch 1: Task Selection (1 question)\n\n**Question 1: Task Type**\n\n- Prompt: \"What would you like to do with CCA?\"\n- Options: \"Configure auction parameters\", \"Generate supply schedule only\", \"Review existing config\", \"Deploy existing config\"\n\n**After collection:** If not \"Configure auction parameters\", skip to appropriate section.\n\n---\n\n#### Batch 2: Basic Configuration (4 questions)\n\n**Question 1: Network**\n\n- Prompt: \"Which network to deploy on?\"\n- Options: \"Ethereum Mainnet\", \"Unichain (Mainnet)\", \"Unichain Sepolia (Testnet)\", \"Base\", \"Arbitrum\", \"Sepolia\"\n- Store: `chainId`, `blockTime`, `rpcUrl`, `currencyDecimals` (for selected currency)\n\n**Question 2: Token Address**\n\n- Prompt: \"Token to be auctioned?\"\n- Options: \"Token not deployed yet\" (placeholder), Custom address (via \"Other\")\n- Validation: Must be 42 chars starting with 0x\n- Store: `token`\n\n**Question 3: Total Supply**\n\n- Prompt: \"How many tokens to auction?\"\n- Options: \"100 million tokens (18 decimals)\", \"1 billion tokens (18 decimals)\", \"10 billion tokens (18 decimals)\", Custom (via \"Other\")\n- Validation: Must be \u003C= 1e30 wei\n- Store: `totalSupply`\n\n**Question 4: Currency**\n\n- Prompt: \"What currency should bidders use?\"\n- Options: \"ETH (Native)\", \"USDC on [network]\", \"USDT on [network]\", Custom ERC20 (via \"Other\")\n- Validation: Must be 42 chars starting with 0x or address(0)\n- Store: `currency`\n\n**After collection:** Validate all inputs, show summary of basic configuration.\n\n---\n\n#### Batch 3: Timing & Pricing (4 questions)\n\n**Question 1: Auction Duration**\n\n- Prompt: \"How long should the auction run?\"\n- Options: \"1 day\", \"2 days\", \"3 days\", \"7 days\", Custom blocks (via \"Other\")\n- Calculate blocks based on network block time\n- Store: `auctionBlocks`\n\n**Question 2: Prebid Period**\n\n- Prompt: \"Include a prebid period? (time when no tokens are sold)\"\n- Options: \"No prebid period (0 blocks)\", \"12 hours\", \"1 day\", Custom blocks (via \"Other\")\n- Calculate blocks based on network block time\n- Store: `prebidBlocks`\n\n**Question 3: Floor Price**\n\n- Prompt: \"Starting floor price? (ratio of currency per token)\"\n- Options: \"0.10x (10% of 1:1 ratio)\", \"0.01x (1% of 1:1 ratio)\", \"0.001x (0.1% of 1:1 ratio)\", Custom ratio (via \"Other\")\n- Calculate Q96 value accounting for decimal differences: `Q96 * ratio \u002F 10^(tokenDecimals - currencyDecimals)`\n- For USDC (6 decimals) and 18-decimal token: `Q96 * ratio \u002F 10^12`\n- For native ETH (18 decimals) and 18-decimal token: `Q96 * ratio \u002F 10^0 = Q96 * ratio`\n- Store: `floorPriceRatio`, `floorPrice` (Q96), `tokenDecimals`, `currencyDecimals`\n\n**Question 4: Tick Spacing**\n\n- Prompt: \"Tick spacing as percentage of floor price?\"\n- Options: \"1% of floor price (Recommended)\", \"10% of floor price\", \"0.1% of floor price\", Custom percentage (via \"Other\")\n- Calculate: `tickSpacing = int(floorPrice * percentage)`\n- **CRITICAL**: Round floor price DOWN to be evenly divisible by tick spacing:\n  - `roundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing`\n  - Verify: `roundedFloorPrice % tickSpacing == 0` must be true\n- Validate: Tick spacing must be >= 1 basis point of floor price\n- Store: `tickSpacingPercentage`, `tickSpacing` (Q96), `roundedFloorPrice`\n\n**After collection:** Validate inputs, verify floor price divisibility, calculate and display Q96 values, show timing summary.\n\n---\n\n#### Batch 4: Recipients & Launch (4 questions)\n\n**Question 1: Tokens Recipient**\n\n- Prompt: \"Where should unsold tokens be sent?\"\n- Options: \"Same as funds recipient\", Custom address (via \"Other\")\n- Validation: Must be 42 chars starting with 0x\n- Store: `tokensRecipient`\n\n**Question 2: Funds Recipient**\n\n- Prompt: \"Where should raised funds be sent?\"\n- Options: \"Same as tokens recipient\", Custom address (via \"Other\")\n- Validation: Must be 42 chars starting with 0x\n- Store: `fundsRecipient`\n\n**Question 3: Start Time**\n\n- Prompt: \"When should the auction start?\"\n- Options: \"In 1 hour\", \"In 6 hours\", \"In 24 hours\", Custom block number (via \"Other\")\n- Fetch current block number from RPC and calculate\n- Store: `startBlock`\n- Calculate: `endBlock = startBlock + prebidBlocks + auctionBlocks`, `claimBlock = endBlock`\n\n**Question 4: Minimum Funds Required**\n\n- Prompt: \"Require minimum currency raised for graduation?\"\n- Options: \"No minimum (0)\", \"100 ETH\", \"1000 ETH\", Custom amount in wei (via \"Other\")\n- Store: `requiredCurrencyRaised`\n\n**After collection:** Validate addresses, fetch current block from RPC, calculate full block timeline.\n\n---\n\n#### Batch 5: Optional Hook (1 question)\n\n**Question 1: Validation Hook**\n\n- Prompt: \"Use a validation hook contract?\"\n- Options: \"No validation hook\", Custom hook address (via \"Other\")\n- Validation: Must be 42 chars starting with 0x (if provided)\n- Store: `validationHook`\n\n**After collection:** Validate hook address if provided.\n\n---\n\n#### Step 6: Generate Supply Schedule\n\n**If MCP server is not running**, provide instructions to start it:\n\n```bash\n# Navigate to MCP server directory\ncd packages\u002Fplugins\u002Funiswap-cca\u002Fmcp-server\u002Fsupply-schedule\n\n# Run setup script (first time only)\nchmod +x setup.sh\n.\u002Fsetup.sh\n\n# Start the MCP server\npython3 server.py\n```\n\nOnce the MCP server is running, call the `cca-supply-schedule__generate_supply_schedule` MCP tool with the collected parameters. The tool expects a JSON object:\n\n```json\n{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0\n}\n```\n\nReplace the values with the actual `auctionBlocks` and `prebidBlocks` collected from the user.\n\nIf the MCP tool is unavailable, use the fallback Python algorithm directly (see Supply Schedule Configuration section).\n\nStore: `supplySchedule`\n\n#### Step 7: Generate and Display Configuration\n\nAfter collecting all parameters and generating the supply schedule, display the complete JSON configuration in the CLI output:\n\n```json\n{\n  \"[chainId]\": {\n    \"token\": \"...\",\n    \"totalSupply\": ...,\n    \"currency\": \"...\",\n    \"tokensRecipient\": \"...\",\n    \"fundsRecipient\": \"...\",\n    \"startBlock\": ...,\n    \"endBlock\": ...,\n    \"claimBlock\": ...,\n    \"tickSpacing\": ...,\n    \"validationHook\": \"...\",\n    \"floorPrice\": ...,\n    \"requiredCurrencyRaised\": ...,\n    \"supplySchedule\": [...]\n  }\n}\n```\n\n**Do NOT automatically create a file.** Let the user copy the JSON or specify a filepath to save it.\n\n#### Step 8: Display Summary\n\nShow the user a comprehensive formatted summary including:\n\n- Network and chain ID\n- Token and currency details\n- Block timeline (start, end, claim) with human-readable times\n- Pricing (floor price, tick spacing) in both Q96 and ratio formats\n- Recipients (tokens, funds)\n- Supply schedule summary (total phases, final block percentage)\n- Validation checklist (all validation rules passed\u002Ffailed)\n\n#### Step 9: Next Steps\n\nAsk the user what they want to do:\n\n- \"Save to file\" (ask for filepath, default: `script\u002Fauction-config.json`)\n- \"View deployment instructions\" (suggest using the deployer skill)\n- \"Modify configuration\"\n- \"Exit\" (just end, they can copy the JSON from CLI output)\n\n### Important Notes\n\n- **Validate in batches** - Validate all inputs after each batch collection\n- **Fetch current block number** from RPC when calculating start\u002Fend blocks\n- **Calculate Q96 values** correctly for floor price and tick spacing:\n  - **CRITICAL**: Account for decimal differences: `Q96 * ratio \u002F 10^(tokenDecimals - currencyDecimals)`\n  - USDC is 6 decimals on all networks - divide by 10^12 for 18-decimal tokens\n  - Native ETH is 18 decimals - no adjustment needed for 18-decimal tokens\n- **Round floor price** to be evenly divisible by tick spacing:\n  - `roundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing`\n  - **MUST verify**: `roundedFloorPrice % tickSpacing == 0`\n- **Use the MCP tool** for supply schedule generation (provide setup instructions if not running)\n- **Minimize interaction rounds** - Collect as many params as reasonable per batch\n\n### Network-Specific Constants\n\nStore these for quick reference:\n\n```typescript\nconst NETWORKS = {\n  1: {\n    name: 'Mainnet',\n    blockTime: 12,\n    rpc: 'https:\u002F\u002Fethereum-rpc.publicnode.com',\n    usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  },\n  130: {\n    name: 'Unichain',\n    blockTime: 1,\n    rpc: 'https:\u002F\u002Fmainnet.unichain.org',\n    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',\n  },\n  1301: {\n    name: 'Unichain Sepolia (Testnet)',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Fsepolia.unichain.org',\n    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',\n  },\n  8453: {\n    name: 'Base',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Fmainnet.base.org',\n    usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n  },\n  42161: {\n    name: 'Arbitrum',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Farb1.arbitrum.io\u002Frpc',\n    usdc: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',\n  },\n  11155111: {\n    name: 'Sepolia',\n    blockTime: 12,\n    rpc: 'https:\u002F\u002Fethereum-sepolia-rpc.publicnode.com',\n    usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n  },\n};\n\n\u002F\u002F Q96 = 2^96 (JavaScript BigInt notation)\nconst Q96 = 79228162514264337593543950336n;\n```\n\nPython equivalent:\n\n```python\n# Q96 = 2**96\nQ96 = 79228162514264337593543950336\n```\n\n## Overview\n\nCCA (Continuous Clearing Auction) is a novel auction mechanism that generalizes the uniform-price auction into continuous time. It provides fair price discovery for bootstrapping initial liquidity while eliminating timing games and encouraging early participation.\n\nKey features:\n\n- **Fair price discovery**: Continuous clearing with no timing games\n- **Transparent distribution**: Supply released on a predetermined schedule\n- **Flexible configuration**: Customizable auction parameters and schedules\n- **Multi-chain support**: Canonical deployment across EVM chains\n- **Factory deployment**: Consistent addresses via CREATE2\n\n## Quick Decision Guide\n\n| Task...                      | Use This Section              |\n| ---------------------------- | ----------------------------- |\n| Configure auction parameters | Configuration Guide           |\n| Generate supply schedule     | Supply Schedule Configuration |\n| Understand auction mechanics | Technical Overview            |\n\n---\n\n## Configuration Guide\n\n### Auction Parameters\n\nCCA auctions are configured through the `AuctionParameters` struct:\n\n```solidity\nstruct AuctionParameters {\n    address currency;              \u002F\u002F Token to raise funds in (address(0) for ETH)\n    address tokensRecipient;       \u002F\u002F Address to receive leftover tokens\n    address fundsRecipient;        \u002F\u002F Address to receive all raised funds\n    uint64 startBlock;             \u002F\u002F Block when auction starts\n    uint64 endBlock;               \u002F\u002F Block when auction ends\n    uint64 claimBlock;             \u002F\u002F Block when tokens can be claimed\n    uint256 tickSpacing;           \u002F\u002F Fixed granularity for prices (Q96)\n    address validationHook;        \u002F\u002F Optional hook (use 0x0 if none)\n    uint256 floorPrice;            \u002F\u002F Starting floor price (Q96)\n    uint128 requiredCurrencyRaised; \u002F\u002F Minimum funds to graduate\n    bytes auctionStepsData;        \u002F\u002F Packed supply issuance schedule\n}\n```\n\n### Configuration File Format\n\nCreate a JSON configuration file (e.g., `script\u002Fauction-config.json`):\n\n```json\n{\n  \"1\": {\n    \"token\": \"0x...\",\n    \"totalSupply\": 1e29,\n    \"currency\": \"0x0000000000000000000000000000000000000000\",\n    \"tokensRecipient\": \"0x...\",\n    \"fundsRecipient\": \"0x...\",\n    \"startBlock\": 24321000,\n    \"endBlock\": 24327001,\n    \"claimBlock\": 24327001,\n    \"tickSpacing\": 79228162514264337593543950,\n    \"validationHook\": \"0x0000000000000000000000000000000000000000\",\n    \"floorPrice\": 7922816251426433759354395000,\n    \"requiredCurrencyRaised\": 0,\n    \"supplySchedule\": [\n      { \"mps\": 1000, \"blockDelta\": 6000 },\n      { \"mps\": 4000000, \"blockDelta\": 1 }\n    ]\n  }\n}\n```\n\n### Parameter Details\n\n#### Basic Configuration\n\n| Parameter         | Type    | Description                                       |\n| ----------------- | ------- | ------------------------------------------------- |\n| `token`           | address | Token being auctioned                             |\n| `totalSupply`     | number  | Total tokens to auction (wei\u002Fsmallest unit)       |\n| `currency`        | address | Purchase token (USDC, etc.) or address(0) for ETH |\n| `tokensRecipient` | address | Where unsold tokens go                            |\n| `fundsRecipient`  | address | Where raised funds go                             |\n\n#### Block Configuration\n\n| Parameter    | Type   | Description                | Constraint             |\n| ------------ | ------ | -------------------------- | ---------------------- |\n| `startBlock` | number | When auction starts        | startBlock \u003C endBlock  |\n| `endBlock`   | number | When auction ends          | endBlock \u003C= claimBlock |\n| `claimBlock` | number | When tokens can be claimed | claimBlock >= endBlock |\n\n**Block times by network:**\n\n- Mainnet, Sepolia: 12s per block\n- Unichain, Base, Arbitrum: 2s per block\n\n#### Pricing Parameters\n\n| Parameter                | Type    | Description                                    |\n| ------------------------ | ------- | ---------------------------------------------- |\n| `floorPrice`             | number  | Minimum price (Q96 format)                     |\n| `tickSpacing`            | number  | Price tick increment (Q96 format)              |\n| `validationHook`         | address | Optional validation contract (use 0x0 if none) |\n| `requiredCurrencyRaised` | number  | Minimum funds needed (0 if no minimum)         |\n\n#### Supply Schedule\n\n| Parameter        | Type  | Description                        |\n| ---------------- | ----- | ---------------------------------- |\n| `supplySchedule` | array | Array of {mps, blockDelta} objects |\n\n---\n\n## Price Calculations (Q96 Format)\n\nCCA uses Q96 fixed-point format for precise pricing. The base value `2^96` (79228162514264337593543950336) represents a 1:1 price ratio.\n\n### Floor Price Calculation\n\n**CRITICAL: Account for decimal differences between token and currency.**\n\n```python\n# Base value for 1:1 ratio\nQ96 = 79228162514264337593543950336\n\n# Formula: Q96 * (human price ratio) \u002F 10^(token_decimals - currency_decimals)\n\n# Example 1: USDC (6 decimals) per 18-decimal token at $0.10 ratio\ntoken_decimals = 18\ncurrency_decimals = 6  # USDC has 6 decimals\ndecimal_adjustment = 10 ** (token_decimals - currency_decimals)  # 10^12\n\nfloorPrice = Q96 * 0.1 \u002F decimal_adjustment\n# Result: 7922816251426433759354395 (approximately)\n\n# Example 2: Native ETH (18 decimals) per 18-decimal token at 0.1 ratio\ntoken_decimals = 18\ncurrency_decimals = 18  # Native ETH has 18 decimals\ndecimal_adjustment = 10 ** (18 - 18)  # 10^0 = 1\n\nfloorPrice = Q96 * 0.1 \u002F 1\n# Result: 7922816251426433759354395034\n```\n\n**Key Point:** USDC has 6 decimals on all networks, so you must divide by 10^12 when using USDC with 18-decimal tokens.\n\n### Tick Spacing Calculation\n\nTick spacing governs where bids can be placed. Choose **AT LEAST 1 basis point of the floor price**. 1% or 10% is also reasonable.\n\n```python\n# Example: 1% of floor price\ntickSpacing = int(floorPrice * 0.01)\n\n# For floorPrice = 7922816251426433759354395000\n# Result: 79228162514264337593543950\n```\n\n### Rounding Floor Price (CRITICAL)\n\n**Floor price MUST be evenly divisible by tick spacing.** Round DOWN to ensure exact divisibility:\n\n```python\n# Calculate tick spacing first\ntickSpacing = int(floorPrice * 0.01)  # 1% of floor price\n\n# Round floor price DOWN to be evenly divisible\nroundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing\n\n# VERIFY divisibility (must be True)\nassert roundedFloorPrice % tickSpacing == 0, \"Floor price must be divisible by tick spacing!\"\n```\n\n**Example:**\n\n```python\nQ96 = 79228162514264337593543950336\nraw_floor_price = int(Q96 * 0.0001)  # 0.0001 ETH per token\n# Result: 7922816251426434139029504\n\ntick_spacing = int(raw_floor_price * 0.01)  # 1%\n# Result: 79228162514264350785536\n\nrounded_floor_price = (raw_floor_price \u002F\u002F tick_spacing) * tick_spacing\n# Result: 7843588088912170727768064\n\n# Verify: 7843588088912170727768064 \u002F 79228162514264350785536 = 99 (exact)\n# Remainder: 0 ✓\n```\n\n**Warning**: Setting too small of a tick spacing will make the auction extremely gas inefficient and can result in DoS attacks.\n\n---\n\n## Supply Schedule Configuration\n\n### Understanding MPS (Milli-Basis Points)\n\nSupply schedules use **MPS = 1e7** (10 million), where each unit represents one thousandth of a basis point.\n\nThe supply schedule defines the token issuance rate over time. Each step contains:\n\n- `mps`: Tokens released per block (in mps units)\n- `blockDelta`: Number of blocks this rate applies\n\n### Standard Schedule Generator\n\nThe plugin includes an MCP server that generates supply schedules using a **normalized convex curve** with the following properties:\n\n- **12 steps** (default, configurable) for gradual release\n- **Equal token amounts** per step (5.8333% for 70% gradual release)\n- **Decreasing block durations** (convex curve property)\n- **Large final block** receives remaining tokens (~30%, configurable 20-40%)\n- **Total**: Always exactly 10,000,000 MPS\n\nUse the MCP tool `generate_supply_schedule` to generate this standard distribution:\n\n**MCP Tool Call:**\n\n```json\n{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0\n}\n```\n\nThe algorithm automatically calculates:\n\n1. Equal token amounts per step (e.g., 5.8333% for 12 steps with 70% gradual)\n2. Time boundaries from normalized curve C(t) = t^α (default α = 1.2)\n3. Block durations that DECREASE over time (convex curve property)\n4. Final block adjustment to hit exactly 10,000,000 MPS total\n\n### Example: 2-day auction on Base\n\nBase uses 2s blocks, so 2 days = 86400 blocks.\n\nCall `generate_supply_schedule` with:\n\n```json\n{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0\n}\n```\n\n**Output (normalized convex distribution):**\n\n```json\n{\n  \"schedule\": [\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 },\n    { \"mps\": 75, \"blockDelta\": 7803 },\n    { \"mps\": 79, \"blockDelta\": 7373 },\n    { \"mps\": 83, \"blockDelta\": 7068 },\n    { \"mps\": 85, \"blockDelta\": 6835 },\n    { \"mps\": 88, \"blockDelta\": 6647 },\n    { \"mps\": 90, \"blockDelta\": 6490 },\n    { \"mps\": 92, \"blockDelta\": 6356 },\n    { \"mps\": 94, \"blockDelta\": 6238 },\n    { \"mps\": 95, \"blockDelta\": 6136 },\n    { \"mps\": 97, \"blockDelta\": 6043 },\n    { \"mps\": 2988006, \"blockDelta\": 1 }\n  ],\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0,\n  \"total_phases\": 13,\n  \"summary\": {\n    \"total_mps\": 10000000,\n    \"target_mps\": 10000000,\n    \"final_block_mps\": 2988006,\n    \"final_block_percentage\": 29.88,\n    \"num_steps\": 12,\n    \"alpha\": 1.2,\n    \"main_supply_pct\": 70.0,\n    \"step_tokens_pct\": 5.8333\n  }\n}\n```\n\n**Notice:**\n\n- Block durations DECREASE: 10894 → 8517 → 7803 → ... → 6043\n- Token amounts per step are approximately equal (~5.8333% each)\n- Final block contains 29.88% of all tokens\n- Total is exactly 10,000,000 MPS\n\n### Example: With prebid period\n\nAdd a prebid period where no tokens are released (mps=0). The prebid is prepended to the schedule.\n\nCall `generate_supply_schedule` with:\n\n```json\n{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 43200\n}\n```\n\n**Output:**\n\n```json\n{\n  \"schedule\": [\n    { \"mps\": 0, \"blockDelta\": 43200 },\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 },\n    ...\n    { \"mps\": 2988006, \"blockDelta\": 1 }\n  ],\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 43200,\n  \"total_phases\": 14,\n  \"summary\": {\n    \"total_mps\": 10000000,\n    \"target_mps\": 10000000,\n    \"final_block_mps\": 2988006,\n    \"final_block_percentage\": 29.88,\n    \"num_steps\": 12,\n    \"alpha\": 1.2,\n    \"main_supply_pct\": 70.0,\n    \"step_tokens_pct\": 5.8333\n  }\n}\n```\n\n**Notice:** The prebid phase is simply prepended with `mps: 0`. The auction portion still uses the same normalized convex distribution.\n\n### Custom Schedule\n\nFor custom distribution, manually define the schedule:\n\n```json\n{\n  \"supplySchedule\": [\n    { \"mps\": 100, \"blockDelta\": 5000 },\n    { \"mps\": 200, \"blockDelta\": 5000 },\n    { \"mps\": 500, \"blockDelta\": 4400 }\n  ]\n}\n```\n\n**Important**: The last block should sell a significant amount of tokens (typically 30%+) to prevent price manipulation.\n\n---\n\n## Encoding Supply Schedule for Onchain Deployment\n\nAfter generating a supply schedule, it must be encoded into a bytes format for the onchain `AuctionParameters` struct. The encoding packs each `{mps, blockDelta}` element into a uint64.\n\n### Encoding Algorithm\n\nFor each element in the supply schedule:\n\n1. **Create uint64** (64 bits \u002F 8 bytes) where:\n   - First 24 bits: `mps` value (left padded)\n   - Next 40 bits: `blockDelta` value (left padded)\n2. **Pack all uint64s** together via `encodePacked` (concatenate bytes)\n3. **Return** as hex bytes string with `0x` prefix\n\n### Encoding Formula\n\n```solidity\n\u002F\u002F Solidity equivalent\nuint64 packed = (uint64(mps) \u003C\u003C 40) | uint64(blockDelta);\nbytes memory auctionStepsData = abi.encodePacked(packed1, packed2, ...);\n```\n\n### Value Constraints\n\n- **mps**: Must fit in 24 bits (max: 16,777,215)\n- **blockDelta**: Must fit in 40 bits (max: 1,099,511,627,775)\n\n### Using the MCP Tool\n\nUse the `encode_supply_schedule` MCP tool to encode a supply schedule:\n\n**Input:**\n\n```json\n{\n  \"schedule\": [\n    { \"mps\": 0, \"blockDelta\": 43200 },\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 }\n  ]\n}\n```\n\n**Output:**\n\n```json\n{\n  \"encoded\": \"0x0000000000a8c00000003600002aa60000004400002145...\",\n  \"length_bytes\": 112,\n  \"num_elements\": 14\n}\n```\n\n### Manual Encoding Example (Python)\n\n```python\ndef encode_supply_schedule(schedule):\n    \"\"\"Encode supply schedule to bytes.\"\"\"\n    encoded_bytes = b''\n\n    for item in schedule:\n        mps = item['mps']\n        block_delta = item['blockDelta']\n\n        # Validate bounds\n        assert mps \u003C 2**24, f\"mps {mps} exceeds 24-bit max\"\n        assert block_delta \u003C 2**40, f\"blockDelta {block_delta} exceeds 40-bit max\"\n\n        # Pack into uint64: mps (24 bits) \u003C\u003C 40 | blockDelta (40 bits)\n        packed = (mps \u003C\u003C 40) | block_delta\n\n        # Convert to 8 bytes (big-endian)\n        encoded_bytes += packed.to_bytes(8, byteorder='big')\n\n    return '0x' + encoded_bytes.hex()\n\n# Example\nschedule = [\n    {\"mps\": 0, \"blockDelta\": 43200},\n    {\"mps\": 54, \"blockDelta\": 10894}\n]\nencoded = encode_supply_schedule(schedule)\nprint(encoded)  # 0x0000000000a8c00000003600002aa6\n```\n\n### Integration with Configuration Flow\n\nWhen using the configurator skill:\n\n1. **Generate schedule** via `generate_supply_schedule` MCP tool\n2. **Encode schedule** via `encode_supply_schedule` MCP tool\n3. **Include encoded bytes** in final configuration output\n4. **Pass to deployment** script as `auctionStepsData` parameter\n\nThe encoded bytes string is what gets passed to the Factory's `initializeDistribution` function as part of the `configData` parameter.\n\n---\n\n## Getting Current Block Number\n\nUse public RPCs to fetch current block for `startBlock` configuration:\n\n### Available Public RPCs\n\n| Network  | RPC URL                                       |\n| -------- | --------------------------------------------- |\n| Mainnet  | \u003Chttps:\u002F\u002Fethereum-rpc.publicnode.com>         |\n| Unichain | \u003Chttps:\u002F\u002Funichain-rpc.publicnode.com>         |\n| Base     | \u003Chttps:\u002F\u002Fmainnet.base.org>                    |\n| Arbitrum | \u003Chttps:\u002F\u002Farb1.arbitrum.io\u002Frpc>                |\n| Sepolia  | \u003Chttps:\u002F\u002Fethereum-sepolia-rpc.publicnode.com> |\n\n### Fetch Block Number\n\n```bash\ncurl -X POST \"https:\u002F\u002Fmainnet.base.org\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_blockNumber\",\n    \"params\": [],\n    \"id\": 1\n  }'\n```\n\n**Response:**\n\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": \"0x123abc\"\n}\n```\n\nConvert hex to decimal for block number.\n\n---\n\n## Validation Rules\n\nBefore generating configuration, ensure:\n\n1. **Block constraints**: `startBlock \u003C endBlock \u003C= claimBlock`\n2. **Valid addresses**: All addresses are valid Ethereum addresses (0x + 40 hex chars)\n3. **Non-negative values**: All numeric values >= 0\n4. **Floor price alignment**: Floor price must be a multiple of tick spacing\n5. **Tick spacing**: At least 1 basis point of floor price (1%, 10% recommended)\n6. **Supply schedule**: Last block sells significant tokens (~30%+)\n7. **Total supply bounds**: Max 1e30 wei (1 trillion 18-decimal tokens)\n8. **No FoT tokens**: Fee-on-transfer tokens not supported\n9. **Minimum decimals**: Do not use tokens with \u003C 6 decimals\n\n---\n\n## Additional Resources\n\n- **CCA Repository**: \u003Chttps:\u002F\u002Fgithub.com\u002FUniswap\u002Fcontinuous-clearing-auction>\n- **Technical Documentation**: See `docs\u002FTechnicalDocumentation.md` in repo\n- **Deployment Guide**: See `docs\u002FDeploymentGuide.md` in repo\n- **Whitepaper**: See `docs\u002Fassets\u002Fwhitepaper.pdf` in repo\n- **Audits**: See `docs\u002Faudits\u002FREADME.md` in repo\n- **Uniswap Docs**: \u003Chttps:\u002F\u002Fdocs.uniswap.org\u002Fcontracts\u002Fliquidity-launchpad\u002FCCA>\n- **Bug Bounty**: \u003Chttps:\u002F\u002Fcantina.xyz\u002Fcode\u002Ff9df94db-c7b1-434b-bb06-d1360abdd1be\u002Foverview>\n",{"data":37,"body":42},{"name":4,"description":6,"allowed-tools":38,"model":39,"license":28,"metadata":40},"Read, Write, Edit, Glob, Grep, Bash(curl:*), WebFetch, AskUserQuestion, cca-supply-schedule__generate_supply_schedule, cca-supply-schedule__encode_supply_schedule","opus",{"author":8,"version":41},"1.0.0",{"type":43,"children":44},"root",[45,54,60,91,98,110,117,196,202,207,214,222,235,245,249,255,263,311,319,347,355,383,391,433,442,445,451,459,487,495,522,530,607,615,703,712,715,721,729,756,764,791,799,844,852,875,884,887,893,901,929,938,941,947,957,1074,1087,1173,1192,1197,1207,1213,1218,1684,1694,1700,1705,1743,1749,1754,1785,1791,1907,1913,1918,2792,2797,2822,2828,2833,2838,2891,2897,2964,2967,2972,2978,2991,3103,3109,3121,3696,3702,3708,3837,3843,3947,3955,3968,3974,4078,4084,4129,4132,4138,4151,4157,4165,4325,4335,4341,4353,4399,4405,4415,4484,4492,4591,4601,4604,4609,4615,4627,4632,4655,4661,4673,4726,4739,4747,4817,4822,4845,4851,4856,4868,4938,4946,6079,6087,6110,6116,6121,6131,6203,6211,6815,6832,6838,6843,7065,7075,7078,7084,7104,7110,7115,7190,7196,7227,7233,7254,7260,7273,7281,7497,7504,7616,7622,7838,7844,7849,7912,7933,7936,7942,7954,7960,8060,8066,8194,8202,8322,8327,8330,8336,8341,8439,8442,8448,8562],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"cca-configuration",[51],{"type":52,"value":53},"text","CCA Configuration",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"Configure Continuous Clearing Auction (CCA) smart contract parameters for fair and transparent token distribution.",{"type":46,"tag":61,"props":62,"children":63},"blockquote",{},[64],{"type":46,"tag":55,"props":65,"children":66},{},[67,73,75,82,84,89],{"type":46,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":52,"value":72},"Runtime Compatibility:",{"type":52,"value":74}," This skill uses ",{"type":46,"tag":76,"props":77,"children":79},"code",{"className":78},[],[80],{"type":52,"value":81},"AskUserQuestion",{"type":52,"value":83}," for interactive prompts. If ",{"type":46,"tag":76,"props":85,"children":87},{"className":86},[],[88],{"type":52,"value":81},{"type":52,"value":90}," is not available in your runtime, collect the same parameters through natural language conversation instead.",{"type":46,"tag":92,"props":93,"children":95},"h2",{"id":94},"instructions-for-claude-code",[96],{"type":52,"value":97},"Instructions for Claude Code",{"type":46,"tag":55,"props":99,"children":100},{},[101,103,108],{"type":52,"value":102},"When the user invokes this skill, guide them through a ",{"type":46,"tag":68,"props":104,"children":105},{},[106],{"type":52,"value":107},"bulk interactive form configuration flow",{"type":52,"value":109}," using AskUserQuestion. Collect parameters in batches to minimize user interaction rounds.",{"type":46,"tag":111,"props":112,"children":114},"h3",{"id":113},"bulk-interactive-form-rules",[115],{"type":52,"value":116},"Bulk Interactive Form Rules",{"type":46,"tag":118,"props":119,"children":120},"ol",{},[121,132,166,176,186],{"type":46,"tag":122,"props":123,"children":124},"li",{},[125,130],{"type":46,"tag":68,"props":126,"children":127},{},[128],{"type":52,"value":129},"Batch questions",{"type":52,"value":131}," - Ask up to 4 questions at once using a single AskUserQuestion call",{"type":46,"tag":122,"props":133,"children":134},{},[135,140,142],{"type":46,"tag":68,"props":136,"children":137},{},[138],{"type":52,"value":139},"Allow direct input",{"type":52,"value":141}," - For fields requiring custom values (addresses, numbers):\n",{"type":46,"tag":143,"props":144,"children":145},"ul",{},[146,151,156],{"type":46,"tag":122,"props":147,"children":148},{},[149],{"type":52,"value":150},"Provide a \"Not available yet\" or \"Skip for now\" option",{"type":46,"tag":122,"props":152,"children":153},{},[154],{"type":52,"value":155},"The \"Other\" option (automatically provided) allows direct custom input",{"type":46,"tag":122,"props":157,"children":158},{},[159,164],{"type":46,"tag":68,"props":160,"children":161},{},[162],{"type":52,"value":163},"NEVER",{"type":52,"value":165}," ask \"Do you have X?\" as a separate question",{"type":46,"tag":122,"props":167,"children":168},{},[169,174],{"type":46,"tag":68,"props":170,"children":171},{},[172],{"type":52,"value":173},"Store answers",{"type":52,"value":175}," - Keep track of all collected values in a configuration object",{"type":46,"tag":122,"props":177,"children":178},{},[179,184],{"type":46,"tag":68,"props":180,"children":181},{},[182],{"type":52,"value":183},"Validate after collection",{"type":52,"value":185}," - After each batch, validate all inputs before proceeding",{"type":46,"tag":122,"props":187,"children":188},{},[189,194],{"type":46,"tag":68,"props":190,"children":191},{},[192],{"type":52,"value":193},"Show progress",{"type":52,"value":195}," - After each batch, show which parameters are collected and which remain",{"type":46,"tag":111,"props":197,"children":199},{"id":198},"configuration-flow",[200],{"type":52,"value":201},"Configuration Flow",{"type":46,"tag":55,"props":203,"children":204},{},[205],{"type":52,"value":206},"Collect parameters in these batches:",{"type":46,"tag":208,"props":209,"children":211},"h4",{"id":210},"batch-1-task-selection-1-question",[212],{"type":52,"value":213},"Batch 1: Task Selection (1 question)",{"type":46,"tag":55,"props":215,"children":216},{},[217],{"type":46,"tag":68,"props":218,"children":219},{},[220],{"type":52,"value":221},"Question 1: Task Type",{"type":46,"tag":143,"props":223,"children":224},{},[225,230],{"type":46,"tag":122,"props":226,"children":227},{},[228],{"type":52,"value":229},"Prompt: \"What would you like to do with CCA?\"",{"type":46,"tag":122,"props":231,"children":232},{},[233],{"type":52,"value":234},"Options: \"Configure auction parameters\", \"Generate supply schedule only\", \"Review existing config\", \"Deploy existing config\"",{"type":46,"tag":55,"props":236,"children":237},{},[238,243],{"type":46,"tag":68,"props":239,"children":240},{},[241],{"type":52,"value":242},"After collection:",{"type":52,"value":244}," If not \"Configure auction parameters\", skip to appropriate section.",{"type":46,"tag":246,"props":247,"children":248},"hr",{},[],{"type":46,"tag":208,"props":250,"children":252},{"id":251},"batch-2-basic-configuration-4-questions",[253],{"type":52,"value":254},"Batch 2: Basic Configuration (4 questions)",{"type":46,"tag":55,"props":256,"children":257},{},[258],{"type":46,"tag":68,"props":259,"children":260},{},[261],{"type":52,"value":262},"Question 1: Network",{"type":46,"tag":143,"props":264,"children":265},{},[266,271,276],{"type":46,"tag":122,"props":267,"children":268},{},[269],{"type":52,"value":270},"Prompt: \"Which network to deploy on?\"",{"type":46,"tag":122,"props":272,"children":273},{},[274],{"type":52,"value":275},"Options: \"Ethereum Mainnet\", \"Unichain (Mainnet)\", \"Unichain Sepolia (Testnet)\", \"Base\", \"Arbitrum\", \"Sepolia\"",{"type":46,"tag":122,"props":277,"children":278},{},[279,281,287,289,295,296,302,303,309],{"type":52,"value":280},"Store: ",{"type":46,"tag":76,"props":282,"children":284},{"className":283},[],[285],{"type":52,"value":286},"chainId",{"type":52,"value":288},", ",{"type":46,"tag":76,"props":290,"children":292},{"className":291},[],[293],{"type":52,"value":294},"blockTime",{"type":52,"value":288},{"type":46,"tag":76,"props":297,"children":299},{"className":298},[],[300],{"type":52,"value":301},"rpcUrl",{"type":52,"value":288},{"type":46,"tag":76,"props":304,"children":306},{"className":305},[],[307],{"type":52,"value":308},"currencyDecimals",{"type":52,"value":310}," (for selected currency)",{"type":46,"tag":55,"props":312,"children":313},{},[314],{"type":46,"tag":68,"props":315,"children":316},{},[317],{"type":52,"value":318},"Question 2: Token Address",{"type":46,"tag":143,"props":320,"children":321},{},[322,327,332,337],{"type":46,"tag":122,"props":323,"children":324},{},[325],{"type":52,"value":326},"Prompt: \"Token to be auctioned?\"",{"type":46,"tag":122,"props":328,"children":329},{},[330],{"type":52,"value":331},"Options: \"Token not deployed yet\" (placeholder), Custom address (via \"Other\")",{"type":46,"tag":122,"props":333,"children":334},{},[335],{"type":52,"value":336},"Validation: Must be 42 chars starting with 0x",{"type":46,"tag":122,"props":338,"children":339},{},[340,341],{"type":52,"value":280},{"type":46,"tag":76,"props":342,"children":344},{"className":343},[],[345],{"type":52,"value":346},"token",{"type":46,"tag":55,"props":348,"children":349},{},[350],{"type":46,"tag":68,"props":351,"children":352},{},[353],{"type":52,"value":354},"Question 3: Total Supply",{"type":46,"tag":143,"props":356,"children":357},{},[358,363,368,373],{"type":46,"tag":122,"props":359,"children":360},{},[361],{"type":52,"value":362},"Prompt: \"How many tokens to auction?\"",{"type":46,"tag":122,"props":364,"children":365},{},[366],{"type":52,"value":367},"Options: \"100 million tokens (18 decimals)\", \"1 billion tokens (18 decimals)\", \"10 billion tokens (18 decimals)\", Custom (via \"Other\")",{"type":46,"tag":122,"props":369,"children":370},{},[371],{"type":52,"value":372},"Validation: Must be \u003C= 1e30 wei",{"type":46,"tag":122,"props":374,"children":375},{},[376,377],{"type":52,"value":280},{"type":46,"tag":76,"props":378,"children":380},{"className":379},[],[381],{"type":52,"value":382},"totalSupply",{"type":46,"tag":55,"props":384,"children":385},{},[386],{"type":46,"tag":68,"props":387,"children":388},{},[389],{"type":52,"value":390},"Question 4: Currency",{"type":46,"tag":143,"props":392,"children":393},{},[394,399,418,423],{"type":46,"tag":122,"props":395,"children":396},{},[397],{"type":52,"value":398},"Prompt: \"What currency should bidders use?\"",{"type":46,"tag":122,"props":400,"children":401},{},[402,404,410,412,416],{"type":52,"value":403},"Options: \"ETH (Native)\", \"USDC on ",{"type":46,"tag":405,"props":406,"children":407},"span",{},[408],{"type":52,"value":409},"network",{"type":52,"value":411},"\", \"USDT on ",{"type":46,"tag":405,"props":413,"children":414},{},[415],{"type":52,"value":409},{"type":52,"value":417},"\", Custom ERC20 (via \"Other\")",{"type":46,"tag":122,"props":419,"children":420},{},[421],{"type":52,"value":422},"Validation: Must be 42 chars starting with 0x or address(0)",{"type":46,"tag":122,"props":424,"children":425},{},[426,427],{"type":52,"value":280},{"type":46,"tag":76,"props":428,"children":430},{"className":429},[],[431],{"type":52,"value":432},"currency",{"type":46,"tag":55,"props":434,"children":435},{},[436,440],{"type":46,"tag":68,"props":437,"children":438},{},[439],{"type":52,"value":242},{"type":52,"value":441}," Validate all inputs, show summary of basic configuration.",{"type":46,"tag":246,"props":443,"children":444},{},[],{"type":46,"tag":208,"props":446,"children":448},{"id":447},"batch-3-timing-pricing-4-questions",[449],{"type":52,"value":450},"Batch 3: Timing & Pricing (4 questions)",{"type":46,"tag":55,"props":452,"children":453},{},[454],{"type":46,"tag":68,"props":455,"children":456},{},[457],{"type":52,"value":458},"Question 1: Auction Duration",{"type":46,"tag":143,"props":460,"children":461},{},[462,467,472,477],{"type":46,"tag":122,"props":463,"children":464},{},[465],{"type":52,"value":466},"Prompt: \"How long should the auction run?\"",{"type":46,"tag":122,"props":468,"children":469},{},[470],{"type":52,"value":471},"Options: \"1 day\", \"2 days\", \"3 days\", \"7 days\", Custom blocks (via \"Other\")",{"type":46,"tag":122,"props":473,"children":474},{},[475],{"type":52,"value":476},"Calculate blocks based on network block time",{"type":46,"tag":122,"props":478,"children":479},{},[480,481],{"type":52,"value":280},{"type":46,"tag":76,"props":482,"children":484},{"className":483},[],[485],{"type":52,"value":486},"auctionBlocks",{"type":46,"tag":55,"props":488,"children":489},{},[490],{"type":46,"tag":68,"props":491,"children":492},{},[493],{"type":52,"value":494},"Question 2: Prebid Period",{"type":46,"tag":143,"props":496,"children":497},{},[498,503,508,512],{"type":46,"tag":122,"props":499,"children":500},{},[501],{"type":52,"value":502},"Prompt: \"Include a prebid period? (time when no tokens are sold)\"",{"type":46,"tag":122,"props":504,"children":505},{},[506],{"type":52,"value":507},"Options: \"No prebid period (0 blocks)\", \"12 hours\", \"1 day\", Custom blocks (via \"Other\")",{"type":46,"tag":122,"props":509,"children":510},{},[511],{"type":52,"value":476},{"type":46,"tag":122,"props":513,"children":514},{},[515,516],{"type":52,"value":280},{"type":46,"tag":76,"props":517,"children":519},{"className":518},[],[520],{"type":52,"value":521},"prebidBlocks",{"type":46,"tag":55,"props":523,"children":524},{},[525],{"type":46,"tag":68,"props":526,"children":527},{},[528],{"type":52,"value":529},"Question 3: Floor Price",{"type":46,"tag":143,"props":531,"children":532},{},[533,538,543,554,565,576],{"type":46,"tag":122,"props":534,"children":535},{},[536],{"type":52,"value":537},"Prompt: \"Starting floor price? (ratio of currency per token)\"",{"type":46,"tag":122,"props":539,"children":540},{},[541],{"type":52,"value":542},"Options: \"0.10x (10% of 1:1 ratio)\", \"0.01x (1% of 1:1 ratio)\", \"0.001x (0.1% of 1:1 ratio)\", Custom ratio (via \"Other\")",{"type":46,"tag":122,"props":544,"children":545},{},[546,548],{"type":52,"value":547},"Calculate Q96 value accounting for decimal differences: ",{"type":46,"tag":76,"props":549,"children":551},{"className":550},[],[552],{"type":52,"value":553},"Q96 * ratio \u002F 10^(tokenDecimals - currencyDecimals)",{"type":46,"tag":122,"props":555,"children":556},{},[557,559],{"type":52,"value":558},"For USDC (6 decimals) and 18-decimal token: ",{"type":46,"tag":76,"props":560,"children":562},{"className":561},[],[563],{"type":52,"value":564},"Q96 * ratio \u002F 10^12",{"type":46,"tag":122,"props":566,"children":567},{},[568,570],{"type":52,"value":569},"For native ETH (18 decimals) and 18-decimal token: ",{"type":46,"tag":76,"props":571,"children":573},{"className":572},[],[574],{"type":52,"value":575},"Q96 * ratio \u002F 10^0 = Q96 * ratio",{"type":46,"tag":122,"props":577,"children":578},{},[579,580,586,587,593,595,601,602],{"type":52,"value":280},{"type":46,"tag":76,"props":581,"children":583},{"className":582},[],[584],{"type":52,"value":585},"floorPriceRatio",{"type":52,"value":288},{"type":46,"tag":76,"props":588,"children":590},{"className":589},[],[591],{"type":52,"value":592},"floorPrice",{"type":52,"value":594}," (Q96), ",{"type":46,"tag":76,"props":596,"children":598},{"className":597},[],[599],{"type":52,"value":600},"tokenDecimals",{"type":52,"value":288},{"type":46,"tag":76,"props":603,"children":605},{"className":604},[],[606],{"type":52,"value":308},{"type":46,"tag":55,"props":608,"children":609},{},[610],{"type":46,"tag":68,"props":611,"children":612},{},[613],{"type":52,"value":614},"Question 4: Tick Spacing",{"type":46,"tag":143,"props":616,"children":617},{},[618,623,628,639,674,679],{"type":46,"tag":122,"props":619,"children":620},{},[621],{"type":52,"value":622},"Prompt: \"Tick spacing as percentage of floor price?\"",{"type":46,"tag":122,"props":624,"children":625},{},[626],{"type":52,"value":627},"Options: \"1% of floor price (Recommended)\", \"10% of floor price\", \"0.1% of floor price\", Custom percentage (via \"Other\")",{"type":46,"tag":122,"props":629,"children":630},{},[631,633],{"type":52,"value":632},"Calculate: ",{"type":46,"tag":76,"props":634,"children":636},{"className":635},[],[637],{"type":52,"value":638},"tickSpacing = int(floorPrice * percentage)",{"type":46,"tag":122,"props":640,"children":641},{},[642,647,649],{"type":46,"tag":68,"props":643,"children":644},{},[645],{"type":52,"value":646},"CRITICAL",{"type":52,"value":648},": Round floor price DOWN to be evenly divisible by tick spacing:\n",{"type":46,"tag":143,"props":650,"children":651},{},[652,661],{"type":46,"tag":122,"props":653,"children":654},{},[655],{"type":46,"tag":76,"props":656,"children":658},{"className":657},[],[659],{"type":52,"value":660},"roundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing",{"type":46,"tag":122,"props":662,"children":663},{},[664,666,672],{"type":52,"value":665},"Verify: ",{"type":46,"tag":76,"props":667,"children":669},{"className":668},[],[670],{"type":52,"value":671},"roundedFloorPrice % tickSpacing == 0",{"type":52,"value":673}," must be true",{"type":46,"tag":122,"props":675,"children":676},{},[677],{"type":52,"value":678},"Validate: Tick spacing must be >= 1 basis point of floor price",{"type":46,"tag":122,"props":680,"children":681},{},[682,683,689,690,696,697],{"type":52,"value":280},{"type":46,"tag":76,"props":684,"children":686},{"className":685},[],[687],{"type":52,"value":688},"tickSpacingPercentage",{"type":52,"value":288},{"type":46,"tag":76,"props":691,"children":693},{"className":692},[],[694],{"type":52,"value":695},"tickSpacing",{"type":52,"value":594},{"type":46,"tag":76,"props":698,"children":700},{"className":699},[],[701],{"type":52,"value":702},"roundedFloorPrice",{"type":46,"tag":55,"props":704,"children":705},{},[706,710],{"type":46,"tag":68,"props":707,"children":708},{},[709],{"type":52,"value":242},{"type":52,"value":711}," Validate inputs, verify floor price divisibility, calculate and display Q96 values, show timing summary.",{"type":46,"tag":246,"props":713,"children":714},{},[],{"type":46,"tag":208,"props":716,"children":718},{"id":717},"batch-4-recipients-launch-4-questions",[719],{"type":52,"value":720},"Batch 4: Recipients & Launch (4 questions)",{"type":46,"tag":55,"props":722,"children":723},{},[724],{"type":46,"tag":68,"props":725,"children":726},{},[727],{"type":52,"value":728},"Question 1: Tokens Recipient",{"type":46,"tag":143,"props":730,"children":731},{},[732,737,742,746],{"type":46,"tag":122,"props":733,"children":734},{},[735],{"type":52,"value":736},"Prompt: \"Where should unsold tokens be sent?\"",{"type":46,"tag":122,"props":738,"children":739},{},[740],{"type":52,"value":741},"Options: \"Same as funds recipient\", Custom address (via \"Other\")",{"type":46,"tag":122,"props":743,"children":744},{},[745],{"type":52,"value":336},{"type":46,"tag":122,"props":747,"children":748},{},[749,750],{"type":52,"value":280},{"type":46,"tag":76,"props":751,"children":753},{"className":752},[],[754],{"type":52,"value":755},"tokensRecipient",{"type":46,"tag":55,"props":757,"children":758},{},[759],{"type":46,"tag":68,"props":760,"children":761},{},[762],{"type":52,"value":763},"Question 2: Funds Recipient",{"type":46,"tag":143,"props":765,"children":766},{},[767,772,777,781],{"type":46,"tag":122,"props":768,"children":769},{},[770],{"type":52,"value":771},"Prompt: \"Where should raised funds be sent?\"",{"type":46,"tag":122,"props":773,"children":774},{},[775],{"type":52,"value":776},"Options: \"Same as tokens recipient\", Custom address (via \"Other\")",{"type":46,"tag":122,"props":778,"children":779},{},[780],{"type":52,"value":336},{"type":46,"tag":122,"props":782,"children":783},{},[784,785],{"type":52,"value":280},{"type":46,"tag":76,"props":786,"children":788},{"className":787},[],[789],{"type":52,"value":790},"fundsRecipient",{"type":46,"tag":55,"props":792,"children":793},{},[794],{"type":46,"tag":68,"props":795,"children":796},{},[797],{"type":52,"value":798},"Question 3: Start Time",{"type":46,"tag":143,"props":800,"children":801},{},[802,807,812,817,827],{"type":46,"tag":122,"props":803,"children":804},{},[805],{"type":52,"value":806},"Prompt: \"When should the auction start?\"",{"type":46,"tag":122,"props":808,"children":809},{},[810],{"type":52,"value":811},"Options: \"In 1 hour\", \"In 6 hours\", \"In 24 hours\", Custom block number (via \"Other\")",{"type":46,"tag":122,"props":813,"children":814},{},[815],{"type":52,"value":816},"Fetch current block number from RPC and calculate",{"type":46,"tag":122,"props":818,"children":819},{},[820,821],{"type":52,"value":280},{"type":46,"tag":76,"props":822,"children":824},{"className":823},[],[825],{"type":52,"value":826},"startBlock",{"type":46,"tag":122,"props":828,"children":829},{},[830,831,837,838],{"type":52,"value":632},{"type":46,"tag":76,"props":832,"children":834},{"className":833},[],[835],{"type":52,"value":836},"endBlock = startBlock + prebidBlocks + auctionBlocks",{"type":52,"value":288},{"type":46,"tag":76,"props":839,"children":841},{"className":840},[],[842],{"type":52,"value":843},"claimBlock = endBlock",{"type":46,"tag":55,"props":845,"children":846},{},[847],{"type":46,"tag":68,"props":848,"children":849},{},[850],{"type":52,"value":851},"Question 4: Minimum Funds Required",{"type":46,"tag":143,"props":853,"children":854},{},[855,860,865],{"type":46,"tag":122,"props":856,"children":857},{},[858],{"type":52,"value":859},"Prompt: \"Require minimum currency raised for graduation?\"",{"type":46,"tag":122,"props":861,"children":862},{},[863],{"type":52,"value":864},"Options: \"No minimum (0)\", \"100 ETH\", \"1000 ETH\", Custom amount in wei (via \"Other\")",{"type":46,"tag":122,"props":866,"children":867},{},[868,869],{"type":52,"value":280},{"type":46,"tag":76,"props":870,"children":872},{"className":871},[],[873],{"type":52,"value":874},"requiredCurrencyRaised",{"type":46,"tag":55,"props":876,"children":877},{},[878,882],{"type":46,"tag":68,"props":879,"children":880},{},[881],{"type":52,"value":242},{"type":52,"value":883}," Validate addresses, fetch current block from RPC, calculate full block timeline.",{"type":46,"tag":246,"props":885,"children":886},{},[],{"type":46,"tag":208,"props":888,"children":890},{"id":889},"batch-5-optional-hook-1-question",[891],{"type":52,"value":892},"Batch 5: Optional Hook (1 question)",{"type":46,"tag":55,"props":894,"children":895},{},[896],{"type":46,"tag":68,"props":897,"children":898},{},[899],{"type":52,"value":900},"Question 1: Validation Hook",{"type":46,"tag":143,"props":902,"children":903},{},[904,909,914,919],{"type":46,"tag":122,"props":905,"children":906},{},[907],{"type":52,"value":908},"Prompt: \"Use a validation hook contract?\"",{"type":46,"tag":122,"props":910,"children":911},{},[912],{"type":52,"value":913},"Options: \"No validation hook\", Custom hook address (via \"Other\")",{"type":46,"tag":122,"props":915,"children":916},{},[917],{"type":52,"value":918},"Validation: Must be 42 chars starting with 0x (if provided)",{"type":46,"tag":122,"props":920,"children":921},{},[922,923],{"type":52,"value":280},{"type":46,"tag":76,"props":924,"children":926},{"className":925},[],[927],{"type":52,"value":928},"validationHook",{"type":46,"tag":55,"props":930,"children":931},{},[932,936],{"type":46,"tag":68,"props":933,"children":934},{},[935],{"type":52,"value":242},{"type":52,"value":937}," Validate hook address if provided.",{"type":46,"tag":246,"props":939,"children":940},{},[],{"type":46,"tag":208,"props":942,"children":944},{"id":943},"step-6-generate-supply-schedule",[945],{"type":52,"value":946},"Step 6: Generate Supply Schedule",{"type":46,"tag":55,"props":948,"children":949},{},[950,955],{"type":46,"tag":68,"props":951,"children":952},{},[953],{"type":52,"value":954},"If MCP server is not running",{"type":52,"value":956},", provide instructions to start it:",{"type":46,"tag":958,"props":959,"children":964},"pre",{"className":960,"code":961,"language":962,"meta":963,"style":963},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Navigate to MCP server directory\ncd packages\u002Fplugins\u002Funiswap-cca\u002Fmcp-server\u002Fsupply-schedule\n\n# Run setup script (first time only)\nchmod +x setup.sh\n.\u002Fsetup.sh\n\n# Start the MCP server\npython3 server.py\n","bash","",[965],{"type":46,"tag":76,"props":966,"children":967},{"__ignoreMap":963},[968,979,995,1005,1014,1034,1043,1051,1060],{"type":46,"tag":405,"props":969,"children":972},{"class":970,"line":971},"line",1,[973],{"type":46,"tag":405,"props":974,"children":976},{"style":975},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[977],{"type":52,"value":978},"# Navigate to MCP server directory\n",{"type":46,"tag":405,"props":980,"children":982},{"class":970,"line":981},2,[983,989],{"type":46,"tag":405,"props":984,"children":986},{"style":985},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[987],{"type":52,"value":988},"cd",{"type":46,"tag":405,"props":990,"children":992},{"style":991},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[993],{"type":52,"value":994}," packages\u002Fplugins\u002Funiswap-cca\u002Fmcp-server\u002Fsupply-schedule\n",{"type":46,"tag":405,"props":996,"children":998},{"class":970,"line":997},3,[999],{"type":46,"tag":405,"props":1000,"children":1002},{"emptyLinePlaceholder":1001},true,[1003],{"type":52,"value":1004},"\n",{"type":46,"tag":405,"props":1006,"children":1008},{"class":970,"line":1007},4,[1009],{"type":46,"tag":405,"props":1010,"children":1011},{"style":975},[1012],{"type":52,"value":1013},"# Run setup script (first time only)\n",{"type":46,"tag":405,"props":1015,"children":1017},{"class":970,"line":1016},5,[1018,1024,1029],{"type":46,"tag":405,"props":1019,"children":1021},{"style":1020},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1022],{"type":52,"value":1023},"chmod",{"type":46,"tag":405,"props":1025,"children":1026},{"style":991},[1027],{"type":52,"value":1028}," +x",{"type":46,"tag":405,"props":1030,"children":1031},{"style":991},[1032],{"type":52,"value":1033}," setup.sh\n",{"type":46,"tag":405,"props":1035,"children":1037},{"class":970,"line":1036},6,[1038],{"type":46,"tag":405,"props":1039,"children":1040},{"style":1020},[1041],{"type":52,"value":1042},".\u002Fsetup.sh\n",{"type":46,"tag":405,"props":1044,"children":1046},{"class":970,"line":1045},7,[1047],{"type":46,"tag":405,"props":1048,"children":1049},{"emptyLinePlaceholder":1001},[1050],{"type":52,"value":1004},{"type":46,"tag":405,"props":1052,"children":1054},{"class":970,"line":1053},8,[1055],{"type":46,"tag":405,"props":1056,"children":1057},{"style":975},[1058],{"type":52,"value":1059},"# Start the MCP server\n",{"type":46,"tag":405,"props":1061,"children":1063},{"class":970,"line":1062},9,[1064,1069],{"type":46,"tag":405,"props":1065,"children":1066},{"style":1020},[1067],{"type":52,"value":1068},"python3",{"type":46,"tag":405,"props":1070,"children":1071},{"style":991},[1072],{"type":52,"value":1073}," server.py\n",{"type":46,"tag":55,"props":1075,"children":1076},{},[1077,1079,1085],{"type":52,"value":1078},"Once the MCP server is running, call the ",{"type":46,"tag":76,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":52,"value":1084},"cca-supply-schedule__generate_supply_schedule",{"type":52,"value":1086}," MCP tool with the collected parameters. The tool expects a JSON object:",{"type":46,"tag":958,"props":1088,"children":1092},{"className":1089,"code":1090,"language":1091,"meta":963,"style":963},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0\n}\n","json",[1093],{"type":46,"tag":76,"props":1094,"children":1095},{"__ignoreMap":963},[1096,1105,1140,1165],{"type":46,"tag":405,"props":1097,"children":1098},{"class":970,"line":971},[1099],{"type":46,"tag":405,"props":1100,"children":1102},{"style":1101},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1103],{"type":52,"value":1104},"{\n",{"type":46,"tag":405,"props":1106,"children":1107},{"class":970,"line":981},[1108,1113,1119,1124,1129,1135],{"type":46,"tag":405,"props":1109,"children":1110},{"style":1101},[1111],{"type":52,"value":1112},"  \"",{"type":46,"tag":405,"props":1114,"children":1116},{"style":1115},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1117],{"type":52,"value":1118},"auction_blocks",{"type":46,"tag":405,"props":1120,"children":1121},{"style":1101},[1122],{"type":52,"value":1123},"\"",{"type":46,"tag":405,"props":1125,"children":1126},{"style":1101},[1127],{"type":52,"value":1128},":",{"type":46,"tag":405,"props":1130,"children":1132},{"style":1131},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1133],{"type":52,"value":1134}," 86400",{"type":46,"tag":405,"props":1136,"children":1137},{"style":1101},[1138],{"type":52,"value":1139},",\n",{"type":46,"tag":405,"props":1141,"children":1142},{"class":970,"line":997},[1143,1147,1152,1156,1160],{"type":46,"tag":405,"props":1144,"children":1145},{"style":1101},[1146],{"type":52,"value":1112},{"type":46,"tag":405,"props":1148,"children":1149},{"style":1115},[1150],{"type":52,"value":1151},"prebid_blocks",{"type":46,"tag":405,"props":1153,"children":1154},{"style":1101},[1155],{"type":52,"value":1123},{"type":46,"tag":405,"props":1157,"children":1158},{"style":1101},[1159],{"type":52,"value":1128},{"type":46,"tag":405,"props":1161,"children":1162},{"style":1131},[1163],{"type":52,"value":1164}," 0\n",{"type":46,"tag":405,"props":1166,"children":1167},{"class":970,"line":1007},[1168],{"type":46,"tag":405,"props":1169,"children":1170},{"style":1101},[1171],{"type":52,"value":1172},"}\n",{"type":46,"tag":55,"props":1174,"children":1175},{},[1176,1178,1183,1185,1190],{"type":52,"value":1177},"Replace the values with the actual ",{"type":46,"tag":76,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":52,"value":486},{"type":52,"value":1184}," and ",{"type":46,"tag":76,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":52,"value":521},{"type":52,"value":1191}," collected from the user.",{"type":46,"tag":55,"props":1193,"children":1194},{},[1195],{"type":52,"value":1196},"If the MCP tool is unavailable, use the fallback Python algorithm directly (see Supply Schedule Configuration section).",{"type":46,"tag":55,"props":1198,"children":1199},{},[1200,1201],{"type":52,"value":280},{"type":46,"tag":76,"props":1202,"children":1204},{"className":1203},[],[1205],{"type":52,"value":1206},"supplySchedule",{"type":46,"tag":208,"props":1208,"children":1210},{"id":1209},"step-7-generate-and-display-configuration",[1211],{"type":52,"value":1212},"Step 7: Generate and Display Configuration",{"type":46,"tag":55,"props":1214,"children":1215},{},[1216],{"type":52,"value":1217},"After collecting all parameters and generating the supply schedule, display the complete JSON configuration in the CLI output:",{"type":46,"tag":958,"props":1219,"children":1221},{"className":1089,"code":1220,"language":1091,"meta":963,"style":963},"{\n  \"[chainId]\": {\n    \"token\": \"...\",\n    \"totalSupply\": ...,\n    \"currency\": \"...\",\n    \"tokensRecipient\": \"...\",\n    \"fundsRecipient\": \"...\",\n    \"startBlock\": ...,\n    \"endBlock\": ...,\n    \"claimBlock\": ...,\n    \"tickSpacing\": ...,\n    \"validationHook\": \"...\",\n    \"floorPrice\": ...,\n    \"requiredCurrencyRaised\": ...,\n    \"supplySchedule\": [...]\n  }\n}\n",[1222],{"type":46,"tag":76,"props":1223,"children":1224},{"__ignoreMap":963},[1225,1232,1257,1295,1324,1359,1394,1429,1456,1484,1513,1541,1577,1605,1633,1667,1676],{"type":46,"tag":405,"props":1226,"children":1227},{"class":970,"line":971},[1228],{"type":46,"tag":405,"props":1229,"children":1230},{"style":1101},[1231],{"type":52,"value":1104},{"type":46,"tag":405,"props":1233,"children":1234},{"class":970,"line":981},[1235,1239,1244,1248,1252],{"type":46,"tag":405,"props":1236,"children":1237},{"style":1101},[1238],{"type":52,"value":1112},{"type":46,"tag":405,"props":1240,"children":1241},{"style":1115},[1242],{"type":52,"value":1243},"[chainId]",{"type":46,"tag":405,"props":1245,"children":1246},{"style":1101},[1247],{"type":52,"value":1123},{"type":46,"tag":405,"props":1249,"children":1250},{"style":1101},[1251],{"type":52,"value":1128},{"type":46,"tag":405,"props":1253,"children":1254},{"style":1101},[1255],{"type":52,"value":1256}," {\n",{"type":46,"tag":405,"props":1258,"children":1259},{"class":970,"line":997},[1260,1265,1269,1273,1277,1282,1287,1291],{"type":46,"tag":405,"props":1261,"children":1262},{"style":1101},[1263],{"type":52,"value":1264},"    \"",{"type":46,"tag":405,"props":1266,"children":1267},{"style":1020},[1268],{"type":52,"value":346},{"type":46,"tag":405,"props":1270,"children":1271},{"style":1101},[1272],{"type":52,"value":1123},{"type":46,"tag":405,"props":1274,"children":1275},{"style":1101},[1276],{"type":52,"value":1128},{"type":46,"tag":405,"props":1278,"children":1279},{"style":1101},[1280],{"type":52,"value":1281}," \"",{"type":46,"tag":405,"props":1283,"children":1284},{"style":991},[1285],{"type":52,"value":1286},"...",{"type":46,"tag":405,"props":1288,"children":1289},{"style":1101},[1290],{"type":52,"value":1123},{"type":46,"tag":405,"props":1292,"children":1293},{"style":1101},[1294],{"type":52,"value":1139},{"type":46,"tag":405,"props":1296,"children":1297},{"class":970,"line":1007},[1298,1302,1306,1310,1314,1320],{"type":46,"tag":405,"props":1299,"children":1300},{"style":1101},[1301],{"type":52,"value":1264},{"type":46,"tag":405,"props":1303,"children":1304},{"style":1020},[1305],{"type":52,"value":382},{"type":46,"tag":405,"props":1307,"children":1308},{"style":1101},[1309],{"type":52,"value":1123},{"type":46,"tag":405,"props":1311,"children":1312},{"style":1101},[1313],{"type":52,"value":1128},{"type":46,"tag":405,"props":1315,"children":1317},{"style":1316},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1318],{"type":52,"value":1319}," ...",{"type":46,"tag":405,"props":1321,"children":1322},{"style":1101},[1323],{"type":52,"value":1139},{"type":46,"tag":405,"props":1325,"children":1326},{"class":970,"line":1016},[1327,1331,1335,1339,1343,1347,1351,1355],{"type":46,"tag":405,"props":1328,"children":1329},{"style":1101},[1330],{"type":52,"value":1264},{"type":46,"tag":405,"props":1332,"children":1333},{"style":1020},[1334],{"type":52,"value":432},{"type":46,"tag":405,"props":1336,"children":1337},{"style":1101},[1338],{"type":52,"value":1123},{"type":46,"tag":405,"props":1340,"children":1341},{"style":1101},[1342],{"type":52,"value":1128},{"type":46,"tag":405,"props":1344,"children":1345},{"style":1101},[1346],{"type":52,"value":1281},{"type":46,"tag":405,"props":1348,"children":1349},{"style":991},[1350],{"type":52,"value":1286},{"type":46,"tag":405,"props":1352,"children":1353},{"style":1101},[1354],{"type":52,"value":1123},{"type":46,"tag":405,"props":1356,"children":1357},{"style":1101},[1358],{"type":52,"value":1139},{"type":46,"tag":405,"props":1360,"children":1361},{"class":970,"line":1036},[1362,1366,1370,1374,1378,1382,1386,1390],{"type":46,"tag":405,"props":1363,"children":1364},{"style":1101},[1365],{"type":52,"value":1264},{"type":46,"tag":405,"props":1367,"children":1368},{"style":1020},[1369],{"type":52,"value":755},{"type":46,"tag":405,"props":1371,"children":1372},{"style":1101},[1373],{"type":52,"value":1123},{"type":46,"tag":405,"props":1375,"children":1376},{"style":1101},[1377],{"type":52,"value":1128},{"type":46,"tag":405,"props":1379,"children":1380},{"style":1101},[1381],{"type":52,"value":1281},{"type":46,"tag":405,"props":1383,"children":1384},{"style":991},[1385],{"type":52,"value":1286},{"type":46,"tag":405,"props":1387,"children":1388},{"style":1101},[1389],{"type":52,"value":1123},{"type":46,"tag":405,"props":1391,"children":1392},{"style":1101},[1393],{"type":52,"value":1139},{"type":46,"tag":405,"props":1395,"children":1396},{"class":970,"line":1045},[1397,1401,1405,1409,1413,1417,1421,1425],{"type":46,"tag":405,"props":1398,"children":1399},{"style":1101},[1400],{"type":52,"value":1264},{"type":46,"tag":405,"props":1402,"children":1403},{"style":1020},[1404],{"type":52,"value":790},{"type":46,"tag":405,"props":1406,"children":1407},{"style":1101},[1408],{"type":52,"value":1123},{"type":46,"tag":405,"props":1410,"children":1411},{"style":1101},[1412],{"type":52,"value":1128},{"type":46,"tag":405,"props":1414,"children":1415},{"style":1101},[1416],{"type":52,"value":1281},{"type":46,"tag":405,"props":1418,"children":1419},{"style":991},[1420],{"type":52,"value":1286},{"type":46,"tag":405,"props":1422,"children":1423},{"style":1101},[1424],{"type":52,"value":1123},{"type":46,"tag":405,"props":1426,"children":1427},{"style":1101},[1428],{"type":52,"value":1139},{"type":46,"tag":405,"props":1430,"children":1431},{"class":970,"line":1053},[1432,1436,1440,1444,1448,1452],{"type":46,"tag":405,"props":1433,"children":1434},{"style":1101},[1435],{"type":52,"value":1264},{"type":46,"tag":405,"props":1437,"children":1438},{"style":1020},[1439],{"type":52,"value":826},{"type":46,"tag":405,"props":1441,"children":1442},{"style":1101},[1443],{"type":52,"value":1123},{"type":46,"tag":405,"props":1445,"children":1446},{"style":1101},[1447],{"type":52,"value":1128},{"type":46,"tag":405,"props":1449,"children":1450},{"style":1316},[1451],{"type":52,"value":1319},{"type":46,"tag":405,"props":1453,"children":1454},{"style":1101},[1455],{"type":52,"value":1139},{"type":46,"tag":405,"props":1457,"children":1458},{"class":970,"line":1062},[1459,1463,1468,1472,1476,1480],{"type":46,"tag":405,"props":1460,"children":1461},{"style":1101},[1462],{"type":52,"value":1264},{"type":46,"tag":405,"props":1464,"children":1465},{"style":1020},[1466],{"type":52,"value":1467},"endBlock",{"type":46,"tag":405,"props":1469,"children":1470},{"style":1101},[1471],{"type":52,"value":1123},{"type":46,"tag":405,"props":1473,"children":1474},{"style":1101},[1475],{"type":52,"value":1128},{"type":46,"tag":405,"props":1477,"children":1478},{"style":1316},[1479],{"type":52,"value":1319},{"type":46,"tag":405,"props":1481,"children":1482},{"style":1101},[1483],{"type":52,"value":1139},{"type":46,"tag":405,"props":1485,"children":1487},{"class":970,"line":1486},10,[1488,1492,1497,1501,1505,1509],{"type":46,"tag":405,"props":1489,"children":1490},{"style":1101},[1491],{"type":52,"value":1264},{"type":46,"tag":405,"props":1493,"children":1494},{"style":1020},[1495],{"type":52,"value":1496},"claimBlock",{"type":46,"tag":405,"props":1498,"children":1499},{"style":1101},[1500],{"type":52,"value":1123},{"type":46,"tag":405,"props":1502,"children":1503},{"style":1101},[1504],{"type":52,"value":1128},{"type":46,"tag":405,"props":1506,"children":1507},{"style":1316},[1508],{"type":52,"value":1319},{"type":46,"tag":405,"props":1510,"children":1511},{"style":1101},[1512],{"type":52,"value":1139},{"type":46,"tag":405,"props":1514,"children":1516},{"class":970,"line":1515},11,[1517,1521,1525,1529,1533,1537],{"type":46,"tag":405,"props":1518,"children":1519},{"style":1101},[1520],{"type":52,"value":1264},{"type":46,"tag":405,"props":1522,"children":1523},{"style":1020},[1524],{"type":52,"value":695},{"type":46,"tag":405,"props":1526,"children":1527},{"style":1101},[1528],{"type":52,"value":1123},{"type":46,"tag":405,"props":1530,"children":1531},{"style":1101},[1532],{"type":52,"value":1128},{"type":46,"tag":405,"props":1534,"children":1535},{"style":1316},[1536],{"type":52,"value":1319},{"type":46,"tag":405,"props":1538,"children":1539},{"style":1101},[1540],{"type":52,"value":1139},{"type":46,"tag":405,"props":1542,"children":1544},{"class":970,"line":1543},12,[1545,1549,1553,1557,1561,1565,1569,1573],{"type":46,"tag":405,"props":1546,"children":1547},{"style":1101},[1548],{"type":52,"value":1264},{"type":46,"tag":405,"props":1550,"children":1551},{"style":1020},[1552],{"type":52,"value":928},{"type":46,"tag":405,"props":1554,"children":1555},{"style":1101},[1556],{"type":52,"value":1123},{"type":46,"tag":405,"props":1558,"children":1559},{"style":1101},[1560],{"type":52,"value":1128},{"type":46,"tag":405,"props":1562,"children":1563},{"style":1101},[1564],{"type":52,"value":1281},{"type":46,"tag":405,"props":1566,"children":1567},{"style":991},[1568],{"type":52,"value":1286},{"type":46,"tag":405,"props":1570,"children":1571},{"style":1101},[1572],{"type":52,"value":1123},{"type":46,"tag":405,"props":1574,"children":1575},{"style":1101},[1576],{"type":52,"value":1139},{"type":46,"tag":405,"props":1578,"children":1580},{"class":970,"line":1579},13,[1581,1585,1589,1593,1597,1601],{"type":46,"tag":405,"props":1582,"children":1583},{"style":1101},[1584],{"type":52,"value":1264},{"type":46,"tag":405,"props":1586,"children":1587},{"style":1020},[1588],{"type":52,"value":592},{"type":46,"tag":405,"props":1590,"children":1591},{"style":1101},[1592],{"type":52,"value":1123},{"type":46,"tag":405,"props":1594,"children":1595},{"style":1101},[1596],{"type":52,"value":1128},{"type":46,"tag":405,"props":1598,"children":1599},{"style":1316},[1600],{"type":52,"value":1319},{"type":46,"tag":405,"props":1602,"children":1603},{"style":1101},[1604],{"type":52,"value":1139},{"type":46,"tag":405,"props":1606,"children":1608},{"class":970,"line":1607},14,[1609,1613,1617,1621,1625,1629],{"type":46,"tag":405,"props":1610,"children":1611},{"style":1101},[1612],{"type":52,"value":1264},{"type":46,"tag":405,"props":1614,"children":1615},{"style":1020},[1616],{"type":52,"value":874},{"type":46,"tag":405,"props":1618,"children":1619},{"style":1101},[1620],{"type":52,"value":1123},{"type":46,"tag":405,"props":1622,"children":1623},{"style":1101},[1624],{"type":52,"value":1128},{"type":46,"tag":405,"props":1626,"children":1627},{"style":1316},[1628],{"type":52,"value":1319},{"type":46,"tag":405,"props":1630,"children":1631},{"style":1101},[1632],{"type":52,"value":1139},{"type":46,"tag":405,"props":1634,"children":1636},{"class":970,"line":1635},15,[1637,1641,1645,1649,1653,1658,1662],{"type":46,"tag":405,"props":1638,"children":1639},{"style":1101},[1640],{"type":52,"value":1264},{"type":46,"tag":405,"props":1642,"children":1643},{"style":1020},[1644],{"type":52,"value":1206},{"type":46,"tag":405,"props":1646,"children":1647},{"style":1101},[1648],{"type":52,"value":1123},{"type":46,"tag":405,"props":1650,"children":1651},{"style":1101},[1652],{"type":52,"value":1128},{"type":46,"tag":405,"props":1654,"children":1655},{"style":1101},[1656],{"type":52,"value":1657}," [",{"type":46,"tag":405,"props":1659,"children":1660},{"style":1316},[1661],{"type":52,"value":1286},{"type":46,"tag":405,"props":1663,"children":1664},{"style":1101},[1665],{"type":52,"value":1666},"]\n",{"type":46,"tag":405,"props":1668,"children":1670},{"class":970,"line":1669},16,[1671],{"type":46,"tag":405,"props":1672,"children":1673},{"style":1101},[1674],{"type":52,"value":1675},"  }\n",{"type":46,"tag":405,"props":1677,"children":1679},{"class":970,"line":1678},17,[1680],{"type":46,"tag":405,"props":1681,"children":1682},{"style":1101},[1683],{"type":52,"value":1172},{"type":46,"tag":55,"props":1685,"children":1686},{},[1687,1692],{"type":46,"tag":68,"props":1688,"children":1689},{},[1690],{"type":52,"value":1691},"Do NOT automatically create a file.",{"type":52,"value":1693}," Let the user copy the JSON or specify a filepath to save it.",{"type":46,"tag":208,"props":1695,"children":1697},{"id":1696},"step-8-display-summary",[1698],{"type":52,"value":1699},"Step 8: Display Summary",{"type":46,"tag":55,"props":1701,"children":1702},{},[1703],{"type":52,"value":1704},"Show the user a comprehensive formatted summary including:",{"type":46,"tag":143,"props":1706,"children":1707},{},[1708,1713,1718,1723,1728,1733,1738],{"type":46,"tag":122,"props":1709,"children":1710},{},[1711],{"type":52,"value":1712},"Network and chain ID",{"type":46,"tag":122,"props":1714,"children":1715},{},[1716],{"type":52,"value":1717},"Token and currency details",{"type":46,"tag":122,"props":1719,"children":1720},{},[1721],{"type":52,"value":1722},"Block timeline (start, end, claim) with human-readable times",{"type":46,"tag":122,"props":1724,"children":1725},{},[1726],{"type":52,"value":1727},"Pricing (floor price, tick spacing) in both Q96 and ratio formats",{"type":46,"tag":122,"props":1729,"children":1730},{},[1731],{"type":52,"value":1732},"Recipients (tokens, funds)",{"type":46,"tag":122,"props":1734,"children":1735},{},[1736],{"type":52,"value":1737},"Supply schedule summary (total phases, final block percentage)",{"type":46,"tag":122,"props":1739,"children":1740},{},[1741],{"type":52,"value":1742},"Validation checklist (all validation rules passed\u002Ffailed)",{"type":46,"tag":208,"props":1744,"children":1746},{"id":1745},"step-9-next-steps",[1747],{"type":52,"value":1748},"Step 9: Next Steps",{"type":46,"tag":55,"props":1750,"children":1751},{},[1752],{"type":52,"value":1753},"Ask the user what they want to do:",{"type":46,"tag":143,"props":1755,"children":1756},{},[1757,1770,1775,1780],{"type":46,"tag":122,"props":1758,"children":1759},{},[1760,1762,1768],{"type":52,"value":1761},"\"Save to file\" (ask for filepath, default: ",{"type":46,"tag":76,"props":1763,"children":1765},{"className":1764},[],[1766],{"type":52,"value":1767},"script\u002Fauction-config.json",{"type":52,"value":1769},")",{"type":46,"tag":122,"props":1771,"children":1772},{},[1773],{"type":52,"value":1774},"\"View deployment instructions\" (suggest using the deployer skill)",{"type":46,"tag":122,"props":1776,"children":1777},{},[1778],{"type":52,"value":1779},"\"Modify configuration\"",{"type":46,"tag":122,"props":1781,"children":1782},{},[1783],{"type":52,"value":1784},"\"Exit\" (just end, they can copy the JSON from CLI output)",{"type":46,"tag":111,"props":1786,"children":1788},{"id":1787},"important-notes",[1789],{"type":52,"value":1790},"Important Notes",{"type":46,"tag":143,"props":1792,"children":1793},{},[1794,1804,1814,1851,1887,1897],{"type":46,"tag":122,"props":1795,"children":1796},{},[1797,1802],{"type":46,"tag":68,"props":1798,"children":1799},{},[1800],{"type":52,"value":1801},"Validate in batches",{"type":52,"value":1803}," - Validate all inputs after each batch collection",{"type":46,"tag":122,"props":1805,"children":1806},{},[1807,1812],{"type":46,"tag":68,"props":1808,"children":1809},{},[1810],{"type":52,"value":1811},"Fetch current block number",{"type":52,"value":1813}," from RPC when calculating start\u002Fend blocks",{"type":46,"tag":122,"props":1815,"children":1816},{},[1817,1822,1824],{"type":46,"tag":68,"props":1818,"children":1819},{},[1820],{"type":52,"value":1821},"Calculate Q96 values",{"type":52,"value":1823}," correctly for floor price and tick spacing:\n",{"type":46,"tag":143,"props":1825,"children":1826},{},[1827,1841,1846],{"type":46,"tag":122,"props":1828,"children":1829},{},[1830,1834,1836],{"type":46,"tag":68,"props":1831,"children":1832},{},[1833],{"type":52,"value":646},{"type":52,"value":1835},": Account for decimal differences: ",{"type":46,"tag":76,"props":1837,"children":1839},{"className":1838},[],[1840],{"type":52,"value":553},{"type":46,"tag":122,"props":1842,"children":1843},{},[1844],{"type":52,"value":1845},"USDC is 6 decimals on all networks - divide by 10^12 for 18-decimal tokens",{"type":46,"tag":122,"props":1847,"children":1848},{},[1849],{"type":52,"value":1850},"Native ETH is 18 decimals - no adjustment needed for 18-decimal tokens",{"type":46,"tag":122,"props":1852,"children":1853},{},[1854,1859,1861],{"type":46,"tag":68,"props":1855,"children":1856},{},[1857],{"type":52,"value":1858},"Round floor price",{"type":52,"value":1860}," to be evenly divisible by tick spacing:\n",{"type":46,"tag":143,"props":1862,"children":1863},{},[1864,1872],{"type":46,"tag":122,"props":1865,"children":1866},{},[1867],{"type":46,"tag":76,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":52,"value":660},{"type":46,"tag":122,"props":1873,"children":1874},{},[1875,1880,1882],{"type":46,"tag":68,"props":1876,"children":1877},{},[1878],{"type":52,"value":1879},"MUST verify",{"type":52,"value":1881},": ",{"type":46,"tag":76,"props":1883,"children":1885},{"className":1884},[],[1886],{"type":52,"value":671},{"type":46,"tag":122,"props":1888,"children":1889},{},[1890,1895],{"type":46,"tag":68,"props":1891,"children":1892},{},[1893],{"type":52,"value":1894},"Use the MCP tool",{"type":52,"value":1896}," for supply schedule generation (provide setup instructions if not running)",{"type":46,"tag":122,"props":1898,"children":1899},{},[1900,1905],{"type":46,"tag":68,"props":1901,"children":1902},{},[1903],{"type":52,"value":1904},"Minimize interaction rounds",{"type":52,"value":1906}," - Collect as many params as reasonable per batch",{"type":46,"tag":111,"props":1908,"children":1910},{"id":1909},"network-specific-constants",[1911],{"type":52,"value":1912},"Network-Specific Constants",{"type":46,"tag":55,"props":1914,"children":1915},{},[1916],{"type":52,"value":1917},"Store these for quick reference:",{"type":46,"tag":958,"props":1919,"children":1923},{"className":1920,"code":1921,"language":1922,"meta":963,"style":963},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const NETWORKS = {\n  1: {\n    name: 'Mainnet',\n    blockTime: 12,\n    rpc: 'https:\u002F\u002Fethereum-rpc.publicnode.com',\n    usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n  },\n  130: {\n    name: 'Unichain',\n    blockTime: 1,\n    rpc: 'https:\u002F\u002Fmainnet.unichain.org',\n    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',\n  },\n  1301: {\n    name: 'Unichain Sepolia (Testnet)',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Fsepolia.unichain.org',\n    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',\n  },\n  8453: {\n    name: 'Base',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Fmainnet.base.org',\n    usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n  },\n  42161: {\n    name: 'Arbitrum',\n    blockTime: 2,\n    rpc: 'https:\u002F\u002Farb1.arbitrum.io\u002Frpc',\n    usdc: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',\n  },\n  11155111: {\n    name: 'Sepolia',\n    blockTime: 12,\n    rpc: 'https:\u002F\u002Fethereum-sepolia-rpc.publicnode.com',\n    usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n  },\n};\n\n\u002F\u002F Q96 = 2^96 (JavaScript BigInt notation)\nconst Q96 = 79228162514264337593543950336n;\n","typescript",[1924],{"type":46,"tag":76,"props":1925,"children":1926},{"__ignoreMap":963},[1927,1949,1965,1997,2018,2047,2076,2084,2100,2128,2148,2176,2204,2211,2227,2255,2275,2303,2331,2339,2356,2385,2405,2434,2463,2471,2488,2517,2537,2566,2595,2603,2620,2649,2669,2697,2726,2734,2743,2751,2760],{"type":46,"tag":405,"props":1928,"children":1929},{"class":970,"line":971},[1930,1935,1940,1945],{"type":46,"tag":405,"props":1931,"children":1932},{"style":1115},[1933],{"type":52,"value":1934},"const",{"type":46,"tag":405,"props":1936,"children":1937},{"style":1316},[1938],{"type":52,"value":1939}," NETWORKS ",{"type":46,"tag":405,"props":1941,"children":1942},{"style":1101},[1943],{"type":52,"value":1944},"=",{"type":46,"tag":405,"props":1946,"children":1947},{"style":1101},[1948],{"type":52,"value":1256},{"type":46,"tag":405,"props":1950,"children":1951},{"class":970,"line":981},[1952,1957,1961],{"type":46,"tag":405,"props":1953,"children":1954},{"style":1131},[1955],{"type":52,"value":1956},"  1",{"type":46,"tag":405,"props":1958,"children":1959},{"style":1101},[1960],{"type":52,"value":1128},{"type":46,"tag":405,"props":1962,"children":1963},{"style":1101},[1964],{"type":52,"value":1256},{"type":46,"tag":405,"props":1966,"children":1967},{"class":970,"line":997},[1968,1974,1978,1983,1988,1993],{"type":46,"tag":405,"props":1969,"children":1971},{"style":1970},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1972],{"type":52,"value":1973},"    name",{"type":46,"tag":405,"props":1975,"children":1976},{"style":1101},[1977],{"type":52,"value":1128},{"type":46,"tag":405,"props":1979,"children":1980},{"style":1101},[1981],{"type":52,"value":1982}," '",{"type":46,"tag":405,"props":1984,"children":1985},{"style":991},[1986],{"type":52,"value":1987},"Mainnet",{"type":46,"tag":405,"props":1989,"children":1990},{"style":1101},[1991],{"type":52,"value":1992},"'",{"type":46,"tag":405,"props":1994,"children":1995},{"style":1101},[1996],{"type":52,"value":1139},{"type":46,"tag":405,"props":1998,"children":1999},{"class":970,"line":1007},[2000,2005,2009,2014],{"type":46,"tag":405,"props":2001,"children":2002},{"style":1970},[2003],{"type":52,"value":2004},"    blockTime",{"type":46,"tag":405,"props":2006,"children":2007},{"style":1101},[2008],{"type":52,"value":1128},{"type":46,"tag":405,"props":2010,"children":2011},{"style":1131},[2012],{"type":52,"value":2013}," 12",{"type":46,"tag":405,"props":2015,"children":2016},{"style":1101},[2017],{"type":52,"value":1139},{"type":46,"tag":405,"props":2019,"children":2020},{"class":970,"line":1016},[2021,2026,2030,2034,2039,2043],{"type":46,"tag":405,"props":2022,"children":2023},{"style":1970},[2024],{"type":52,"value":2025},"    rpc",{"type":46,"tag":405,"props":2027,"children":2028},{"style":1101},[2029],{"type":52,"value":1128},{"type":46,"tag":405,"props":2031,"children":2032},{"style":1101},[2033],{"type":52,"value":1982},{"type":46,"tag":405,"props":2035,"children":2036},{"style":991},[2037],{"type":52,"value":2038},"https:\u002F\u002Fethereum-rpc.publicnode.com",{"type":46,"tag":405,"props":2040,"children":2041},{"style":1101},[2042],{"type":52,"value":1992},{"type":46,"tag":405,"props":2044,"children":2045},{"style":1101},[2046],{"type":52,"value":1139},{"type":46,"tag":405,"props":2048,"children":2049},{"class":970,"line":1036},[2050,2055,2059,2063,2068,2072],{"type":46,"tag":405,"props":2051,"children":2052},{"style":1970},[2053],{"type":52,"value":2054},"    usdc",{"type":46,"tag":405,"props":2056,"children":2057},{"style":1101},[2058],{"type":52,"value":1128},{"type":46,"tag":405,"props":2060,"children":2061},{"style":1101},[2062],{"type":52,"value":1982},{"type":46,"tag":405,"props":2064,"children":2065},{"style":991},[2066],{"type":52,"value":2067},"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",{"type":46,"tag":405,"props":2069,"children":2070},{"style":1101},[2071],{"type":52,"value":1992},{"type":46,"tag":405,"props":2073,"children":2074},{"style":1101},[2075],{"type":52,"value":1139},{"type":46,"tag":405,"props":2077,"children":2078},{"class":970,"line":1045},[2079],{"type":46,"tag":405,"props":2080,"children":2081},{"style":1101},[2082],{"type":52,"value":2083},"  },\n",{"type":46,"tag":405,"props":2085,"children":2086},{"class":970,"line":1053},[2087,2092,2096],{"type":46,"tag":405,"props":2088,"children":2089},{"style":1131},[2090],{"type":52,"value":2091},"  130",{"type":46,"tag":405,"props":2093,"children":2094},{"style":1101},[2095],{"type":52,"value":1128},{"type":46,"tag":405,"props":2097,"children":2098},{"style":1101},[2099],{"type":52,"value":1256},{"type":46,"tag":405,"props":2101,"children":2102},{"class":970,"line":1062},[2103,2107,2111,2115,2120,2124],{"type":46,"tag":405,"props":2104,"children":2105},{"style":1970},[2106],{"type":52,"value":1973},{"type":46,"tag":405,"props":2108,"children":2109},{"style":1101},[2110],{"type":52,"value":1128},{"type":46,"tag":405,"props":2112,"children":2113},{"style":1101},[2114],{"type":52,"value":1982},{"type":46,"tag":405,"props":2116,"children":2117},{"style":991},[2118],{"type":52,"value":2119},"Unichain",{"type":46,"tag":405,"props":2121,"children":2122},{"style":1101},[2123],{"type":52,"value":1992},{"type":46,"tag":405,"props":2125,"children":2126},{"style":1101},[2127],{"type":52,"value":1139},{"type":46,"tag":405,"props":2129,"children":2130},{"class":970,"line":1486},[2131,2135,2139,2144],{"type":46,"tag":405,"props":2132,"children":2133},{"style":1970},[2134],{"type":52,"value":2004},{"type":46,"tag":405,"props":2136,"children":2137},{"style":1101},[2138],{"type":52,"value":1128},{"type":46,"tag":405,"props":2140,"children":2141},{"style":1131},[2142],{"type":52,"value":2143}," 1",{"type":46,"tag":405,"props":2145,"children":2146},{"style":1101},[2147],{"type":52,"value":1139},{"type":46,"tag":405,"props":2149,"children":2150},{"class":970,"line":1515},[2151,2155,2159,2163,2168,2172],{"type":46,"tag":405,"props":2152,"children":2153},{"style":1970},[2154],{"type":52,"value":2025},{"type":46,"tag":405,"props":2156,"children":2157},{"style":1101},[2158],{"type":52,"value":1128},{"type":46,"tag":405,"props":2160,"children":2161},{"style":1101},[2162],{"type":52,"value":1982},{"type":46,"tag":405,"props":2164,"children":2165},{"style":991},[2166],{"type":52,"value":2167},"https:\u002F\u002Fmainnet.unichain.org",{"type":46,"tag":405,"props":2169,"children":2170},{"style":1101},[2171],{"type":52,"value":1992},{"type":46,"tag":405,"props":2173,"children":2174},{"style":1101},[2175],{"type":52,"value":1139},{"type":46,"tag":405,"props":2177,"children":2178},{"class":970,"line":1543},[2179,2183,2187,2191,2196,2200],{"type":46,"tag":405,"props":2180,"children":2181},{"style":1970},[2182],{"type":52,"value":2054},{"type":46,"tag":405,"props":2184,"children":2185},{"style":1101},[2186],{"type":52,"value":1128},{"type":46,"tag":405,"props":2188,"children":2189},{"style":1101},[2190],{"type":52,"value":1982},{"type":46,"tag":405,"props":2192,"children":2193},{"style":991},[2194],{"type":52,"value":2195},"0x078D782b760474a361dDA0AF3839290b0EF57AD6",{"type":46,"tag":405,"props":2197,"children":2198},{"style":1101},[2199],{"type":52,"value":1992},{"type":46,"tag":405,"props":2201,"children":2202},{"style":1101},[2203],{"type":52,"value":1139},{"type":46,"tag":405,"props":2205,"children":2206},{"class":970,"line":1579},[2207],{"type":46,"tag":405,"props":2208,"children":2209},{"style":1101},[2210],{"type":52,"value":2083},{"type":46,"tag":405,"props":2212,"children":2213},{"class":970,"line":1607},[2214,2219,2223],{"type":46,"tag":405,"props":2215,"children":2216},{"style":1131},[2217],{"type":52,"value":2218},"  1301",{"type":46,"tag":405,"props":2220,"children":2221},{"style":1101},[2222],{"type":52,"value":1128},{"type":46,"tag":405,"props":2224,"children":2225},{"style":1101},[2226],{"type":52,"value":1256},{"type":46,"tag":405,"props":2228,"children":2229},{"class":970,"line":1635},[2230,2234,2238,2242,2247,2251],{"type":46,"tag":405,"props":2231,"children":2232},{"style":1970},[2233],{"type":52,"value":1973},{"type":46,"tag":405,"props":2235,"children":2236},{"style":1101},[2237],{"type":52,"value":1128},{"type":46,"tag":405,"props":2239,"children":2240},{"style":1101},[2241],{"type":52,"value":1982},{"type":46,"tag":405,"props":2243,"children":2244},{"style":991},[2245],{"type":52,"value":2246},"Unichain Sepolia (Testnet)",{"type":46,"tag":405,"props":2248,"children":2249},{"style":1101},[2250],{"type":52,"value":1992},{"type":46,"tag":405,"props":2252,"children":2253},{"style":1101},[2254],{"type":52,"value":1139},{"type":46,"tag":405,"props":2256,"children":2257},{"class":970,"line":1669},[2258,2262,2266,2271],{"type":46,"tag":405,"props":2259,"children":2260},{"style":1970},[2261],{"type":52,"value":2004},{"type":46,"tag":405,"props":2263,"children":2264},{"style":1101},[2265],{"type":52,"value":1128},{"type":46,"tag":405,"props":2267,"children":2268},{"style":1131},[2269],{"type":52,"value":2270}," 2",{"type":46,"tag":405,"props":2272,"children":2273},{"style":1101},[2274],{"type":52,"value":1139},{"type":46,"tag":405,"props":2276,"children":2277},{"class":970,"line":1678},[2278,2282,2286,2290,2295,2299],{"type":46,"tag":405,"props":2279,"children":2280},{"style":1970},[2281],{"type":52,"value":2025},{"type":46,"tag":405,"props":2283,"children":2284},{"style":1101},[2285],{"type":52,"value":1128},{"type":46,"tag":405,"props":2287,"children":2288},{"style":1101},[2289],{"type":52,"value":1982},{"type":46,"tag":405,"props":2291,"children":2292},{"style":991},[2293],{"type":52,"value":2294},"https:\u002F\u002Fsepolia.unichain.org",{"type":46,"tag":405,"props":2296,"children":2297},{"style":1101},[2298],{"type":52,"value":1992},{"type":46,"tag":405,"props":2300,"children":2301},{"style":1101},[2302],{"type":52,"value":1139},{"type":46,"tag":405,"props":2304,"children":2306},{"class":970,"line":2305},18,[2307,2311,2315,2319,2323,2327],{"type":46,"tag":405,"props":2308,"children":2309},{"style":1970},[2310],{"type":52,"value":2054},{"type":46,"tag":405,"props":2312,"children":2313},{"style":1101},[2314],{"type":52,"value":1128},{"type":46,"tag":405,"props":2316,"children":2317},{"style":1101},[2318],{"type":52,"value":1982},{"type":46,"tag":405,"props":2320,"children":2321},{"style":991},[2322],{"type":52,"value":2195},{"type":46,"tag":405,"props":2324,"children":2325},{"style":1101},[2326],{"type":52,"value":1992},{"type":46,"tag":405,"props":2328,"children":2329},{"style":1101},[2330],{"type":52,"value":1139},{"type":46,"tag":405,"props":2332,"children":2334},{"class":970,"line":2333},19,[2335],{"type":46,"tag":405,"props":2336,"children":2337},{"style":1101},[2338],{"type":52,"value":2083},{"type":46,"tag":405,"props":2340,"children":2342},{"class":970,"line":2341},20,[2343,2348,2352],{"type":46,"tag":405,"props":2344,"children":2345},{"style":1131},[2346],{"type":52,"value":2347},"  8453",{"type":46,"tag":405,"props":2349,"children":2350},{"style":1101},[2351],{"type":52,"value":1128},{"type":46,"tag":405,"props":2353,"children":2354},{"style":1101},[2355],{"type":52,"value":1256},{"type":46,"tag":405,"props":2357,"children":2359},{"class":970,"line":2358},21,[2360,2364,2368,2372,2377,2381],{"type":46,"tag":405,"props":2361,"children":2362},{"style":1970},[2363],{"type":52,"value":1973},{"type":46,"tag":405,"props":2365,"children":2366},{"style":1101},[2367],{"type":52,"value":1128},{"type":46,"tag":405,"props":2369,"children":2370},{"style":1101},[2371],{"type":52,"value":1982},{"type":46,"tag":405,"props":2373,"children":2374},{"style":991},[2375],{"type":52,"value":2376},"Base",{"type":46,"tag":405,"props":2378,"children":2379},{"style":1101},[2380],{"type":52,"value":1992},{"type":46,"tag":405,"props":2382,"children":2383},{"style":1101},[2384],{"type":52,"value":1139},{"type":46,"tag":405,"props":2386,"children":2388},{"class":970,"line":2387},22,[2389,2393,2397,2401],{"type":46,"tag":405,"props":2390,"children":2391},{"style":1970},[2392],{"type":52,"value":2004},{"type":46,"tag":405,"props":2394,"children":2395},{"style":1101},[2396],{"type":52,"value":1128},{"type":46,"tag":405,"props":2398,"children":2399},{"style":1131},[2400],{"type":52,"value":2270},{"type":46,"tag":405,"props":2402,"children":2403},{"style":1101},[2404],{"type":52,"value":1139},{"type":46,"tag":405,"props":2406,"children":2408},{"class":970,"line":2407},23,[2409,2413,2417,2421,2426,2430],{"type":46,"tag":405,"props":2410,"children":2411},{"style":1970},[2412],{"type":52,"value":2025},{"type":46,"tag":405,"props":2414,"children":2415},{"style":1101},[2416],{"type":52,"value":1128},{"type":46,"tag":405,"props":2418,"children":2419},{"style":1101},[2420],{"type":52,"value":1982},{"type":46,"tag":405,"props":2422,"children":2423},{"style":991},[2424],{"type":52,"value":2425},"https:\u002F\u002Fmainnet.base.org",{"type":46,"tag":405,"props":2427,"children":2428},{"style":1101},[2429],{"type":52,"value":1992},{"type":46,"tag":405,"props":2431,"children":2432},{"style":1101},[2433],{"type":52,"value":1139},{"type":46,"tag":405,"props":2435,"children":2437},{"class":970,"line":2436},24,[2438,2442,2446,2450,2455,2459],{"type":46,"tag":405,"props":2439,"children":2440},{"style":1970},[2441],{"type":52,"value":2054},{"type":46,"tag":405,"props":2443,"children":2444},{"style":1101},[2445],{"type":52,"value":1128},{"type":46,"tag":405,"props":2447,"children":2448},{"style":1101},[2449],{"type":52,"value":1982},{"type":46,"tag":405,"props":2451,"children":2452},{"style":991},[2453],{"type":52,"value":2454},"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",{"type":46,"tag":405,"props":2456,"children":2457},{"style":1101},[2458],{"type":52,"value":1992},{"type":46,"tag":405,"props":2460,"children":2461},{"style":1101},[2462],{"type":52,"value":1139},{"type":46,"tag":405,"props":2464,"children":2466},{"class":970,"line":2465},25,[2467],{"type":46,"tag":405,"props":2468,"children":2469},{"style":1101},[2470],{"type":52,"value":2083},{"type":46,"tag":405,"props":2472,"children":2474},{"class":970,"line":2473},26,[2475,2480,2484],{"type":46,"tag":405,"props":2476,"children":2477},{"style":1131},[2478],{"type":52,"value":2479},"  42161",{"type":46,"tag":405,"props":2481,"children":2482},{"style":1101},[2483],{"type":52,"value":1128},{"type":46,"tag":405,"props":2485,"children":2486},{"style":1101},[2487],{"type":52,"value":1256},{"type":46,"tag":405,"props":2489,"children":2491},{"class":970,"line":2490},27,[2492,2496,2500,2504,2509,2513],{"type":46,"tag":405,"props":2493,"children":2494},{"style":1970},[2495],{"type":52,"value":1973},{"type":46,"tag":405,"props":2497,"children":2498},{"style":1101},[2499],{"type":52,"value":1128},{"type":46,"tag":405,"props":2501,"children":2502},{"style":1101},[2503],{"type":52,"value":1982},{"type":46,"tag":405,"props":2505,"children":2506},{"style":991},[2507],{"type":52,"value":2508},"Arbitrum",{"type":46,"tag":405,"props":2510,"children":2511},{"style":1101},[2512],{"type":52,"value":1992},{"type":46,"tag":405,"props":2514,"children":2515},{"style":1101},[2516],{"type":52,"value":1139},{"type":46,"tag":405,"props":2518,"children":2520},{"class":970,"line":2519},28,[2521,2525,2529,2533],{"type":46,"tag":405,"props":2522,"children":2523},{"style":1970},[2524],{"type":52,"value":2004},{"type":46,"tag":405,"props":2526,"children":2527},{"style":1101},[2528],{"type":52,"value":1128},{"type":46,"tag":405,"props":2530,"children":2531},{"style":1131},[2532],{"type":52,"value":2270},{"type":46,"tag":405,"props":2534,"children":2535},{"style":1101},[2536],{"type":52,"value":1139},{"type":46,"tag":405,"props":2538,"children":2540},{"class":970,"line":2539},29,[2541,2545,2549,2553,2558,2562],{"type":46,"tag":405,"props":2542,"children":2543},{"style":1970},[2544],{"type":52,"value":2025},{"type":46,"tag":405,"props":2546,"children":2547},{"style":1101},[2548],{"type":52,"value":1128},{"type":46,"tag":405,"props":2550,"children":2551},{"style":1101},[2552],{"type":52,"value":1982},{"type":46,"tag":405,"props":2554,"children":2555},{"style":991},[2556],{"type":52,"value":2557},"https:\u002F\u002Farb1.arbitrum.io\u002Frpc",{"type":46,"tag":405,"props":2559,"children":2560},{"style":1101},[2561],{"type":52,"value":1992},{"type":46,"tag":405,"props":2563,"children":2564},{"style":1101},[2565],{"type":52,"value":1139},{"type":46,"tag":405,"props":2567,"children":2569},{"class":970,"line":2568},30,[2570,2574,2578,2582,2587,2591],{"type":46,"tag":405,"props":2571,"children":2572},{"style":1970},[2573],{"type":52,"value":2054},{"type":46,"tag":405,"props":2575,"children":2576},{"style":1101},[2577],{"type":52,"value":1128},{"type":46,"tag":405,"props":2579,"children":2580},{"style":1101},[2581],{"type":52,"value":1982},{"type":46,"tag":405,"props":2583,"children":2584},{"style":991},[2585],{"type":52,"value":2586},"0xaf88d065e77c8cc2239327c5edb3a432268e5831",{"type":46,"tag":405,"props":2588,"children":2589},{"style":1101},[2590],{"type":52,"value":1992},{"type":46,"tag":405,"props":2592,"children":2593},{"style":1101},[2594],{"type":52,"value":1139},{"type":46,"tag":405,"props":2596,"children":2598},{"class":970,"line":2597},31,[2599],{"type":46,"tag":405,"props":2600,"children":2601},{"style":1101},[2602],{"type":52,"value":2083},{"type":46,"tag":405,"props":2604,"children":2606},{"class":970,"line":2605},32,[2607,2612,2616],{"type":46,"tag":405,"props":2608,"children":2609},{"style":1131},[2610],{"type":52,"value":2611},"  11155111",{"type":46,"tag":405,"props":2613,"children":2614},{"style":1101},[2615],{"type":52,"value":1128},{"type":46,"tag":405,"props":2617,"children":2618},{"style":1101},[2619],{"type":52,"value":1256},{"type":46,"tag":405,"props":2621,"children":2623},{"class":970,"line":2622},33,[2624,2628,2632,2636,2641,2645],{"type":46,"tag":405,"props":2625,"children":2626},{"style":1970},[2627],{"type":52,"value":1973},{"type":46,"tag":405,"props":2629,"children":2630},{"style":1101},[2631],{"type":52,"value":1128},{"type":46,"tag":405,"props":2633,"children":2634},{"style":1101},[2635],{"type":52,"value":1982},{"type":46,"tag":405,"props":2637,"children":2638},{"style":991},[2639],{"type":52,"value":2640},"Sepolia",{"type":46,"tag":405,"props":2642,"children":2643},{"style":1101},[2644],{"type":52,"value":1992},{"type":46,"tag":405,"props":2646,"children":2647},{"style":1101},[2648],{"type":52,"value":1139},{"type":46,"tag":405,"props":2650,"children":2652},{"class":970,"line":2651},34,[2653,2657,2661,2665],{"type":46,"tag":405,"props":2654,"children":2655},{"style":1970},[2656],{"type":52,"value":2004},{"type":46,"tag":405,"props":2658,"children":2659},{"style":1101},[2660],{"type":52,"value":1128},{"type":46,"tag":405,"props":2662,"children":2663},{"style":1131},[2664],{"type":52,"value":2013},{"type":46,"tag":405,"props":2666,"children":2667},{"style":1101},[2668],{"type":52,"value":1139},{"type":46,"tag":405,"props":2670,"children":2671},{"class":970,"line":29},[2672,2676,2680,2684,2689,2693],{"type":46,"tag":405,"props":2673,"children":2674},{"style":1970},[2675],{"type":52,"value":2025},{"type":46,"tag":405,"props":2677,"children":2678},{"style":1101},[2679],{"type":52,"value":1128},{"type":46,"tag":405,"props":2681,"children":2682},{"style":1101},[2683],{"type":52,"value":1982},{"type":46,"tag":405,"props":2685,"children":2686},{"style":991},[2687],{"type":52,"value":2688},"https:\u002F\u002Fethereum-sepolia-rpc.publicnode.com",{"type":46,"tag":405,"props":2690,"children":2691},{"style":1101},[2692],{"type":52,"value":1992},{"type":46,"tag":405,"props":2694,"children":2695},{"style":1101},[2696],{"type":52,"value":1139},{"type":46,"tag":405,"props":2698,"children":2700},{"class":970,"line":2699},36,[2701,2705,2709,2713,2718,2722],{"type":46,"tag":405,"props":2702,"children":2703},{"style":1970},[2704],{"type":52,"value":2054},{"type":46,"tag":405,"props":2706,"children":2707},{"style":1101},[2708],{"type":52,"value":1128},{"type":46,"tag":405,"props":2710,"children":2711},{"style":1101},[2712],{"type":52,"value":1982},{"type":46,"tag":405,"props":2714,"children":2715},{"style":991},[2716],{"type":52,"value":2717},"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",{"type":46,"tag":405,"props":2719,"children":2720},{"style":1101},[2721],{"type":52,"value":1992},{"type":46,"tag":405,"props":2723,"children":2724},{"style":1101},[2725],{"type":52,"value":1139},{"type":46,"tag":405,"props":2727,"children":2729},{"class":970,"line":2728},37,[2730],{"type":46,"tag":405,"props":2731,"children":2732},{"style":1101},[2733],{"type":52,"value":2083},{"type":46,"tag":405,"props":2735,"children":2737},{"class":970,"line":2736},38,[2738],{"type":46,"tag":405,"props":2739,"children":2740},{"style":1101},[2741],{"type":52,"value":2742},"};\n",{"type":46,"tag":405,"props":2744,"children":2746},{"class":970,"line":2745},39,[2747],{"type":46,"tag":405,"props":2748,"children":2749},{"emptyLinePlaceholder":1001},[2750],{"type":52,"value":1004},{"type":46,"tag":405,"props":2752,"children":2754},{"class":970,"line":2753},40,[2755],{"type":46,"tag":405,"props":2756,"children":2757},{"style":975},[2758],{"type":52,"value":2759},"\u002F\u002F Q96 = 2^96 (JavaScript BigInt notation)\n",{"type":46,"tag":405,"props":2761,"children":2763},{"class":970,"line":2762},41,[2764,2768,2773,2777,2782,2787],{"type":46,"tag":405,"props":2765,"children":2766},{"style":1115},[2767],{"type":52,"value":1934},{"type":46,"tag":405,"props":2769,"children":2770},{"style":1316},[2771],{"type":52,"value":2772}," Q96 ",{"type":46,"tag":405,"props":2774,"children":2775},{"style":1101},[2776],{"type":52,"value":1944},{"type":46,"tag":405,"props":2778,"children":2779},{"style":1131},[2780],{"type":52,"value":2781}," 79228162514264337593543950336",{"type":46,"tag":405,"props":2783,"children":2784},{"style":1115},[2785],{"type":52,"value":2786},"n",{"type":46,"tag":405,"props":2788,"children":2789},{"style":1101},[2790],{"type":52,"value":2791},";\n",{"type":46,"tag":55,"props":2793,"children":2794},{},[2795],{"type":52,"value":2796},"Python equivalent:",{"type":46,"tag":958,"props":2798,"children":2802},{"className":2799,"code":2800,"language":2801,"meta":963,"style":963},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Q96 = 2**96\nQ96 = 79228162514264337593543950336\n","python",[2803],{"type":46,"tag":76,"props":2804,"children":2805},{"__ignoreMap":963},[2806,2814],{"type":46,"tag":405,"props":2807,"children":2808},{"class":970,"line":971},[2809],{"type":46,"tag":405,"props":2810,"children":2811},{},[2812],{"type":52,"value":2813},"# Q96 = 2**96\n",{"type":46,"tag":405,"props":2815,"children":2816},{"class":970,"line":981},[2817],{"type":46,"tag":405,"props":2818,"children":2819},{},[2820],{"type":52,"value":2821},"Q96 = 79228162514264337593543950336\n",{"type":46,"tag":92,"props":2823,"children":2825},{"id":2824},"overview",[2826],{"type":52,"value":2827},"Overview",{"type":46,"tag":55,"props":2829,"children":2830},{},[2831],{"type":52,"value":2832},"CCA (Continuous Clearing Auction) is a novel auction mechanism that generalizes the uniform-price auction into continuous time. It provides fair price discovery for bootstrapping initial liquidity while eliminating timing games and encouraging early participation.",{"type":46,"tag":55,"props":2834,"children":2835},{},[2836],{"type":52,"value":2837},"Key features:",{"type":46,"tag":143,"props":2839,"children":2840},{},[2841,2851,2861,2871,2881],{"type":46,"tag":122,"props":2842,"children":2843},{},[2844,2849],{"type":46,"tag":68,"props":2845,"children":2846},{},[2847],{"type":52,"value":2848},"Fair price discovery",{"type":52,"value":2850},": Continuous clearing with no timing games",{"type":46,"tag":122,"props":2852,"children":2853},{},[2854,2859],{"type":46,"tag":68,"props":2855,"children":2856},{},[2857],{"type":52,"value":2858},"Transparent distribution",{"type":52,"value":2860},": Supply released on a predetermined schedule",{"type":46,"tag":122,"props":2862,"children":2863},{},[2864,2869],{"type":46,"tag":68,"props":2865,"children":2866},{},[2867],{"type":52,"value":2868},"Flexible configuration",{"type":52,"value":2870},": Customizable auction parameters and schedules",{"type":46,"tag":122,"props":2872,"children":2873},{},[2874,2879],{"type":46,"tag":68,"props":2875,"children":2876},{},[2877],{"type":52,"value":2878},"Multi-chain support",{"type":52,"value":2880},": Canonical deployment across EVM chains",{"type":46,"tag":122,"props":2882,"children":2883},{},[2884,2889],{"type":46,"tag":68,"props":2885,"children":2886},{},[2887],{"type":52,"value":2888},"Factory deployment",{"type":52,"value":2890},": Consistent addresses via CREATE2",{"type":46,"tag":92,"props":2892,"children":2894},{"id":2893},"quick-decision-guide",[2895],{"type":52,"value":2896},"Quick Decision Guide",{"type":46,"tag":2898,"props":2899,"children":2900},"table",{},[2901,2920],{"type":46,"tag":2902,"props":2903,"children":2904},"thead",{},[2905],{"type":46,"tag":2906,"props":2907,"children":2908},"tr",{},[2909,2915],{"type":46,"tag":2910,"props":2911,"children":2912},"th",{},[2913],{"type":52,"value":2914},"Task...",{"type":46,"tag":2910,"props":2916,"children":2917},{},[2918],{"type":52,"value":2919},"Use This Section",{"type":46,"tag":2921,"props":2922,"children":2923},"tbody",{},[2924,2938,2951],{"type":46,"tag":2906,"props":2925,"children":2926},{},[2927,2933],{"type":46,"tag":2928,"props":2929,"children":2930},"td",{},[2931],{"type":52,"value":2932},"Configure auction parameters",{"type":46,"tag":2928,"props":2934,"children":2935},{},[2936],{"type":52,"value":2937},"Configuration Guide",{"type":46,"tag":2906,"props":2939,"children":2940},{},[2941,2946],{"type":46,"tag":2928,"props":2942,"children":2943},{},[2944],{"type":52,"value":2945},"Generate supply schedule",{"type":46,"tag":2928,"props":2947,"children":2948},{},[2949],{"type":52,"value":2950},"Supply Schedule Configuration",{"type":46,"tag":2906,"props":2952,"children":2953},{},[2954,2959],{"type":46,"tag":2928,"props":2955,"children":2956},{},[2957],{"type":52,"value":2958},"Understand auction mechanics",{"type":46,"tag":2928,"props":2960,"children":2961},{},[2962],{"type":52,"value":2963},"Technical Overview",{"type":46,"tag":246,"props":2965,"children":2966},{},[],{"type":46,"tag":92,"props":2968,"children":2970},{"id":2969},"configuration-guide",[2971],{"type":52,"value":2937},{"type":46,"tag":111,"props":2973,"children":2975},{"id":2974},"auction-parameters",[2976],{"type":52,"value":2977},"Auction Parameters",{"type":46,"tag":55,"props":2979,"children":2980},{},[2981,2983,2989],{"type":52,"value":2982},"CCA auctions are configured through the ",{"type":46,"tag":76,"props":2984,"children":2986},{"className":2985},[],[2987],{"type":52,"value":2988},"AuctionParameters",{"type":52,"value":2990}," struct:",{"type":46,"tag":958,"props":2992,"children":2996},{"className":2993,"code":2994,"language":2995,"meta":963,"style":963},"language-solidity shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","struct AuctionParameters {\n    address currency;              \u002F\u002F Token to raise funds in (address(0) for ETH)\n    address tokensRecipient;       \u002F\u002F Address to receive leftover tokens\n    address fundsRecipient;        \u002F\u002F Address to receive all raised funds\n    uint64 startBlock;             \u002F\u002F Block when auction starts\n    uint64 endBlock;               \u002F\u002F Block when auction ends\n    uint64 claimBlock;             \u002F\u002F Block when tokens can be claimed\n    uint256 tickSpacing;           \u002F\u002F Fixed granularity for prices (Q96)\n    address validationHook;        \u002F\u002F Optional hook (use 0x0 if none)\n    uint256 floorPrice;            \u002F\u002F Starting floor price (Q96)\n    uint128 requiredCurrencyRaised; \u002F\u002F Minimum funds to graduate\n    bytes auctionStepsData;        \u002F\u002F Packed supply issuance schedule\n}\n","solidity",[2997],{"type":46,"tag":76,"props":2998,"children":2999},{"__ignoreMap":963},[3000,3008,3016,3024,3032,3040,3048,3056,3064,3072,3080,3088,3096],{"type":46,"tag":405,"props":3001,"children":3002},{"class":970,"line":971},[3003],{"type":46,"tag":405,"props":3004,"children":3005},{},[3006],{"type":52,"value":3007},"struct AuctionParameters {\n",{"type":46,"tag":405,"props":3009,"children":3010},{"class":970,"line":981},[3011],{"type":46,"tag":405,"props":3012,"children":3013},{},[3014],{"type":52,"value":3015},"    address currency;              \u002F\u002F Token to raise funds in (address(0) for ETH)\n",{"type":46,"tag":405,"props":3017,"children":3018},{"class":970,"line":997},[3019],{"type":46,"tag":405,"props":3020,"children":3021},{},[3022],{"type":52,"value":3023},"    address tokensRecipient;       \u002F\u002F Address to receive leftover tokens\n",{"type":46,"tag":405,"props":3025,"children":3026},{"class":970,"line":1007},[3027],{"type":46,"tag":405,"props":3028,"children":3029},{},[3030],{"type":52,"value":3031},"    address fundsRecipient;        \u002F\u002F Address to receive all raised funds\n",{"type":46,"tag":405,"props":3033,"children":3034},{"class":970,"line":1016},[3035],{"type":46,"tag":405,"props":3036,"children":3037},{},[3038],{"type":52,"value":3039},"    uint64 startBlock;             \u002F\u002F Block when auction starts\n",{"type":46,"tag":405,"props":3041,"children":3042},{"class":970,"line":1036},[3043],{"type":46,"tag":405,"props":3044,"children":3045},{},[3046],{"type":52,"value":3047},"    uint64 endBlock;               \u002F\u002F Block when auction ends\n",{"type":46,"tag":405,"props":3049,"children":3050},{"class":970,"line":1045},[3051],{"type":46,"tag":405,"props":3052,"children":3053},{},[3054],{"type":52,"value":3055},"    uint64 claimBlock;             \u002F\u002F Block when tokens can be claimed\n",{"type":46,"tag":405,"props":3057,"children":3058},{"class":970,"line":1053},[3059],{"type":46,"tag":405,"props":3060,"children":3061},{},[3062],{"type":52,"value":3063},"    uint256 tickSpacing;           \u002F\u002F Fixed granularity for prices (Q96)\n",{"type":46,"tag":405,"props":3065,"children":3066},{"class":970,"line":1062},[3067],{"type":46,"tag":405,"props":3068,"children":3069},{},[3070],{"type":52,"value":3071},"    address validationHook;        \u002F\u002F Optional hook (use 0x0 if none)\n",{"type":46,"tag":405,"props":3073,"children":3074},{"class":970,"line":1486},[3075],{"type":46,"tag":405,"props":3076,"children":3077},{},[3078],{"type":52,"value":3079},"    uint256 floorPrice;            \u002F\u002F Starting floor price (Q96)\n",{"type":46,"tag":405,"props":3081,"children":3082},{"class":970,"line":1515},[3083],{"type":46,"tag":405,"props":3084,"children":3085},{},[3086],{"type":52,"value":3087},"    uint128 requiredCurrencyRaised; \u002F\u002F Minimum funds to graduate\n",{"type":46,"tag":405,"props":3089,"children":3090},{"class":970,"line":1543},[3091],{"type":46,"tag":405,"props":3092,"children":3093},{},[3094],{"type":52,"value":3095},"    bytes auctionStepsData;        \u002F\u002F Packed supply issuance schedule\n",{"type":46,"tag":405,"props":3097,"children":3098},{"class":970,"line":1579},[3099],{"type":46,"tag":405,"props":3100,"children":3101},{},[3102],{"type":52,"value":1172},{"type":46,"tag":111,"props":3104,"children":3106},{"id":3105},"configuration-file-format",[3107],{"type":52,"value":3108},"Configuration File Format",{"type":46,"tag":55,"props":3110,"children":3111},{},[3112,3114,3119],{"type":52,"value":3113},"Create a JSON configuration file (e.g., ",{"type":46,"tag":76,"props":3115,"children":3117},{"className":3116},[],[3118],{"type":52,"value":1767},{"type":52,"value":3120},"):",{"type":46,"tag":958,"props":3122,"children":3124},{"className":1089,"code":3123,"language":1091,"meta":963,"style":963},"{\n  \"1\": {\n    \"token\": \"0x...\",\n    \"totalSupply\": 1e29,\n    \"currency\": \"0x0000000000000000000000000000000000000000\",\n    \"tokensRecipient\": \"0x...\",\n    \"fundsRecipient\": \"0x...\",\n    \"startBlock\": 24321000,\n    \"endBlock\": 24327001,\n    \"claimBlock\": 24327001,\n    \"tickSpacing\": 79228162514264337593543950,\n    \"validationHook\": \"0x0000000000000000000000000000000000000000\",\n    \"floorPrice\": 7922816251426433759354395000,\n    \"requiredCurrencyRaised\": 0,\n    \"supplySchedule\": [\n      { \"mps\": 1000, \"blockDelta\": 6000 },\n      { \"mps\": 4000000, \"blockDelta\": 1 }\n    ]\n  }\n}\n",[3125],{"type":46,"tag":76,"props":3126,"children":3127},{"__ignoreMap":963},[3128,3135,3159,3195,3223,3259,3294,3329,3357,3385,3412,3440,3475,3503,3531,3555,3617,3674,3682,3689],{"type":46,"tag":405,"props":3129,"children":3130},{"class":970,"line":971},[3131],{"type":46,"tag":405,"props":3132,"children":3133},{"style":1101},[3134],{"type":52,"value":1104},{"type":46,"tag":405,"props":3136,"children":3137},{"class":970,"line":981},[3138,3142,3147,3151,3155],{"type":46,"tag":405,"props":3139,"children":3140},{"style":1101},[3141],{"type":52,"value":1112},{"type":46,"tag":405,"props":3143,"children":3144},{"style":1115},[3145],{"type":52,"value":3146},"1",{"type":46,"tag":405,"props":3148,"children":3149},{"style":1101},[3150],{"type":52,"value":1123},{"type":46,"tag":405,"props":3152,"children":3153},{"style":1101},[3154],{"type":52,"value":1128},{"type":46,"tag":405,"props":3156,"children":3157},{"style":1101},[3158],{"type":52,"value":1256},{"type":46,"tag":405,"props":3160,"children":3161},{"class":970,"line":997},[3162,3166,3170,3174,3178,3182,3187,3191],{"type":46,"tag":405,"props":3163,"children":3164},{"style":1101},[3165],{"type":52,"value":1264},{"type":46,"tag":405,"props":3167,"children":3168},{"style":1020},[3169],{"type":52,"value":346},{"type":46,"tag":405,"props":3171,"children":3172},{"style":1101},[3173],{"type":52,"value":1123},{"type":46,"tag":405,"props":3175,"children":3176},{"style":1101},[3177],{"type":52,"value":1128},{"type":46,"tag":405,"props":3179,"children":3180},{"style":1101},[3181],{"type":52,"value":1281},{"type":46,"tag":405,"props":3183,"children":3184},{"style":991},[3185],{"type":52,"value":3186},"0x...",{"type":46,"tag":405,"props":3188,"children":3189},{"style":1101},[3190],{"type":52,"value":1123},{"type":46,"tag":405,"props":3192,"children":3193},{"style":1101},[3194],{"type":52,"value":1139},{"type":46,"tag":405,"props":3196,"children":3197},{"class":970,"line":1007},[3198,3202,3206,3210,3214,3219],{"type":46,"tag":405,"props":3199,"children":3200},{"style":1101},[3201],{"type":52,"value":1264},{"type":46,"tag":405,"props":3203,"children":3204},{"style":1020},[3205],{"type":52,"value":382},{"type":46,"tag":405,"props":3207,"children":3208},{"style":1101},[3209],{"type":52,"value":1123},{"type":46,"tag":405,"props":3211,"children":3212},{"style":1101},[3213],{"type":52,"value":1128},{"type":46,"tag":405,"props":3215,"children":3216},{"style":1131},[3217],{"type":52,"value":3218}," 1e29",{"type":46,"tag":405,"props":3220,"children":3221},{"style":1101},[3222],{"type":52,"value":1139},{"type":46,"tag":405,"props":3224,"children":3225},{"class":970,"line":1016},[3226,3230,3234,3238,3242,3246,3251,3255],{"type":46,"tag":405,"props":3227,"children":3228},{"style":1101},[3229],{"type":52,"value":1264},{"type":46,"tag":405,"props":3231,"children":3232},{"style":1020},[3233],{"type":52,"value":432},{"type":46,"tag":405,"props":3235,"children":3236},{"style":1101},[3237],{"type":52,"value":1123},{"type":46,"tag":405,"props":3239,"children":3240},{"style":1101},[3241],{"type":52,"value":1128},{"type":46,"tag":405,"props":3243,"children":3244},{"style":1101},[3245],{"type":52,"value":1281},{"type":46,"tag":405,"props":3247,"children":3248},{"style":991},[3249],{"type":52,"value":3250},"0x0000000000000000000000000000000000000000",{"type":46,"tag":405,"props":3252,"children":3253},{"style":1101},[3254],{"type":52,"value":1123},{"type":46,"tag":405,"props":3256,"children":3257},{"style":1101},[3258],{"type":52,"value":1139},{"type":46,"tag":405,"props":3260,"children":3261},{"class":970,"line":1036},[3262,3266,3270,3274,3278,3282,3286,3290],{"type":46,"tag":405,"props":3263,"children":3264},{"style":1101},[3265],{"type":52,"value":1264},{"type":46,"tag":405,"props":3267,"children":3268},{"style":1020},[3269],{"type":52,"value":755},{"type":46,"tag":405,"props":3271,"children":3272},{"style":1101},[3273],{"type":52,"value":1123},{"type":46,"tag":405,"props":3275,"children":3276},{"style":1101},[3277],{"type":52,"value":1128},{"type":46,"tag":405,"props":3279,"children":3280},{"style":1101},[3281],{"type":52,"value":1281},{"type":46,"tag":405,"props":3283,"children":3284},{"style":991},[3285],{"type":52,"value":3186},{"type":46,"tag":405,"props":3287,"children":3288},{"style":1101},[3289],{"type":52,"value":1123},{"type":46,"tag":405,"props":3291,"children":3292},{"style":1101},[3293],{"type":52,"value":1139},{"type":46,"tag":405,"props":3295,"children":3296},{"class":970,"line":1045},[3297,3301,3305,3309,3313,3317,3321,3325],{"type":46,"tag":405,"props":3298,"children":3299},{"style":1101},[3300],{"type":52,"value":1264},{"type":46,"tag":405,"props":3302,"children":3303},{"style":1020},[3304],{"type":52,"value":790},{"type":46,"tag":405,"props":3306,"children":3307},{"style":1101},[3308],{"type":52,"value":1123},{"type":46,"tag":405,"props":3310,"children":3311},{"style":1101},[3312],{"type":52,"value":1128},{"type":46,"tag":405,"props":3314,"children":3315},{"style":1101},[3316],{"type":52,"value":1281},{"type":46,"tag":405,"props":3318,"children":3319},{"style":991},[3320],{"type":52,"value":3186},{"type":46,"tag":405,"props":3322,"children":3323},{"style":1101},[3324],{"type":52,"value":1123},{"type":46,"tag":405,"props":3326,"children":3327},{"style":1101},[3328],{"type":52,"value":1139},{"type":46,"tag":405,"props":3330,"children":3331},{"class":970,"line":1053},[3332,3336,3340,3344,3348,3353],{"type":46,"tag":405,"props":3333,"children":3334},{"style":1101},[3335],{"type":52,"value":1264},{"type":46,"tag":405,"props":3337,"children":3338},{"style":1020},[3339],{"type":52,"value":826},{"type":46,"tag":405,"props":3341,"children":3342},{"style":1101},[3343],{"type":52,"value":1123},{"type":46,"tag":405,"props":3345,"children":3346},{"style":1101},[3347],{"type":52,"value":1128},{"type":46,"tag":405,"props":3349,"children":3350},{"style":1131},[3351],{"type":52,"value":3352}," 24321000",{"type":46,"tag":405,"props":3354,"children":3355},{"style":1101},[3356],{"type":52,"value":1139},{"type":46,"tag":405,"props":3358,"children":3359},{"class":970,"line":1062},[3360,3364,3368,3372,3376,3381],{"type":46,"tag":405,"props":3361,"children":3362},{"style":1101},[3363],{"type":52,"value":1264},{"type":46,"tag":405,"props":3365,"children":3366},{"style":1020},[3367],{"type":52,"value":1467},{"type":46,"tag":405,"props":3369,"children":3370},{"style":1101},[3371],{"type":52,"value":1123},{"type":46,"tag":405,"props":3373,"children":3374},{"style":1101},[3375],{"type":52,"value":1128},{"type":46,"tag":405,"props":3377,"children":3378},{"style":1131},[3379],{"type":52,"value":3380}," 24327001",{"type":46,"tag":405,"props":3382,"children":3383},{"style":1101},[3384],{"type":52,"value":1139},{"type":46,"tag":405,"props":3386,"children":3387},{"class":970,"line":1486},[3388,3392,3396,3400,3404,3408],{"type":46,"tag":405,"props":3389,"children":3390},{"style":1101},[3391],{"type":52,"value":1264},{"type":46,"tag":405,"props":3393,"children":3394},{"style":1020},[3395],{"type":52,"value":1496},{"type":46,"tag":405,"props":3397,"children":3398},{"style":1101},[3399],{"type":52,"value":1123},{"type":46,"tag":405,"props":3401,"children":3402},{"style":1101},[3403],{"type":52,"value":1128},{"type":46,"tag":405,"props":3405,"children":3406},{"style":1131},[3407],{"type":52,"value":3380},{"type":46,"tag":405,"props":3409,"children":3410},{"style":1101},[3411],{"type":52,"value":1139},{"type":46,"tag":405,"props":3413,"children":3414},{"class":970,"line":1515},[3415,3419,3423,3427,3431,3436],{"type":46,"tag":405,"props":3416,"children":3417},{"style":1101},[3418],{"type":52,"value":1264},{"type":46,"tag":405,"props":3420,"children":3421},{"style":1020},[3422],{"type":52,"value":695},{"type":46,"tag":405,"props":3424,"children":3425},{"style":1101},[3426],{"type":52,"value":1123},{"type":46,"tag":405,"props":3428,"children":3429},{"style":1101},[3430],{"type":52,"value":1128},{"type":46,"tag":405,"props":3432,"children":3433},{"style":1131},[3434],{"type":52,"value":3435}," 79228162514264337593543950",{"type":46,"tag":405,"props":3437,"children":3438},{"style":1101},[3439],{"type":52,"value":1139},{"type":46,"tag":405,"props":3441,"children":3442},{"class":970,"line":1543},[3443,3447,3451,3455,3459,3463,3467,3471],{"type":46,"tag":405,"props":3444,"children":3445},{"style":1101},[3446],{"type":52,"value":1264},{"type":46,"tag":405,"props":3448,"children":3449},{"style":1020},[3450],{"type":52,"value":928},{"type":46,"tag":405,"props":3452,"children":3453},{"style":1101},[3454],{"type":52,"value":1123},{"type":46,"tag":405,"props":3456,"children":3457},{"style":1101},[3458],{"type":52,"value":1128},{"type":46,"tag":405,"props":3460,"children":3461},{"style":1101},[3462],{"type":52,"value":1281},{"type":46,"tag":405,"props":3464,"children":3465},{"style":991},[3466],{"type":52,"value":3250},{"type":46,"tag":405,"props":3468,"children":3469},{"style":1101},[3470],{"type":52,"value":1123},{"type":46,"tag":405,"props":3472,"children":3473},{"style":1101},[3474],{"type":52,"value":1139},{"type":46,"tag":405,"props":3476,"children":3477},{"class":970,"line":1579},[3478,3482,3486,3490,3494,3499],{"type":46,"tag":405,"props":3479,"children":3480},{"style":1101},[3481],{"type":52,"value":1264},{"type":46,"tag":405,"props":3483,"children":3484},{"style":1020},[3485],{"type":52,"value":592},{"type":46,"tag":405,"props":3487,"children":3488},{"style":1101},[3489],{"type":52,"value":1123},{"type":46,"tag":405,"props":3491,"children":3492},{"style":1101},[3493],{"type":52,"value":1128},{"type":46,"tag":405,"props":3495,"children":3496},{"style":1131},[3497],{"type":52,"value":3498}," 7922816251426433759354395000",{"type":46,"tag":405,"props":3500,"children":3501},{"style":1101},[3502],{"type":52,"value":1139},{"type":46,"tag":405,"props":3504,"children":3505},{"class":970,"line":1607},[3506,3510,3514,3518,3522,3527],{"type":46,"tag":405,"props":3507,"children":3508},{"style":1101},[3509],{"type":52,"value":1264},{"type":46,"tag":405,"props":3511,"children":3512},{"style":1020},[3513],{"type":52,"value":874},{"type":46,"tag":405,"props":3515,"children":3516},{"style":1101},[3517],{"type":52,"value":1123},{"type":46,"tag":405,"props":3519,"children":3520},{"style":1101},[3521],{"type":52,"value":1128},{"type":46,"tag":405,"props":3523,"children":3524},{"style":1131},[3525],{"type":52,"value":3526}," 0",{"type":46,"tag":405,"props":3528,"children":3529},{"style":1101},[3530],{"type":52,"value":1139},{"type":46,"tag":405,"props":3532,"children":3533},{"class":970,"line":1635},[3534,3538,3542,3546,3550],{"type":46,"tag":405,"props":3535,"children":3536},{"style":1101},[3537],{"type":52,"value":1264},{"type":46,"tag":405,"props":3539,"children":3540},{"style":1020},[3541],{"type":52,"value":1206},{"type":46,"tag":405,"props":3543,"children":3544},{"style":1101},[3545],{"type":52,"value":1123},{"type":46,"tag":405,"props":3547,"children":3548},{"style":1101},[3549],{"type":52,"value":1128},{"type":46,"tag":405,"props":3551,"children":3552},{"style":1101},[3553],{"type":52,"value":3554}," [\n",{"type":46,"tag":405,"props":3556,"children":3557},{"class":970,"line":1669},[3558,3563,3567,3572,3576,3580,3585,3590,3594,3599,3603,3607,3612],{"type":46,"tag":405,"props":3559,"children":3560},{"style":1101},[3561],{"type":52,"value":3562},"      {",{"type":46,"tag":405,"props":3564,"children":3565},{"style":1101},[3566],{"type":52,"value":1281},{"type":46,"tag":405,"props":3568,"children":3569},{"style":1131},[3570],{"type":52,"value":3571},"mps",{"type":46,"tag":405,"props":3573,"children":3574},{"style":1101},[3575],{"type":52,"value":1123},{"type":46,"tag":405,"props":3577,"children":3578},{"style":1101},[3579],{"type":52,"value":1128},{"type":46,"tag":405,"props":3581,"children":3582},{"style":1131},[3583],{"type":52,"value":3584}," 1000",{"type":46,"tag":405,"props":3586,"children":3587},{"style":1101},[3588],{"type":52,"value":3589},",",{"type":46,"tag":405,"props":3591,"children":3592},{"style":1101},[3593],{"type":52,"value":1281},{"type":46,"tag":405,"props":3595,"children":3596},{"style":1131},[3597],{"type":52,"value":3598},"blockDelta",{"type":46,"tag":405,"props":3600,"children":3601},{"style":1101},[3602],{"type":52,"value":1123},{"type":46,"tag":405,"props":3604,"children":3605},{"style":1101},[3606],{"type":52,"value":1128},{"type":46,"tag":405,"props":3608,"children":3609},{"style":1131},[3610],{"type":52,"value":3611}," 6000",{"type":46,"tag":405,"props":3613,"children":3614},{"style":1101},[3615],{"type":52,"value":3616}," },\n",{"type":46,"tag":405,"props":3618,"children":3619},{"class":970,"line":1678},[3620,3624,3628,3632,3636,3640,3645,3649,3653,3657,3661,3665,3669],{"type":46,"tag":405,"props":3621,"children":3622},{"style":1101},[3623],{"type":52,"value":3562},{"type":46,"tag":405,"props":3625,"children":3626},{"style":1101},[3627],{"type":52,"value":1281},{"type":46,"tag":405,"props":3629,"children":3630},{"style":1131},[3631],{"type":52,"value":3571},{"type":46,"tag":405,"props":3633,"children":3634},{"style":1101},[3635],{"type":52,"value":1123},{"type":46,"tag":405,"props":3637,"children":3638},{"style":1101},[3639],{"type":52,"value":1128},{"type":46,"tag":405,"props":3641,"children":3642},{"style":1131},[3643],{"type":52,"value":3644}," 4000000",{"type":46,"tag":405,"props":3646,"children":3647},{"style":1101},[3648],{"type":52,"value":3589},{"type":46,"tag":405,"props":3650,"children":3651},{"style":1101},[3652],{"type":52,"value":1281},{"type":46,"tag":405,"props":3654,"children":3655},{"style":1131},[3656],{"type":52,"value":3598},{"type":46,"tag":405,"props":3658,"children":3659},{"style":1101},[3660],{"type":52,"value":1123},{"type":46,"tag":405,"props":3662,"children":3663},{"style":1101},[3664],{"type":52,"value":1128},{"type":46,"tag":405,"props":3666,"children":3667},{"style":1131},[3668],{"type":52,"value":2143},{"type":46,"tag":405,"props":3670,"children":3671},{"style":1101},[3672],{"type":52,"value":3673}," }\n",{"type":46,"tag":405,"props":3675,"children":3676},{"class":970,"line":2305},[3677],{"type":46,"tag":405,"props":3678,"children":3679},{"style":1101},[3680],{"type":52,"value":3681},"    ]\n",{"type":46,"tag":405,"props":3683,"children":3684},{"class":970,"line":2333},[3685],{"type":46,"tag":405,"props":3686,"children":3687},{"style":1101},[3688],{"type":52,"value":1675},{"type":46,"tag":405,"props":3690,"children":3691},{"class":970,"line":2341},[3692],{"type":46,"tag":405,"props":3693,"children":3694},{"style":1101},[3695],{"type":52,"value":1172},{"type":46,"tag":111,"props":3697,"children":3699},{"id":3698},"parameter-details",[3700],{"type":52,"value":3701},"Parameter Details",{"type":46,"tag":208,"props":3703,"children":3705},{"id":3704},"basic-configuration",[3706],{"type":52,"value":3707},"Basic Configuration",{"type":46,"tag":2898,"props":3709,"children":3710},{},[3711,3732],{"type":46,"tag":2902,"props":3712,"children":3713},{},[3714],{"type":46,"tag":2906,"props":3715,"children":3716},{},[3717,3722,3727],{"type":46,"tag":2910,"props":3718,"children":3719},{},[3720],{"type":52,"value":3721},"Parameter",{"type":46,"tag":2910,"props":3723,"children":3724},{},[3725],{"type":52,"value":3726},"Type",{"type":46,"tag":2910,"props":3728,"children":3729},{},[3730],{"type":52,"value":3731},"Description",{"type":46,"tag":2921,"props":3733,"children":3734},{},[3735,3756,3777,3797,3817],{"type":46,"tag":2906,"props":3736,"children":3737},{},[3738,3746,3751],{"type":46,"tag":2928,"props":3739,"children":3740},{},[3741],{"type":46,"tag":76,"props":3742,"children":3744},{"className":3743},[],[3745],{"type":52,"value":346},{"type":46,"tag":2928,"props":3747,"children":3748},{},[3749],{"type":52,"value":3750},"address",{"type":46,"tag":2928,"props":3752,"children":3753},{},[3754],{"type":52,"value":3755},"Token being auctioned",{"type":46,"tag":2906,"props":3757,"children":3758},{},[3759,3767,3772],{"type":46,"tag":2928,"props":3760,"children":3761},{},[3762],{"type":46,"tag":76,"props":3763,"children":3765},{"className":3764},[],[3766],{"type":52,"value":382},{"type":46,"tag":2928,"props":3768,"children":3769},{},[3770],{"type":52,"value":3771},"number",{"type":46,"tag":2928,"props":3773,"children":3774},{},[3775],{"type":52,"value":3776},"Total tokens to auction (wei\u002Fsmallest unit)",{"type":46,"tag":2906,"props":3778,"children":3779},{},[3780,3788,3792],{"type":46,"tag":2928,"props":3781,"children":3782},{},[3783],{"type":46,"tag":76,"props":3784,"children":3786},{"className":3785},[],[3787],{"type":52,"value":432},{"type":46,"tag":2928,"props":3789,"children":3790},{},[3791],{"type":52,"value":3750},{"type":46,"tag":2928,"props":3793,"children":3794},{},[3795],{"type":52,"value":3796},"Purchase token (USDC, etc.) or address(0) for ETH",{"type":46,"tag":2906,"props":3798,"children":3799},{},[3800,3808,3812],{"type":46,"tag":2928,"props":3801,"children":3802},{},[3803],{"type":46,"tag":76,"props":3804,"children":3806},{"className":3805},[],[3807],{"type":52,"value":755},{"type":46,"tag":2928,"props":3809,"children":3810},{},[3811],{"type":52,"value":3750},{"type":46,"tag":2928,"props":3813,"children":3814},{},[3815],{"type":52,"value":3816},"Where unsold tokens go",{"type":46,"tag":2906,"props":3818,"children":3819},{},[3820,3828,3832],{"type":46,"tag":2928,"props":3821,"children":3822},{},[3823],{"type":46,"tag":76,"props":3824,"children":3826},{"className":3825},[],[3827],{"type":52,"value":790},{"type":46,"tag":2928,"props":3829,"children":3830},{},[3831],{"type":52,"value":3750},{"type":46,"tag":2928,"props":3833,"children":3834},{},[3835],{"type":52,"value":3836},"Where raised funds go",{"type":46,"tag":208,"props":3838,"children":3840},{"id":3839},"block-configuration",[3841],{"type":52,"value":3842},"Block Configuration",{"type":46,"tag":2898,"props":3844,"children":3845},{},[3846,3869],{"type":46,"tag":2902,"props":3847,"children":3848},{},[3849],{"type":46,"tag":2906,"props":3850,"children":3851},{},[3852,3856,3860,3864],{"type":46,"tag":2910,"props":3853,"children":3854},{},[3855],{"type":52,"value":3721},{"type":46,"tag":2910,"props":3857,"children":3858},{},[3859],{"type":52,"value":3726},{"type":46,"tag":2910,"props":3861,"children":3862},{},[3863],{"type":52,"value":3731},{"type":46,"tag":2910,"props":3865,"children":3866},{},[3867],{"type":52,"value":3868},"Constraint",{"type":46,"tag":2921,"props":3870,"children":3871},{},[3872,3897,3922],{"type":46,"tag":2906,"props":3873,"children":3874},{},[3875,3883,3887,3892],{"type":46,"tag":2928,"props":3876,"children":3877},{},[3878],{"type":46,"tag":76,"props":3879,"children":3881},{"className":3880},[],[3882],{"type":52,"value":826},{"type":46,"tag":2928,"props":3884,"children":3885},{},[3886],{"type":52,"value":3771},{"type":46,"tag":2928,"props":3888,"children":3889},{},[3890],{"type":52,"value":3891},"When auction starts",{"type":46,"tag":2928,"props":3893,"children":3894},{},[3895],{"type":52,"value":3896},"startBlock \u003C endBlock",{"type":46,"tag":2906,"props":3898,"children":3899},{},[3900,3908,3912,3917],{"type":46,"tag":2928,"props":3901,"children":3902},{},[3903],{"type":46,"tag":76,"props":3904,"children":3906},{"className":3905},[],[3907],{"type":52,"value":1467},{"type":46,"tag":2928,"props":3909,"children":3910},{},[3911],{"type":52,"value":3771},{"type":46,"tag":2928,"props":3913,"children":3914},{},[3915],{"type":52,"value":3916},"When auction ends",{"type":46,"tag":2928,"props":3918,"children":3919},{},[3920],{"type":52,"value":3921},"endBlock \u003C= claimBlock",{"type":46,"tag":2906,"props":3923,"children":3924},{},[3925,3933,3937,3942],{"type":46,"tag":2928,"props":3926,"children":3927},{},[3928],{"type":46,"tag":76,"props":3929,"children":3931},{"className":3930},[],[3932],{"type":52,"value":1496},{"type":46,"tag":2928,"props":3934,"children":3935},{},[3936],{"type":52,"value":3771},{"type":46,"tag":2928,"props":3938,"children":3939},{},[3940],{"type":52,"value":3941},"When tokens can be claimed",{"type":46,"tag":2928,"props":3943,"children":3944},{},[3945],{"type":52,"value":3946},"claimBlock >= endBlock",{"type":46,"tag":55,"props":3948,"children":3949},{},[3950],{"type":46,"tag":68,"props":3951,"children":3952},{},[3953],{"type":52,"value":3954},"Block times by network:",{"type":46,"tag":143,"props":3956,"children":3957},{},[3958,3963],{"type":46,"tag":122,"props":3959,"children":3960},{},[3961],{"type":52,"value":3962},"Mainnet, Sepolia: 12s per block",{"type":46,"tag":122,"props":3964,"children":3965},{},[3966],{"type":52,"value":3967},"Unichain, Base, Arbitrum: 2s per block",{"type":46,"tag":208,"props":3969,"children":3971},{"id":3970},"pricing-parameters",[3972],{"type":52,"value":3973},"Pricing Parameters",{"type":46,"tag":2898,"props":3975,"children":3976},{},[3977,3995],{"type":46,"tag":2902,"props":3978,"children":3979},{},[3980],{"type":46,"tag":2906,"props":3981,"children":3982},{},[3983,3987,3991],{"type":46,"tag":2910,"props":3984,"children":3985},{},[3986],{"type":52,"value":3721},{"type":46,"tag":2910,"props":3988,"children":3989},{},[3990],{"type":52,"value":3726},{"type":46,"tag":2910,"props":3992,"children":3993},{},[3994],{"type":52,"value":3731},{"type":46,"tag":2921,"props":3996,"children":3997},{},[3998,4018,4038,4058],{"type":46,"tag":2906,"props":3999,"children":4000},{},[4001,4009,4013],{"type":46,"tag":2928,"props":4002,"children":4003},{},[4004],{"type":46,"tag":76,"props":4005,"children":4007},{"className":4006},[],[4008],{"type":52,"value":592},{"type":46,"tag":2928,"props":4010,"children":4011},{},[4012],{"type":52,"value":3771},{"type":46,"tag":2928,"props":4014,"children":4015},{},[4016],{"type":52,"value":4017},"Minimum price (Q96 format)",{"type":46,"tag":2906,"props":4019,"children":4020},{},[4021,4029,4033],{"type":46,"tag":2928,"props":4022,"children":4023},{},[4024],{"type":46,"tag":76,"props":4025,"children":4027},{"className":4026},[],[4028],{"type":52,"value":695},{"type":46,"tag":2928,"props":4030,"children":4031},{},[4032],{"type":52,"value":3771},{"type":46,"tag":2928,"props":4034,"children":4035},{},[4036],{"type":52,"value":4037},"Price tick increment (Q96 format)",{"type":46,"tag":2906,"props":4039,"children":4040},{},[4041,4049,4053],{"type":46,"tag":2928,"props":4042,"children":4043},{},[4044],{"type":46,"tag":76,"props":4045,"children":4047},{"className":4046},[],[4048],{"type":52,"value":928},{"type":46,"tag":2928,"props":4050,"children":4051},{},[4052],{"type":52,"value":3750},{"type":46,"tag":2928,"props":4054,"children":4055},{},[4056],{"type":52,"value":4057},"Optional validation contract (use 0x0 if none)",{"type":46,"tag":2906,"props":4059,"children":4060},{},[4061,4069,4073],{"type":46,"tag":2928,"props":4062,"children":4063},{},[4064],{"type":46,"tag":76,"props":4065,"children":4067},{"className":4066},[],[4068],{"type":52,"value":874},{"type":46,"tag":2928,"props":4070,"children":4071},{},[4072],{"type":52,"value":3771},{"type":46,"tag":2928,"props":4074,"children":4075},{},[4076],{"type":52,"value":4077},"Minimum funds needed (0 if no minimum)",{"type":46,"tag":208,"props":4079,"children":4081},{"id":4080},"supply-schedule",[4082],{"type":52,"value":4083},"Supply Schedule",{"type":46,"tag":2898,"props":4085,"children":4086},{},[4087,4105],{"type":46,"tag":2902,"props":4088,"children":4089},{},[4090],{"type":46,"tag":2906,"props":4091,"children":4092},{},[4093,4097,4101],{"type":46,"tag":2910,"props":4094,"children":4095},{},[4096],{"type":52,"value":3721},{"type":46,"tag":2910,"props":4098,"children":4099},{},[4100],{"type":52,"value":3726},{"type":46,"tag":2910,"props":4102,"children":4103},{},[4104],{"type":52,"value":3731},{"type":46,"tag":2921,"props":4106,"children":4107},{},[4108],{"type":46,"tag":2906,"props":4109,"children":4110},{},[4111,4119,4124],{"type":46,"tag":2928,"props":4112,"children":4113},{},[4114],{"type":46,"tag":76,"props":4115,"children":4117},{"className":4116},[],[4118],{"type":52,"value":1206},{"type":46,"tag":2928,"props":4120,"children":4121},{},[4122],{"type":52,"value":4123},"array",{"type":46,"tag":2928,"props":4125,"children":4126},{},[4127],{"type":52,"value":4128},"Array of {mps, blockDelta} objects",{"type":46,"tag":246,"props":4130,"children":4131},{},[],{"type":46,"tag":92,"props":4133,"children":4135},{"id":4134},"price-calculations-q96-format",[4136],{"type":52,"value":4137},"Price Calculations (Q96 Format)",{"type":46,"tag":55,"props":4139,"children":4140},{},[4141,4143,4149],{"type":52,"value":4142},"CCA uses Q96 fixed-point format for precise pricing. The base value ",{"type":46,"tag":76,"props":4144,"children":4146},{"className":4145},[],[4147],{"type":52,"value":4148},"2^96",{"type":52,"value":4150}," (79228162514264337593543950336) represents a 1:1 price ratio.",{"type":46,"tag":111,"props":4152,"children":4154},{"id":4153},"floor-price-calculation",[4155],{"type":52,"value":4156},"Floor Price Calculation",{"type":46,"tag":55,"props":4158,"children":4159},{},[4160],{"type":46,"tag":68,"props":4161,"children":4162},{},[4163],{"type":52,"value":4164},"CRITICAL: Account for decimal differences between token and currency.",{"type":46,"tag":958,"props":4166,"children":4168},{"className":2799,"code":4167,"language":2801,"meta":963,"style":963},"# Base value for 1:1 ratio\nQ96 = 79228162514264337593543950336\n\n# Formula: Q96 * (human price ratio) \u002F 10^(token_decimals - currency_decimals)\n\n# Example 1: USDC (6 decimals) per 18-decimal token at $0.10 ratio\ntoken_decimals = 18\ncurrency_decimals = 6  # USDC has 6 decimals\ndecimal_adjustment = 10 ** (token_decimals - currency_decimals)  # 10^12\n\nfloorPrice = Q96 * 0.1 \u002F decimal_adjustment\n# Result: 7922816251426433759354395 (approximately)\n\n# Example 2: Native ETH (18 decimals) per 18-decimal token at 0.1 ratio\ntoken_decimals = 18\ncurrency_decimals = 18  # Native ETH has 18 decimals\ndecimal_adjustment = 10 ** (18 - 18)  # 10^0 = 1\n\nfloorPrice = Q96 * 0.1 \u002F 1\n# Result: 7922816251426433759354395034\n",[4169],{"type":46,"tag":76,"props":4170,"children":4171},{"__ignoreMap":963},[4172,4180,4187,4194,4202,4209,4217,4225,4233,4241,4248,4256,4264,4271,4279,4286,4294,4302,4309,4317],{"type":46,"tag":405,"props":4173,"children":4174},{"class":970,"line":971},[4175],{"type":46,"tag":405,"props":4176,"children":4177},{},[4178],{"type":52,"value":4179},"# Base value for 1:1 ratio\n",{"type":46,"tag":405,"props":4181,"children":4182},{"class":970,"line":981},[4183],{"type":46,"tag":405,"props":4184,"children":4185},{},[4186],{"type":52,"value":2821},{"type":46,"tag":405,"props":4188,"children":4189},{"class":970,"line":997},[4190],{"type":46,"tag":405,"props":4191,"children":4192},{"emptyLinePlaceholder":1001},[4193],{"type":52,"value":1004},{"type":46,"tag":405,"props":4195,"children":4196},{"class":970,"line":1007},[4197],{"type":46,"tag":405,"props":4198,"children":4199},{},[4200],{"type":52,"value":4201},"# Formula: Q96 * (human price ratio) \u002F 10^(token_decimals - currency_decimals)\n",{"type":46,"tag":405,"props":4203,"children":4204},{"class":970,"line":1016},[4205],{"type":46,"tag":405,"props":4206,"children":4207},{"emptyLinePlaceholder":1001},[4208],{"type":52,"value":1004},{"type":46,"tag":405,"props":4210,"children":4211},{"class":970,"line":1036},[4212],{"type":46,"tag":405,"props":4213,"children":4214},{},[4215],{"type":52,"value":4216},"# Example 1: USDC (6 decimals) per 18-decimal token at $0.10 ratio\n",{"type":46,"tag":405,"props":4218,"children":4219},{"class":970,"line":1045},[4220],{"type":46,"tag":405,"props":4221,"children":4222},{},[4223],{"type":52,"value":4224},"token_decimals = 18\n",{"type":46,"tag":405,"props":4226,"children":4227},{"class":970,"line":1053},[4228],{"type":46,"tag":405,"props":4229,"children":4230},{},[4231],{"type":52,"value":4232},"currency_decimals = 6  # USDC has 6 decimals\n",{"type":46,"tag":405,"props":4234,"children":4235},{"class":970,"line":1062},[4236],{"type":46,"tag":405,"props":4237,"children":4238},{},[4239],{"type":52,"value":4240},"decimal_adjustment = 10 ** (token_decimals - currency_decimals)  # 10^12\n",{"type":46,"tag":405,"props":4242,"children":4243},{"class":970,"line":1486},[4244],{"type":46,"tag":405,"props":4245,"children":4246},{"emptyLinePlaceholder":1001},[4247],{"type":52,"value":1004},{"type":46,"tag":405,"props":4249,"children":4250},{"class":970,"line":1515},[4251],{"type":46,"tag":405,"props":4252,"children":4253},{},[4254],{"type":52,"value":4255},"floorPrice = Q96 * 0.1 \u002F decimal_adjustment\n",{"type":46,"tag":405,"props":4257,"children":4258},{"class":970,"line":1543},[4259],{"type":46,"tag":405,"props":4260,"children":4261},{},[4262],{"type":52,"value":4263},"# Result: 7922816251426433759354395 (approximately)\n",{"type":46,"tag":405,"props":4265,"children":4266},{"class":970,"line":1579},[4267],{"type":46,"tag":405,"props":4268,"children":4269},{"emptyLinePlaceholder":1001},[4270],{"type":52,"value":1004},{"type":46,"tag":405,"props":4272,"children":4273},{"class":970,"line":1607},[4274],{"type":46,"tag":405,"props":4275,"children":4276},{},[4277],{"type":52,"value":4278},"# Example 2: Native ETH (18 decimals) per 18-decimal token at 0.1 ratio\n",{"type":46,"tag":405,"props":4280,"children":4281},{"class":970,"line":1635},[4282],{"type":46,"tag":405,"props":4283,"children":4284},{},[4285],{"type":52,"value":4224},{"type":46,"tag":405,"props":4287,"children":4288},{"class":970,"line":1669},[4289],{"type":46,"tag":405,"props":4290,"children":4291},{},[4292],{"type":52,"value":4293},"currency_decimals = 18  # Native ETH has 18 decimals\n",{"type":46,"tag":405,"props":4295,"children":4296},{"class":970,"line":1678},[4297],{"type":46,"tag":405,"props":4298,"children":4299},{},[4300],{"type":52,"value":4301},"decimal_adjustment = 10 ** (18 - 18)  # 10^0 = 1\n",{"type":46,"tag":405,"props":4303,"children":4304},{"class":970,"line":2305},[4305],{"type":46,"tag":405,"props":4306,"children":4307},{"emptyLinePlaceholder":1001},[4308],{"type":52,"value":1004},{"type":46,"tag":405,"props":4310,"children":4311},{"class":970,"line":2333},[4312],{"type":46,"tag":405,"props":4313,"children":4314},{},[4315],{"type":52,"value":4316},"floorPrice = Q96 * 0.1 \u002F 1\n",{"type":46,"tag":405,"props":4318,"children":4319},{"class":970,"line":2341},[4320],{"type":46,"tag":405,"props":4321,"children":4322},{},[4323],{"type":52,"value":4324},"# Result: 7922816251426433759354395034\n",{"type":46,"tag":55,"props":4326,"children":4327},{},[4328,4333],{"type":46,"tag":68,"props":4329,"children":4330},{},[4331],{"type":52,"value":4332},"Key Point:",{"type":52,"value":4334}," USDC has 6 decimals on all networks, so you must divide by 10^12 when using USDC with 18-decimal tokens.",{"type":46,"tag":111,"props":4336,"children":4338},{"id":4337},"tick-spacing-calculation",[4339],{"type":52,"value":4340},"Tick Spacing Calculation",{"type":46,"tag":55,"props":4342,"children":4343},{},[4344,4346,4351],{"type":52,"value":4345},"Tick spacing governs where bids can be placed. Choose ",{"type":46,"tag":68,"props":4347,"children":4348},{},[4349],{"type":52,"value":4350},"AT LEAST 1 basis point of the floor price",{"type":52,"value":4352},". 1% or 10% is also reasonable.",{"type":46,"tag":958,"props":4354,"children":4356},{"className":2799,"code":4355,"language":2801,"meta":963,"style":963},"# Example: 1% of floor price\ntickSpacing = int(floorPrice * 0.01)\n\n# For floorPrice = 7922816251426433759354395000\n# Result: 79228162514264337593543950\n",[4357],{"type":46,"tag":76,"props":4358,"children":4359},{"__ignoreMap":963},[4360,4368,4376,4383,4391],{"type":46,"tag":405,"props":4361,"children":4362},{"class":970,"line":971},[4363],{"type":46,"tag":405,"props":4364,"children":4365},{},[4366],{"type":52,"value":4367},"# Example: 1% of floor price\n",{"type":46,"tag":405,"props":4369,"children":4370},{"class":970,"line":981},[4371],{"type":46,"tag":405,"props":4372,"children":4373},{},[4374],{"type":52,"value":4375},"tickSpacing = int(floorPrice * 0.01)\n",{"type":46,"tag":405,"props":4377,"children":4378},{"class":970,"line":997},[4379],{"type":46,"tag":405,"props":4380,"children":4381},{"emptyLinePlaceholder":1001},[4382],{"type":52,"value":1004},{"type":46,"tag":405,"props":4384,"children":4385},{"class":970,"line":1007},[4386],{"type":46,"tag":405,"props":4387,"children":4388},{},[4389],{"type":52,"value":4390},"# For floorPrice = 7922816251426433759354395000\n",{"type":46,"tag":405,"props":4392,"children":4393},{"class":970,"line":1016},[4394],{"type":46,"tag":405,"props":4395,"children":4396},{},[4397],{"type":52,"value":4398},"# Result: 79228162514264337593543950\n",{"type":46,"tag":111,"props":4400,"children":4402},{"id":4401},"rounding-floor-price-critical",[4403],{"type":52,"value":4404},"Rounding Floor Price (CRITICAL)",{"type":46,"tag":55,"props":4406,"children":4407},{},[4408,4413],{"type":46,"tag":68,"props":4409,"children":4410},{},[4411],{"type":52,"value":4412},"Floor price MUST be evenly divisible by tick spacing.",{"type":52,"value":4414}," Round DOWN to ensure exact divisibility:",{"type":46,"tag":958,"props":4416,"children":4418},{"className":2799,"code":4417,"language":2801,"meta":963,"style":963},"# Calculate tick spacing first\ntickSpacing = int(floorPrice * 0.01)  # 1% of floor price\n\n# Round floor price DOWN to be evenly divisible\nroundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing\n\n# VERIFY divisibility (must be True)\nassert roundedFloorPrice % tickSpacing == 0, \"Floor price must be divisible by tick spacing!\"\n",[4419],{"type":46,"tag":76,"props":4420,"children":4421},{"__ignoreMap":963},[4422,4430,4438,4445,4453,4461,4468,4476],{"type":46,"tag":405,"props":4423,"children":4424},{"class":970,"line":971},[4425],{"type":46,"tag":405,"props":4426,"children":4427},{},[4428],{"type":52,"value":4429},"# Calculate tick spacing first\n",{"type":46,"tag":405,"props":4431,"children":4432},{"class":970,"line":981},[4433],{"type":46,"tag":405,"props":4434,"children":4435},{},[4436],{"type":52,"value":4437},"tickSpacing = int(floorPrice * 0.01)  # 1% of floor price\n",{"type":46,"tag":405,"props":4439,"children":4440},{"class":970,"line":997},[4441],{"type":46,"tag":405,"props":4442,"children":4443},{"emptyLinePlaceholder":1001},[4444],{"type":52,"value":1004},{"type":46,"tag":405,"props":4446,"children":4447},{"class":970,"line":1007},[4448],{"type":46,"tag":405,"props":4449,"children":4450},{},[4451],{"type":52,"value":4452},"# Round floor price DOWN to be evenly divisible\n",{"type":46,"tag":405,"props":4454,"children":4455},{"class":970,"line":1016},[4456],{"type":46,"tag":405,"props":4457,"children":4458},{},[4459],{"type":52,"value":4460},"roundedFloorPrice = (floorPrice \u002F\u002F tickSpacing) * tickSpacing\n",{"type":46,"tag":405,"props":4462,"children":4463},{"class":970,"line":1036},[4464],{"type":46,"tag":405,"props":4465,"children":4466},{"emptyLinePlaceholder":1001},[4467],{"type":52,"value":1004},{"type":46,"tag":405,"props":4469,"children":4470},{"class":970,"line":1045},[4471],{"type":46,"tag":405,"props":4472,"children":4473},{},[4474],{"type":52,"value":4475},"# VERIFY divisibility (must be True)\n",{"type":46,"tag":405,"props":4477,"children":4478},{"class":970,"line":1053},[4479],{"type":46,"tag":405,"props":4480,"children":4481},{},[4482],{"type":52,"value":4483},"assert roundedFloorPrice % tickSpacing == 0, \"Floor price must be divisible by tick spacing!\"\n",{"type":46,"tag":55,"props":4485,"children":4486},{},[4487],{"type":46,"tag":68,"props":4488,"children":4489},{},[4490],{"type":52,"value":4491},"Example:",{"type":46,"tag":958,"props":4493,"children":4495},{"className":2799,"code":4494,"language":2801,"meta":963,"style":963},"Q96 = 79228162514264337593543950336\nraw_floor_price = int(Q96 * 0.0001)  # 0.0001 ETH per token\n# Result: 7922816251426434139029504\n\ntick_spacing = int(raw_floor_price * 0.01)  # 1%\n# Result: 79228162514264350785536\n\nrounded_floor_price = (raw_floor_price \u002F\u002F tick_spacing) * tick_spacing\n# Result: 7843588088912170727768064\n\n# Verify: 7843588088912170727768064 \u002F 79228162514264350785536 = 99 (exact)\n# Remainder: 0 ✓\n",[4496],{"type":46,"tag":76,"props":4497,"children":4498},{"__ignoreMap":963},[4499,4506,4514,4522,4529,4537,4545,4552,4560,4568,4575,4583],{"type":46,"tag":405,"props":4500,"children":4501},{"class":970,"line":971},[4502],{"type":46,"tag":405,"props":4503,"children":4504},{},[4505],{"type":52,"value":2821},{"type":46,"tag":405,"props":4507,"children":4508},{"class":970,"line":981},[4509],{"type":46,"tag":405,"props":4510,"children":4511},{},[4512],{"type":52,"value":4513},"raw_floor_price = int(Q96 * 0.0001)  # 0.0001 ETH per token\n",{"type":46,"tag":405,"props":4515,"children":4516},{"class":970,"line":997},[4517],{"type":46,"tag":405,"props":4518,"children":4519},{},[4520],{"type":52,"value":4521},"# Result: 7922816251426434139029504\n",{"type":46,"tag":405,"props":4523,"children":4524},{"class":970,"line":1007},[4525],{"type":46,"tag":405,"props":4526,"children":4527},{"emptyLinePlaceholder":1001},[4528],{"type":52,"value":1004},{"type":46,"tag":405,"props":4530,"children":4531},{"class":970,"line":1016},[4532],{"type":46,"tag":405,"props":4533,"children":4534},{},[4535],{"type":52,"value":4536},"tick_spacing = int(raw_floor_price * 0.01)  # 1%\n",{"type":46,"tag":405,"props":4538,"children":4539},{"class":970,"line":1036},[4540],{"type":46,"tag":405,"props":4541,"children":4542},{},[4543],{"type":52,"value":4544},"# Result: 79228162514264350785536\n",{"type":46,"tag":405,"props":4546,"children":4547},{"class":970,"line":1045},[4548],{"type":46,"tag":405,"props":4549,"children":4550},{"emptyLinePlaceholder":1001},[4551],{"type":52,"value":1004},{"type":46,"tag":405,"props":4553,"children":4554},{"class":970,"line":1053},[4555],{"type":46,"tag":405,"props":4556,"children":4557},{},[4558],{"type":52,"value":4559},"rounded_floor_price = (raw_floor_price \u002F\u002F tick_spacing) * tick_spacing\n",{"type":46,"tag":405,"props":4561,"children":4562},{"class":970,"line":1062},[4563],{"type":46,"tag":405,"props":4564,"children":4565},{},[4566],{"type":52,"value":4567},"# Result: 7843588088912170727768064\n",{"type":46,"tag":405,"props":4569,"children":4570},{"class":970,"line":1486},[4571],{"type":46,"tag":405,"props":4572,"children":4573},{"emptyLinePlaceholder":1001},[4574],{"type":52,"value":1004},{"type":46,"tag":405,"props":4576,"children":4577},{"class":970,"line":1515},[4578],{"type":46,"tag":405,"props":4579,"children":4580},{},[4581],{"type":52,"value":4582},"# Verify: 7843588088912170727768064 \u002F 79228162514264350785536 = 99 (exact)\n",{"type":46,"tag":405,"props":4584,"children":4585},{"class":970,"line":1543},[4586],{"type":46,"tag":405,"props":4587,"children":4588},{},[4589],{"type":52,"value":4590},"# Remainder: 0 ✓\n",{"type":46,"tag":55,"props":4592,"children":4593},{},[4594,4599],{"type":46,"tag":68,"props":4595,"children":4596},{},[4597],{"type":52,"value":4598},"Warning",{"type":52,"value":4600},": Setting too small of a tick spacing will make the auction extremely gas inefficient and can result in DoS attacks.",{"type":46,"tag":246,"props":4602,"children":4603},{},[],{"type":46,"tag":92,"props":4605,"children":4607},{"id":4606},"supply-schedule-configuration",[4608],{"type":52,"value":2950},{"type":46,"tag":111,"props":4610,"children":4612},{"id":4611},"understanding-mps-milli-basis-points",[4613],{"type":52,"value":4614},"Understanding MPS (Milli-Basis Points)",{"type":46,"tag":55,"props":4616,"children":4617},{},[4618,4620,4625],{"type":52,"value":4619},"Supply schedules use ",{"type":46,"tag":68,"props":4621,"children":4622},{},[4623],{"type":52,"value":4624},"MPS = 1e7",{"type":52,"value":4626}," (10 million), where each unit represents one thousandth of a basis point.",{"type":46,"tag":55,"props":4628,"children":4629},{},[4630],{"type":52,"value":4631},"The supply schedule defines the token issuance rate over time. Each step contains:",{"type":46,"tag":143,"props":4633,"children":4634},{},[4635,4645],{"type":46,"tag":122,"props":4636,"children":4637},{},[4638,4643],{"type":46,"tag":76,"props":4639,"children":4641},{"className":4640},[],[4642],{"type":52,"value":3571},{"type":52,"value":4644},": Tokens released per block (in mps units)",{"type":46,"tag":122,"props":4646,"children":4647},{},[4648,4653],{"type":46,"tag":76,"props":4649,"children":4651},{"className":4650},[],[4652],{"type":52,"value":3598},{"type":52,"value":4654},": Number of blocks this rate applies",{"type":46,"tag":111,"props":4656,"children":4658},{"id":4657},"standard-schedule-generator",[4659],{"type":52,"value":4660},"Standard Schedule Generator",{"type":46,"tag":55,"props":4662,"children":4663},{},[4664,4666,4671],{"type":52,"value":4665},"The plugin includes an MCP server that generates supply schedules using a ",{"type":46,"tag":68,"props":4667,"children":4668},{},[4669],{"type":52,"value":4670},"normalized convex curve",{"type":52,"value":4672}," with the following properties:",{"type":46,"tag":143,"props":4674,"children":4675},{},[4676,4686,4696,4706,4716],{"type":46,"tag":122,"props":4677,"children":4678},{},[4679,4684],{"type":46,"tag":68,"props":4680,"children":4681},{},[4682],{"type":52,"value":4683},"12 steps",{"type":52,"value":4685}," (default, configurable) for gradual release",{"type":46,"tag":122,"props":4687,"children":4688},{},[4689,4694],{"type":46,"tag":68,"props":4690,"children":4691},{},[4692],{"type":52,"value":4693},"Equal token amounts",{"type":52,"value":4695}," per step (5.8333% for 70% gradual release)",{"type":46,"tag":122,"props":4697,"children":4698},{},[4699,4704],{"type":46,"tag":68,"props":4700,"children":4701},{},[4702],{"type":52,"value":4703},"Decreasing block durations",{"type":52,"value":4705}," (convex curve property)",{"type":46,"tag":122,"props":4707,"children":4708},{},[4709,4714],{"type":46,"tag":68,"props":4710,"children":4711},{},[4712],{"type":52,"value":4713},"Large final block",{"type":52,"value":4715}," receives remaining tokens (~30%, configurable 20-40%)",{"type":46,"tag":122,"props":4717,"children":4718},{},[4719,4724],{"type":46,"tag":68,"props":4720,"children":4721},{},[4722],{"type":52,"value":4723},"Total",{"type":52,"value":4725},": Always exactly 10,000,000 MPS",{"type":46,"tag":55,"props":4727,"children":4728},{},[4729,4731,4737],{"type":52,"value":4730},"Use the MCP tool ",{"type":46,"tag":76,"props":4732,"children":4734},{"className":4733},[],[4735],{"type":52,"value":4736},"generate_supply_schedule",{"type":52,"value":4738}," to generate this standard distribution:",{"type":46,"tag":55,"props":4740,"children":4741},{},[4742],{"type":46,"tag":68,"props":4743,"children":4744},{},[4745],{"type":52,"value":4746},"MCP Tool Call:",{"type":46,"tag":958,"props":4748,"children":4749},{"className":1089,"code":1090,"language":1091,"meta":963,"style":963},[4750],{"type":46,"tag":76,"props":4751,"children":4752},{"__ignoreMap":963},[4753,4760,4787,4810],{"type":46,"tag":405,"props":4754,"children":4755},{"class":970,"line":971},[4756],{"type":46,"tag":405,"props":4757,"children":4758},{"style":1101},[4759],{"type":52,"value":1104},{"type":46,"tag":405,"props":4761,"children":4762},{"class":970,"line":981},[4763,4767,4771,4775,4779,4783],{"type":46,"tag":405,"props":4764,"children":4765},{"style":1101},[4766],{"type":52,"value":1112},{"type":46,"tag":405,"props":4768,"children":4769},{"style":1115},[4770],{"type":52,"value":1118},{"type":46,"tag":405,"props":4772,"children":4773},{"style":1101},[4774],{"type":52,"value":1123},{"type":46,"tag":405,"props":4776,"children":4777},{"style":1101},[4778],{"type":52,"value":1128},{"type":46,"tag":405,"props":4780,"children":4781},{"style":1131},[4782],{"type":52,"value":1134},{"type":46,"tag":405,"props":4784,"children":4785},{"style":1101},[4786],{"type":52,"value":1139},{"type":46,"tag":405,"props":4788,"children":4789},{"class":970,"line":997},[4790,4794,4798,4802,4806],{"type":46,"tag":405,"props":4791,"children":4792},{"style":1101},[4793],{"type":52,"value":1112},{"type":46,"tag":405,"props":4795,"children":4796},{"style":1115},[4797],{"type":52,"value":1151},{"type":46,"tag":405,"props":4799,"children":4800},{"style":1101},[4801],{"type":52,"value":1123},{"type":46,"tag":405,"props":4803,"children":4804},{"style":1101},[4805],{"type":52,"value":1128},{"type":46,"tag":405,"props":4807,"children":4808},{"style":1131},[4809],{"type":52,"value":1164},{"type":46,"tag":405,"props":4811,"children":4812},{"class":970,"line":1007},[4813],{"type":46,"tag":405,"props":4814,"children":4815},{"style":1101},[4816],{"type":52,"value":1172},{"type":46,"tag":55,"props":4818,"children":4819},{},[4820],{"type":52,"value":4821},"The algorithm automatically calculates:",{"type":46,"tag":118,"props":4823,"children":4824},{},[4825,4830,4835,4840],{"type":46,"tag":122,"props":4826,"children":4827},{},[4828],{"type":52,"value":4829},"Equal token amounts per step (e.g., 5.8333% for 12 steps with 70% gradual)",{"type":46,"tag":122,"props":4831,"children":4832},{},[4833],{"type":52,"value":4834},"Time boundaries from normalized curve C(t) = t^α (default α = 1.2)",{"type":46,"tag":122,"props":4836,"children":4837},{},[4838],{"type":52,"value":4839},"Block durations that DECREASE over time (convex curve property)",{"type":46,"tag":122,"props":4841,"children":4842},{},[4843],{"type":52,"value":4844},"Final block adjustment to hit exactly 10,000,000 MPS total",{"type":46,"tag":111,"props":4846,"children":4848},{"id":4847},"example-2-day-auction-on-base",[4849],{"type":52,"value":4850},"Example: 2-day auction on Base",{"type":46,"tag":55,"props":4852,"children":4853},{},[4854],{"type":52,"value":4855},"Base uses 2s blocks, so 2 days = 86400 blocks.",{"type":46,"tag":55,"props":4857,"children":4858},{},[4859,4861,4866],{"type":52,"value":4860},"Call ",{"type":46,"tag":76,"props":4862,"children":4864},{"className":4863},[],[4865],{"type":52,"value":4736},{"type":52,"value":4867}," with:",{"type":46,"tag":958,"props":4869,"children":4870},{"className":1089,"code":1090,"language":1091,"meta":963,"style":963},[4871],{"type":46,"tag":76,"props":4872,"children":4873},{"__ignoreMap":963},[4874,4881,4908,4931],{"type":46,"tag":405,"props":4875,"children":4876},{"class":970,"line":971},[4877],{"type":46,"tag":405,"props":4878,"children":4879},{"style":1101},[4880],{"type":52,"value":1104},{"type":46,"tag":405,"props":4882,"children":4883},{"class":970,"line":981},[4884,4888,4892,4896,4900,4904],{"type":46,"tag":405,"props":4885,"children":4886},{"style":1101},[4887],{"type":52,"value":1112},{"type":46,"tag":405,"props":4889,"children":4890},{"style":1115},[4891],{"type":52,"value":1118},{"type":46,"tag":405,"props":4893,"children":4894},{"style":1101},[4895],{"type":52,"value":1123},{"type":46,"tag":405,"props":4897,"children":4898},{"style":1101},[4899],{"type":52,"value":1128},{"type":46,"tag":405,"props":4901,"children":4902},{"style":1131},[4903],{"type":52,"value":1134},{"type":46,"tag":405,"props":4905,"children":4906},{"style":1101},[4907],{"type":52,"value":1139},{"type":46,"tag":405,"props":4909,"children":4910},{"class":970,"line":997},[4911,4915,4919,4923,4927],{"type":46,"tag":405,"props":4912,"children":4913},{"style":1101},[4914],{"type":52,"value":1112},{"type":46,"tag":405,"props":4916,"children":4917},{"style":1115},[4918],{"type":52,"value":1151},{"type":46,"tag":405,"props":4920,"children":4921},{"style":1101},[4922],{"type":52,"value":1123},{"type":46,"tag":405,"props":4924,"children":4925},{"style":1101},[4926],{"type":52,"value":1128},{"type":46,"tag":405,"props":4928,"children":4929},{"style":1131},[4930],{"type":52,"value":1164},{"type":46,"tag":405,"props":4932,"children":4933},{"class":970,"line":1007},[4934],{"type":46,"tag":405,"props":4935,"children":4936},{"style":1101},[4937],{"type":52,"value":1172},{"type":46,"tag":55,"props":4939,"children":4940},{},[4941],{"type":46,"tag":68,"props":4942,"children":4943},{},[4944],{"type":52,"value":4945},"Output (normalized convex distribution):",{"type":46,"tag":958,"props":4947,"children":4949},{"className":1089,"code":4948,"language":1091,"meta":963,"style":963},"{\n  \"schedule\": [\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 },\n    { \"mps\": 75, \"blockDelta\": 7803 },\n    { \"mps\": 79, \"blockDelta\": 7373 },\n    { \"mps\": 83, \"blockDelta\": 7068 },\n    { \"mps\": 85, \"blockDelta\": 6835 },\n    { \"mps\": 88, \"blockDelta\": 6647 },\n    { \"mps\": 90, \"blockDelta\": 6490 },\n    { \"mps\": 92, \"blockDelta\": 6356 },\n    { \"mps\": 94, \"blockDelta\": 6238 },\n    { \"mps\": 95, \"blockDelta\": 6136 },\n    { \"mps\": 97, \"blockDelta\": 6043 },\n    { \"mps\": 2988006, \"blockDelta\": 1 }\n  ],\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 0,\n  \"total_phases\": 13,\n  \"summary\": {\n    \"total_mps\": 10000000,\n    \"target_mps\": 10000000,\n    \"final_block_mps\": 2988006,\n    \"final_block_percentage\": 29.88,\n    \"num_steps\": 12,\n    \"alpha\": 1.2,\n    \"main_supply_pct\": 70.0,\n    \"step_tokens_pct\": 5.8333\n  }\n}\n",[4950],{"type":46,"tag":76,"props":4951,"children":4952},{"__ignoreMap":963},[4953,4960,4984,5042,5099,5156,5213,5270,5327,5384,5441,5498,5555,5612,5669,5725,5733,5760,5787,5816,5840,5869,5897,5925,5954,5982,6011,6040,6065,6072],{"type":46,"tag":405,"props":4954,"children":4955},{"class":970,"line":971},[4956],{"type":46,"tag":405,"props":4957,"children":4958},{"style":1101},[4959],{"type":52,"value":1104},{"type":46,"tag":405,"props":4961,"children":4962},{"class":970,"line":981},[4963,4967,4972,4976,4980],{"type":46,"tag":405,"props":4964,"children":4965},{"style":1101},[4966],{"type":52,"value":1112},{"type":46,"tag":405,"props":4968,"children":4969},{"style":1115},[4970],{"type":52,"value":4971},"schedule",{"type":46,"tag":405,"props":4973,"children":4974},{"style":1101},[4975],{"type":52,"value":1123},{"type":46,"tag":405,"props":4977,"children":4978},{"style":1101},[4979],{"type":52,"value":1128},{"type":46,"tag":405,"props":4981,"children":4982},{"style":1101},[4983],{"type":52,"value":3554},{"type":46,"tag":405,"props":4985,"children":4986},{"class":970,"line":997},[4987,4992,4996,5000,5004,5008,5013,5017,5021,5025,5029,5033,5038],{"type":46,"tag":405,"props":4988,"children":4989},{"style":1101},[4990],{"type":52,"value":4991},"    {",{"type":46,"tag":405,"props":4993,"children":4994},{"style":1101},[4995],{"type":52,"value":1281},{"type":46,"tag":405,"props":4997,"children":4998},{"style":1020},[4999],{"type":52,"value":3571},{"type":46,"tag":405,"props":5001,"children":5002},{"style":1101},[5003],{"type":52,"value":1123},{"type":46,"tag":405,"props":5005,"children":5006},{"style":1101},[5007],{"type":52,"value":1128},{"type":46,"tag":405,"props":5009,"children":5010},{"style":1131},[5011],{"type":52,"value":5012}," 54",{"type":46,"tag":405,"props":5014,"children":5015},{"style":1101},[5016],{"type":52,"value":3589},{"type":46,"tag":405,"props":5018,"children":5019},{"style":1101},[5020],{"type":52,"value":1281},{"type":46,"tag":405,"props":5022,"children":5023},{"style":1020},[5024],{"type":52,"value":3598},{"type":46,"tag":405,"props":5026,"children":5027},{"style":1101},[5028],{"type":52,"value":1123},{"type":46,"tag":405,"props":5030,"children":5031},{"style":1101},[5032],{"type":52,"value":1128},{"type":46,"tag":405,"props":5034,"children":5035},{"style":1131},[5036],{"type":52,"value":5037}," 10894",{"type":46,"tag":405,"props":5039,"children":5040},{"style":1101},[5041],{"type":52,"value":3616},{"type":46,"tag":405,"props":5043,"children":5044},{"class":970,"line":1007},[5045,5049,5053,5057,5061,5065,5070,5074,5078,5082,5086,5090,5095],{"type":46,"tag":405,"props":5046,"children":5047},{"style":1101},[5048],{"type":52,"value":4991},{"type":46,"tag":405,"props":5050,"children":5051},{"style":1101},[5052],{"type":52,"value":1281},{"type":46,"tag":405,"props":5054,"children":5055},{"style":1020},[5056],{"type":52,"value":3571},{"type":46,"tag":405,"props":5058,"children":5059},{"style":1101},[5060],{"type":52,"value":1123},{"type":46,"tag":405,"props":5062,"children":5063},{"style":1101},[5064],{"type":52,"value":1128},{"type":46,"tag":405,"props":5066,"children":5067},{"style":1131},[5068],{"type":52,"value":5069}," 68",{"type":46,"tag":405,"props":5071,"children":5072},{"style":1101},[5073],{"type":52,"value":3589},{"type":46,"tag":405,"props":5075,"children":5076},{"style":1101},[5077],{"type":52,"value":1281},{"type":46,"tag":405,"props":5079,"children":5080},{"style":1020},[5081],{"type":52,"value":3598},{"type":46,"tag":405,"props":5083,"children":5084},{"style":1101},[5085],{"type":52,"value":1123},{"type":46,"tag":405,"props":5087,"children":5088},{"style":1101},[5089],{"type":52,"value":1128},{"type":46,"tag":405,"props":5091,"children":5092},{"style":1131},[5093],{"type":52,"value":5094}," 8517",{"type":46,"tag":405,"props":5096,"children":5097},{"style":1101},[5098],{"type":52,"value":3616},{"type":46,"tag":405,"props":5100,"children":5101},{"class":970,"line":1016},[5102,5106,5110,5114,5118,5122,5127,5131,5135,5139,5143,5147,5152],{"type":46,"tag":405,"props":5103,"children":5104},{"style":1101},[5105],{"type":52,"value":4991},{"type":46,"tag":405,"props":5107,"children":5108},{"style":1101},[5109],{"type":52,"value":1281},{"type":46,"tag":405,"props":5111,"children":5112},{"style":1020},[5113],{"type":52,"value":3571},{"type":46,"tag":405,"props":5115,"children":5116},{"style":1101},[5117],{"type":52,"value":1123},{"type":46,"tag":405,"props":5119,"children":5120},{"style":1101},[5121],{"type":52,"value":1128},{"type":46,"tag":405,"props":5123,"children":5124},{"style":1131},[5125],{"type":52,"value":5126}," 75",{"type":46,"tag":405,"props":5128,"children":5129},{"style":1101},[5130],{"type":52,"value":3589},{"type":46,"tag":405,"props":5132,"children":5133},{"style":1101},[5134],{"type":52,"value":1281},{"type":46,"tag":405,"props":5136,"children":5137},{"style":1020},[5138],{"type":52,"value":3598},{"type":46,"tag":405,"props":5140,"children":5141},{"style":1101},[5142],{"type":52,"value":1123},{"type":46,"tag":405,"props":5144,"children":5145},{"style":1101},[5146],{"type":52,"value":1128},{"type":46,"tag":405,"props":5148,"children":5149},{"style":1131},[5150],{"type":52,"value":5151}," 7803",{"type":46,"tag":405,"props":5153,"children":5154},{"style":1101},[5155],{"type":52,"value":3616},{"type":46,"tag":405,"props":5157,"children":5158},{"class":970,"line":1036},[5159,5163,5167,5171,5175,5179,5184,5188,5192,5196,5200,5204,5209],{"type":46,"tag":405,"props":5160,"children":5161},{"style":1101},[5162],{"type":52,"value":4991},{"type":46,"tag":405,"props":5164,"children":5165},{"style":1101},[5166],{"type":52,"value":1281},{"type":46,"tag":405,"props":5168,"children":5169},{"style":1020},[5170],{"type":52,"value":3571},{"type":46,"tag":405,"props":5172,"children":5173},{"style":1101},[5174],{"type":52,"value":1123},{"type":46,"tag":405,"props":5176,"children":5177},{"style":1101},[5178],{"type":52,"value":1128},{"type":46,"tag":405,"props":5180,"children":5181},{"style":1131},[5182],{"type":52,"value":5183}," 79",{"type":46,"tag":405,"props":5185,"children":5186},{"style":1101},[5187],{"type":52,"value":3589},{"type":46,"tag":405,"props":5189,"children":5190},{"style":1101},[5191],{"type":52,"value":1281},{"type":46,"tag":405,"props":5193,"children":5194},{"style":1020},[5195],{"type":52,"value":3598},{"type":46,"tag":405,"props":5197,"children":5198},{"style":1101},[5199],{"type":52,"value":1123},{"type":46,"tag":405,"props":5201,"children":5202},{"style":1101},[5203],{"type":52,"value":1128},{"type":46,"tag":405,"props":5205,"children":5206},{"style":1131},[5207],{"type":52,"value":5208}," 7373",{"type":46,"tag":405,"props":5210,"children":5211},{"style":1101},[5212],{"type":52,"value":3616},{"type":46,"tag":405,"props":5214,"children":5215},{"class":970,"line":1045},[5216,5220,5224,5228,5232,5236,5241,5245,5249,5253,5257,5261,5266],{"type":46,"tag":405,"props":5217,"children":5218},{"style":1101},[5219],{"type":52,"value":4991},{"type":46,"tag":405,"props":5221,"children":5222},{"style":1101},[5223],{"type":52,"value":1281},{"type":46,"tag":405,"props":5225,"children":5226},{"style":1020},[5227],{"type":52,"value":3571},{"type":46,"tag":405,"props":5229,"children":5230},{"style":1101},[5231],{"type":52,"value":1123},{"type":46,"tag":405,"props":5233,"children":5234},{"style":1101},[5235],{"type":52,"value":1128},{"type":46,"tag":405,"props":5237,"children":5238},{"style":1131},[5239],{"type":52,"value":5240}," 83",{"type":46,"tag":405,"props":5242,"children":5243},{"style":1101},[5244],{"type":52,"value":3589},{"type":46,"tag":405,"props":5246,"children":5247},{"style":1101},[5248],{"type":52,"value":1281},{"type":46,"tag":405,"props":5250,"children":5251},{"style":1020},[5252],{"type":52,"value":3598},{"type":46,"tag":405,"props":5254,"children":5255},{"style":1101},[5256],{"type":52,"value":1123},{"type":46,"tag":405,"props":5258,"children":5259},{"style":1101},[5260],{"type":52,"value":1128},{"type":46,"tag":405,"props":5262,"children":5263},{"style":1131},[5264],{"type":52,"value":5265}," 7068",{"type":46,"tag":405,"props":5267,"children":5268},{"style":1101},[5269],{"type":52,"value":3616},{"type":46,"tag":405,"props":5271,"children":5272},{"class":970,"line":1053},[5273,5277,5281,5285,5289,5293,5298,5302,5306,5310,5314,5318,5323],{"type":46,"tag":405,"props":5274,"children":5275},{"style":1101},[5276],{"type":52,"value":4991},{"type":46,"tag":405,"props":5278,"children":5279},{"style":1101},[5280],{"type":52,"value":1281},{"type":46,"tag":405,"props":5282,"children":5283},{"style":1020},[5284],{"type":52,"value":3571},{"type":46,"tag":405,"props":5286,"children":5287},{"style":1101},[5288],{"type":52,"value":1123},{"type":46,"tag":405,"props":5290,"children":5291},{"style":1101},[5292],{"type":52,"value":1128},{"type":46,"tag":405,"props":5294,"children":5295},{"style":1131},[5296],{"type":52,"value":5297}," 85",{"type":46,"tag":405,"props":5299,"children":5300},{"style":1101},[5301],{"type":52,"value":3589},{"type":46,"tag":405,"props":5303,"children":5304},{"style":1101},[5305],{"type":52,"value":1281},{"type":46,"tag":405,"props":5307,"children":5308},{"style":1020},[5309],{"type":52,"value":3598},{"type":46,"tag":405,"props":5311,"children":5312},{"style":1101},[5313],{"type":52,"value":1123},{"type":46,"tag":405,"props":5315,"children":5316},{"style":1101},[5317],{"type":52,"value":1128},{"type":46,"tag":405,"props":5319,"children":5320},{"style":1131},[5321],{"type":52,"value":5322}," 6835",{"type":46,"tag":405,"props":5324,"children":5325},{"style":1101},[5326],{"type":52,"value":3616},{"type":46,"tag":405,"props":5328,"children":5329},{"class":970,"line":1062},[5330,5334,5338,5342,5346,5350,5355,5359,5363,5367,5371,5375,5380],{"type":46,"tag":405,"props":5331,"children":5332},{"style":1101},[5333],{"type":52,"value":4991},{"type":46,"tag":405,"props":5335,"children":5336},{"style":1101},[5337],{"type":52,"value":1281},{"type":46,"tag":405,"props":5339,"children":5340},{"style":1020},[5341],{"type":52,"value":3571},{"type":46,"tag":405,"props":5343,"children":5344},{"style":1101},[5345],{"type":52,"value":1123},{"type":46,"tag":405,"props":5347,"children":5348},{"style":1101},[5349],{"type":52,"value":1128},{"type":46,"tag":405,"props":5351,"children":5352},{"style":1131},[5353],{"type":52,"value":5354}," 88",{"type":46,"tag":405,"props":5356,"children":5357},{"style":1101},[5358],{"type":52,"value":3589},{"type":46,"tag":405,"props":5360,"children":5361},{"style":1101},[5362],{"type":52,"value":1281},{"type":46,"tag":405,"props":5364,"children":5365},{"style":1020},[5366],{"type":52,"value":3598},{"type":46,"tag":405,"props":5368,"children":5369},{"style":1101},[5370],{"type":52,"value":1123},{"type":46,"tag":405,"props":5372,"children":5373},{"style":1101},[5374],{"type":52,"value":1128},{"type":46,"tag":405,"props":5376,"children":5377},{"style":1131},[5378],{"type":52,"value":5379}," 6647",{"type":46,"tag":405,"props":5381,"children":5382},{"style":1101},[5383],{"type":52,"value":3616},{"type":46,"tag":405,"props":5385,"children":5386},{"class":970,"line":1486},[5387,5391,5395,5399,5403,5407,5412,5416,5420,5424,5428,5432,5437],{"type":46,"tag":405,"props":5388,"children":5389},{"style":1101},[5390],{"type":52,"value":4991},{"type":46,"tag":405,"props":5392,"children":5393},{"style":1101},[5394],{"type":52,"value":1281},{"type":46,"tag":405,"props":5396,"children":5397},{"style":1020},[5398],{"type":52,"value":3571},{"type":46,"tag":405,"props":5400,"children":5401},{"style":1101},[5402],{"type":52,"value":1123},{"type":46,"tag":405,"props":5404,"children":5405},{"style":1101},[5406],{"type":52,"value":1128},{"type":46,"tag":405,"props":5408,"children":5409},{"style":1131},[5410],{"type":52,"value":5411}," 90",{"type":46,"tag":405,"props":5413,"children":5414},{"style":1101},[5415],{"type":52,"value":3589},{"type":46,"tag":405,"props":5417,"children":5418},{"style":1101},[5419],{"type":52,"value":1281},{"type":46,"tag":405,"props":5421,"children":5422},{"style":1020},[5423],{"type":52,"value":3598},{"type":46,"tag":405,"props":5425,"children":5426},{"style":1101},[5427],{"type":52,"value":1123},{"type":46,"tag":405,"props":5429,"children":5430},{"style":1101},[5431],{"type":52,"value":1128},{"type":46,"tag":405,"props":5433,"children":5434},{"style":1131},[5435],{"type":52,"value":5436}," 6490",{"type":46,"tag":405,"props":5438,"children":5439},{"style":1101},[5440],{"type":52,"value":3616},{"type":46,"tag":405,"props":5442,"children":5443},{"class":970,"line":1515},[5444,5448,5452,5456,5460,5464,5469,5473,5477,5481,5485,5489,5494],{"type":46,"tag":405,"props":5445,"children":5446},{"style":1101},[5447],{"type":52,"value":4991},{"type":46,"tag":405,"props":5449,"children":5450},{"style":1101},[5451],{"type":52,"value":1281},{"type":46,"tag":405,"props":5453,"children":5454},{"style":1020},[5455],{"type":52,"value":3571},{"type":46,"tag":405,"props":5457,"children":5458},{"style":1101},[5459],{"type":52,"value":1123},{"type":46,"tag":405,"props":5461,"children":5462},{"style":1101},[5463],{"type":52,"value":1128},{"type":46,"tag":405,"props":5465,"children":5466},{"style":1131},[5467],{"type":52,"value":5468}," 92",{"type":46,"tag":405,"props":5470,"children":5471},{"style":1101},[5472],{"type":52,"value":3589},{"type":46,"tag":405,"props":5474,"children":5475},{"style":1101},[5476],{"type":52,"value":1281},{"type":46,"tag":405,"props":5478,"children":5479},{"style":1020},[5480],{"type":52,"value":3598},{"type":46,"tag":405,"props":5482,"children":5483},{"style":1101},[5484],{"type":52,"value":1123},{"type":46,"tag":405,"props":5486,"children":5487},{"style":1101},[5488],{"type":52,"value":1128},{"type":46,"tag":405,"props":5490,"children":5491},{"style":1131},[5492],{"type":52,"value":5493}," 6356",{"type":46,"tag":405,"props":5495,"children":5496},{"style":1101},[5497],{"type":52,"value":3616},{"type":46,"tag":405,"props":5499,"children":5500},{"class":970,"line":1543},[5501,5505,5509,5513,5517,5521,5526,5530,5534,5538,5542,5546,5551],{"type":46,"tag":405,"props":5502,"children":5503},{"style":1101},[5504],{"type":52,"value":4991},{"type":46,"tag":405,"props":5506,"children":5507},{"style":1101},[5508],{"type":52,"value":1281},{"type":46,"tag":405,"props":5510,"children":5511},{"style":1020},[5512],{"type":52,"value":3571},{"type":46,"tag":405,"props":5514,"children":5515},{"style":1101},[5516],{"type":52,"value":1123},{"type":46,"tag":405,"props":5518,"children":5519},{"style":1101},[5520],{"type":52,"value":1128},{"type":46,"tag":405,"props":5522,"children":5523},{"style":1131},[5524],{"type":52,"value":5525}," 94",{"type":46,"tag":405,"props":5527,"children":5528},{"style":1101},[5529],{"type":52,"value":3589},{"type":46,"tag":405,"props":5531,"children":5532},{"style":1101},[5533],{"type":52,"value":1281},{"type":46,"tag":405,"props":5535,"children":5536},{"style":1020},[5537],{"type":52,"value":3598},{"type":46,"tag":405,"props":5539,"children":5540},{"style":1101},[5541],{"type":52,"value":1123},{"type":46,"tag":405,"props":5543,"children":5544},{"style":1101},[5545],{"type":52,"value":1128},{"type":46,"tag":405,"props":5547,"children":5548},{"style":1131},[5549],{"type":52,"value":5550}," 6238",{"type":46,"tag":405,"props":5552,"children":5553},{"style":1101},[5554],{"type":52,"value":3616},{"type":46,"tag":405,"props":5556,"children":5557},{"class":970,"line":1579},[5558,5562,5566,5570,5574,5578,5583,5587,5591,5595,5599,5603,5608],{"type":46,"tag":405,"props":5559,"children":5560},{"style":1101},[5561],{"type":52,"value":4991},{"type":46,"tag":405,"props":5563,"children":5564},{"style":1101},[5565],{"type":52,"value":1281},{"type":46,"tag":405,"props":5567,"children":5568},{"style":1020},[5569],{"type":52,"value":3571},{"type":46,"tag":405,"props":5571,"children":5572},{"style":1101},[5573],{"type":52,"value":1123},{"type":46,"tag":405,"props":5575,"children":5576},{"style":1101},[5577],{"type":52,"value":1128},{"type":46,"tag":405,"props":5579,"children":5580},{"style":1131},[5581],{"type":52,"value":5582}," 95",{"type":46,"tag":405,"props":5584,"children":5585},{"style":1101},[5586],{"type":52,"value":3589},{"type":46,"tag":405,"props":5588,"children":5589},{"style":1101},[5590],{"type":52,"value":1281},{"type":46,"tag":405,"props":5592,"children":5593},{"style":1020},[5594],{"type":52,"value":3598},{"type":46,"tag":405,"props":5596,"children":5597},{"style":1101},[5598],{"type":52,"value":1123},{"type":46,"tag":405,"props":5600,"children":5601},{"style":1101},[5602],{"type":52,"value":1128},{"type":46,"tag":405,"props":5604,"children":5605},{"style":1131},[5606],{"type":52,"value":5607}," 6136",{"type":46,"tag":405,"props":5609,"children":5610},{"style":1101},[5611],{"type":52,"value":3616},{"type":46,"tag":405,"props":5613,"children":5614},{"class":970,"line":1607},[5615,5619,5623,5627,5631,5635,5640,5644,5648,5652,5656,5660,5665],{"type":46,"tag":405,"props":5616,"children":5617},{"style":1101},[5618],{"type":52,"value":4991},{"type":46,"tag":405,"props":5620,"children":5621},{"style":1101},[5622],{"type":52,"value":1281},{"type":46,"tag":405,"props":5624,"children":5625},{"style":1020},[5626],{"type":52,"value":3571},{"type":46,"tag":405,"props":5628,"children":5629},{"style":1101},[5630],{"type":52,"value":1123},{"type":46,"tag":405,"props":5632,"children":5633},{"style":1101},[5634],{"type":52,"value":1128},{"type":46,"tag":405,"props":5636,"children":5637},{"style":1131},[5638],{"type":52,"value":5639}," 97",{"type":46,"tag":405,"props":5641,"children":5642},{"style":1101},[5643],{"type":52,"value":3589},{"type":46,"tag":405,"props":5645,"children":5646},{"style":1101},[5647],{"type":52,"value":1281},{"type":46,"tag":405,"props":5649,"children":5650},{"style":1020},[5651],{"type":52,"value":3598},{"type":46,"tag":405,"props":5653,"children":5654},{"style":1101},[5655],{"type":52,"value":1123},{"type":46,"tag":405,"props":5657,"children":5658},{"style":1101},[5659],{"type":52,"value":1128},{"type":46,"tag":405,"props":5661,"children":5662},{"style":1131},[5663],{"type":52,"value":5664}," 6043",{"type":46,"tag":405,"props":5666,"children":5667},{"style":1101},[5668],{"type":52,"value":3616},{"type":46,"tag":405,"props":5670,"children":5671},{"class":970,"line":1635},[5672,5676,5680,5684,5688,5692,5697,5701,5705,5709,5713,5717,5721],{"type":46,"tag":405,"props":5673,"children":5674},{"style":1101},[5675],{"type":52,"value":4991},{"type":46,"tag":405,"props":5677,"children":5678},{"style":1101},[5679],{"type":52,"value":1281},{"type":46,"tag":405,"props":5681,"children":5682},{"style":1020},[5683],{"type":52,"value":3571},{"type":46,"tag":405,"props":5685,"children":5686},{"style":1101},[5687],{"type":52,"value":1123},{"type":46,"tag":405,"props":5689,"children":5690},{"style":1101},[5691],{"type":52,"value":1128},{"type":46,"tag":405,"props":5693,"children":5694},{"style":1131},[5695],{"type":52,"value":5696}," 2988006",{"type":46,"tag":405,"props":5698,"children":5699},{"style":1101},[5700],{"type":52,"value":3589},{"type":46,"tag":405,"props":5702,"children":5703},{"style":1101},[5704],{"type":52,"value":1281},{"type":46,"tag":405,"props":5706,"children":5707},{"style":1020},[5708],{"type":52,"value":3598},{"type":46,"tag":405,"props":5710,"children":5711},{"style":1101},[5712],{"type":52,"value":1123},{"type":46,"tag":405,"props":5714,"children":5715},{"style":1101},[5716],{"type":52,"value":1128},{"type":46,"tag":405,"props":5718,"children":5719},{"style":1131},[5720],{"type":52,"value":2143},{"type":46,"tag":405,"props":5722,"children":5723},{"style":1101},[5724],{"type":52,"value":3673},{"type":46,"tag":405,"props":5726,"children":5727},{"class":970,"line":1669},[5728],{"type":46,"tag":405,"props":5729,"children":5730},{"style":1101},[5731],{"type":52,"value":5732},"  ],\n",{"type":46,"tag":405,"props":5734,"children":5735},{"class":970,"line":1678},[5736,5740,5744,5748,5752,5756],{"type":46,"tag":405,"props":5737,"children":5738},{"style":1101},[5739],{"type":52,"value":1112},{"type":46,"tag":405,"props":5741,"children":5742},{"style":1115},[5743],{"type":52,"value":1118},{"type":46,"tag":405,"props":5745,"children":5746},{"style":1101},[5747],{"type":52,"value":1123},{"type":46,"tag":405,"props":5749,"children":5750},{"style":1101},[5751],{"type":52,"value":1128},{"type":46,"tag":405,"props":5753,"children":5754},{"style":1131},[5755],{"type":52,"value":1134},{"type":46,"tag":405,"props":5757,"children":5758},{"style":1101},[5759],{"type":52,"value":1139},{"type":46,"tag":405,"props":5761,"children":5762},{"class":970,"line":2305},[5763,5767,5771,5775,5779,5783],{"type":46,"tag":405,"props":5764,"children":5765},{"style":1101},[5766],{"type":52,"value":1112},{"type":46,"tag":405,"props":5768,"children":5769},{"style":1115},[5770],{"type":52,"value":1151},{"type":46,"tag":405,"props":5772,"children":5773},{"style":1101},[5774],{"type":52,"value":1123},{"type":46,"tag":405,"props":5776,"children":5777},{"style":1101},[5778],{"type":52,"value":1128},{"type":46,"tag":405,"props":5780,"children":5781},{"style":1131},[5782],{"type":52,"value":3526},{"type":46,"tag":405,"props":5784,"children":5785},{"style":1101},[5786],{"type":52,"value":1139},{"type":46,"tag":405,"props":5788,"children":5789},{"class":970,"line":2333},[5790,5794,5799,5803,5807,5812],{"type":46,"tag":405,"props":5791,"children":5792},{"style":1101},[5793],{"type":52,"value":1112},{"type":46,"tag":405,"props":5795,"children":5796},{"style":1115},[5797],{"type":52,"value":5798},"total_phases",{"type":46,"tag":405,"props":5800,"children":5801},{"style":1101},[5802],{"type":52,"value":1123},{"type":46,"tag":405,"props":5804,"children":5805},{"style":1101},[5806],{"type":52,"value":1128},{"type":46,"tag":405,"props":5808,"children":5809},{"style":1131},[5810],{"type":52,"value":5811}," 13",{"type":46,"tag":405,"props":5813,"children":5814},{"style":1101},[5815],{"type":52,"value":1139},{"type":46,"tag":405,"props":5817,"children":5818},{"class":970,"line":2341},[5819,5823,5828,5832,5836],{"type":46,"tag":405,"props":5820,"children":5821},{"style":1101},[5822],{"type":52,"value":1112},{"type":46,"tag":405,"props":5824,"children":5825},{"style":1115},[5826],{"type":52,"value":5827},"summary",{"type":46,"tag":405,"props":5829,"children":5830},{"style":1101},[5831],{"type":52,"value":1123},{"type":46,"tag":405,"props":5833,"children":5834},{"style":1101},[5835],{"type":52,"value":1128},{"type":46,"tag":405,"props":5837,"children":5838},{"style":1101},[5839],{"type":52,"value":1256},{"type":46,"tag":405,"props":5841,"children":5842},{"class":970,"line":2358},[5843,5847,5852,5856,5860,5865],{"type":46,"tag":405,"props":5844,"children":5845},{"style":1101},[5846],{"type":52,"value":1264},{"type":46,"tag":405,"props":5848,"children":5849},{"style":1020},[5850],{"type":52,"value":5851},"total_mps",{"type":46,"tag":405,"props":5853,"children":5854},{"style":1101},[5855],{"type":52,"value":1123},{"type":46,"tag":405,"props":5857,"children":5858},{"style":1101},[5859],{"type":52,"value":1128},{"type":46,"tag":405,"props":5861,"children":5862},{"style":1131},[5863],{"type":52,"value":5864}," 10000000",{"type":46,"tag":405,"props":5866,"children":5867},{"style":1101},[5868],{"type":52,"value":1139},{"type":46,"tag":405,"props":5870,"children":5871},{"class":970,"line":2387},[5872,5876,5881,5885,5889,5893],{"type":46,"tag":405,"props":5873,"children":5874},{"style":1101},[5875],{"type":52,"value":1264},{"type":46,"tag":405,"props":5877,"children":5878},{"style":1020},[5879],{"type":52,"value":5880},"target_mps",{"type":46,"tag":405,"props":5882,"children":5883},{"style":1101},[5884],{"type":52,"value":1123},{"type":46,"tag":405,"props":5886,"children":5887},{"style":1101},[5888],{"type":52,"value":1128},{"type":46,"tag":405,"props":5890,"children":5891},{"style":1131},[5892],{"type":52,"value":5864},{"type":46,"tag":405,"props":5894,"children":5895},{"style":1101},[5896],{"type":52,"value":1139},{"type":46,"tag":405,"props":5898,"children":5899},{"class":970,"line":2407},[5900,5904,5909,5913,5917,5921],{"type":46,"tag":405,"props":5901,"children":5902},{"style":1101},[5903],{"type":52,"value":1264},{"type":46,"tag":405,"props":5905,"children":5906},{"style":1020},[5907],{"type":52,"value":5908},"final_block_mps",{"type":46,"tag":405,"props":5910,"children":5911},{"style":1101},[5912],{"type":52,"value":1123},{"type":46,"tag":405,"props":5914,"children":5915},{"style":1101},[5916],{"type":52,"value":1128},{"type":46,"tag":405,"props":5918,"children":5919},{"style":1131},[5920],{"type":52,"value":5696},{"type":46,"tag":405,"props":5922,"children":5923},{"style":1101},[5924],{"type":52,"value":1139},{"type":46,"tag":405,"props":5926,"children":5927},{"class":970,"line":2436},[5928,5932,5937,5941,5945,5950],{"type":46,"tag":405,"props":5929,"children":5930},{"style":1101},[5931],{"type":52,"value":1264},{"type":46,"tag":405,"props":5933,"children":5934},{"style":1020},[5935],{"type":52,"value":5936},"final_block_percentage",{"type":46,"tag":405,"props":5938,"children":5939},{"style":1101},[5940],{"type":52,"value":1123},{"type":46,"tag":405,"props":5942,"children":5943},{"style":1101},[5944],{"type":52,"value":1128},{"type":46,"tag":405,"props":5946,"children":5947},{"style":1131},[5948],{"type":52,"value":5949}," 29.88",{"type":46,"tag":405,"props":5951,"children":5952},{"style":1101},[5953],{"type":52,"value":1139},{"type":46,"tag":405,"props":5955,"children":5956},{"class":970,"line":2465},[5957,5961,5966,5970,5974,5978],{"type":46,"tag":405,"props":5958,"children":5959},{"style":1101},[5960],{"type":52,"value":1264},{"type":46,"tag":405,"props":5962,"children":5963},{"style":1020},[5964],{"type":52,"value":5965},"num_steps",{"type":46,"tag":405,"props":5967,"children":5968},{"style":1101},[5969],{"type":52,"value":1123},{"type":46,"tag":405,"props":5971,"children":5972},{"style":1101},[5973],{"type":52,"value":1128},{"type":46,"tag":405,"props":5975,"children":5976},{"style":1131},[5977],{"type":52,"value":2013},{"type":46,"tag":405,"props":5979,"children":5980},{"style":1101},[5981],{"type":52,"value":1139},{"type":46,"tag":405,"props":5983,"children":5984},{"class":970,"line":2473},[5985,5989,5994,5998,6002,6007],{"type":46,"tag":405,"props":5986,"children":5987},{"style":1101},[5988],{"type":52,"value":1264},{"type":46,"tag":405,"props":5990,"children":5991},{"style":1020},[5992],{"type":52,"value":5993},"alpha",{"type":46,"tag":405,"props":5995,"children":5996},{"style":1101},[5997],{"type":52,"value":1123},{"type":46,"tag":405,"props":5999,"children":6000},{"style":1101},[6001],{"type":52,"value":1128},{"type":46,"tag":405,"props":6003,"children":6004},{"style":1131},[6005],{"type":52,"value":6006}," 1.2",{"type":46,"tag":405,"props":6008,"children":6009},{"style":1101},[6010],{"type":52,"value":1139},{"type":46,"tag":405,"props":6012,"children":6013},{"class":970,"line":2490},[6014,6018,6023,6027,6031,6036],{"type":46,"tag":405,"props":6015,"children":6016},{"style":1101},[6017],{"type":52,"value":1264},{"type":46,"tag":405,"props":6019,"children":6020},{"style":1020},[6021],{"type":52,"value":6022},"main_supply_pct",{"type":46,"tag":405,"props":6024,"children":6025},{"style":1101},[6026],{"type":52,"value":1123},{"type":46,"tag":405,"props":6028,"children":6029},{"style":1101},[6030],{"type":52,"value":1128},{"type":46,"tag":405,"props":6032,"children":6033},{"style":1131},[6034],{"type":52,"value":6035}," 70.0",{"type":46,"tag":405,"props":6037,"children":6038},{"style":1101},[6039],{"type":52,"value":1139},{"type":46,"tag":405,"props":6041,"children":6042},{"class":970,"line":2519},[6043,6047,6052,6056,6060],{"type":46,"tag":405,"props":6044,"children":6045},{"style":1101},[6046],{"type":52,"value":1264},{"type":46,"tag":405,"props":6048,"children":6049},{"style":1020},[6050],{"type":52,"value":6051},"step_tokens_pct",{"type":46,"tag":405,"props":6053,"children":6054},{"style":1101},[6055],{"type":52,"value":1123},{"type":46,"tag":405,"props":6057,"children":6058},{"style":1101},[6059],{"type":52,"value":1128},{"type":46,"tag":405,"props":6061,"children":6062},{"style":1131},[6063],{"type":52,"value":6064}," 5.8333\n",{"type":46,"tag":405,"props":6066,"children":6067},{"class":970,"line":2539},[6068],{"type":46,"tag":405,"props":6069,"children":6070},{"style":1101},[6071],{"type":52,"value":1675},{"type":46,"tag":405,"props":6073,"children":6074},{"class":970,"line":2568},[6075],{"type":46,"tag":405,"props":6076,"children":6077},{"style":1101},[6078],{"type":52,"value":1172},{"type":46,"tag":55,"props":6080,"children":6081},{},[6082],{"type":46,"tag":68,"props":6083,"children":6084},{},[6085],{"type":52,"value":6086},"Notice:",{"type":46,"tag":143,"props":6088,"children":6089},{},[6090,6095,6100,6105],{"type":46,"tag":122,"props":6091,"children":6092},{},[6093],{"type":52,"value":6094},"Block durations DECREASE: 10894 → 8517 → 7803 → ... → 6043",{"type":46,"tag":122,"props":6096,"children":6097},{},[6098],{"type":52,"value":6099},"Token amounts per step are approximately equal (~5.8333% each)",{"type":46,"tag":122,"props":6101,"children":6102},{},[6103],{"type":52,"value":6104},"Final block contains 29.88% of all tokens",{"type":46,"tag":122,"props":6106,"children":6107},{},[6108],{"type":52,"value":6109},"Total is exactly 10,000,000 MPS",{"type":46,"tag":111,"props":6111,"children":6113},{"id":6112},"example-with-prebid-period",[6114],{"type":52,"value":6115},"Example: With prebid period",{"type":46,"tag":55,"props":6117,"children":6118},{},[6119],{"type":52,"value":6120},"Add a prebid period where no tokens are released (mps=0). The prebid is prepended to the schedule.",{"type":46,"tag":55,"props":6122,"children":6123},{},[6124,6125,6130],{"type":52,"value":4860},{"type":46,"tag":76,"props":6126,"children":6128},{"className":6127},[],[6129],{"type":52,"value":4736},{"type":52,"value":4867},{"type":46,"tag":958,"props":6132,"children":6134},{"className":1089,"code":6133,"language":1091,"meta":963,"style":963},"{\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 43200\n}\n",[6135],{"type":46,"tag":76,"props":6136,"children":6137},{"__ignoreMap":963},[6138,6145,6172,6196],{"type":46,"tag":405,"props":6139,"children":6140},{"class":970,"line":971},[6141],{"type":46,"tag":405,"props":6142,"children":6143},{"style":1101},[6144],{"type":52,"value":1104},{"type":46,"tag":405,"props":6146,"children":6147},{"class":970,"line":981},[6148,6152,6156,6160,6164,6168],{"type":46,"tag":405,"props":6149,"children":6150},{"style":1101},[6151],{"type":52,"value":1112},{"type":46,"tag":405,"props":6153,"children":6154},{"style":1115},[6155],{"type":52,"value":1118},{"type":46,"tag":405,"props":6157,"children":6158},{"style":1101},[6159],{"type":52,"value":1123},{"type":46,"tag":405,"props":6161,"children":6162},{"style":1101},[6163],{"type":52,"value":1128},{"type":46,"tag":405,"props":6165,"children":6166},{"style":1131},[6167],{"type":52,"value":1134},{"type":46,"tag":405,"props":6169,"children":6170},{"style":1101},[6171],{"type":52,"value":1139},{"type":46,"tag":405,"props":6173,"children":6174},{"class":970,"line":997},[6175,6179,6183,6187,6191],{"type":46,"tag":405,"props":6176,"children":6177},{"style":1101},[6178],{"type":52,"value":1112},{"type":46,"tag":405,"props":6180,"children":6181},{"style":1115},[6182],{"type":52,"value":1151},{"type":46,"tag":405,"props":6184,"children":6185},{"style":1101},[6186],{"type":52,"value":1123},{"type":46,"tag":405,"props":6188,"children":6189},{"style":1101},[6190],{"type":52,"value":1128},{"type":46,"tag":405,"props":6192,"children":6193},{"style":1131},[6194],{"type":52,"value":6195}," 43200\n",{"type":46,"tag":405,"props":6197,"children":6198},{"class":970,"line":1007},[6199],{"type":46,"tag":405,"props":6200,"children":6201},{"style":1101},[6202],{"type":52,"value":1172},{"type":46,"tag":55,"props":6204,"children":6205},{},[6206],{"type":46,"tag":68,"props":6207,"children":6208},{},[6209],{"type":52,"value":6210},"Output:",{"type":46,"tag":958,"props":6212,"children":6214},{"className":1089,"code":6213,"language":1091,"meta":963,"style":963},"{\n  \"schedule\": [\n    { \"mps\": 0, \"blockDelta\": 43200 },\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 },\n    ...\n    { \"mps\": 2988006, \"blockDelta\": 1 }\n  ],\n  \"auction_blocks\": 86400,\n  \"prebid_blocks\": 43200,\n  \"total_phases\": 14,\n  \"summary\": {\n    \"total_mps\": 10000000,\n    \"target_mps\": 10000000,\n    \"final_block_mps\": 2988006,\n    \"final_block_percentage\": 29.88,\n    \"num_steps\": 12,\n    \"alpha\": 1.2,\n    \"main_supply_pct\": 70.0,\n    \"step_tokens_pct\": 5.8333\n  }\n}\n",[6215],{"type":46,"tag":76,"props":6216,"children":6217},{"__ignoreMap":963},[6218,6225,6248,6304,6359,6414,6422,6477,6484,6511,6538,6566,6589,6616,6643,6670,6697,6724,6751,6778,6801,6808],{"type":46,"tag":405,"props":6219,"children":6220},{"class":970,"line":971},[6221],{"type":46,"tag":405,"props":6222,"children":6223},{"style":1101},[6224],{"type":52,"value":1104},{"type":46,"tag":405,"props":6226,"children":6227},{"class":970,"line":981},[6228,6232,6236,6240,6244],{"type":46,"tag":405,"props":6229,"children":6230},{"style":1101},[6231],{"type":52,"value":1112},{"type":46,"tag":405,"props":6233,"children":6234},{"style":1115},[6235],{"type":52,"value":4971},{"type":46,"tag":405,"props":6237,"children":6238},{"style":1101},[6239],{"type":52,"value":1123},{"type":46,"tag":405,"props":6241,"children":6242},{"style":1101},[6243],{"type":52,"value":1128},{"type":46,"tag":405,"props":6245,"children":6246},{"style":1101},[6247],{"type":52,"value":3554},{"type":46,"tag":405,"props":6249,"children":6250},{"class":970,"line":997},[6251,6255,6259,6263,6267,6271,6275,6279,6283,6287,6291,6295,6300],{"type":46,"tag":405,"props":6252,"children":6253},{"style":1101},[6254],{"type":52,"value":4991},{"type":46,"tag":405,"props":6256,"children":6257},{"style":1101},[6258],{"type":52,"value":1281},{"type":46,"tag":405,"props":6260,"children":6261},{"style":1020},[6262],{"type":52,"value":3571},{"type":46,"tag":405,"props":6264,"children":6265},{"style":1101},[6266],{"type":52,"value":1123},{"type":46,"tag":405,"props":6268,"children":6269},{"style":1101},[6270],{"type":52,"value":1128},{"type":46,"tag":405,"props":6272,"children":6273},{"style":1131},[6274],{"type":52,"value":3526},{"type":46,"tag":405,"props":6276,"children":6277},{"style":1101},[6278],{"type":52,"value":3589},{"type":46,"tag":405,"props":6280,"children":6281},{"style":1101},[6282],{"type":52,"value":1281},{"type":46,"tag":405,"props":6284,"children":6285},{"style":1020},[6286],{"type":52,"value":3598},{"type":46,"tag":405,"props":6288,"children":6289},{"style":1101},[6290],{"type":52,"value":1123},{"type":46,"tag":405,"props":6292,"children":6293},{"style":1101},[6294],{"type":52,"value":1128},{"type":46,"tag":405,"props":6296,"children":6297},{"style":1131},[6298],{"type":52,"value":6299}," 43200",{"type":46,"tag":405,"props":6301,"children":6302},{"style":1101},[6303],{"type":52,"value":3616},{"type":46,"tag":405,"props":6305,"children":6306},{"class":970,"line":1007},[6307,6311,6315,6319,6323,6327,6331,6335,6339,6343,6347,6351,6355],{"type":46,"tag":405,"props":6308,"children":6309},{"style":1101},[6310],{"type":52,"value":4991},{"type":46,"tag":405,"props":6312,"children":6313},{"style":1101},[6314],{"type":52,"value":1281},{"type":46,"tag":405,"props":6316,"children":6317},{"style":1020},[6318],{"type":52,"value":3571},{"type":46,"tag":405,"props":6320,"children":6321},{"style":1101},[6322],{"type":52,"value":1123},{"type":46,"tag":405,"props":6324,"children":6325},{"style":1101},[6326],{"type":52,"value":1128},{"type":46,"tag":405,"props":6328,"children":6329},{"style":1131},[6330],{"type":52,"value":5012},{"type":46,"tag":405,"props":6332,"children":6333},{"style":1101},[6334],{"type":52,"value":3589},{"type":46,"tag":405,"props":6336,"children":6337},{"style":1101},[6338],{"type":52,"value":1281},{"type":46,"tag":405,"props":6340,"children":6341},{"style":1020},[6342],{"type":52,"value":3598},{"type":46,"tag":405,"props":6344,"children":6345},{"style":1101},[6346],{"type":52,"value":1123},{"type":46,"tag":405,"props":6348,"children":6349},{"style":1101},[6350],{"type":52,"value":1128},{"type":46,"tag":405,"props":6352,"children":6353},{"style":1131},[6354],{"type":52,"value":5037},{"type":46,"tag":405,"props":6356,"children":6357},{"style":1101},[6358],{"type":52,"value":3616},{"type":46,"tag":405,"props":6360,"children":6361},{"class":970,"line":1016},[6362,6366,6370,6374,6378,6382,6386,6390,6394,6398,6402,6406,6410],{"type":46,"tag":405,"props":6363,"children":6364},{"style":1101},[6365],{"type":52,"value":4991},{"type":46,"tag":405,"props":6367,"children":6368},{"style":1101},[6369],{"type":52,"value":1281},{"type":46,"tag":405,"props":6371,"children":6372},{"style":1020},[6373],{"type":52,"value":3571},{"type":46,"tag":405,"props":6375,"children":6376},{"style":1101},[6377],{"type":52,"value":1123},{"type":46,"tag":405,"props":6379,"children":6380},{"style":1101},[6381],{"type":52,"value":1128},{"type":46,"tag":405,"props":6383,"children":6384},{"style":1131},[6385],{"type":52,"value":5069},{"type":46,"tag":405,"props":6387,"children":6388},{"style":1101},[6389],{"type":52,"value":3589},{"type":46,"tag":405,"props":6391,"children":6392},{"style":1101},[6393],{"type":52,"value":1281},{"type":46,"tag":405,"props":6395,"children":6396},{"style":1020},[6397],{"type":52,"value":3598},{"type":46,"tag":405,"props":6399,"children":6400},{"style":1101},[6401],{"type":52,"value":1123},{"type":46,"tag":405,"props":6403,"children":6404},{"style":1101},[6405],{"type":52,"value":1128},{"type":46,"tag":405,"props":6407,"children":6408},{"style":1131},[6409],{"type":52,"value":5094},{"type":46,"tag":405,"props":6411,"children":6412},{"style":1101},[6413],{"type":52,"value":3616},{"type":46,"tag":405,"props":6415,"children":6416},{"class":970,"line":1036},[6417],{"type":46,"tag":405,"props":6418,"children":6419},{"style":1316},[6420],{"type":52,"value":6421},"    ...\n",{"type":46,"tag":405,"props":6423,"children":6424},{"class":970,"line":1045},[6425,6429,6433,6437,6441,6445,6449,6453,6457,6461,6465,6469,6473],{"type":46,"tag":405,"props":6426,"children":6427},{"style":1101},[6428],{"type":52,"value":4991},{"type":46,"tag":405,"props":6430,"children":6431},{"style":1101},[6432],{"type":52,"value":1281},{"type":46,"tag":405,"props":6434,"children":6435},{"style":1020},[6436],{"type":52,"value":3571},{"type":46,"tag":405,"props":6438,"children":6439},{"style":1101},[6440],{"type":52,"value":1123},{"type":46,"tag":405,"props":6442,"children":6443},{"style":1101},[6444],{"type":52,"value":1128},{"type":46,"tag":405,"props":6446,"children":6447},{"style":1131},[6448],{"type":52,"value":5696},{"type":46,"tag":405,"props":6450,"children":6451},{"style":1101},[6452],{"type":52,"value":3589},{"type":46,"tag":405,"props":6454,"children":6455},{"style":1101},[6456],{"type":52,"value":1281},{"type":46,"tag":405,"props":6458,"children":6459},{"style":1020},[6460],{"type":52,"value":3598},{"type":46,"tag":405,"props":6462,"children":6463},{"style":1101},[6464],{"type":52,"value":1123},{"type":46,"tag":405,"props":6466,"children":6467},{"style":1101},[6468],{"type":52,"value":1128},{"type":46,"tag":405,"props":6470,"children":6471},{"style":1131},[6472],{"type":52,"value":2143},{"type":46,"tag":405,"props":6474,"children":6475},{"style":1101},[6476],{"type":52,"value":3673},{"type":46,"tag":405,"props":6478,"children":6479},{"class":970,"line":1053},[6480],{"type":46,"tag":405,"props":6481,"children":6482},{"style":1101},[6483],{"type":52,"value":5732},{"type":46,"tag":405,"props":6485,"children":6486},{"class":970,"line":1062},[6487,6491,6495,6499,6503,6507],{"type":46,"tag":405,"props":6488,"children":6489},{"style":1101},[6490],{"type":52,"value":1112},{"type":46,"tag":405,"props":6492,"children":6493},{"style":1115},[6494],{"type":52,"value":1118},{"type":46,"tag":405,"props":6496,"children":6497},{"style":1101},[6498],{"type":52,"value":1123},{"type":46,"tag":405,"props":6500,"children":6501},{"style":1101},[6502],{"type":52,"value":1128},{"type":46,"tag":405,"props":6504,"children":6505},{"style":1131},[6506],{"type":52,"value":1134},{"type":46,"tag":405,"props":6508,"children":6509},{"style":1101},[6510],{"type":52,"value":1139},{"type":46,"tag":405,"props":6512,"children":6513},{"class":970,"line":1486},[6514,6518,6522,6526,6530,6534],{"type":46,"tag":405,"props":6515,"children":6516},{"style":1101},[6517],{"type":52,"value":1112},{"type":46,"tag":405,"props":6519,"children":6520},{"style":1115},[6521],{"type":52,"value":1151},{"type":46,"tag":405,"props":6523,"children":6524},{"style":1101},[6525],{"type":52,"value":1123},{"type":46,"tag":405,"props":6527,"children":6528},{"style":1101},[6529],{"type":52,"value":1128},{"type":46,"tag":405,"props":6531,"children":6532},{"style":1131},[6533],{"type":52,"value":6299},{"type":46,"tag":405,"props":6535,"children":6536},{"style":1101},[6537],{"type":52,"value":1139},{"type":46,"tag":405,"props":6539,"children":6540},{"class":970,"line":1515},[6541,6545,6549,6553,6557,6562],{"type":46,"tag":405,"props":6542,"children":6543},{"style":1101},[6544],{"type":52,"value":1112},{"type":46,"tag":405,"props":6546,"children":6547},{"style":1115},[6548],{"type":52,"value":5798},{"type":46,"tag":405,"props":6550,"children":6551},{"style":1101},[6552],{"type":52,"value":1123},{"type":46,"tag":405,"props":6554,"children":6555},{"style":1101},[6556],{"type":52,"value":1128},{"type":46,"tag":405,"props":6558,"children":6559},{"style":1131},[6560],{"type":52,"value":6561}," 14",{"type":46,"tag":405,"props":6563,"children":6564},{"style":1101},[6565],{"type":52,"value":1139},{"type":46,"tag":405,"props":6567,"children":6568},{"class":970,"line":1543},[6569,6573,6577,6581,6585],{"type":46,"tag":405,"props":6570,"children":6571},{"style":1101},[6572],{"type":52,"value":1112},{"type":46,"tag":405,"props":6574,"children":6575},{"style":1115},[6576],{"type":52,"value":5827},{"type":46,"tag":405,"props":6578,"children":6579},{"style":1101},[6580],{"type":52,"value":1123},{"type":46,"tag":405,"props":6582,"children":6583},{"style":1101},[6584],{"type":52,"value":1128},{"type":46,"tag":405,"props":6586,"children":6587},{"style":1101},[6588],{"type":52,"value":1256},{"type":46,"tag":405,"props":6590,"children":6591},{"class":970,"line":1579},[6592,6596,6600,6604,6608,6612],{"type":46,"tag":405,"props":6593,"children":6594},{"style":1101},[6595],{"type":52,"value":1264},{"type":46,"tag":405,"props":6597,"children":6598},{"style":1020},[6599],{"type":52,"value":5851},{"type":46,"tag":405,"props":6601,"children":6602},{"style":1101},[6603],{"type":52,"value":1123},{"type":46,"tag":405,"props":6605,"children":6606},{"style":1101},[6607],{"type":52,"value":1128},{"type":46,"tag":405,"props":6609,"children":6610},{"style":1131},[6611],{"type":52,"value":5864},{"type":46,"tag":405,"props":6613,"children":6614},{"style":1101},[6615],{"type":52,"value":1139},{"type":46,"tag":405,"props":6617,"children":6618},{"class":970,"line":1607},[6619,6623,6627,6631,6635,6639],{"type":46,"tag":405,"props":6620,"children":6621},{"style":1101},[6622],{"type":52,"value":1264},{"type":46,"tag":405,"props":6624,"children":6625},{"style":1020},[6626],{"type":52,"value":5880},{"type":46,"tag":405,"props":6628,"children":6629},{"style":1101},[6630],{"type":52,"value":1123},{"type":46,"tag":405,"props":6632,"children":6633},{"style":1101},[6634],{"type":52,"value":1128},{"type":46,"tag":405,"props":6636,"children":6637},{"style":1131},[6638],{"type":52,"value":5864},{"type":46,"tag":405,"props":6640,"children":6641},{"style":1101},[6642],{"type":52,"value":1139},{"type":46,"tag":405,"props":6644,"children":6645},{"class":970,"line":1635},[6646,6650,6654,6658,6662,6666],{"type":46,"tag":405,"props":6647,"children":6648},{"style":1101},[6649],{"type":52,"value":1264},{"type":46,"tag":405,"props":6651,"children":6652},{"style":1020},[6653],{"type":52,"value":5908},{"type":46,"tag":405,"props":6655,"children":6656},{"style":1101},[6657],{"type":52,"value":1123},{"type":46,"tag":405,"props":6659,"children":6660},{"style":1101},[6661],{"type":52,"value":1128},{"type":46,"tag":405,"props":6663,"children":6664},{"style":1131},[6665],{"type":52,"value":5696},{"type":46,"tag":405,"props":6667,"children":6668},{"style":1101},[6669],{"type":52,"value":1139},{"type":46,"tag":405,"props":6671,"children":6672},{"class":970,"line":1669},[6673,6677,6681,6685,6689,6693],{"type":46,"tag":405,"props":6674,"children":6675},{"style":1101},[6676],{"type":52,"value":1264},{"type":46,"tag":405,"props":6678,"children":6679},{"style":1020},[6680],{"type":52,"value":5936},{"type":46,"tag":405,"props":6682,"children":6683},{"style":1101},[6684],{"type":52,"value":1123},{"type":46,"tag":405,"props":6686,"children":6687},{"style":1101},[6688],{"type":52,"value":1128},{"type":46,"tag":405,"props":6690,"children":6691},{"style":1131},[6692],{"type":52,"value":5949},{"type":46,"tag":405,"props":6694,"children":6695},{"style":1101},[6696],{"type":52,"value":1139},{"type":46,"tag":405,"props":6698,"children":6699},{"class":970,"line":1678},[6700,6704,6708,6712,6716,6720],{"type":46,"tag":405,"props":6701,"children":6702},{"style":1101},[6703],{"type":52,"value":1264},{"type":46,"tag":405,"props":6705,"children":6706},{"style":1020},[6707],{"type":52,"value":5965},{"type":46,"tag":405,"props":6709,"children":6710},{"style":1101},[6711],{"type":52,"value":1123},{"type":46,"tag":405,"props":6713,"children":6714},{"style":1101},[6715],{"type":52,"value":1128},{"type":46,"tag":405,"props":6717,"children":6718},{"style":1131},[6719],{"type":52,"value":2013},{"type":46,"tag":405,"props":6721,"children":6722},{"style":1101},[6723],{"type":52,"value":1139},{"type":46,"tag":405,"props":6725,"children":6726},{"class":970,"line":2305},[6727,6731,6735,6739,6743,6747],{"type":46,"tag":405,"props":6728,"children":6729},{"style":1101},[6730],{"type":52,"value":1264},{"type":46,"tag":405,"props":6732,"children":6733},{"style":1020},[6734],{"type":52,"value":5993},{"type":46,"tag":405,"props":6736,"children":6737},{"style":1101},[6738],{"type":52,"value":1123},{"type":46,"tag":405,"props":6740,"children":6741},{"style":1101},[6742],{"type":52,"value":1128},{"type":46,"tag":405,"props":6744,"children":6745},{"style":1131},[6746],{"type":52,"value":6006},{"type":46,"tag":405,"props":6748,"children":6749},{"style":1101},[6750],{"type":52,"value":1139},{"type":46,"tag":405,"props":6752,"children":6753},{"class":970,"line":2333},[6754,6758,6762,6766,6770,6774],{"type":46,"tag":405,"props":6755,"children":6756},{"style":1101},[6757],{"type":52,"value":1264},{"type":46,"tag":405,"props":6759,"children":6760},{"style":1020},[6761],{"type":52,"value":6022},{"type":46,"tag":405,"props":6763,"children":6764},{"style":1101},[6765],{"type":52,"value":1123},{"type":46,"tag":405,"props":6767,"children":6768},{"style":1101},[6769],{"type":52,"value":1128},{"type":46,"tag":405,"props":6771,"children":6772},{"style":1131},[6773],{"type":52,"value":6035},{"type":46,"tag":405,"props":6775,"children":6776},{"style":1101},[6777],{"type":52,"value":1139},{"type":46,"tag":405,"props":6779,"children":6780},{"class":970,"line":2341},[6781,6785,6789,6793,6797],{"type":46,"tag":405,"props":6782,"children":6783},{"style":1101},[6784],{"type":52,"value":1264},{"type":46,"tag":405,"props":6786,"children":6787},{"style":1020},[6788],{"type":52,"value":6051},{"type":46,"tag":405,"props":6790,"children":6791},{"style":1101},[6792],{"type":52,"value":1123},{"type":46,"tag":405,"props":6794,"children":6795},{"style":1101},[6796],{"type":52,"value":1128},{"type":46,"tag":405,"props":6798,"children":6799},{"style":1131},[6800],{"type":52,"value":6064},{"type":46,"tag":405,"props":6802,"children":6803},{"class":970,"line":2358},[6804],{"type":46,"tag":405,"props":6805,"children":6806},{"style":1101},[6807],{"type":52,"value":1675},{"type":46,"tag":405,"props":6809,"children":6810},{"class":970,"line":2387},[6811],{"type":46,"tag":405,"props":6812,"children":6813},{"style":1101},[6814],{"type":52,"value":1172},{"type":46,"tag":55,"props":6816,"children":6817},{},[6818,6822,6824,6830],{"type":46,"tag":68,"props":6819,"children":6820},{},[6821],{"type":52,"value":6086},{"type":52,"value":6823}," The prebid phase is simply prepended with ",{"type":46,"tag":76,"props":6825,"children":6827},{"className":6826},[],[6828],{"type":52,"value":6829},"mps: 0",{"type":52,"value":6831},". The auction portion still uses the same normalized convex distribution.",{"type":46,"tag":111,"props":6833,"children":6835},{"id":6834},"custom-schedule",[6836],{"type":52,"value":6837},"Custom Schedule",{"type":46,"tag":55,"props":6839,"children":6840},{},[6841],{"type":52,"value":6842},"For custom distribution, manually define the schedule:",{"type":46,"tag":958,"props":6844,"children":6846},{"className":1089,"code":6845,"language":1091,"meta":963,"style":963},"{\n  \"supplySchedule\": [\n    { \"mps\": 100, \"blockDelta\": 5000 },\n    { \"mps\": 200, \"blockDelta\": 5000 },\n    { \"mps\": 500, \"blockDelta\": 4400 }\n  ]\n}\n",[6847],{"type":46,"tag":76,"props":6848,"children":6849},{"__ignoreMap":963},[6850,6857,6880,6937,6993,7050,7058],{"type":46,"tag":405,"props":6851,"children":6852},{"class":970,"line":971},[6853],{"type":46,"tag":405,"props":6854,"children":6855},{"style":1101},[6856],{"type":52,"value":1104},{"type":46,"tag":405,"props":6858,"children":6859},{"class":970,"line":981},[6860,6864,6868,6872,6876],{"type":46,"tag":405,"props":6861,"children":6862},{"style":1101},[6863],{"type":52,"value":1112},{"type":46,"tag":405,"props":6865,"children":6866},{"style":1115},[6867],{"type":52,"value":1206},{"type":46,"tag":405,"props":6869,"children":6870},{"style":1101},[6871],{"type":52,"value":1123},{"type":46,"tag":405,"props":6873,"children":6874},{"style":1101},[6875],{"type":52,"value":1128},{"type":46,"tag":405,"props":6877,"children":6878},{"style":1101},[6879],{"type":52,"value":3554},{"type":46,"tag":405,"props":6881,"children":6882},{"class":970,"line":997},[6883,6887,6891,6895,6899,6903,6908,6912,6916,6920,6924,6928,6933],{"type":46,"tag":405,"props":6884,"children":6885},{"style":1101},[6886],{"type":52,"value":4991},{"type":46,"tag":405,"props":6888,"children":6889},{"style":1101},[6890],{"type":52,"value":1281},{"type":46,"tag":405,"props":6892,"children":6893},{"style":1020},[6894],{"type":52,"value":3571},{"type":46,"tag":405,"props":6896,"children":6897},{"style":1101},[6898],{"type":52,"value":1123},{"type":46,"tag":405,"props":6900,"children":6901},{"style":1101},[6902],{"type":52,"value":1128},{"type":46,"tag":405,"props":6904,"children":6905},{"style":1131},[6906],{"type":52,"value":6907}," 100",{"type":46,"tag":405,"props":6909,"children":6910},{"style":1101},[6911],{"type":52,"value":3589},{"type":46,"tag":405,"props":6913,"children":6914},{"style":1101},[6915],{"type":52,"value":1281},{"type":46,"tag":405,"props":6917,"children":6918},{"style":1020},[6919],{"type":52,"value":3598},{"type":46,"tag":405,"props":6921,"children":6922},{"style":1101},[6923],{"type":52,"value":1123},{"type":46,"tag":405,"props":6925,"children":6926},{"style":1101},[6927],{"type":52,"value":1128},{"type":46,"tag":405,"props":6929,"children":6930},{"style":1131},[6931],{"type":52,"value":6932}," 5000",{"type":46,"tag":405,"props":6934,"children":6935},{"style":1101},[6936],{"type":52,"value":3616},{"type":46,"tag":405,"props":6938,"children":6939},{"class":970,"line":1007},[6940,6944,6948,6952,6956,6960,6965,6969,6973,6977,6981,6985,6989],{"type":46,"tag":405,"props":6941,"children":6942},{"style":1101},[6943],{"type":52,"value":4991},{"type":46,"tag":405,"props":6945,"children":6946},{"style":1101},[6947],{"type":52,"value":1281},{"type":46,"tag":405,"props":6949,"children":6950},{"style":1020},[6951],{"type":52,"value":3571},{"type":46,"tag":405,"props":6953,"children":6954},{"style":1101},[6955],{"type":52,"value":1123},{"type":46,"tag":405,"props":6957,"children":6958},{"style":1101},[6959],{"type":52,"value":1128},{"type":46,"tag":405,"props":6961,"children":6962},{"style":1131},[6963],{"type":52,"value":6964}," 200",{"type":46,"tag":405,"props":6966,"children":6967},{"style":1101},[6968],{"type":52,"value":3589},{"type":46,"tag":405,"props":6970,"children":6971},{"style":1101},[6972],{"type":52,"value":1281},{"type":46,"tag":405,"props":6974,"children":6975},{"style":1020},[6976],{"type":52,"value":3598},{"type":46,"tag":405,"props":6978,"children":6979},{"style":1101},[6980],{"type":52,"value":1123},{"type":46,"tag":405,"props":6982,"children":6983},{"style":1101},[6984],{"type":52,"value":1128},{"type":46,"tag":405,"props":6986,"children":6987},{"style":1131},[6988],{"type":52,"value":6932},{"type":46,"tag":405,"props":6990,"children":6991},{"style":1101},[6992],{"type":52,"value":3616},{"type":46,"tag":405,"props":6994,"children":6995},{"class":970,"line":1016},[6996,7000,7004,7008,7012,7016,7021,7025,7029,7033,7037,7041,7046],{"type":46,"tag":405,"props":6997,"children":6998},{"style":1101},[6999],{"type":52,"value":4991},{"type":46,"tag":405,"props":7001,"children":7002},{"style":1101},[7003],{"type":52,"value":1281},{"type":46,"tag":405,"props":7005,"children":7006},{"style":1020},[7007],{"type":52,"value":3571},{"type":46,"tag":405,"props":7009,"children":7010},{"style":1101},[7011],{"type":52,"value":1123},{"type":46,"tag":405,"props":7013,"children":7014},{"style":1101},[7015],{"type":52,"value":1128},{"type":46,"tag":405,"props":7017,"children":7018},{"style":1131},[7019],{"type":52,"value":7020}," 500",{"type":46,"tag":405,"props":7022,"children":7023},{"style":1101},[7024],{"type":52,"value":3589},{"type":46,"tag":405,"props":7026,"children":7027},{"style":1101},[7028],{"type":52,"value":1281},{"type":46,"tag":405,"props":7030,"children":7031},{"style":1020},[7032],{"type":52,"value":3598},{"type":46,"tag":405,"props":7034,"children":7035},{"style":1101},[7036],{"type":52,"value":1123},{"type":46,"tag":405,"props":7038,"children":7039},{"style":1101},[7040],{"type":52,"value":1128},{"type":46,"tag":405,"props":7042,"children":7043},{"style":1131},[7044],{"type":52,"value":7045}," 4400",{"type":46,"tag":405,"props":7047,"children":7048},{"style":1101},[7049],{"type":52,"value":3673},{"type":46,"tag":405,"props":7051,"children":7052},{"class":970,"line":1036},[7053],{"type":46,"tag":405,"props":7054,"children":7055},{"style":1101},[7056],{"type":52,"value":7057},"  ]\n",{"type":46,"tag":405,"props":7059,"children":7060},{"class":970,"line":1045},[7061],{"type":46,"tag":405,"props":7062,"children":7063},{"style":1101},[7064],{"type":52,"value":1172},{"type":46,"tag":55,"props":7066,"children":7067},{},[7068,7073],{"type":46,"tag":68,"props":7069,"children":7070},{},[7071],{"type":52,"value":7072},"Important",{"type":52,"value":7074},": The last block should sell a significant amount of tokens (typically 30%+) to prevent price manipulation.",{"type":46,"tag":246,"props":7076,"children":7077},{},[],{"type":46,"tag":92,"props":7079,"children":7081},{"id":7080},"encoding-supply-schedule-for-onchain-deployment",[7082],{"type":52,"value":7083},"Encoding Supply Schedule for Onchain Deployment",{"type":46,"tag":55,"props":7085,"children":7086},{},[7087,7089,7094,7096,7102],{"type":52,"value":7088},"After generating a supply schedule, it must be encoded into a bytes format for the onchain ",{"type":46,"tag":76,"props":7090,"children":7092},{"className":7091},[],[7093],{"type":52,"value":2988},{"type":52,"value":7095}," struct. The encoding packs each ",{"type":46,"tag":76,"props":7097,"children":7099},{"className":7098},[],[7100],{"type":52,"value":7101},"{mps, blockDelta}",{"type":52,"value":7103}," element into a uint64.",{"type":46,"tag":111,"props":7105,"children":7107},{"id":7106},"encoding-algorithm",[7108],{"type":52,"value":7109},"Encoding Algorithm",{"type":46,"tag":55,"props":7111,"children":7112},{},[7113],{"type":52,"value":7114},"For each element in the supply schedule:",{"type":46,"tag":118,"props":7116,"children":7117},{},[7118,7154,7172],{"type":46,"tag":122,"props":7119,"children":7120},{},[7121,7126,7128],{"type":46,"tag":68,"props":7122,"children":7123},{},[7124],{"type":52,"value":7125},"Create uint64",{"type":52,"value":7127}," (64 bits \u002F 8 bytes) where:\n",{"type":46,"tag":143,"props":7129,"children":7130},{},[7131,7143],{"type":46,"tag":122,"props":7132,"children":7133},{},[7134,7136,7141],{"type":52,"value":7135},"First 24 bits: ",{"type":46,"tag":76,"props":7137,"children":7139},{"className":7138},[],[7140],{"type":52,"value":3571},{"type":52,"value":7142}," value (left padded)",{"type":46,"tag":122,"props":7144,"children":7145},{},[7146,7148,7153],{"type":52,"value":7147},"Next 40 bits: ",{"type":46,"tag":76,"props":7149,"children":7151},{"className":7150},[],[7152],{"type":52,"value":3598},{"type":52,"value":7142},{"type":46,"tag":122,"props":7155,"children":7156},{},[7157,7162,7164,7170],{"type":46,"tag":68,"props":7158,"children":7159},{},[7160],{"type":52,"value":7161},"Pack all uint64s",{"type":52,"value":7163}," together via ",{"type":46,"tag":76,"props":7165,"children":7167},{"className":7166},[],[7168],{"type":52,"value":7169},"encodePacked",{"type":52,"value":7171}," (concatenate bytes)",{"type":46,"tag":122,"props":7173,"children":7174},{},[7175,7180,7182,7188],{"type":46,"tag":68,"props":7176,"children":7177},{},[7178],{"type":52,"value":7179},"Return",{"type":52,"value":7181}," as hex bytes string with ",{"type":46,"tag":76,"props":7183,"children":7185},{"className":7184},[],[7186],{"type":52,"value":7187},"0x",{"type":52,"value":7189}," prefix",{"type":46,"tag":111,"props":7191,"children":7193},{"id":7192},"encoding-formula",[7194],{"type":52,"value":7195},"Encoding Formula",{"type":46,"tag":958,"props":7197,"children":7199},{"className":2993,"code":7198,"language":2995,"meta":963,"style":963},"\u002F\u002F Solidity equivalent\nuint64 packed = (uint64(mps) \u003C\u003C 40) | uint64(blockDelta);\nbytes memory auctionStepsData = abi.encodePacked(packed1, packed2, ...);\n",[7200],{"type":46,"tag":76,"props":7201,"children":7202},{"__ignoreMap":963},[7203,7211,7219],{"type":46,"tag":405,"props":7204,"children":7205},{"class":970,"line":971},[7206],{"type":46,"tag":405,"props":7207,"children":7208},{},[7209],{"type":52,"value":7210},"\u002F\u002F Solidity equivalent\n",{"type":46,"tag":405,"props":7212,"children":7213},{"class":970,"line":981},[7214],{"type":46,"tag":405,"props":7215,"children":7216},{},[7217],{"type":52,"value":7218},"uint64 packed = (uint64(mps) \u003C\u003C 40) | uint64(blockDelta);\n",{"type":46,"tag":405,"props":7220,"children":7221},{"class":970,"line":997},[7222],{"type":46,"tag":405,"props":7223,"children":7224},{},[7225],{"type":52,"value":7226},"bytes memory auctionStepsData = abi.encodePacked(packed1, packed2, ...);\n",{"type":46,"tag":111,"props":7228,"children":7230},{"id":7229},"value-constraints",[7231],{"type":52,"value":7232},"Value Constraints",{"type":46,"tag":143,"props":7234,"children":7235},{},[7236,7245],{"type":46,"tag":122,"props":7237,"children":7238},{},[7239,7243],{"type":46,"tag":68,"props":7240,"children":7241},{},[7242],{"type":52,"value":3571},{"type":52,"value":7244},": Must fit in 24 bits (max: 16,777,215)",{"type":46,"tag":122,"props":7246,"children":7247},{},[7248,7252],{"type":46,"tag":68,"props":7249,"children":7250},{},[7251],{"type":52,"value":3598},{"type":52,"value":7253},": Must fit in 40 bits (max: 1,099,511,627,775)",{"type":46,"tag":111,"props":7255,"children":7257},{"id":7256},"using-the-mcp-tool",[7258],{"type":52,"value":7259},"Using the MCP Tool",{"type":46,"tag":55,"props":7261,"children":7262},{},[7263,7265,7271],{"type":52,"value":7264},"Use the ",{"type":46,"tag":76,"props":7266,"children":7268},{"className":7267},[],[7269],{"type":52,"value":7270},"encode_supply_schedule",{"type":52,"value":7272}," MCP tool to encode a supply schedule:",{"type":46,"tag":55,"props":7274,"children":7275},{},[7276],{"type":46,"tag":68,"props":7277,"children":7278},{},[7279],{"type":52,"value":7280},"Input:",{"type":46,"tag":958,"props":7282,"children":7284},{"className":1089,"code":7283,"language":1091,"meta":963,"style":963},"{\n  \"schedule\": [\n    { \"mps\": 0, \"blockDelta\": 43200 },\n    { \"mps\": 54, \"blockDelta\": 10894 },\n    { \"mps\": 68, \"blockDelta\": 8517 }\n  ]\n}\n",[7285],{"type":46,"tag":76,"props":7286,"children":7287},{"__ignoreMap":963},[7288,7295,7318,7373,7428,7483,7490],{"type":46,"tag":405,"props":7289,"children":7290},{"class":970,"line":971},[7291],{"type":46,"tag":405,"props":7292,"children":7293},{"style":1101},[7294],{"type":52,"value":1104},{"type":46,"tag":405,"props":7296,"children":7297},{"class":970,"line":981},[7298,7302,7306,7310,7314],{"type":46,"tag":405,"props":7299,"children":7300},{"style":1101},[7301],{"type":52,"value":1112},{"type":46,"tag":405,"props":7303,"children":7304},{"style":1115},[7305],{"type":52,"value":4971},{"type":46,"tag":405,"props":7307,"children":7308},{"style":1101},[7309],{"type":52,"value":1123},{"type":46,"tag":405,"props":7311,"children":7312},{"style":1101},[7313],{"type":52,"value":1128},{"type":46,"tag":405,"props":7315,"children":7316},{"style":1101},[7317],{"type":52,"value":3554},{"type":46,"tag":405,"props":7319,"children":7320},{"class":970,"line":997},[7321,7325,7329,7333,7337,7341,7345,7349,7353,7357,7361,7365,7369],{"type":46,"tag":405,"props":7322,"children":7323},{"style":1101},[7324],{"type":52,"value":4991},{"type":46,"tag":405,"props":7326,"children":7327},{"style":1101},[7328],{"type":52,"value":1281},{"type":46,"tag":405,"props":7330,"children":7331},{"style":1020},[7332],{"type":52,"value":3571},{"type":46,"tag":405,"props":7334,"children":7335},{"style":1101},[7336],{"type":52,"value":1123},{"type":46,"tag":405,"props":7338,"children":7339},{"style":1101},[7340],{"type":52,"value":1128},{"type":46,"tag":405,"props":7342,"children":7343},{"style":1131},[7344],{"type":52,"value":3526},{"type":46,"tag":405,"props":7346,"children":7347},{"style":1101},[7348],{"type":52,"value":3589},{"type":46,"tag":405,"props":7350,"children":7351},{"style":1101},[7352],{"type":52,"value":1281},{"type":46,"tag":405,"props":7354,"children":7355},{"style":1020},[7356],{"type":52,"value":3598},{"type":46,"tag":405,"props":7358,"children":7359},{"style":1101},[7360],{"type":52,"value":1123},{"type":46,"tag":405,"props":7362,"children":7363},{"style":1101},[7364],{"type":52,"value":1128},{"type":46,"tag":405,"props":7366,"children":7367},{"style":1131},[7368],{"type":52,"value":6299},{"type":46,"tag":405,"props":7370,"children":7371},{"style":1101},[7372],{"type":52,"value":3616},{"type":46,"tag":405,"props":7374,"children":7375},{"class":970,"line":1007},[7376,7380,7384,7388,7392,7396,7400,7404,7408,7412,7416,7420,7424],{"type":46,"tag":405,"props":7377,"children":7378},{"style":1101},[7379],{"type":52,"value":4991},{"type":46,"tag":405,"props":7381,"children":7382},{"style":1101},[7383],{"type":52,"value":1281},{"type":46,"tag":405,"props":7385,"children":7386},{"style":1020},[7387],{"type":52,"value":3571},{"type":46,"tag":405,"props":7389,"children":7390},{"style":1101},[7391],{"type":52,"value":1123},{"type":46,"tag":405,"props":7393,"children":7394},{"style":1101},[7395],{"type":52,"value":1128},{"type":46,"tag":405,"props":7397,"children":7398},{"style":1131},[7399],{"type":52,"value":5012},{"type":46,"tag":405,"props":7401,"children":7402},{"style":1101},[7403],{"type":52,"value":3589},{"type":46,"tag":405,"props":7405,"children":7406},{"style":1101},[7407],{"type":52,"value":1281},{"type":46,"tag":405,"props":7409,"children":7410},{"style":1020},[7411],{"type":52,"value":3598},{"type":46,"tag":405,"props":7413,"children":7414},{"style":1101},[7415],{"type":52,"value":1123},{"type":46,"tag":405,"props":7417,"children":7418},{"style":1101},[7419],{"type":52,"value":1128},{"type":46,"tag":405,"props":7421,"children":7422},{"style":1131},[7423],{"type":52,"value":5037},{"type":46,"tag":405,"props":7425,"children":7426},{"style":1101},[7427],{"type":52,"value":3616},{"type":46,"tag":405,"props":7429,"children":7430},{"class":970,"line":1016},[7431,7435,7439,7443,7447,7451,7455,7459,7463,7467,7471,7475,7479],{"type":46,"tag":405,"props":7432,"children":7433},{"style":1101},[7434],{"type":52,"value":4991},{"type":46,"tag":405,"props":7436,"children":7437},{"style":1101},[7438],{"type":52,"value":1281},{"type":46,"tag":405,"props":7440,"children":7441},{"style":1020},[7442],{"type":52,"value":3571},{"type":46,"tag":405,"props":7444,"children":7445},{"style":1101},[7446],{"type":52,"value":1123},{"type":46,"tag":405,"props":7448,"children":7449},{"style":1101},[7450],{"type":52,"value":1128},{"type":46,"tag":405,"props":7452,"children":7453},{"style":1131},[7454],{"type":52,"value":5069},{"type":46,"tag":405,"props":7456,"children":7457},{"style":1101},[7458],{"type":52,"value":3589},{"type":46,"tag":405,"props":7460,"children":7461},{"style":1101},[7462],{"type":52,"value":1281},{"type":46,"tag":405,"props":7464,"children":7465},{"style":1020},[7466],{"type":52,"value":3598},{"type":46,"tag":405,"props":7468,"children":7469},{"style":1101},[7470],{"type":52,"value":1123},{"type":46,"tag":405,"props":7472,"children":7473},{"style":1101},[7474],{"type":52,"value":1128},{"type":46,"tag":405,"props":7476,"children":7477},{"style":1131},[7478],{"type":52,"value":5094},{"type":46,"tag":405,"props":7480,"children":7481},{"style":1101},[7482],{"type":52,"value":3673},{"type":46,"tag":405,"props":7484,"children":7485},{"class":970,"line":1036},[7486],{"type":46,"tag":405,"props":7487,"children":7488},{"style":1101},[7489],{"type":52,"value":7057},{"type":46,"tag":405,"props":7491,"children":7492},{"class":970,"line":1045},[7493],{"type":46,"tag":405,"props":7494,"children":7495},{"style":1101},[7496],{"type":52,"value":1172},{"type":46,"tag":55,"props":7498,"children":7499},{},[7500],{"type":46,"tag":68,"props":7501,"children":7502},{},[7503],{"type":52,"value":6210},{"type":46,"tag":958,"props":7505,"children":7507},{"className":1089,"code":7506,"language":1091,"meta":963,"style":963},"{\n  \"encoded\": \"0x0000000000a8c00000003600002aa60000004400002145...\",\n  \"length_bytes\": 112,\n  \"num_elements\": 14\n}\n",[7508],{"type":46,"tag":76,"props":7509,"children":7510},{"__ignoreMap":963},[7511,7518,7555,7584,7609],{"type":46,"tag":405,"props":7512,"children":7513},{"class":970,"line":971},[7514],{"type":46,"tag":405,"props":7515,"children":7516},{"style":1101},[7517],{"type":52,"value":1104},{"type":46,"tag":405,"props":7519,"children":7520},{"class":970,"line":981},[7521,7525,7530,7534,7538,7542,7547,7551],{"type":46,"tag":405,"props":7522,"children":7523},{"style":1101},[7524],{"type":52,"value":1112},{"type":46,"tag":405,"props":7526,"children":7527},{"style":1115},[7528],{"type":52,"value":7529},"encoded",{"type":46,"tag":405,"props":7531,"children":7532},{"style":1101},[7533],{"type":52,"value":1123},{"type":46,"tag":405,"props":7535,"children":7536},{"style":1101},[7537],{"type":52,"value":1128},{"type":46,"tag":405,"props":7539,"children":7540},{"style":1101},[7541],{"type":52,"value":1281},{"type":46,"tag":405,"props":7543,"children":7544},{"style":991},[7545],{"type":52,"value":7546},"0x0000000000a8c00000003600002aa60000004400002145...",{"type":46,"tag":405,"props":7548,"children":7549},{"style":1101},[7550],{"type":52,"value":1123},{"type":46,"tag":405,"props":7552,"children":7553},{"style":1101},[7554],{"type":52,"value":1139},{"type":46,"tag":405,"props":7556,"children":7557},{"class":970,"line":997},[7558,7562,7567,7571,7575,7580],{"type":46,"tag":405,"props":7559,"children":7560},{"style":1101},[7561],{"type":52,"value":1112},{"type":46,"tag":405,"props":7563,"children":7564},{"style":1115},[7565],{"type":52,"value":7566},"length_bytes",{"type":46,"tag":405,"props":7568,"children":7569},{"style":1101},[7570],{"type":52,"value":1123},{"type":46,"tag":405,"props":7572,"children":7573},{"style":1101},[7574],{"type":52,"value":1128},{"type":46,"tag":405,"props":7576,"children":7577},{"style":1131},[7578],{"type":52,"value":7579}," 112",{"type":46,"tag":405,"props":7581,"children":7582},{"style":1101},[7583],{"type":52,"value":1139},{"type":46,"tag":405,"props":7585,"children":7586},{"class":970,"line":1007},[7587,7591,7596,7600,7604],{"type":46,"tag":405,"props":7588,"children":7589},{"style":1101},[7590],{"type":52,"value":1112},{"type":46,"tag":405,"props":7592,"children":7593},{"style":1115},[7594],{"type":52,"value":7595},"num_elements",{"type":46,"tag":405,"props":7597,"children":7598},{"style":1101},[7599],{"type":52,"value":1123},{"type":46,"tag":405,"props":7601,"children":7602},{"style":1101},[7603],{"type":52,"value":1128},{"type":46,"tag":405,"props":7605,"children":7606},{"style":1131},[7607],{"type":52,"value":7608}," 14\n",{"type":46,"tag":405,"props":7610,"children":7611},{"class":970,"line":1016},[7612],{"type":46,"tag":405,"props":7613,"children":7614},{"style":1101},[7615],{"type":52,"value":1172},{"type":46,"tag":111,"props":7617,"children":7619},{"id":7618},"manual-encoding-example-python",[7620],{"type":52,"value":7621},"Manual Encoding Example (Python)",{"type":46,"tag":958,"props":7623,"children":7625},{"className":2799,"code":7624,"language":2801,"meta":963,"style":963},"def encode_supply_schedule(schedule):\n    \"\"\"Encode supply schedule to bytes.\"\"\"\n    encoded_bytes = b''\n\n    for item in schedule:\n        mps = item['mps']\n        block_delta = item['blockDelta']\n\n        # Validate bounds\n        assert mps \u003C 2**24, f\"mps {mps} exceeds 24-bit max\"\n        assert block_delta \u003C 2**40, f\"blockDelta {block_delta} exceeds 40-bit max\"\n\n        # Pack into uint64: mps (24 bits) \u003C\u003C 40 | blockDelta (40 bits)\n        packed = (mps \u003C\u003C 40) | block_delta\n\n        # Convert to 8 bytes (big-endian)\n        encoded_bytes += packed.to_bytes(8, byteorder='big')\n\n    return '0x' + encoded_bytes.hex()\n\n# Example\nschedule = [\n    {\"mps\": 0, \"blockDelta\": 43200},\n    {\"mps\": 54, \"blockDelta\": 10894}\n]\nencoded = encode_supply_schedule(schedule)\nprint(encoded)  # 0x0000000000a8c00000003600002aa6\n",[7626],{"type":46,"tag":76,"props":7627,"children":7628},{"__ignoreMap":963},[7629,7637,7645,7653,7660,7668,7676,7684,7691,7699,7707,7715,7722,7730,7738,7745,7753,7761,7768,7776,7783,7791,7799,7807,7815,7822,7830],{"type":46,"tag":405,"props":7630,"children":7631},{"class":970,"line":971},[7632],{"type":46,"tag":405,"props":7633,"children":7634},{},[7635],{"type":52,"value":7636},"def encode_supply_schedule(schedule):\n",{"type":46,"tag":405,"props":7638,"children":7639},{"class":970,"line":981},[7640],{"type":46,"tag":405,"props":7641,"children":7642},{},[7643],{"type":52,"value":7644},"    \"\"\"Encode supply schedule to bytes.\"\"\"\n",{"type":46,"tag":405,"props":7646,"children":7647},{"class":970,"line":997},[7648],{"type":46,"tag":405,"props":7649,"children":7650},{},[7651],{"type":52,"value":7652},"    encoded_bytes = b''\n",{"type":46,"tag":405,"props":7654,"children":7655},{"class":970,"line":1007},[7656],{"type":46,"tag":405,"props":7657,"children":7658},{"emptyLinePlaceholder":1001},[7659],{"type":52,"value":1004},{"type":46,"tag":405,"props":7661,"children":7662},{"class":970,"line":1016},[7663],{"type":46,"tag":405,"props":7664,"children":7665},{},[7666],{"type":52,"value":7667},"    for item in schedule:\n",{"type":46,"tag":405,"props":7669,"children":7670},{"class":970,"line":1036},[7671],{"type":46,"tag":405,"props":7672,"children":7673},{},[7674],{"type":52,"value":7675},"        mps = item['mps']\n",{"type":46,"tag":405,"props":7677,"children":7678},{"class":970,"line":1045},[7679],{"type":46,"tag":405,"props":7680,"children":7681},{},[7682],{"type":52,"value":7683},"        block_delta = item['blockDelta']\n",{"type":46,"tag":405,"props":7685,"children":7686},{"class":970,"line":1053},[7687],{"type":46,"tag":405,"props":7688,"children":7689},{"emptyLinePlaceholder":1001},[7690],{"type":52,"value":1004},{"type":46,"tag":405,"props":7692,"children":7693},{"class":970,"line":1062},[7694],{"type":46,"tag":405,"props":7695,"children":7696},{},[7697],{"type":52,"value":7698},"        # Validate bounds\n",{"type":46,"tag":405,"props":7700,"children":7701},{"class":970,"line":1486},[7702],{"type":46,"tag":405,"props":7703,"children":7704},{},[7705],{"type":52,"value":7706},"        assert mps \u003C 2**24, f\"mps {mps} exceeds 24-bit max\"\n",{"type":46,"tag":405,"props":7708,"children":7709},{"class":970,"line":1515},[7710],{"type":46,"tag":405,"props":7711,"children":7712},{},[7713],{"type":52,"value":7714},"        assert block_delta \u003C 2**40, f\"blockDelta {block_delta} exceeds 40-bit max\"\n",{"type":46,"tag":405,"props":7716,"children":7717},{"class":970,"line":1543},[7718],{"type":46,"tag":405,"props":7719,"children":7720},{"emptyLinePlaceholder":1001},[7721],{"type":52,"value":1004},{"type":46,"tag":405,"props":7723,"children":7724},{"class":970,"line":1579},[7725],{"type":46,"tag":405,"props":7726,"children":7727},{},[7728],{"type":52,"value":7729},"        # Pack into uint64: mps (24 bits) \u003C\u003C 40 | blockDelta (40 bits)\n",{"type":46,"tag":405,"props":7731,"children":7732},{"class":970,"line":1607},[7733],{"type":46,"tag":405,"props":7734,"children":7735},{},[7736],{"type":52,"value":7737},"        packed = (mps \u003C\u003C 40) | block_delta\n",{"type":46,"tag":405,"props":7739,"children":7740},{"class":970,"line":1635},[7741],{"type":46,"tag":405,"props":7742,"children":7743},{"emptyLinePlaceholder":1001},[7744],{"type":52,"value":1004},{"type":46,"tag":405,"props":7746,"children":7747},{"class":970,"line":1669},[7748],{"type":46,"tag":405,"props":7749,"children":7750},{},[7751],{"type":52,"value":7752},"        # Convert to 8 bytes (big-endian)\n",{"type":46,"tag":405,"props":7754,"children":7755},{"class":970,"line":1678},[7756],{"type":46,"tag":405,"props":7757,"children":7758},{},[7759],{"type":52,"value":7760},"        encoded_bytes += packed.to_bytes(8, byteorder='big')\n",{"type":46,"tag":405,"props":7762,"children":7763},{"class":970,"line":2305},[7764],{"type":46,"tag":405,"props":7765,"children":7766},{"emptyLinePlaceholder":1001},[7767],{"type":52,"value":1004},{"type":46,"tag":405,"props":7769,"children":7770},{"class":970,"line":2333},[7771],{"type":46,"tag":405,"props":7772,"children":7773},{},[7774],{"type":52,"value":7775},"    return '0x' + encoded_bytes.hex()\n",{"type":46,"tag":405,"props":7777,"children":7778},{"class":970,"line":2341},[7779],{"type":46,"tag":405,"props":7780,"children":7781},{"emptyLinePlaceholder":1001},[7782],{"type":52,"value":1004},{"type":46,"tag":405,"props":7784,"children":7785},{"class":970,"line":2358},[7786],{"type":46,"tag":405,"props":7787,"children":7788},{},[7789],{"type":52,"value":7790},"# Example\n",{"type":46,"tag":405,"props":7792,"children":7793},{"class":970,"line":2387},[7794],{"type":46,"tag":405,"props":7795,"children":7796},{},[7797],{"type":52,"value":7798},"schedule = [\n",{"type":46,"tag":405,"props":7800,"children":7801},{"class":970,"line":2407},[7802],{"type":46,"tag":405,"props":7803,"children":7804},{},[7805],{"type":52,"value":7806},"    {\"mps\": 0, \"blockDelta\": 43200},\n",{"type":46,"tag":405,"props":7808,"children":7809},{"class":970,"line":2436},[7810],{"type":46,"tag":405,"props":7811,"children":7812},{},[7813],{"type":52,"value":7814},"    {\"mps\": 54, \"blockDelta\": 10894}\n",{"type":46,"tag":405,"props":7816,"children":7817},{"class":970,"line":2465},[7818],{"type":46,"tag":405,"props":7819,"children":7820},{},[7821],{"type":52,"value":1666},{"type":46,"tag":405,"props":7823,"children":7824},{"class":970,"line":2473},[7825],{"type":46,"tag":405,"props":7826,"children":7827},{},[7828],{"type":52,"value":7829},"encoded = encode_supply_schedule(schedule)\n",{"type":46,"tag":405,"props":7831,"children":7832},{"class":970,"line":2490},[7833],{"type":46,"tag":405,"props":7834,"children":7835},{},[7836],{"type":52,"value":7837},"print(encoded)  # 0x0000000000a8c00000003600002aa6\n",{"type":46,"tag":111,"props":7839,"children":7841},{"id":7840},"integration-with-configuration-flow",[7842],{"type":52,"value":7843},"Integration with Configuration Flow",{"type":46,"tag":55,"props":7845,"children":7846},{},[7847],{"type":52,"value":7848},"When using the configurator skill:",{"type":46,"tag":118,"props":7850,"children":7851},{},[7852,7869,7884,7894],{"type":46,"tag":122,"props":7853,"children":7854},{},[7855,7860,7862,7867],{"type":46,"tag":68,"props":7856,"children":7857},{},[7858],{"type":52,"value":7859},"Generate schedule",{"type":52,"value":7861}," via ",{"type":46,"tag":76,"props":7863,"children":7865},{"className":7864},[],[7866],{"type":52,"value":4736},{"type":52,"value":7868}," MCP tool",{"type":46,"tag":122,"props":7870,"children":7871},{},[7872,7877,7878,7883],{"type":46,"tag":68,"props":7873,"children":7874},{},[7875],{"type":52,"value":7876},"Encode schedule",{"type":52,"value":7861},{"type":46,"tag":76,"props":7879,"children":7881},{"className":7880},[],[7882],{"type":52,"value":7270},{"type":52,"value":7868},{"type":46,"tag":122,"props":7885,"children":7886},{},[7887,7892],{"type":46,"tag":68,"props":7888,"children":7889},{},[7890],{"type":52,"value":7891},"Include encoded bytes",{"type":52,"value":7893}," in final configuration output",{"type":46,"tag":122,"props":7895,"children":7896},{},[7897,7902,7904,7910],{"type":46,"tag":68,"props":7898,"children":7899},{},[7900],{"type":52,"value":7901},"Pass to deployment",{"type":52,"value":7903}," script as ",{"type":46,"tag":76,"props":7905,"children":7907},{"className":7906},[],[7908],{"type":52,"value":7909},"auctionStepsData",{"type":52,"value":7911}," parameter",{"type":46,"tag":55,"props":7913,"children":7914},{},[7915,7917,7923,7925,7931],{"type":52,"value":7916},"The encoded bytes string is what gets passed to the Factory's ",{"type":46,"tag":76,"props":7918,"children":7920},{"className":7919},[],[7921],{"type":52,"value":7922},"initializeDistribution",{"type":52,"value":7924}," function as part of the ",{"type":46,"tag":76,"props":7926,"children":7928},{"className":7927},[],[7929],{"type":52,"value":7930},"configData",{"type":52,"value":7932}," parameter.",{"type":46,"tag":246,"props":7934,"children":7935},{},[],{"type":46,"tag":92,"props":7937,"children":7939},{"id":7938},"getting-current-block-number",[7940],{"type":52,"value":7941},"Getting Current Block Number",{"type":46,"tag":55,"props":7943,"children":7944},{},[7945,7947,7952],{"type":52,"value":7946},"Use public RPCs to fetch current block for ",{"type":46,"tag":76,"props":7948,"children":7950},{"className":7949},[],[7951],{"type":52,"value":826},{"type":52,"value":7953}," configuration:",{"type":46,"tag":111,"props":7955,"children":7957},{"id":7956},"available-public-rpcs",[7958],{"type":52,"value":7959},"Available Public RPCs",{"type":46,"tag":2898,"props":7961,"children":7962},{},[7963,7979],{"type":46,"tag":2902,"props":7964,"children":7965},{},[7966],{"type":46,"tag":2906,"props":7967,"children":7968},{},[7969,7974],{"type":46,"tag":2910,"props":7970,"children":7971},{},[7972],{"type":52,"value":7973},"Network",{"type":46,"tag":2910,"props":7975,"children":7976},{},[7977],{"type":52,"value":7978},"RPC URL",{"type":46,"tag":2921,"props":7980,"children":7981},{},[7982,7999,8015,8030,8045],{"type":46,"tag":2906,"props":7983,"children":7984},{},[7985,7989],{"type":46,"tag":2928,"props":7986,"children":7987},{},[7988],{"type":52,"value":1987},{"type":46,"tag":2928,"props":7990,"children":7991},{},[7992],{"type":46,"tag":7993,"props":7994,"children":7997},"a",{"href":2038,"rel":7995},[7996],"nofollow",[7998],{"type":52,"value":2038},{"type":46,"tag":2906,"props":8000,"children":8001},{},[8002,8006],{"type":46,"tag":2928,"props":8003,"children":8004},{},[8005],{"type":52,"value":2119},{"type":46,"tag":2928,"props":8007,"children":8008},{},[8009],{"type":46,"tag":7993,"props":8010,"children":8013},{"href":8011,"rel":8012},"https:\u002F\u002Funichain-rpc.publicnode.com",[7996],[8014],{"type":52,"value":8011},{"type":46,"tag":2906,"props":8016,"children":8017},{},[8018,8022],{"type":46,"tag":2928,"props":8019,"children":8020},{},[8021],{"type":52,"value":2376},{"type":46,"tag":2928,"props":8023,"children":8024},{},[8025],{"type":46,"tag":7993,"props":8026,"children":8028},{"href":2425,"rel":8027},[7996],[8029],{"type":52,"value":2425},{"type":46,"tag":2906,"props":8031,"children":8032},{},[8033,8037],{"type":46,"tag":2928,"props":8034,"children":8035},{},[8036],{"type":52,"value":2508},{"type":46,"tag":2928,"props":8038,"children":8039},{},[8040],{"type":46,"tag":7993,"props":8041,"children":8043},{"href":2557,"rel":8042},[7996],[8044],{"type":52,"value":2557},{"type":46,"tag":2906,"props":8046,"children":8047},{},[8048,8052],{"type":46,"tag":2928,"props":8049,"children":8050},{},[8051],{"type":52,"value":2640},{"type":46,"tag":2928,"props":8053,"children":8054},{},[8055],{"type":46,"tag":7993,"props":8056,"children":8058},{"href":2688,"rel":8057},[7996],[8059],{"type":52,"value":2688},{"type":46,"tag":111,"props":8061,"children":8063},{"id":8062},"fetch-block-number",[8064],{"type":52,"value":8065},"Fetch Block Number",{"type":46,"tag":958,"props":8067,"children":8069},{"className":960,"code":8068,"language":962,"meta":963,"style":963},"curl -X POST \"https:\u002F\u002Fmainnet.base.org\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"eth_blockNumber\",\n    \"params\": [],\n    \"id\": 1\n  }'\n",[8070],{"type":46,"tag":76,"props":8071,"children":8072},{"__ignoreMap":963},[8073,8108,8133,8149,8157,8165,8173,8181],{"type":46,"tag":405,"props":8074,"children":8075},{"class":970,"line":971},[8076,8081,8086,8091,8095,8099,8103],{"type":46,"tag":405,"props":8077,"children":8078},{"style":1020},[8079],{"type":52,"value":8080},"curl",{"type":46,"tag":405,"props":8082,"children":8083},{"style":991},[8084],{"type":52,"value":8085}," -X",{"type":46,"tag":405,"props":8087,"children":8088},{"style":991},[8089],{"type":52,"value":8090}," POST",{"type":46,"tag":405,"props":8092,"children":8093},{"style":1101},[8094],{"type":52,"value":1281},{"type":46,"tag":405,"props":8096,"children":8097},{"style":991},[8098],{"type":52,"value":2425},{"type":46,"tag":405,"props":8100,"children":8101},{"style":1101},[8102],{"type":52,"value":1123},{"type":46,"tag":405,"props":8104,"children":8105},{"style":1316},[8106],{"type":52,"value":8107}," \\\n",{"type":46,"tag":405,"props":8109,"children":8110},{"class":970,"line":981},[8111,8116,8120,8125,8129],{"type":46,"tag":405,"props":8112,"children":8113},{"style":991},[8114],{"type":52,"value":8115},"  -H",{"type":46,"tag":405,"props":8117,"children":8118},{"style":1101},[8119],{"type":52,"value":1281},{"type":46,"tag":405,"props":8121,"children":8122},{"style":991},[8123],{"type":52,"value":8124},"Content-Type: application\u002Fjson",{"type":46,"tag":405,"props":8126,"children":8127},{"style":1101},[8128],{"type":52,"value":1123},{"type":46,"tag":405,"props":8130,"children":8131},{"style":1316},[8132],{"type":52,"value":8107},{"type":46,"tag":405,"props":8134,"children":8135},{"class":970,"line":997},[8136,8141,8145],{"type":46,"tag":405,"props":8137,"children":8138},{"style":991},[8139],{"type":52,"value":8140},"  -d",{"type":46,"tag":405,"props":8142,"children":8143},{"style":1101},[8144],{"type":52,"value":1982},{"type":46,"tag":405,"props":8146,"children":8147},{"style":991},[8148],{"type":52,"value":1104},{"type":46,"tag":405,"props":8150,"children":8151},{"class":970,"line":1007},[8152],{"type":46,"tag":405,"props":8153,"children":8154},{"style":991},[8155],{"type":52,"value":8156},"    \"jsonrpc\": \"2.0\",\n",{"type":46,"tag":405,"props":8158,"children":8159},{"class":970,"line":1016},[8160],{"type":46,"tag":405,"props":8161,"children":8162},{"style":991},[8163],{"type":52,"value":8164},"    \"method\": \"eth_blockNumber\",\n",{"type":46,"tag":405,"props":8166,"children":8167},{"class":970,"line":1036},[8168],{"type":46,"tag":405,"props":8169,"children":8170},{"style":991},[8171],{"type":52,"value":8172},"    \"params\": [],\n",{"type":46,"tag":405,"props":8174,"children":8175},{"class":970,"line":1045},[8176],{"type":46,"tag":405,"props":8177,"children":8178},{"style":991},[8179],{"type":52,"value":8180},"    \"id\": 1\n",{"type":46,"tag":405,"props":8182,"children":8183},{"class":970,"line":1053},[8184,8189],{"type":46,"tag":405,"props":8185,"children":8186},{"style":991},[8187],{"type":52,"value":8188},"  }",{"type":46,"tag":405,"props":8190,"children":8191},{"style":1101},[8192],{"type":52,"value":8193},"'\n",{"type":46,"tag":55,"props":8195,"children":8196},{},[8197],{"type":46,"tag":68,"props":8198,"children":8199},{},[8200],{"type":52,"value":8201},"Response:",{"type":46,"tag":958,"props":8203,"children":8205},{"className":1089,"code":8204,"language":1091,"meta":963,"style":963},"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": \"0x123abc\"\n}\n",[8206],{"type":46,"tag":76,"props":8207,"children":8208},{"__ignoreMap":963},[8209,8216,8253,8281,8315],{"type":46,"tag":405,"props":8210,"children":8211},{"class":970,"line":971},[8212],{"type":46,"tag":405,"props":8213,"children":8214},{"style":1101},[8215],{"type":52,"value":1104},{"type":46,"tag":405,"props":8217,"children":8218},{"class":970,"line":981},[8219,8223,8228,8232,8236,8240,8245,8249],{"type":46,"tag":405,"props":8220,"children":8221},{"style":1101},[8222],{"type":52,"value":1112},{"type":46,"tag":405,"props":8224,"children":8225},{"style":1115},[8226],{"type":52,"value":8227},"jsonrpc",{"type":46,"tag":405,"props":8229,"children":8230},{"style":1101},[8231],{"type":52,"value":1123},{"type":46,"tag":405,"props":8233,"children":8234},{"style":1101},[8235],{"type":52,"value":1128},{"type":46,"tag":405,"props":8237,"children":8238},{"style":1101},[8239],{"type":52,"value":1281},{"type":46,"tag":405,"props":8241,"children":8242},{"style":991},[8243],{"type":52,"value":8244},"2.0",{"type":46,"tag":405,"props":8246,"children":8247},{"style":1101},[8248],{"type":52,"value":1123},{"type":46,"tag":405,"props":8250,"children":8251},{"style":1101},[8252],{"type":52,"value":1139},{"type":46,"tag":405,"props":8254,"children":8255},{"class":970,"line":997},[8256,8260,8265,8269,8273,8277],{"type":46,"tag":405,"props":8257,"children":8258},{"style":1101},[8259],{"type":52,"value":1112},{"type":46,"tag":405,"props":8261,"children":8262},{"style":1115},[8263],{"type":52,"value":8264},"id",{"type":46,"tag":405,"props":8266,"children":8267},{"style":1101},[8268],{"type":52,"value":1123},{"type":46,"tag":405,"props":8270,"children":8271},{"style":1101},[8272],{"type":52,"value":1128},{"type":46,"tag":405,"props":8274,"children":8275},{"style":1131},[8276],{"type":52,"value":2143},{"type":46,"tag":405,"props":8278,"children":8279},{"style":1101},[8280],{"type":52,"value":1139},{"type":46,"tag":405,"props":8282,"children":8283},{"class":970,"line":1007},[8284,8288,8293,8297,8301,8305,8310],{"type":46,"tag":405,"props":8285,"children":8286},{"style":1101},[8287],{"type":52,"value":1112},{"type":46,"tag":405,"props":8289,"children":8290},{"style":1115},[8291],{"type":52,"value":8292},"result",{"type":46,"tag":405,"props":8294,"children":8295},{"style":1101},[8296],{"type":52,"value":1123},{"type":46,"tag":405,"props":8298,"children":8299},{"style":1101},[8300],{"type":52,"value":1128},{"type":46,"tag":405,"props":8302,"children":8303},{"style":1101},[8304],{"type":52,"value":1281},{"type":46,"tag":405,"props":8306,"children":8307},{"style":991},[8308],{"type":52,"value":8309},"0x123abc",{"type":46,"tag":405,"props":8311,"children":8312},{"style":1101},[8313],{"type":52,"value":8314},"\"\n",{"type":46,"tag":405,"props":8316,"children":8317},{"class":970,"line":1016},[8318],{"type":46,"tag":405,"props":8319,"children":8320},{"style":1101},[8321],{"type":52,"value":1172},{"type":46,"tag":55,"props":8323,"children":8324},{},[8325],{"type":52,"value":8326},"Convert hex to decimal for block number.",{"type":46,"tag":246,"props":8328,"children":8329},{},[],{"type":46,"tag":92,"props":8331,"children":8333},{"id":8332},"validation-rules",[8334],{"type":52,"value":8335},"Validation Rules",{"type":46,"tag":55,"props":8337,"children":8338},{},[8339],{"type":52,"value":8340},"Before generating configuration, ensure:",{"type":46,"tag":118,"props":8342,"children":8343},{},[8344,8359,8369,8379,8389,8399,8409,8419,8429],{"type":46,"tag":122,"props":8345,"children":8346},{},[8347,8352,8353],{"type":46,"tag":68,"props":8348,"children":8349},{},[8350],{"type":52,"value":8351},"Block constraints",{"type":52,"value":1881},{"type":46,"tag":76,"props":8354,"children":8356},{"className":8355},[],[8357],{"type":52,"value":8358},"startBlock \u003C endBlock \u003C= claimBlock",{"type":46,"tag":122,"props":8360,"children":8361},{},[8362,8367],{"type":46,"tag":68,"props":8363,"children":8364},{},[8365],{"type":52,"value":8366},"Valid addresses",{"type":52,"value":8368},": All addresses are valid Ethereum addresses (0x + 40 hex chars)",{"type":46,"tag":122,"props":8370,"children":8371},{},[8372,8377],{"type":46,"tag":68,"props":8373,"children":8374},{},[8375],{"type":52,"value":8376},"Non-negative values",{"type":52,"value":8378},": All numeric values >= 0",{"type":46,"tag":122,"props":8380,"children":8381},{},[8382,8387],{"type":46,"tag":68,"props":8383,"children":8384},{},[8385],{"type":52,"value":8386},"Floor price alignment",{"type":52,"value":8388},": Floor price must be a multiple of tick spacing",{"type":46,"tag":122,"props":8390,"children":8391},{},[8392,8397],{"type":46,"tag":68,"props":8393,"children":8394},{},[8395],{"type":52,"value":8396},"Tick spacing",{"type":52,"value":8398},": At least 1 basis point of floor price (1%, 10% recommended)",{"type":46,"tag":122,"props":8400,"children":8401},{},[8402,8407],{"type":46,"tag":68,"props":8403,"children":8404},{},[8405],{"type":52,"value":8406},"Supply schedule",{"type":52,"value":8408},": Last block sells significant tokens (~30%+)",{"type":46,"tag":122,"props":8410,"children":8411},{},[8412,8417],{"type":46,"tag":68,"props":8413,"children":8414},{},[8415],{"type":52,"value":8416},"Total supply bounds",{"type":52,"value":8418},": Max 1e30 wei (1 trillion 18-decimal tokens)",{"type":46,"tag":122,"props":8420,"children":8421},{},[8422,8427],{"type":46,"tag":68,"props":8423,"children":8424},{},[8425],{"type":52,"value":8426},"No FoT tokens",{"type":52,"value":8428},": Fee-on-transfer tokens not supported",{"type":46,"tag":122,"props":8430,"children":8431},{},[8432,8437],{"type":46,"tag":68,"props":8433,"children":8434},{},[8435],{"type":52,"value":8436},"Minimum decimals",{"type":52,"value":8438},": Do not use tokens with \u003C 6 decimals",{"type":46,"tag":246,"props":8440,"children":8441},{},[],{"type":46,"tag":92,"props":8443,"children":8445},{"id":8444},"additional-resources",[8446],{"type":52,"value":8447},"Additional Resources",{"type":46,"tag":143,"props":8449,"children":8450},{},[8451,8466,8484,8500,8516,8532,8547],{"type":46,"tag":122,"props":8452,"children":8453},{},[8454,8459,8460],{"type":46,"tag":68,"props":8455,"children":8456},{},[8457],{"type":52,"value":8458},"CCA Repository",{"type":52,"value":1881},{"type":46,"tag":7993,"props":8461,"children":8464},{"href":8462,"rel":8463},"https:\u002F\u002Fgithub.com\u002FUniswap\u002Fcontinuous-clearing-auction",[7996],[8465],{"type":52,"value":8462},{"type":46,"tag":122,"props":8467,"children":8468},{},[8469,8474,8476,8482],{"type":46,"tag":68,"props":8470,"children":8471},{},[8472],{"type":52,"value":8473},"Technical Documentation",{"type":52,"value":8475},": See ",{"type":46,"tag":76,"props":8477,"children":8479},{"className":8478},[],[8480],{"type":52,"value":8481},"docs\u002FTechnicalDocumentation.md",{"type":52,"value":8483}," in repo",{"type":46,"tag":122,"props":8485,"children":8486},{},[8487,8492,8493,8499],{"type":46,"tag":68,"props":8488,"children":8489},{},[8490],{"type":52,"value":8491},"Deployment Guide",{"type":52,"value":8475},{"type":46,"tag":76,"props":8494,"children":8496},{"className":8495},[],[8497],{"type":52,"value":8498},"docs\u002FDeploymentGuide.md",{"type":52,"value":8483},{"type":46,"tag":122,"props":8501,"children":8502},{},[8503,8508,8509,8515],{"type":46,"tag":68,"props":8504,"children":8505},{},[8506],{"type":52,"value":8507},"Whitepaper",{"type":52,"value":8475},{"type":46,"tag":76,"props":8510,"children":8512},{"className":8511},[],[8513],{"type":52,"value":8514},"docs\u002Fassets\u002Fwhitepaper.pdf",{"type":52,"value":8483},{"type":46,"tag":122,"props":8517,"children":8518},{},[8519,8524,8525,8531],{"type":46,"tag":68,"props":8520,"children":8521},{},[8522],{"type":52,"value":8523},"Audits",{"type":52,"value":8475},{"type":46,"tag":76,"props":8526,"children":8528},{"className":8527},[],[8529],{"type":52,"value":8530},"docs\u002Faudits\u002FREADME.md",{"type":52,"value":8483},{"type":46,"tag":122,"props":8533,"children":8534},{},[8535,8540,8541],{"type":46,"tag":68,"props":8536,"children":8537},{},[8538],{"type":52,"value":8539},"Uniswap Docs",{"type":52,"value":1881},{"type":46,"tag":7993,"props":8542,"children":8545},{"href":8543,"rel":8544},"https:\u002F\u002Fdocs.uniswap.org\u002Fcontracts\u002Fliquidity-launchpad\u002FCCA",[7996],[8546],{"type":52,"value":8543},{"type":46,"tag":122,"props":8548,"children":8549},{},[8550,8555,8556],{"type":46,"tag":68,"props":8551,"children":8552},{},[8553],{"type":52,"value":8554},"Bug Bounty",{"type":52,"value":1881},{"type":46,"tag":7993,"props":8557,"children":8560},{"href":8558,"rel":8559},"https:\u002F\u002Fcantina.xyz\u002Fcode\u002Ff9df94db-c7b1-434b-bb06-d1360abdd1be\u002Foverview",[7996],[8561],{"type":52,"value":8558},{"type":46,"tag":8563,"props":8564,"children":8565},"style",{},[8566],{"type":52,"value":8567},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":8569,"total":2333},[8570,8577,8592,8605,8618,8631,8644,8657,8671,8682,8693,8704],{"slug":4,"name":4,"fn":5,"description":6,"org":8571,"tags":8572,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8573,8574,8575,8576],{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":8578,"name":8578,"fn":8579,"description":8580,"org":8581,"tags":8582,"stars":25,"repoUrl":26,"updatedAt":8591},"copy-trade","copy trades from crypto wallets","This skill should be used when the user asks to \"copy trades from\" a wallet, \"mirror a wallet\", \"follow this address\", set up \"copy trading\", \"track and replicate a trader\", or mirror another account's swaps bounded by guardrails. Watches a target wallet and mirrors its trades, filtered by chain, asset match, position size, and the follower's own portfolio state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8583,8586,8587,8590],{"name":8584,"slug":8585,"type":15},"Automation","automation",{"name":23,"slug":24,"type":15},{"name":8588,"slug":8589,"type":15},"Trading","trading",{"name":17,"slug":18,"type":15},"2026-07-17T06:04:21.974052",{"slug":8593,"name":8593,"fn":8594,"description":8595,"org":8596,"tags":8597,"stars":25,"repoUrl":26,"updatedAt":8604},"dca-bot","automate dollar cost average token purchases","This skill should be used when the user wants to \"dca into\" a token, \"buy X every day\", set up a \"recurring buy\", \"dollar cost average\" into an asset, \"schedule a buy\", or \"auto-buy on a dip\". Buys a fixed amount into a token on a schedule, optionally only when a condition holds (for example only when ETH is below a price threshold). The host agent's scheduler wakes the skill on a cadence; each wake is one self-contained run.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8598,8599,8602,8603],{"name":8584,"slug":8585,"type":15},{"name":8600,"slug":8601,"type":15},"DeFi","defi",{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:05:37.160647",{"slug":8606,"name":8606,"fn":8607,"description":8608,"org":8609,"tags":8610,"stars":25,"repoUrl":26,"updatedAt":8617},"deployer","deploy Uniswap CCA smart contracts","Deploy CCA (Continuous Clearing Auction) smart contracts using the Factory pattern. Use when user says \"deploy auction\", \"deploy cca\", \"factory deployment\", or wants to deploy a configured auction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8611,8614,8615,8616],{"name":8612,"slug":8613,"type":15},"Deployment","deployment",{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:08:09.661977",{"slug":8619,"name":8619,"fn":8620,"description":8621,"org":8622,"tags":8623,"stars":25,"repoUrl":26,"updatedAt":8630},"index-bot","create and rebalance asset portfolios","This skill should be used when the user asks to \"create an index\", \"build a basket of top assets\", \"buy a weighted basket\", \"make a portfolio of assets\", \"equal-weight basket\", \"rebalance my portfolio\", \"track the top N tokens\", or wants an automated, weighted multi-asset basket that buys in one pass and rebalances on a cadence. Builds the basket spec, delegates each buy and rebalance swap to the swap-integration Trading API flow, and records target weights in state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8624,8625,8628,8629],{"name":23,"slug":24,"type":15},{"name":8626,"slug":8627,"type":15},"Portfolio Management","portfolio-management",{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:04:22.328253",{"slug":8632,"name":8632,"fn":8633,"description":8634,"org":8635,"tags":8636,"stars":25,"repoUrl":26,"updatedAt":8643},"liquidity-planner","plan and create liquidity positions","This skill should be used when the user asks to \"provide liquidity\", \"create LP position\", \"add liquidity to pool\", \"become a liquidity provider\", \"create v3 position\", \"create v4 position\", \"concentrated liquidity\", \"set price range\", or mentions providing liquidity, LP positions, or liquidity pools on Uniswap. Generates deep links to create positions in the Uniswap interface.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8637,8638,8639,8642],{"name":8600,"slug":8601,"type":15},{"name":23,"slug":24,"type":15},{"name":8640,"slug":8641,"type":15},"Liquidity","liquidity",{"name":17,"slug":18,"type":15},"2026-07-17T06:08:09.315325",{"slug":8645,"name":8645,"fn":8646,"description":8647,"org":8648,"tags":8649,"stars":25,"repoUrl":26,"updatedAt":8656},"lp-integration","integrate Uniswap liquidity provisioning","Integrate Uniswap liquidity provisioning (LP) into applications via the LP REST API. Use when the user says \"LP API\", \"liquidity provisioning API\", \"provide liquidity programmatically\", \"create LP position via API\", \"add liquidity via API\", \"increase liquidity\", \"decrease liquidity\", \"remove liquidity\", \"claim LP fees\", \"collect LP fees\", \"manage LP positions in code\", or mentions building a backend, bot, or frontend that creates or manages Uniswap v2\u002Fv3\u002Fv4 liquidity positions through an API. Also use when debugging LP API calls (e.g. \u002Flp\u002Fcreate, \u002Flp\u002Fcheck_approval, \u002Flp\u002Fincrease, \u002Flp\u002Fdecrease, \u002Flp\u002Fclaim_fees), unexpected response fields, the approval or EIP-712 permit flow, or transaction-building errors for liquidity positions. For generating deep links to the Uniswap web app instead of calling the API, use the liquidity-planner skill; for using the Uniswap v4 SDK directly rather than the REST API, use the v4-sdk-integration skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8650,8653,8654,8655],{"name":8651,"slug":8652,"type":15},"API Development","api-development",{"name":8600,"slug":8601,"type":15},{"name":8640,"slug":8641,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:08:13.704465",{"slug":8658,"name":8658,"fn":8659,"description":8660,"org":8661,"tags":8662,"stars":25,"repoUrl":26,"updatedAt":8670},"pay-with-any-token","pay HTTP 402 challenges with Uniswap","Pay HTTP 402 payment challenges using tokens via the Tempo CLI and Uniswap Trading API. Use when the user encounters a 402 Payment Required response, needs to fulfill a machine payment, mentions \"MPP\", \"Tempo payment\", \"pay for API access\", \"HTTP 402\", \"x402\", \"machine payment protocol\", \"pay-with-any-token\", \"use tempo\", \"tempo request\", or \"tempo wallet\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8663,8664,8667,8668],{"name":8600,"slug":8601,"type":15},{"name":8665,"slug":8666,"type":15},"Payments","payments",{"name":8588,"slug":8589,"type":15},{"name":8669,"slug":8669,"type":15},"x402","2026-07-17T06:04:29.756086",{"slug":8672,"name":8672,"fn":8673,"description":8674,"org":8675,"tags":8676,"stars":25,"repoUrl":26,"updatedAt":8681},"pay-with-app","pay 402 payment challenges","Pay HTTP 402 payment challenges issued by OKX's Agent Payments Protocol (APP) on X Layer using tokens from any chain via the Uniswap Trading API. Use this skill whenever the user encounters a 402 challenge whose network resolves to X Layer (chain 196), mentions \"APP\", \"Agent Payments Protocol\", \"OKX agent payment\", \"OKX Onchain OS\", \"OKX agentic wallet\", \"x402 on X Layer\", \"USDT0\", \"x42\", \"Instant Payment\", \"Batch Payment\", \"pay for X Layer API\", or wants to pay an OKX-backed merchant. Even when the user does not explicitly say APP, prefer this skill for any 402 challenge whose network resolves to X Layer (chain 196). For 402 challenges on other chains (Ethereum, Base, Arbitrum, Tempo) use pay-with-any-token instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8677,8678,8679,8680],{"name":8651,"slug":8652,"type":15},{"name":8665,"slug":8666,"type":15},{"name":17,"slug":18,"type":15},{"name":8669,"slug":8669,"type":15},"2026-07-17T06:07:38.795043",{"slug":8683,"name":8683,"fn":8684,"description":8685,"org":8686,"tags":8687,"stars":25,"repoUrl":26,"updatedAt":8692},"swap-integration","integrate Uniswap swap functionality","Integrate Uniswap swaps into applications. Use when user says \"integrate swaps\", \"uniswap\", \"trading api\", \"add swap functionality\", \"build a swap frontend\", \"create a swap script\", \"smart contract swap integration\", \"use Universal Router\", \"Trading API\", or mentions swapping tokens via Uniswap.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8688,8689,8690,8691],{"name":8651,"slug":8652,"type":15},{"name":8600,"slug":8601,"type":15},{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:08:10.354222",{"slug":8694,"name":8694,"fn":8695,"description":8696,"org":8697,"tags":8698,"stars":25,"repoUrl":26,"updatedAt":8703},"swap-planner","plan and execute token swaps","This skill should be used when the user asks to \"swap tokens\", \"trade ETH for USDC\", \"exchange tokens on Uniswap\", \"buy tokens\", \"sell tokens\", \"convert ETH to stablecoins\", \"find memecoins\", \"discover tokens\", \"research tokens\", \"tokens to buy\", \"find tokens to swap\", \"what should I buy\", or mentions swapping, trading, researching, discovering, buying, or exchanging tokens on any Uniswap-supported chain. Supports both known token swaps and token discovery workflows (discovery uses keyword search and web search — there is no live \"trending\" feed). Generates deep links to execute swaps in the Uniswap interface.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8699,8700,8701,8702],{"name":8600,"slug":8601,"type":15},{"name":8640,"slug":8641,"type":15},{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:08:10.008152",{"slug":8705,"name":8705,"fn":8706,"description":8707,"org":8708,"tags":8709,"stars":25,"repoUrl":26,"updatedAt":8713},"v4-hook-generator","generate Uniswap v4 hook contracts","Generate Uniswap v4 hook contracts via OpenZeppelin MCP. Use when building custom swap logic, async swaps, hook-owned liquidity, custom curves, dynamic fees, MEV protection, limit orders, or oracle hooks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8710,8711,8712],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:04:19.17669",{"items":8715,"total":1635},[8716,8723,8730,8737,8744,8751,8758],{"slug":4,"name":4,"fn":5,"description":6,"org":8717,"tags":8718,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8719,8720,8721,8722],{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":8578,"name":8578,"fn":8579,"description":8580,"org":8724,"tags":8725,"stars":25,"repoUrl":26,"updatedAt":8591},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8726,8727,8728,8729],{"name":8584,"slug":8585,"type":15},{"name":23,"slug":24,"type":15},{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},{"slug":8593,"name":8593,"fn":8594,"description":8595,"org":8731,"tags":8732,"stars":25,"repoUrl":26,"updatedAt":8604},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8733,8734,8735,8736],{"name":8584,"slug":8585,"type":15},{"name":8600,"slug":8601,"type":15},{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},{"slug":8606,"name":8606,"fn":8607,"description":8608,"org":8738,"tags":8739,"stars":25,"repoUrl":26,"updatedAt":8617},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8740,8741,8742,8743],{"name":8612,"slug":8613,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":8619,"name":8619,"fn":8620,"description":8621,"org":8745,"tags":8746,"stars":25,"repoUrl":26,"updatedAt":8630},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8747,8748,8749,8750],{"name":23,"slug":24,"type":15},{"name":8626,"slug":8627,"type":15},{"name":8588,"slug":8589,"type":15},{"name":17,"slug":18,"type":15},{"slug":8632,"name":8632,"fn":8633,"description":8634,"org":8752,"tags":8753,"stars":25,"repoUrl":26,"updatedAt":8643},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8754,8755,8756,8757],{"name":8600,"slug":8601,"type":15},{"name":23,"slug":24,"type":15},{"name":8640,"slug":8641,"type":15},{"name":17,"slug":18,"type":15},{"slug":8645,"name":8645,"fn":8646,"description":8647,"org":8759,"tags":8760,"stars":25,"repoUrl":26,"updatedAt":8656},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[8761,8762,8763,8764],{"name":8651,"slug":8652,"type":15},{"name":8600,"slug":8601,"type":15},{"name":8640,"slug":8641,"type":15},{"name":17,"slug":18,"type":15}]