閃電:按鍵混亂
我目前正在嘗試使用他們的白皮書和 BOLT#3 來了解閃電網路。
但是,我很難理解程序中的每個公鑰/私鑰角色。
據我了解這裡是過程(我稱P公鑰和K私鑰):
- Alice 和 Bob 在廣播之前創建了一個資金交易 –> 2 P_a P_b OP_CheckMultisig
- 他們創建了一個承諾 (C1a/b),以便在出現問題時能夠取回他們的資金。他們都簽署並把它交給交易對手(所以 Alice 用 K_a 簽署 C1b 並把它交給 Bob,反之亦然)
(我跳過了 RSMC、HTLC 的部分……)
但是,在 BOLT#3 中找到:
每個承諾交易使用一個唯一的 localpubkey 和一個 remotepubkey
所以我真的不明白,愛麗絲和鮑勃是否繼續使用他們的私鑰簽名?(K_a 和 K_b)為了能夠解鎖資金交易?這些新的公鑰是否僅用於在 HTLC 和 RSMC 中籤署新的多重簽名地址?
我認為我對以下內容感到困惑:
- 使用哪個鍵以及何時使用
- 我們如何仍然使用各種密鑰解鎖資金交易
感謝您的寶貴時間,我是這裡的新手,希望能得到一些幫助!
最好的
您提到的 BOLT#3 引用是指每個承諾交易的輸出。
to_local
和輸出中使用的密鑰to_remote
針對每個承諾交易對進行輪換。承諾交易仍然使用資金輸出的密鑰進行簽名。
另外,請注意,雖然 Lightning.network 上的閃電論文確實描述了當今網路上使用的支付渠道背後的關鍵思想,但它已經非常過時了。例如,它仍然使用
NOINPUT
-signed 交易,如果您開始了解閃電網路,這可能會令人困惑。Rusty Russell 的Deployable Lightning描述了根本性的變化,而 BOLT 描述了今天實際使用的東西(這也是不同的)。但是,它們的目的是詳細和說明性的,而不是解釋性的。如果您正在尋找有關閃電網路的介紹,那麼閃電網路書籍可能是一個更好的資源。
為了補充 Antoine 的回答,Chris Stewart在 2019 年閃電會議上介紹了閃電私鑰管理。
實際上,作為閃電協議的一部分,您需要管理 6 個不同的密鑰,其中一些需要是熱的,而另一些可以保存在冷庫中。
我認為您在資金私鑰和每個承諾的第一個秘密之間感到困惑。Chris 在這裡解釋了每個承諾的秘密:
這是每個承諾的秘密,每次閃電交易發生時都會改變。你輪換這個秘密,所以每次閃電通道中發生某些事情時它都會不斷變化。它用於在您的承諾交易中生成兩個輸出,因此您需要它在非常真實的意義上能夠訪問這些輸出,以防承諾交易進入鏈。再次使用此鍵,它必須是熱的。每次發生閃電交易時,您都需要更改此內容,然後在狀態轉換發生後將其撤消。