Script

如果山寨幣腳本的執行時間超過出塊時間怎麼辦?

  • May 14, 2016

我不知道腳本執行的時間和頻率,但在我看來,如果單個腳本(或塊中所有腳本的總和)超過包含在堵塞。

鑑於山寨幣的趨勢是減少塊持續時間,我認為這可能成為一個問題或競爭條件,其中 TX 永遠不會被包含在一個塊中。

考慮到隨著各種山寨幣區塊大小的增長……可能大於 1mb,考慮到更高的交易量,這種風險也會增加。

所以我的問題是:

  • 何時評估(或不評估)事務腳本?

我聽說某些舊的 TX 腳本在初始同步期間沒有經過驗證以加快程序,所以也許還有其他時候沒有執行 TX。(也許這是一個未知的腳本。)

  • CPU 負載在網路中起什麼作用以及分叉的風險?

也許只有礦工才會受到影響……我不確定。

  • 如果執行完整節點的網路在 CPU 或頻寬方面存在容量問題,是否會發生分叉?

您不必擔心會發生這種情況。

腳本中沒有循環操作碼。每個腳本操作碼只能執行一次,最慢的操作碼可能是ECDSA簽名驗證(因為涉及到EC_point_multiply)。即便如此,現代 CPU 的單核處理時間也只需要 50~100μs 左右。

假設一個 1MB 的塊(最大大小)包含 100% 的簽名驗證操作碼,即 100 萬個簽名驗證,單核最多佔用 100 秒的 CPU 時間,這仍然遠低於塊時間。實際上,每個 scriptSig 都伴隨著至少 100 字節的數據(pubkey + ECDSA 簽名),因此它可能需要不到 1 秒的 CPU 時間。

這是比特幣的一個潛在問題,但在山寨幣中更是如此。比特幣在其交易腳本的豐富性方面非常保守。具有更快出塊時間和/或限制較少的腳本引擎的山寨幣需要進行大量優化,以免造成風險。

這是將塊大小增加到 8MB 左右的問題之一。

Rusty Russell 在一篇關於大型交易的文章中進行了討論 ( <https://rusty.ozlabs.org/?p=522> )。

根據生鏽的

如果塊是 8MB:一個 8MB 的交易,有 22,500 個輸入和 3.95MB 的輸出,需要 11 分鐘才能散列。如果你能探勘其中一個,你就可以永遠讓競爭對手遠離你,並擁有比特幣網路

比特幣核心開發人員一直在對比特幣基礎設施(如 libsecp256k1)進行重大改進,以使未來的擴展成為可能。但這是一個簡單的恆定變化如何產生深遠影響的例子。

引用自:https://bitcoin.stackexchange.com/questions/23401