Private-Key
在沒有發現私鑰的情況下證明比特幣地址發生衝突?
如果存在導致地址衝突的私鑰,是否有可能表明該私鑰不是以前使用的那個,即使它們在地址上發生了衝突?
具體來說,如果 Satoshi 擁有的早期區塊之一發生碰撞,是否可以挑戰以證明獲得它的人沒有初始私鑰?具體來說,如果他們簽署了最初使用的相同腳本,它不會生成不同的簽名,而原始所有者將能夠複製原始簽名?
謝謝,大衛
用我自己的話來說這個問題:你能證明交易輸出是用與最初預期不同的私鑰解鎖的嗎?
簡短的回答:你可以或不能,取決於情況。
一個標準的交易輸出腳本是這樣工作的:
- 假設堆棧以兩個項目開始,公鑰在上面,簽名在下面。
- 複製公鑰(最上面的項目)。
- 計算它的雜湊值。
- 推送預期的雜湊,即收款人的地址(20 字節 SHA-256 + RIPEMD-160 雜湊)。
- 比較並斷言前兩項相等。
- 將堆棧恢復到初始狀態,並使用這兩項檢查簽名。
一個標準的交易輸入腳本是這樣工作的:
- 推送簽名。
- 推送公鑰(現在位於堆棧頂部)。
由於這種潛在的機制,以下是含義:
- 如果以前從未使用過特定地址的輸出,則比特幣網路從未見過公鑰。因此,第一次出現有效公鑰(其 SHA-256 + RIPEMD-160 雜湊匹配)時,它與具有相同雜湊的任何其他公鑰(當然,極不可能找到)一樣有效)。
- 如果一個特定地址的輸出之前已經使用過,那麼網路已經記錄了一個或多個用於使用該地址的公鑰。比特幣/區塊鏈協議不要求公鑰必須相同;換句話說,沒有“鍵固定”的概念。儘管單個礦工的比特幣客戶端強制執行密鑰固定是合理的,但我不希望這會成為實現的功能。