Skip to main content
還沒有帳號?點擊這裡註冊 Polymarket 並完成入金,才能用錢包私鑰為訂單籤名、實際成交。
法律合規提醒:在使用 Polymarket 服務或 API 前,請確認您所在地區的法律規定。Polymarket 目前不支援比利時、法國、新加坡、泰國、中國大陸等地區,政策可能隨時變化。
條件代幣框架(Conditional Token Framework,CTF)是 Polymarket 的核心智能合約系統,它實現了預測市場的基礎機制。

什麼是條件代幣框架?

CTF 是一個基於以太坊的智能合約系統,允許創建、交易和結算與特定條件相關的代幣。這些代幣代表了預測市場中不同結果的所有權。

拆分

將 USDC 拆分成代表不同結果的代幣

交易

在市場上交易這些結果代幣

合併

將完整的代幣集合合併回 USDC

贖回

市場結算後,用獲勝代幣兌換 USDC

核心概念

條件 ID(Condition ID)

每個預測市場問題對應一個唯一的條件 ID。這個 ID 基於以下信息生成:
  • Oracle 地址:提供結果的預言機地址
  • 問題 ID:唯一標識這個問題
  • 結果數量:可能的結果數(對於二元市場是 2)
// 條件 ID 計算
conditionId = keccak256(
    abi.encodePacked(
        oracleAddress,
        questionId,
        outcomeSlotCount
    )
)

位置 ID(Position ID)

位置 ID 代表特定的結果組合。對於簡單的二元市場:
  • 位置 1:Yes 結果
  • 位置 2:No 結果
// 位置 ID 計算
positionId = keccak256(
    abi.encodePacked(
        collateralToken,  // USDC 地址
        conditionId,       // 條件 ID
        indexSet           // 結果索引集
    )
)

ERC-1155 代幣

CTF 使用 ERC-1155 標準,允許在一個合約中管理多種代幣類型:
  • 多代幣支援:一個合約管理所有市場的所有代幣
  • 高效批量操作:可以批量轉移多種代幣
  • Gas 優化:比 ERC-20 更省 Gas

工作流程

1. 創建條件

市場創建者準備條件:
# Python 偽代碼
condition = {
    'oracle': '0x...',           # Oracle 地址
    'question_id': '0x...',      # 問題 ID
    'outcome_count': 2           # Yes/No = 2 個結果
}

condition_id = prepare_condition(
    oracle=condition['oracle'],
    question_id=condition['question_id'],
    outcome_slot_count=condition['outcome_count']
)

2. 拆分抵押品

用戶將 USDC 拆分成條件代幣:
# 存入 100 USDC,獲得 100 個 Yes 代幣和 100 個 No 代幣
split_position(
    collateral_token='0x...USDC',
    condition_id=condition_id,
    partition=[1, 2],  # Yes 和 No
    amount=100 * 10**6  # 100 USDC(6位小數)
)
結果
  • 存入:100 USDC
  • 獲得:100 Yes 代幣 + 100 No 代幣
  • 總價值:100 USDC(始終守恆)

3. 交易代幣

用戶在市場上買賣代幣:
# 在 CLOB 上賣出 Yes 代幣
sell_order = {
    'token_id': yes_token_position_id,
    'price': 0.65,    # 以 0.65 USDC 賣出
    'size': 50        # 賣出 50 個
}

4. 合併代幣

持有完整代幣集的用戶可以合併回 USDC:
# 持有 50 個 Yes + 50 個 No = 可以合併成 50 USDC
merge_positions(
    collateral_token='0x...USDC',
    condition_id=condition_id,
    partition=[1, 2],
    amount=50 * 10**6
)
結果
  • 銷毀:50 Yes 代幣 + 50 No 代幣
  • 獲得:50 USDC

5. 贖回代幣

市場結算後,獲勝代幣可以贖回:
# 假設 Yes 結果獲勝
# 持有 100 個 Yes 代幣可以贖回 100 USDC
redeem_positions(
    collateral_token='0x...USDC',
    condition_id=condition_id,
    index_sets=[1]  # Yes 的索引
)
結果
  • 銷毀:100 Yes 代幣
  • 獲得:100 USDC
  • No 代幣變為無價值

智能合約架構

ConditionalTokens 合約

主合約地址(Polygon):
0x4D97DCd97eC945f40cF65F87097ACe5EA0476045
主要函數:
函數描述
prepareCondition()創建新條件
splitPosition()拆分抵押品為代幣
mergePositions()合併代幣為抵押品
redeemPositions()贖回獲勝代幣
reportPayouts()Oracle 報告結果

CTF Exchange 合約

處理代幣交易的交換合約:
0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E

數學原理

價值守恆

條件代幣系統的核心原理是價值守恆
Yes 代幣價值 + No 代幣價值 = 1 USDC
如果 Yes 代幣價格是 0.65 USDC,那麼 No 代幣價格必然是:
1 - 0.65 = 0.35 USDC

套利機會

當市場價格偏離時,套利者可以:
  1. 價格和 > 1:購買完整集合,拆分後分別賣出
  2. 價格和 < 1:分别买入,合并后卖出
这种机制确保市场价格始终趋向有效。

优势

資本效率

用戶只需鎖定與頭寸價值相等的資金

無需信任

完全鏈上,無需信任中介

可組合性

可以與其他 DeFi 協議集成

透明度

所有操作完全透明且可驗證

使用場景

1. 做市商

做市商可以:
  • 拆分 USDC 成代幣對
  • 在兩邊提供流動性
  • 從價差中獲利

2. 套利者

套利者可以:
  • 監控價格和是否偏離 1
  • 執行套利交易
  • 幫助價格發現

3. 交易者

普通交易者可以:
  • 直接在 CLOB 上交易
  • 無需了解底層機制
  • Polymarket 處理所有複雜性

與傳統預測市場的區別

特性傳統預測市場CTF
託管中心化託管鏈上自託管
信任需要信任平臺無需信任
透明度有限完全透明
可審計性困難容易
結算人工處理自動化

安全性

CTF 合約已經過多次審計:
  • OpenZeppelin 審計
  • ConsenSys Diligence 審計
  • 長期運行:自 2020 年以來運行穩定

下一步

參考資源