Skip to content

Commit

Permalink
More OP_EVAL tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bitjson committed Dec 13, 2024
1 parent 3075c46 commit 957e424
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { OpcodeDescriptionsBch2023 } from '../2023/bch-2023-descriptions.js';
* beyond those present in `BCH_2025_05`.
*/
export enum OpcodeDescriptionsBch2026Additions {
OP_EVAL = 'Pop the top item from the stack as bytecode. Preserve the active bytecode at the top of the control stack, then evaluate the bytecode as if it were the active bytecode (without modifying the stack, alternate stack, or other evaluation context). When the evaluation is complete, restore the original bytecode and continue evaluation after the OP_EVAL instruction. If the bytecode is malformed, error.',
OP_EVAL = 'Pop the top item from the stack as bytecode. Preserve the active bytecode at the top of the control stack, then evaluate the stack-provided bytecode as if it were the active bytecode (without modifying the stack, alternate stack, or other evaluation context). When the evaluation is complete, restore the original bytecode and continue evaluation after the OP_EVAL instruction. If the bytecode is malformed, error.',
OP_BEGIN = 'Push the current instruction pointer index to the control stack as an integer (to be read by OP_UNTIL).',
OP_UNTIL = 'Pop the top item from the control stack (if the control value is not an integer, error). Add the difference between the control value and the current instruction pointer index to the repeated bytes counter, if the sum of the repeated bytes counter and the active bytecode length is greater than the maximum bytecode length, error. Pop the top item from the stack, if the value is not truthy, move the instruction pointer to the control value (and re-evaluate the OP_BEGIN).',
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
"05fpsr":[309,247200,465,"OP_EVAL: Control stack limited to depth of 100 (nonP2SH)"],
"4xfv3c":[311,248800,1035,"OP_EVAL: Control stack limited to depth of 100 (P2SH20)"],
"c8frkn":[311,248800,1059,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)"],
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)"],
"4cvzpw":[335,268000,1801,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)"],
"9782kk":[335,268000,1825,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)"],
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)"],
"sqwlkq":[337,269600,1805,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)"],
"ltlhp7":[337,269600,1829,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)"],
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (nonP2SH)"],
"4cvzpw":[335,268000,1801,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH20)"],
"9782kk":[335,268000,1825,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH32)"],
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (nonP2SH)"],
"sqwlkq":[337,269600,1805,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH20)"],
"ltlhp7":[337,269600,1829,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH32)"],
"t0rx6q":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (nonP2SH)"],
"x55fkv":[337,269600,1805,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (P2SH20)"],
"2wcdcd":[337,269600,1829,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (P2SH32)"],
"unhdgg":[47,37600,205,"OP_EVAL: ((2 2 +)) 4 = (nonP2SH)"],
"k0n4m0":[51,40800,777,"OP_EVAL: ((2 2 +)) 4 = (P2SH20)"],
"htr8ly":[51,40800,801,"OP_EVAL: ((2 2 +)) 4 = (P2SH32)"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
"ekqyxw":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"sqwlkq":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"ltlhp7":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"t0rx6q":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"x55fkv":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"2wcdcd":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"unhdgg":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"k0n4m0":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"htr8ly":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,18 @@ c8frkn,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)",483,79,2,1,311,
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,143,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)",507,67,2,1,335,268000,1801,8,0,1172,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)",507,79,2,1,335,268000,1825,8,0,1172,6,8,641,0
ekqyxw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,143,0,4,287,0
sqwlkq,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)",509,67,2,1,337,269600,1805,8,0,1179,6,8,621,0
ltlhp7,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)",509,79,2,1,337,269600,1829,8,0,1179,6,8,645,0
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,143,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)",507,67,2,1,335,268000,1801,8,0,1172,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)",507,79,2,1,335,268000,1825,8,0,1172,6,8,641,0
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,143,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (P2SH20)",507,67,2,1,335,268000,1801,8,0,1172,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (P2SH32)",507,79,2,1,335,268000,1825,8,0,1172,6,8,641,0
ekqyxw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,143,0,4,287,0
sqwlkq,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (P2SH20)",509,67,2,1,337,269600,1805,8,0,1179,6,8,621,0
ltlhp7,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (P2SH32)",509,79,2,1,337,269600,1829,8,0,1179,6,8,645,0
t0rx6q,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,143,0,4,287,0
x55fkv,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (P2SH20)",509,67,2,1,337,269600,1805,8,0,1179,6,8,621,0
2wcdcd,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (P2SH32)",509,79,2,1,337,269600,1829,8,0,1179,6,8,645,0
unhdgg,"OP_EVAL: ((2 2 +)) 4 = (nonP2SH)",217,47,2,1,47,37600,205,1,0,164,0,2,5,0
k0n4m0,"OP_EVAL: ((2 2 +)) 4 = (P2SH20)",221,67,2,1,51,40800,777,1,0,178,2,6,49,0
htr8ly,"OP_EVAL: ((2 2 +)) 4 = (P2SH32)",221,79,2,1,51,40800,801,1,0,178,2,6,73,0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
"05fpsr":[309,247200,465,"OP_EVAL: Control stack limited to depth of 100 (nonP2SH)"],
"4xfv3c":[311,248800,1291,"OP_EVAL: Control stack limited to depth of 100 (P2SH20)"],
"c8frkn":[311,248800,1315,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)"],
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)"],
"4cvzpw":[335,268000,2569,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)"],
"9782kk":[335,268000,2593,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)"],
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)"],
"sqwlkq":[337,269600,2573,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)"],
"ltlhp7":[337,269600,2597,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)"],
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (nonP2SH)"],
"4cvzpw":[335,268000,2569,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH20)"],
"9782kk":[335,268000,2593,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH32)"],
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (nonP2SH)"],
"sqwlkq":[337,269600,2573,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH20)"],
"ltlhp7":[337,269600,2597,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH32)"],
"t0rx6q":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (nonP2SH)"],
"x55fkv":[337,269600,2573,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (P2SH20)"],
"2wcdcd":[337,269600,2597,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"OP_1 OP_0 OP_EVAL\" (evaluation of empty bytecode) at 100 (P2SH32)"],
"unhdgg":[47,37600,205,"OP_EVAL: ((2 2 +)) 4 = (nonP2SH)"],
"k0n4m0":[51,40800,1033,"OP_EVAL: ((2 2 +)) 4 = (P2SH20)"],
"htr8ly":[51,40800,1057,"OP_EVAL: ((2 2 +)) 4 = (P2SH32)"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
"ekqyxw":"Unable to verify standard transaction: standard transactions may only spend standard output types. Source output 1 is non-standard: locking bytecode does not match a standard pattern: P2PKH, P2PK, P2SH, P2MS, or arbitrary data (OP_RETURN).",
"sqwlkq":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"ltlhp7":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"t0rx6q":"Unable to verify standard transaction: standard transactions may only spend standard output types. Source output 1 is non-standard: locking bytecode does not match a standard pattern: P2PKH, P2PK, P2SH, P2MS, or arbitrary data (OP_RETURN).",
"x55fkv":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"2wcdcd":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"unhdgg":"Unable to verify standard transaction: standard transactions may only spend standard output types. Source output 1 is non-standard: locking bytecode does not match a standard pattern: P2PKH, P2PK, P2SH, P2MS, or arbitrary data (OP_RETURN).",
"k0n4m0":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
"htr8ly":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,18 @@ c8frkn,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)",483,79,2,1,311,
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,20,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)",507,67,2,1,335,268000,2569,8,0,167,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)",507,79,2,1,335,268000,2593,8,0,167,6,8,641,0
ekqyxw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,20,0,4,287,0
sqwlkq,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)",509,67,2,1,337,269600,2573,8,0,168,6,8,621,0
ltlhp7,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)",509,79,2,1,337,269600,2597,8,0,168,6,8,645,0
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,20,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)",507,67,2,1,335,268000,2569,8,0,167,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)",507,79,2,1,335,268000,2593,8,0,167,6,8,641,0
g3u8du,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (nonP2SH)",211,337,2,1,41,32800,685,1,0,20,0,4,285,0
4cvzpw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (P2SH20)",507,67,2,1,335,268000,2569,8,0,167,6,8,617,0
9782kk,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, "OP_1" at 100 (P2SH32)",507,79,2,1,335,268000,2593,8,0,167,6,8,641,0
ekqyxw,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,20,0,4,287,0
sqwlkq,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (P2SH20)",509,67,2,1,337,269600,2573,8,0,168,6,8,621,0
ltlhp7,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "<OP_1> OP_EVAL" at 100 (P2SH32)",509,79,2,1,337,269600,2597,8,0,168,6,8,645,0
t0rx6q,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (nonP2SH)",211,339,2,1,41,32800,687,1,0,20,0,4,287,0
x55fkv,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (P2SH20)",509,67,2,1,337,269600,2573,8,0,168,6,8,621,0
2wcdcd,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt "OP_1 OP_0 OP_EVAL" (evaluation of empty bytecode) at 100 (P2SH32)",509,79,2,1,337,269600,2597,8,0,168,6,8,645,0
unhdgg,"OP_EVAL: ((2 2 +)) 4 = (nonP2SH)",217,47,2,1,47,37600,205,1,0,23,0,2,5,0
k0n4m0,"OP_EVAL: ((2 2 +)) 4 = (P2SH20)",221,67,2,1,51,40800,1033,1,0,25,2,6,49,0
htr8ly,"OP_EVAL: ((2 2 +)) 4 = (P2SH32)",221,79,2,1,51,40800,1057,1,0,25,2,6,73,0
Expand Down
Loading

0 comments on commit 957e424

Please sign in to comment.