NocturnusCoder
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Understanding the Aztec Token Auction: A Deep Dive into Continuous Clearing Auctions ## Introduction The Aztec Protocol is conducting its token distribution through a novel mechanism called a Continuous Clearing Auction (CCA). Unlike traditional token sales that suffer from mispricing, timing games, and last-minute sniping, CCA introduces automatic bid spreading over time combined with continuous price discovery. This article analyzes the live auction state captured on December 2nd, 2025 (block 23,925,686) during Step 2 of the token release schedule. Foundry scripts and tests were used to get the latest numbers from mainnet. ## Core Concepts: MPS & TICKS ### WHAT IS MPS? MPS = Milli-basis-points Per Second (actually per block in this implementation) - Represents the rate at which tokens are released over time - Total MPS = 10,000,000 (represents 100% of token supply) - Think of it as '100% divided into 10 million units' #### HOW MPS WORKS: - Each auction step has an MPS rate (tokens released per block) - MPS accumulates over time: cumulative_mps = sum of (step_mps x blocks_in_step) - Percent released = (cumulative_mps / 10,000,000) x 100% - Example: MPS = 2,500,000 means 25% of tokens have been released #### WHY MPS MATTERS FOR BIDDERS: - Your bid exposure = remaining_mps when you bid - Bid at 0% released: exposure = 10,000,000 (100% of auction) - Bid at 25% released: exposure = 7,500,000 (75% of auction) - Your bid gets filled proportionally as MPS accumulates - Formula: amount_paid = bid_amount x (current_mps / total_mps) ### WHAT ARE TICKS? *** Ticks = discrete price levels in the order book - Similar to limit order book in traditional exchanges - Each tick represents a specific price point - Bids aggregate at each tick level - Ticks are evenly spaced by 'tick spacing' #### TICK MECHANICS: - Floor Price (Tick 1): 0.000009516266313599 - Tick Spacing (increment): 0.000000095162663135 (1% of floor price - tick 1) - Next tick price = current_tick + tick_spacing - Example: Tick 1 = floor, Tick 2 = floor + spacing, etc. ## The CCA Innovation: Automatic Bid Spreading Every bid submitted to the Aztec CCA is automatically divided across all remaining auction intervals according to a predefined token release schedule. This creates several key advantages: - **No timing games**: Participants cannot concentrate demand at a single moment - **Fair price discovery**: Valuation matters more than bid timing - **Natural advantages for early bidders**: Longer exposure to lower prices without separate token pools - **Sniping prevention**: Last-minute gaming becomes ineffective **Critical insight**: There are no separate "contributor" vs "public" token pools. All bidders compete for the same token supply, with early bidders gaining more exposure to the entire auction, not exclusive access to different tokens. ## Token Release Schedule: The auction's token release schedule is encoded in the constructor parameter `auctionStepsData` as a byte string: `0x000000000001f61600015b0000001c200000000000000e1000008a0000000e1000008a0000001c2000008a0000001c2000008a0000001c203d66c00000000001` **The Distribution according to `auctionStepsData` :** | Step | Bytes (8) | MPS (3 bytes) | BlockDelta (5 bytes) | MPS Dec | Blocks Dec | Days | Dates | Block info (start block 23790741 + ) | | ---- | ------------------ | ------------- | -------------------- | --------- | ---------- | ---------- | ----------------- | ------------------------------------ | | 1 | `000000000001f616` | `000000` | `0001f616` | 0 | 128,534 | 17,85 days | Nov 13 - Dec 1st | 23919275 | | 2 | `00015b0000001c20` | `00015b` | `0000001c20` | 347 | 7,200 | 1 day | Dec 1st - Dec 2nd | 23926475 | | 3 | `0000000000000e10` | `000000` | `00000e10` | 0 | 3,600 | 12 hours | Dec 2 (pause) | 23930075 | | 4 | `00008a0000000e10` | `00008a` | `00000e10` | 138 | 3,600 | 12 hours | Dec 2-3 | 23933675 | | 5 | `00008a0000001c20` | `00008a` | `00001c20` | 138 | 7,200 | 1 day | Dec 3-4 | 23940875 | | 6 | `00008a0000001c20` | `00008a` | `00001c20` | 138 | 7,200 | 1 day | Dec 4-5 | 23948075 | | 7 | `00008a0000001c20` | `00008a` | `00001c20` | 138 | 7,200 | 1 day | Dec 5-6 | 23955275 | | 8 | `3d66c00000000001` | `3d66c0` | `0000000001` | 4,024,000 | 1 | 1 block | Dec 6 | 23955276 | This decodes into 8 distinct steps that control how tokens are released over time: ### Step 1: Early Bidding Phase (Nov 13 - Dec 1) - **Blocks**: 23,790,741 - 23,919,275 (128,534 blocks ≈ 17.85 days) - **MPS (Milli-basis-points per second)**: 0 - **Cumulative tokens released**: 0% - **Key characteristic**: No tokens released yet, so ALL bids in Step 1 have identical 100% exposure to future token releases ### Step 2: Contributor Token Release (Dec 1 - Dec 2) 🎯 _Current Step_ - **Blocks**: 23,919,275 - 23,926,475 (7,200 blocks ≈ 1 day) - **MPS**: 347 - **Cumulative tokens released**: 24.98% - **Total MPS this step**: 2,498,400 (347 × 7,200 blocks) - **Status**: Contributors-only period. This is where our analysis snapshot was captured (block 23,925,686) ### Step 3: Public Entry Pause (Dec 2) - **Blocks**: 23,926,475 - 23,930,075 (3,600 blocks ≈ 12 hours) - **MPS**: 0 - **Cumulative tokens released**: 24.98% (no change) - **Purpose**: Marks the end of contributor period. Public bidding opens after this step. ### Steps 4-7: Gradual Release (Dec 3 - Dec 6) Each step releases tokens at MPS = 138 over varying durations: - **Step 4**: 3,600 blocks (12 hours) → 29.95% cumulative - **Step 5**: 7,200 blocks (1 day) → 39.89% cumulative - **Step 6**: 7,200 blocks (1 day) → 49.82% cumulative - **Step 7**: 7,200 blocks (1 day) → 59.76% cumulative ### Step 8: Final Cleanup (Dec 6, single block) - **Blocks**: 23,955,275 - 23,955,276 (1 block) - **MPS**: 4,024,000 - **Cumulative tokens released**: 100% - **Purpose**: Ensures exactly 100% distribution by releasing remaining 40.24% in the final block ## Current Auction State (Captured During Step 2) ### Live Metrics (Block 23,925,686) **Price Discovery:** - Floor Price: 0.000009516266313599 ETH per token - Current Clearing Price: 0.000009516266313599 ETH per token (at floor) - Clearing price remains at floor because supply exceeds demand **Token Distribution Progress:** - MPS Released: 2,224,617 / 10,000,000 (22.25%) - Tokens Released: 344,148,249 out of 1,547,000,000 total supply - Currency Raised: 2,787 ETH **Bid Volume Analysis:** - Total bid volume (order book): 13,566 ETH - Implied total bids above clearing: 12,528 ETH - Projected final raise: 12,528 ETH **Understanding the Bid Volume Metrics:** The difference between "order book volume" (13,566 ETH) and "implied total bids" (12,528 ETH) arises from the bid spreading mechanics: - **Order book volume**: Sum of all bid amounts across price levels (how bids appear in the tick ladder) - **Implied total bids**: Actual ETH that will be raised when auction completes - **Why the difference?**: Bids are scaled by their exposure duration, creating weighted accounting **Critical clarification**: Since the clearing price equals the floor price, there are NO bids below clearing. All active bids are above the clearing price. Bids cannot exist below the floor price (they would be invalid). ### Understanding "Implied Total Bids" The formula `currencyRaised = totalBidAmounts × (mpsReleased / totalMPS)` shows how bids are progressively filled. With 22.25% of tokens released: - If total competitive bids = 12,528 ETH - Current fill rate = 22.25% - Current currency raised = 12,528 × 0.2225 ≈ 2,787 ETH ✓ **Important**: This calculation assumes all bids were placed at the auction start. In reality, bids placed later have different exposure weights, making exact prediction complex without knowing bid timing. ### Supply vs Demand Equilibrium **Current situation:** - Tokens needed to fill all bids above clearing: 1,316,489,597 - Total token supply: 1,547,000,000 - **Excess supply**: 230,510,402 tokens (~14.9%) **Price increase threshold:** - Additional demand needed: 1,154 ETH - Why? Total supply × clearing price = 14,721 ETH needed to absorb all tokens - Current demand: 13,566 ETH - Gap: 1,154 ETH Once total demand exceeds 14,721 ETH, there won't be enough tokens at the current price, forcing the clearing price to rise to the next tick. ## The Tick Ladder: Price Discovery Mechanism The auction uses a tick-based order book with 302 active price levels. Each tick represents a 1% price increase (100 basis points): **Tick Spacing**: 0.000000095162663135 ETH per token increment **Critical note**: The 13,566 ETH total represents "spread bid volume" where each bid appears across multiple price ticks. A single 100 ETH bid from price A to price B appears in ALL ticks between A and B. This does NOT equal the actual ETH committed by bidders. ## Early Bidder Advantage: Time-Weighted Exposure ### The Two-Bid Comparison Consider two identical 100 ETH bids at maximum price: **Bid A: Placed at auction start (Step 1 begins)** - Exposure: 10,000,000 / 10,000,000 MPS (100%) - Gets filled proportionally across the entire auction - Has access to full token supply as it releases **Bid B: Placed at contributor end (last moment before public)** - Exposure: 7,501,600 / 10,000,000 MPS (75.01%) - Only 24.98% of tokens released by this point - Exposed to remaining 75.02% of supply **Advantage Ratio**: Bid A has 133% relative exposure vs Bid B - Translates to 33% more tokens for the same 100 ETH bid - Both pay the SAME clearing price in each interval - The difference is purely exposure duration, not price or separate allocations ### Why Step 1 is Special **Key insight**: Since Step 1 has MPS = 0 (no tokens released), ALL bids placed during Step 1 have identical 100% exposure. Timing within Step 1 doesn't matter - a bid on day 1 equals a bid on day 17 of Step 1. **Step 2 changes this**: Once MPS > 0 and tokens start releasing, timing becomes crucial. A bid at the start of Step 2 has more exposure than a bid at the end of Step 2. **Current exposure for new bids (block 23,925,686)**: - Exposure: 7,775,383 / 10,000,000 MPS (77.75%) - Already 22.25% of tokens released - Only exposed to remaining 77.75% of supply ### Contributor vs Public Advantage The contributor period (Steps 1-3) ends at block 23,926,475: - Contributors bidding in Step 1: 100% exposure - Contributors bidding now (block 23,925,686): ~77.75% exposure - Contributors bidding at end of Step 2: ~75% exposure - Public bidding after Step 3: Competing with already-established bids for remaining ~75% of supply This creates a graduated advantage structure rather than a binary contributor/public split. ## Clearing Price Mechanics ### How Price Discovery Works The clearing price is determined by finding equilibrium between supply and demand: 1. **Aggregate demand** at each price tick (weighted by bid exposure) 2. **Available supply** based on MPS released 3. **Equilibrium point** where demand equals supply sets the clearing price 4. **Uniform pricing**: All participants pay the same clearing price in each interval ### Progressive Filling Example Alice bids 100 ETH at the current clearing price when MPS = 2,224,617 (22.25%): - **Immediately**: Alice pays 22 ETH (22.25% of her bid) - **At 50% MPS**: Alice pays 50 ETH total (50% filled) - **At 100% MPS**: Alice pays 100 ETH total (fully filled) Her bid is active for the entire remaining auction duration, getting filled proportionally as tokens release. ### Price Movement Rules **Critical property**: Price can ONLY increase or stay the same, NEVER decrease. **Consequences:** - Once a tick is reached, it becomes the new floor - No "dip buying" opportunities - you're either competitive at current price or at risk of being priced out - If price rises above your max bid price, your unfilled portion gets refunded ## Why Simple Price Prediction Fails Many assume: `average_price = total_bids / total_tokens` **Example showing why this fails:** Scenario: 1,000 ETH total bid volume, 1M tokens - Naive calculation: 1,000 / 1,000,000 = 0.001 ETH per token But if bid timing was: - 500 ETH bid at start (spreads over 100% of tokens) - 500 ETH bid at 50% point (spreads over 50% of tokens) **The effective demand is different:** - Bid A appears in ALL intervals with full weight - Bid B appears in HALF the intervals with full weight - Total spread demand ≠ sum of original bid amounts **Accurate prediction requires:** 1. Knowing WHEN each bid was placed 2. Calculating each bid's exposure weight 3. Simulating the CCA clearing algorithm with weights 4. Finding equilibrium price on the tick ladder Simple arithmetic will give WRONG answers for CCA. ## Graduation Threshold: Auction Success Criteria **Aztec Configuration:** - Graduation threshold: 0 ETH - Current status: GRADUATED - Meaning: Auction will succeed regardless of raise amount **Standard graduation logic:** - If `currencyRaised ≥ graduationThreshold`: Auction succeeds - If threshold not met: All bidders receive FULL REFUNDS - If graduated: Liquidity pool deployed on Uniswap V4 at clearing price With a 0 ETH threshold, Aztec has guaranteed auction completion regardless of participation level. ## Conclusion The Aztec CCA auction represents a sophisticated approach to token distribution that addresses many weaknesses of traditional mechanisms. Key takeaways: 1. **No timing games**: Automatic bid spreading eliminates concentration risk 2. **Fair price discovery**: Continuous clearing finds true market price 3. **Time-weighted fairness**: Early bidders gain exposure, not exclusive access 4. **Price stability**: Monotonically increasing price prevents manipulation 5. **Transparent mechanics**: All parameters encoded on-chain and verifiable As of our analysis snapshot (block 23,925,686 during Step 2), the auction shows healthy participation with ~13,500 ETH in total bid volume, though the clearing price remains at the floor due to excess token supply. With 1,154 ETH more in bids needed to push the price to the next tick, the coming days will reveal whether demand intensifies as more contributors enter and the public period approaches. The auction concludes on December 6th, 2025 (block 23,955,276), after which successful bidders can claim their tokens and a Uniswap V4 liquidity pool will be deployed at the final clearing price, establishing deep, sustainable liquidity for Aztec from day one. I'm planning to add future status of the sale as days progress. --- _Note: All data in this analysis was captured at Ethereum mainnet block 23,925,686 during Step 2 of the token release schedule. Price and bid information may change as the auction progresses._ ## Technical Reference ### Smart Contract Addresses #### Virtual Aztec Token Contract **Address**: [0x4b00c30ceba3f188407c6e6741cc5b43561f1f6e](https://etherscan.io/address/0x4b00c30ceba3f188407c6e6741cc5b43561f1f6e) **Constructor Arguments:** ``` Name: VirtualAztecToken Symbol: VAZT Underlying Token: 0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2 (Aztec.sol) ATP Factory: 0x42Df694EdF32d5AC19A75E1c7f91C982a7F2a161 Foundation Address: 0x13620833364653fa125cCDD7Cf54b9e4A22AB6d9 ``` #### Continuous Clearing Auction Contract **Address**: [[0x608c4e792C65f5527B3f70715deA44d3b302F4Ee]](https://etherscan.io/address/0x608c4e792C65f5527B3f70715deA44d3b302F4Ee) **Constructor Arguments:** ``` Token: 0x4B00C30cEBA3F188407C6e6741cc5b43561f1F6e (VirtualAztecToken) Total Supply: 1,547,000,000 tokens (1,547,000,000,000,000,000,000,000,000 wei) Parameters: ├─ Currency: 0x0000000000000000000000000000000000000000 (ETH) ├─ Tokens Recipient: 0x13620833364653fa125cCDD7Cf54b9e4A22AB6d9 ├─ Funds Recipient: 0xd53006d1e3110fD319a79AEEc4c527a0d265E080 ├─ Start Block: 23,790,741 ├─ End Block: 23,955,276 ├─ Claim Block: 23,955,276 ├─ Tick Spacing: 7,539,562,940,228,715,434,083 (Q96 format) ├─ Validation Hook: 0x2DD6e0E331DE9743635590F6c8BC5038374CAc9D ├─ Floor Price: 753,956,294,022,871,543,408,300 (Q96 format) ├─ Required Currency Raised: 0 ETH (no graduation threshold) └─ Auction Steps Data: 0x000000000001f61600015b0000001c200000000000000e1000008a0000000e1000008a0000001c2000008a0000001c2000008a0000001c203d66c00000000001 ``` **Note**: The `auctionStepsData` is decoded by the `StepStorage` constructor to create the 8-step release schedule detailed earlier in this article. #### Aztec Token (ERC20) **Address**: [0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2](https://etherscan.io/address/0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2) **Constructor Arguments:** -----Decoded View--------------- Arg [0] : _initialOwner (address): [0x2E89fe2011FdB3eb6cFdBfb3A635Ec43bEd42b2A](https://etherscan.io/address/0x2E89fe2011FdB3eb6cFdBfb3A635Ec43bEd42b2A) #### Auction Hook (Contributor Validation) **Address**: [0x2DD6e0E331DE9743635590F6c8BC5038374CAc9D](https://etherscan.io/address/0x2DD6e0E331DE9743635590F6c8BC5038374CAc9D) **Constructor Arguments:** ``` Soulbound Token: 0xBf3CF56c587F5e833337200536A52E171EF29A09 Contributor Period End Block: 23,926,475 ``` This hook validates that only holders of the Ignition Participant Soulbound token can bid during the contributor period (blocks 23,790,741 - 23,926,475). #### Ignition Participant Soulbound Token **Address**: [0xBf3CF56c587F5e833337200536A52E171EF29A09](https://etherscan.io/address/0xBf3CF56c587F5e833337200536A52E171EF29A09) **Constructor Arguments:** ``` Token Sale Address: 0x0000000000000000000000000000000000000000 Identity Providers: - 0x9D67e84B24104648cBd2597C8acF5aeeF7d7DF89 - 0x5F2ca7dbe47068996933e5dCc865481452680300 Genesis Sequencer Merkle Root: 0x8b874f488695850c2a75fc4819776861e597b010c7f86eb209f60a3070b5862a Contributor Merkle Root: 0xe151ee61d1d4b3fc00a2b7dd7ce64cdc679dea0d21096a574e97c27aa707136f Address Screening Provider: 0x4eA4BBC070f7b117f264fcba503b4eaadd2F1E59 URI: [empty] ``` #### Genesis Sequencer Sale **Address**: [0xbE88a980765844E6b9493B7733aC764816fAF748](https://https://etherscan.io/address/0xbE88a980765844E6b9493B7733aC764816fAF748) **Constructor Arguments:** ``` Owner: 0x85e51a78FE8FE21d881894206A9adbf54e3Df8c3 ATP Factory: 0xEB7442dc9392866324421bfe9aC5367AD9Bbb3A6 Sale Token: 0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2 (Aztec.sol) Soulbound Token: 0xBf3CF56c587F5e833337200536A52E171EF29A09 Rollup: 0x603bb2c05D474794ea97805e8De69bCcFb3bCA12 Price Per Lot: 1.4 ETH (1,400,000,000,000,000,000 wei) Sale Start Time: 1,763,042,400 (Unix timestamp) Sale End Time: 1,764,597,600 (Unix timestamp) Address Screening Provider: 0x34b682131B617C5Caa6EB1aE1C5b1C5d32111874 ``` ### Q96 Format Explanation Several parameters use Q96 fixed-point format (96-bit fractional representation): **Conversion formula:** `actual_value = q96_value / 2^96` Examples: - Tick Spacing: 7,539,562,940,228,715,434,083 / 2^96 ≈ 0.000000095162663135 ETH - Floor Price: 753,956,294,022,871,543,408,300 / 2^96 ≈ 0.000009516266313599 ETH This format allows precise representation of fractional values in Solidity's integer-only arithmetic.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully