﻿---
title: "原子交換"
description: "原子交換在兩條鏈上協調條件式提領與後續退款，但不會讓確認同時發生，也無法消除手續費、價格風險、監控及超時風險。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 原子交換

> 僅供教育用途。請獨立核驗兩條鏈、合約、超時、費用及退款路徑；即使協議維持條件式原子性，本金仍可能長期鎖定或貶值。

<a id="answer"></a>

## 直接答案

原子交換是一種非同步協議，用來交換資產，而不讓單一保管機構控制兩條交易腿。在經典雜湊時間鎖合約（`HTLC`）設計中，同一個原像授權雙方提領，不同到期時間則保留後續退款路徑。這裡的原子性是有條件的：交換中止時，誠實一方不應只因中止而被對手取走本金。它不代表同時確認、自動或免費退款、公允市價、持續流動性或匿名性。

每項部署都必須綁定鏈或網路、資產與合約、原始金額與小數位、提領與退款金鑰、雜湊結構、精確原像位元組、指令碼或位元組碼，以及時間鎖語義。兩個系統即使都有雜湊及時鐘，也不一定相容。比特幣的絕對鎖與相對鎖、EVM 時間戳記及其他鏈的最終性可能採用實質不同的規則。

經典 `HTLC` 交換也會給最後行動的一方一定程度的價格選擇權：它可以延遲，以判斷執行是否仍然有利。轉接器簽章及其他無指令碼協議會改變鏈上足跡和假設，但仍須查核身分、時鐘、費用、活性及復原機制。

<a id="mechanism"></a>

## 運作方式

1. 固定兩條網路、資產、金額、匯率、金鑰、雜湊與原像編碼、合約或指令碼位元組、時鐘單位、費用負擔方，以及確認或最終性政策。
2. 產生高熵、僅使用一次的秘密 `x`，離線計算 `h = H(x)`，並讓兩側實作以相同原始位元組重算摘要。
3. 發起方為超時較長的一腿注資。參與方核驗其鏈、資產、金額、金鑰、雜湊、程式碼及截止時間，再等待約定的安全確認深度。
4. 參與方為超時較短的一腿注資。發起方重複相同核驗，並等待規定的確認或最終性。
5. 發起方在較早的操作截止時間前，以 `x` 提領短腿，並在正式鏈交易資料中公開精確原像。
6. 參與方觀察該提領，核驗 `H(x) = h`，並為建構、廣播、費用補救及最終性保留足夠時間後提領長腿。
7. 任一關卡失敗時，停止增加曝險。各時間鎖到期後，主動建構或廣播相應退款交易，並核對本金、費用、鎖定期間及鏈上證據。

核心時間預算為 `T_long - T_short >= observation + construction + broadcast + confirmation/finality + reorg/operations buffer`。48 小時及 24 小時之類的名目值只是範例，並非通用安全參數。時間鎖只會啟用退款分支，不會廣播退款交易或代為支付費用。

<a id="example"></a>

## 範例

- **雜湊位元組。** 僅供教學，UTF-8 `abc` 的原始位元組為 `0x616263`；`SHA-256(0x616263) = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad`。若對顯示文字 `0x616263` 進行雜湊，會得到不同摘要。正式環境的秘密必須具有密碼學熵，且不得重複使用。
- **超時預算。** 假設長腿退款在 `48.0 h` 到期，短腿退款在 `24.0 h` 到期。若短腿提領在 `22.0 h` 提交，觀察耗時 `0.5 h`，建構及廣播耗時 `0.5 h`，長鏈確認耗時 `1.5 h`，預計完成時刻為 `24.5 h`。模型中的長腿剩餘裕度為 `48.0 - 24.5 = 23.5 h`；這不是對出塊的保證。
- **價格選擇權。** 達成協議時，`1 BTC` 按 `$60,000` 計，等於 `20 ETH` 按 `$3,000` 計。提領時，比特幣價格為 `$63,000`，ETH 為 `$2,800`；Alice 交付 `$63,000`，收到 `20 x $2,800 = $56,000`，相對當時市價的差額為 `-$7,000`，尚未計費。協議原子性不會鎖定經濟價值。
- **中止帳本。** Alice 支付 `0.00020 BTC` 注資費及 `0.00025 BTC` 退款費，共 `0.00045 BTC`，折合 `$27`，採用的匯率為 `$60,000/BTC`。Bob 支付 `0.006 ETH` 注資費及 `0.004 ETH` 退款費，共 `0.010 ETH`，折合 `$30`，採用的匯率為 `$3,000/ETH`。本金稍後返還，但雙方不可退還的網路成本合計 `$57`，另有機會成本。

<a id="risks"></a>

## 風險

- 鏈或網路域錯誤。
- 原生資產、代幣合約或小數位錯誤。
- 金額、提領金鑰或退款金鑰錯誤。
- 雜湊演算法或位元組編碼不相容。
- 秘密熵不足、遭重複使用或過早揭露。
- 提領分支、指令碼或位元組碼存在缺陷。
- 退款路徑無效、無法使用或未簽署。
- 超時順序顛倒或緩衝不足。
- 誤讀區塊高度、中位時間、時間戳記或相對鎖語義。
- 接近到期時，短腿提領與退款發生競態。
- 鏈重組移除注資、原像揭露或提領交易。
- 確認或最終性政策不足。
- 費用激增、交易池移除、審查或無法提高費用。
- 監控、RPC、索引器、錢包或金鑰故障。
- 對手拖延、阻撓及鎖定資金的選擇權。
- 匯率、基差與可成交流動性變動。
- EVM 呼叫、重入、Gas、代理或升級缺陷。
- 封裝資產或代幣發行方、跨鏈橋、鉤子、再基準或轉帳收費行為。
- 重複使用雜湊、金額及時間造成跨鏈關聯。
- 稅務、制裁、法律、紀錄保存及災難復原失敗。

<a id="misconceptions"></a>

## 常見迷思

- **原子代表同時。** 兩條鏈透過有序的非同步狀態機各自推進。
- **中止會自動退回全部資產。** 一方通常必須等待、送出交易並支付費用；監控或費用故障可能延長鎖定。
- **任何擁有雜湊和時間鎖的兩條鏈都能互通。** 演算法、編碼、時鐘、指令碼、合約及最終性必須真正相符。
- **非保管代表沒有對手風險或價格風險。** 阻撓、選擇權、波動及操作依賴仍然存在。
- **原子交換提供流動性及隱私。** 它協調結算條件，並不創造報價、深度、對手方或不可關聯的活動。

<a id="related"></a>

## 相關主題

- [雜湊時間鎖合約](/zh-tw/crypto/htlc/)
- [跨鏈橋](/zh-tw/crypto/cross-chain-bridge/)
- [去中心化交易所](/zh-tw/crypto/dex/)

<a id="sources"></a>

## 資料來源

- [Atomic Cross-Chain Swaps](https://doi.org/10.1145/3212734.3212736) - Association for Computing Machinery（存取日期：2026-08-13）
- [On the optionality and fairness of Atomic Swaps](https://doi.org/10.1145/3318041.3355460) - Association for Computing Machinery（存取日期：2026-08-13）
- [BIP 65: OP_CHECKLOCKTIMEVERIFY](https://bips.dev/65/) - Bitcoin Improvement Proposals（存取日期：2026-08-13）
- [BIP 112: CHECKSEQUENCEVERIFY](https://bips.dev/112/) - Bitcoin Improvement Proposals（存取日期：2026-08-13）
- [Contracts](https://developer.bitcoin.org/devguide/contracts.html) - Bitcoin Developer Documentation（存取日期：2026-08-13）
- [Transactions](https://developer.bitcoin.org/devguide/transactions.html) - Bitcoin Developer Documentation（存取日期：2026-08-13）
- [Atomic Swaps](https://docs.decred.org/advanced/atomic-swap/) - Decred Documentation（存取日期：2026-08-13）
- [Proof-of-stake (PoS)](https://ethereum.org/developers/docs/consensus-mechanisms/pos/) - Ethereum.org（存取日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-tw/crypto/atomic-swap/index.mdx
