任何人都可以通過查看腳本雜湊來發現腳本的最終條件,而無需兌換數據?
考慮以下場景。
Alice、Carol 和 Bob 創建並資助具有以下規則的腳本:如果現在,alice pubkey,bob pubkey else if now+500 塊,bob pubkey,carol pubkey else if now+1000 塊,ANYONECANSPEND
問題是是否有任何人(除了擁有贖回腳本的 Alice、Bob 和 Carol 之外)可以通過查看地址(腳本雜湊)來判斷其最終條件是 ANYONECANSPEND,例如礦工選擇不將其包含在一個區塊中,直到最後 nLockTime 過去了,礦工可以索取全部輸出,而不僅僅是費用。
根據我目前的理解,僅通過查看本機 P2WSH 地址(腳本雜湊)它就不會告訴您有關兌換腳本的任何資訊,還是我錯了?
此外,如果輸出在第二個 nLockTime 被花費,礦工能否了解最終條件,例如當 Bob 和 Carol 嘗試花費時,他們還必須提供贖回腳本,從而允許礦工看到如果他們再等待 500 個區塊,他們可以領取整個輸出,而不僅僅是費用,在此之前不要將其包含在一個塊中。謝謝你。
由於沒有已知的對 RIPEMD160 和 SHA256 的原像攻擊,因此僅給出 scriptHash 是不可能知道redeemScript 的內容的。所以,是的,不可能知道從一個地址只給出地址需要什麼條件。這是使用 scriptHashes 的要點之一:它對其他人隱藏redeemScript,直到它被使用。
此外,如果輸出在第二個 nLockTime 被花費,礦工能否了解最終條件,例如當 Bob 和 Carol 嘗試花費時,他們還必須提供贖回腳本,從而允許礦工看到如果他們再等待 500 個區塊,他們可以領取整個輸出,而不僅僅是費用,在此之前不要將其包含在一個塊中。
是的,這是目前的一個問題。如果交易被簽署和廣播,redeemScript 將被披露,然後礦工可以看到 ANYONECANSPEND 條件,在這種情況下,他們可能會被激勵不讓交易確認。這是一個問題。
然而,這個問題並非沒有解決方案。這特別是MAST (BIP 114)修復的問題。基本上,腳本中未訪問的分支隱藏在雜湊後面。因此,如果 MAST 可用並且redeemScript 使用它,那麼未使用的條件(例如ANYONECANSPEND 條件)將隱藏在另一個雜湊後面,因此外部觀察者不會知道它。
Taproot是 MAST 的擴展,它通過使觀察者甚至不知道還有其他未使用的分支來增加隱私。