Script

什麼腳本解鎖了這個鎖定腳本?

  • September 10, 2021

我擁有的鎖定腳本是

OP_PUSH1(0x03) OP_ADD OP_PUSH1(0x05) OP_NUMEQUALVERIFY

我不明白 OP_PUSH 是如何工作的——它是從哪裡推送的,它是從哪裡推送到棧頂的?我認為腳本操作是從堆棧頂部讀取的,所以我會讀取頂部項目並將其推回堆棧,但什麼都不做?

我必須將什麼作為解鎖腳本放在左側才能讓 OP_NUMEQUALVERIFY 在這裡返回有效?

  1. 要推送 1-16 之間的數字,您應該使用 OP_1-OP_16。
  2. 要推送大於 16 的數字,您應該使用 OP_PUSH(OP_N/A)。

例如:

<5> push 編譯到 OP_5: 0x55

<17> push 編譯到 OP_PUSH1(0x11): 0x0111

<666> push 編譯到 OP_PUSH2(0x9a02): 0x029a02

  1. OP_ADD 彈出兩個輸入並將它們相加。所以你的排序是錯誤的,因為 OP_ADD 必須在 3 和 5 之後。
  2. 堆棧必須以“1”結尾,因此您應該使用 OP_NUMEQUAL 而不是 OP_NUMEQUALVERIFY,這會使堆棧留下 1 而不是空的。

您的最終腳本應該是:

OP_3 OP_5 OP_ADD OP_EQUAL

你的解鎖腳本應該是:OP_8

您可以線上測試它:https ://scriptwiz.app/

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