原子交換和哈希時間鎖

一、哈希時間鎖
哈希時間鎖(Hash Time Locked Contract,簡稱HTLC)是一種加密貨幣技術(shù),用于在跨鏈原子交換(Atomic Swap)和閃電網(wǎng)絡(Lightning Network)等場景中實現(xiàn)安全的交易。HTLC 在比特幣上早已有,而在支持智能合約的區(qū)塊鏈上就更容易實現(xiàn)了。關(guān)鍵的概念是哈希鎖和時間鎖。
1.1 哈希鎖:
哈希密鑰鎖,就是利用非對稱加密的哈希函數(shù),把一串輸入的密文轉(zhuǎn)換成 256 位固定長度的輸出,并在交易腳本里設(shè)置必須輸入正確密文才可以解鎖交易。例如 Alice 收到了一筆 2BTC 轉(zhuǎn)賬,但是對方設(shè)定了哈希值鎖定,所以 Alice 必須得到交易方的密文(Pre-image,原像),同時配合自己的密鑰簽名才能簽署交易。
哈希鎖應用場景:
- 資助發(fā)現(xiàn)哈希碰撞:由于哈希函數(shù)的單向性,礦工只能使用暴力搜索的方法不斷嘗試,這就等于是在尋找一個與你手中的原像產(chǎn)生相同哈希值的東西,也就是在搜索哈希碰撞。
- 原子交換 / 潛水艇互換
- 閃電網(wǎng)絡:閃電通道利用了我們已知的所有模塊:多簽名、時間鎖、哈希鎖
1.2 時間鎖:
哈希時間鎖,就是在交易腳本里設(shè)置時鐘,必須要等待設(shè)定時間后才能私鑰簽名解鎖地址里的比特幣。例如 Alice 收到了一筆 2BTC 轉(zhuǎn)賬,但是對方設(shè)定了 1000 個區(qū)塊之后才能解鎖,所以 Alice 必須等待 1000個 區(qū)塊之后才能用自己的私鑰簽署交易,花費其中的 BTC 轉(zhuǎn)給 Bob 。
時間鎖應用場景:
- 個人的強制儲蓄:一旦用戶的比特幣資金使用這種方式鎖定,就不可能在 TA 自己設(shè)定的時間點之前花費。
- 災備措施/意外應對:一些風險不能僅靠多簽名(分散資金的控制權(quán))來消除,配合時間鎖可以避免資金贖回問題。
- 資金的社交恢復
1.3 工作原理:
- 兩個參與者(通常是交易的發(fā)起者和接收者)之間達成協(xié)議,確定交易的條件和參數(shù)。
- 發(fā)起者生成一個隨機數(shù)(preimage)并計算其哈希值(hash),這個哈希值被稱為哈希鎖(hash lock)。
- 發(fā)起者將帶有哈希鎖的交易信息發(fā)送給接收者。
- 接收者收到交易信息后,可以驗證哈希鎖的有效性,即通過計算哈希函數(shù)確認哈希鎖的哈希值與接收者期望的哈希值是否匹配。
- 如果哈希鎖有效,接收者可以執(zhí)行交易,并生成自己的隨機數(shù)和哈希鎖。
- 接收者將包含自己隨機數(shù)和哈希鎖的交易信息發(fā)送給發(fā)起者。
- 發(fā)起者驗證接收者的交易信息中的哈希鎖是否有效。
- 一旦發(fā)起者確認接收者的交易信息有效,交易就完成,發(fā)起者可以使用接收者提供的隨機數(shù)解開哈希鎖,完成交易。
HTLC 通過引入時間限制,確保在一定時間內(nèi)完成交易,否則交易將自動取消并回退。這種時間限制保證了交易的及時性和公平性,避免了一方惡意中止交易而不履行承諾。
總之,哈希時間鎖是一種基于哈希函數(shù)和時間限制的機制,用于確保在不信任的環(huán)境下進行安全的交易。它在加密貨幣領(lǐng)域的原子交換和閃電網(wǎng)絡等技術(shù)中起到了重要的作用。
二、原子交換
原子交換(Atomic Swap),就是去中心化(無第三方參與)下,兩個人實現(xiàn)原子性的跨鏈公平交易。原子交換的思想提出很早,在 2013 年 bitcointalk 上就有人提出。它的實現(xiàn)條件使用了 HTLC 和博弈論思想。
- 原子性
- 公平交易
2.1 工作原理
原子交換機制依賴于哈希時間鎖定合約 (HTLC),可以被理解為是一個帶有“哈希鎖定”(HashLock) 和“時間鎖定”(TimeLock) 兩項特殊保障的虛擬保險箱:
- 哈希鎖定:在交易發(fā)起方將用于解鎖 HTLC 合約的密鑰發(fā)給另一方之前,確保資金被鎖定在合約中。
- 時間鎖定:如果交易未在指定的時間段內(nèi)完成,則將交易的加密貨幣退還給交易者。
一旦雙方都提交了合約密鑰,交易就完成了。如果雙方未在規(guī)定時間內(nèi)提交,則交易將被取消,確保沒有人蒙受損失。
2.3 原子交換的升級版 - 潛水艇交換(Submarine Swap)
潛水艇互換可能是人們嘗試閃電網(wǎng)絡支付最簡單的手段。雖然你還是要支付鏈上手續(xù)費,整個支付流程也很像鏈上支付,但收款方可以是即時到賬的(跟具體的實現(xiàn)有關(guān))。如果你想開一個閃電網(wǎng)絡通道,也需要發(fā)起一筆鏈上交易??紤]到我們現(xiàn)在還在閃電網(wǎng)絡早期,有一個易于上手的玩法是很重要的。這也是為什么我們在Muun Wallet中實現(xiàn)了潛水艇互換。
三、原子交換和跨鏈
3.1?Vitalik 關(guān)于跨鏈的思考:
- 以太坊就算遭受 51% 攻擊,非法交易會被審查和回滾,保證鏈上原生資產(chǎn)(ETH、DAI)的安全,保證 L2 資產(chǎn)(OP、Arbitrum資產(chǎn))的安全。
- 對于跨鏈應用來說,51% 攻擊不可以恢復映射資產(chǎn)(solana-weth、ethereum-wsol)??珂溁顒泳哂蟹淳W(wǎng)絡效應:跨鏈應用越少越安全,跨鏈應用越多越存在安全風險。
- 對多鏈(multi-chain)保持樂觀,對 cross-rollup 保持樂觀,對跨鏈(cross-chain)保持悲觀。
- rollup 不能使用與原生資產(chǎn)不同的鏈作為數(shù)據(jù)層。
3.2 原子交換的缺陷:
- 缺陷一:可以看出,不管交換成功或失敗,總會有 4 個交易被上鏈。如果按照比特幣現(xiàn)有的擁堵狀態(tài)和高手續(xù)費,原子交換是基本行不通的,代價過高且會有損失錢的風險。
- 缺陷二:在考慮外部市場后,會存在對手風險,原子交換是不適用的。如在上面的協(xié)議描述里,Alice 和 Bob 已經(jīng)將 tx1 和 tx2 上鏈。則這之后,原子交換的成功與否取決于 Alice 是否要拋出 hash(a) 的原像,她有 24h 的考慮時間去決定。那在這 24 小時內(nèi),Alice 大可在對比交易所和原子交換的比率差別,如果交易所的匯率對自己有利,那就去交易所交易,拋棄原子交換。在這種情況下,Alice 除了會鎖定 48h 的幣,沒有其他風險,風險全部轉(zhuǎn)嫁給了 Bob。那么有人說,縮短 24h 和 48h 的參數(shù)設(shè)定就好了啊。但無論怎么縮短,這個風險都不能消除。且縮短鎖定時間還可能帶來安全風險。
- 缺陷三:除此之外,還有一種攻擊。在 tx1 和 tx2 上鏈后,Bob 完全封鎖 Alice 的網(wǎng)絡(由于存在點對點通信,會增加這種風險)。Alice 發(fā)出的 tx22 無法廣播到網(wǎng)絡里,但 Bob 可以截取到。Bob 因此可以得到 Hash(a) 的原像,從而上鏈 tx12(滿足 tx1 的解鎖條件2)拿到 1BTC。之后,Bob 再封鎖 Alice 的網(wǎng)絡 24 小時,他就又可以上鏈 tx21(滿足 tx2 的解鎖條件1)拿到 3ETH。那有人說,只要 Alice 遲遲發(fā)現(xiàn)自己發(fā)出的 tx22 不上鏈,那就去找個網(wǎng)吧重新發(fā)交易啊。Bob 總不能連人去哪都可以追蹤吧。這確實是最簡單的抵御方法。但也說明,原子交換需要人類來監(jiān)控,在完全程序自動化的條件下完成仍存在風險。