如果山寨幣腳本的執行時間超過出塊時間怎麼辦?
我不知道腳本執行的時間和頻率,但在我看來,如果單個腳本(或塊中所有腳本的總和)超過包含在堵塞。
鑑於山寨幣的趨勢是減少塊持續時間,我認為這可能成為一個問題或競爭條件,其中 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)進行重大改進,以使未來的擴展成為可能。但這是一個簡單的恆定變化如何產生深遠影響的例子。