Script
什麼是替代堆棧?
我在比特幣維基腳本頁面(<https://en.bitcoin.it/wiki/Script>)中註意到有兩個操作碼名為:
OP_TOALTSTACK OP_FROMALTSTACK
看起來還有另一個堆棧可以單獨用作數據儲存,只需推送和彈出數據。我以前從未聽說過這個,但它似乎是一個非常有用的功能。
任何人都可以驗證這是替代堆棧的實際用途嗎?如果不只是為了推送和彈出數據,那它是為了什麼?是否想到了任何特定的案例?
case OP_TOALTSTACK: { if (stack.size() < 1) return false; altstack.push_back(stacktop(-1)); popstack(stack); } break; case OP_FROMALTSTACK: { if (altstack.size() < 1) return false; stack.push_back(altstacktop(-1)); popstack(altstack); } break;
例子:
Stack: Alternate Stack: Script: OP_1 OP_2 OP_TOALTSTACK
.
Stack: 01 Alternate Stack: Script: OP_2 OP_TOALTSTACK
.
Stack: 01 02 Alternate Stack: Script: OP_TOALTSTACK
.
Stack: 01 Alternate Stack: 02 Script:
它是乾什麼用的?是否想到了任何特定的案例?
它是……使用受損。99% 的情況下,您可以通過將事物以不同的順序放入堆棧來避免使用 OP_(TO|FROM)ALTSTACK。有 18 個堆棧操作運算符,但只有一個 (OP_DUP) 經常使用。我認為比特幣腳本的預期用途過於復雜。