避免隨著時間推移變得無效的支出路徑(沒有交易)的原因是什麼?
有人告訴我,過期的支出路徑是比特幣設計者明確避免的,它會導致不良的重組行為(例如這裡)。
為了清楚我所說的過期花費路徑是什麼意思,想像一個腳本操作碼,它要求在時間鎖過期之前執行特定的花費路徑(而不是通常的時間鎖,花費路徑僅在時間鎖之後才有效過期)。
中本聰在這裡提到了這種事情,說:
“如果在分段後進行區塊鏈重組,交易需要能夠在以後的區塊中進入鏈。OP_BLOCKNUMBER 交易及其所有依賴項將變為無效。這對後來的所有者不公平沒有參與限時交易的代幣。”
但是,如果您等待 6 次確認,則不會發生預期實際收到硬幣的交易,例如,如果僅發送一兩次確認的交易。如果發生這種情況,3 次確認後的重組也會使這些交易無效。除非正在進行 51% 的攻擊,否則在超過 6 次確認後進行重組在統計上是不可能的。所以我不明白聰在這裡的意思。
我還被告知,在重組期間,節點不必重新評估已經過驗證的交易,但如果支出路徑到期,那麼您將不得不重新評估交易。但是,目前節點是否不必重新評估重組中的事務?由於重組可能引入了雙花交易,所有交易都需要在新的 UTXO 上下文中重新檢查,不是嗎?
有人進一步告訴我,還有“一大堆其他原因”。我很好奇它們是什麼,但我無法通過搜尋“比特幣單調”和“比特幣上下文無關”來找到很多關於這些東西的討論。我非常感謝有關這些問題的更多資訊的連結。
反對意見似乎主要是:
潛在的垃圾郵件風險,垃圾郵件發送者可能能夠廣播即將到期的交易(只要 1 個塊),費用太低而無法包含在下一個塊中,等到它到期,然後再次廣播。
記憶體池複雜度。由於交易可能會過期,因此需要額外的邏輯來跟踪這一點並評估交易是否從記憶體池中驅逐,以及它們是否值得重新廣播。
重組安全問題,在交易到期之前確認的交易可能會被排除在孤立該區塊的重組中,並且該交易將無法包含在成為主鏈的替代鏈中。
- 這可能會被惡意行為者濫用,該行為者向接受單一確認交易作為付款的受害者付款,交易很快就會到期,希望重組能夠在他們收到他們用付款購買的任何東西後撤銷交易。
- 還存在使用即將到期的 UTXO 創建子交易的風險,並且重組也會使這些交易無效。
這些似乎是可以解決的問題,但無論如何,這些都是我遇到的風險/潛在問題。