Security

是什麼阻止使用者在 HTLC 合約中作弊

  • August 13, 2022

我正在閱讀有關 HTLC 以及 Charlie 如何創建一個隨機數並生成其 SHA256 雜湊值的內容,該雜湊值應該由 Bob 最終用於完成他從 Alice 那裡收到的付款。

以下是https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts中的步驟

  1. Alice 向 Bob 打開一個支付通道,Bob 向 Charlie 打開一個支付通道。
  2. Alice 想以 1,000 satoshis 的價格從 Charlie 那裡購買一些東西。
  3. Charlie 生成一個隨機數並生成其 SHA256 雜湊。Charlie 將該雜湊值提供給 Alice。
  4. Alice 使用她的支付渠道向 Bob 支付 1,000 satoshis,但她在支付中添加了 Charlie 給她的雜湊值以及一個額外條件:為了讓 Bob 要求支付,他必須提供用於生產的數據那個雜湊。
  5. Bob 使用他向 Charlie 的支付渠道向 Charlie 支付 1,000 satoshis,並且 Bob 添加了 Alice 支付給 Bob 的相同條件的副本。
  6. Charlie 擁有用於生成雜湊的原始數據(稱為原像),因此 Charlie 可以使用它來完成他的付款並完全接收 Bob 的付款。通過這樣做,Charlie 必然使原像對 Bob 可用。
  7. Bob 使用原像來完成他從 Alice 處的付款

但是,如果 Bob 和 Charlie 決定作弊,並且在 Alice 發送 1000 個 sats 之後的第 4 步,Charlie 給 Bob 應該在第 7 步中使用的秘密號碼,在他們之間共享 sats,然後 Bob 說 Alice付款是錯誤的,她必須再做一次或其他事情。

我想這種攻擊是不值得的,因為

  1. 你必須等待愛麗絲選擇一個作弊的同伴鮑勃和查理。
  2. 攻擊不會帶來很多好處,因為閃電不是為了大筆支付。
  3. Bob 和 Charlie 將在網路中變得可疑並失去聲譽。

我想知道我是否在這裡遺漏了什麼或者這種攻擊可能發生

說支付失敗並且必須重做的過程意味著通道首先更新到 Alice 沒有發送 1000 個 sats 的狀態。錢並沒有消失。因此,如果 Bob 這樣做,那麼他將是 1000 次坐下的人,因為查理可以向他索取 HTLC。

引用自:https://bitcoin.stackexchange.com/questions/114873