Security
是什麼阻止使用者在 HTLC 合約中作弊
我正在閱讀有關 HTLC 以及 Charlie 如何創建一個隨機數並生成其 SHA256 雜湊值的內容,該雜湊值應該由 Bob 最終用於完成他從 Alice 那裡收到的付款。
以下是https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts中的步驟
- Alice 向 Bob 打開一個支付通道,Bob 向 Charlie 打開一個支付通道。
- Alice 想以 1,000 satoshis 的價格從 Charlie 那裡購買一些東西。
- Charlie 生成一個隨機數並生成其 SHA256 雜湊。Charlie 將該雜湊值提供給 Alice。
- Alice 使用她的支付渠道向 Bob 支付 1,000 satoshis,但她在支付中添加了 Charlie 給她的雜湊值以及一個額外條件:為了讓 Bob 要求支付,他必須提供用於生產的數據那個雜湊。
- Bob 使用他向 Charlie 的支付渠道向 Charlie 支付 1,000 satoshis,並且 Bob 添加了 Alice 支付給 Bob 的相同條件的副本。
- Charlie 擁有用於生成雜湊的原始數據(稱為原像),因此 Charlie 可以使用它來完成他的付款並完全接收 Bob 的付款。通過這樣做,Charlie 必然使原像對 Bob 可用。
- Bob 使用原像來完成他從 Alice 處的付款
但是,如果 Bob 和 Charlie 決定作弊,並且在 Alice 發送 1000 個 sats 之後的第 4 步,Charlie 給 Bob 應該在第 7 步中使用的秘密號碼,在他們之間共享 sats,然後 Bob 說 Alice付款是錯誤的,她必須再做一次或其他事情。
我想這種攻擊是不值得的,因為
- 你必須等待愛麗絲選擇一個作弊的同伴鮑勃和查理。
- 攻擊不會帶來很多好處,因為閃電不是為了大筆支付。
- Bob 和 Charlie 將在網路中變得可疑並失去聲譽。
我想知道我是否在這裡遺漏了什麼或者這種攻擊可能發生
說支付失敗並且必須重做的過程意味著通道首先更新到 Alice 沒有發送 1000 個 sats 的狀態。錢並沒有消失。因此,如果 Bob 這樣做,那麼他將是 1000 次坐下的人,因為查理可以向他索取 HTLC。