You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: src/lib/vm/instruction-sets/bch/2026/bch-2026-descriptions.ts
+1-1
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ import { OpcodeDescriptionsBch2023 } from '../2023/bch-2023-descriptions.js';
5
5
* beyond those present in `BCH_2025_05`.
6
6
*/
7
7
exportenumOpcodeDescriptionsBch2026Additions{
8
-
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.',
8
+
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.',
9
9
OP_BEGIN='Push the current instruction pointer index to the control stack as an integer (to be read by OP_UNTIL).',
10
10
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).',
Copy file name to clipboardexpand all lines: src/lib/vmb-tests/generated/bch_2025_invalid/chip.eval.nonstandard_limits.json
+9-6
Original file line number
Diff line number
Diff line change
@@ -17,12 +17,15 @@
17
17
"05fpsr":[309,247200,465,"OP_EVAL: Control stack limited to depth of 100 (nonP2SH)"],
18
18
"4xfv3c":[311,248800,1035,"OP_EVAL: Control stack limited to depth of 100 (P2SH20)"],
19
19
"c8frkn":[311,248800,1059,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)"],
20
-
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)"],
21
-
"4cvzpw":[335,268000,1801,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)"],
22
-
"9782kk":[335,268000,1825,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)"],
23
-
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)"],
24
-
"sqwlkq":[337,269600,1805,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)"],
25
-
"ltlhp7":[337,269600,1829,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)"],
20
+
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (nonP2SH)"],
21
+
"4cvzpw":[335,268000,1801,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH20)"],
22
+
"9782kk":[335,268000,1825,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH32)"],
23
+
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (nonP2SH)"],
24
+
"sqwlkq":[337,269600,1805,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH20)"],
25
+
"ltlhp7":[337,269600,1829,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH32)"],
26
+
"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)"],
27
+
"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)"],
28
+
"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)"],
Copy file name to clipboardexpand all lines: src/lib/vmb-tests/generated/bch_2025_invalid/chip.eval.nonstandard_stats.csv
+12-3
Original file line number
Diff line number
Diff line change
@@ -20,9 +20,18 @@ c8frkn,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)",483,79,2,1,311,
20
20
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
21
21
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
22
22
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
23
-
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
24
-
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
25
-
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
23
+
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
24
+
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
25
+
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
26
+
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
27
+
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
28
+
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
29
+
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
30
+
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
31
+
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
32
+
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
33
+
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
34
+
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
Copy file name to clipboardexpand all lines: src/lib/vmb-tests/generated/bch_2025_invalid/chip.eval.standard_limits.json
+9-6
Original file line number
Diff line number
Diff line change
@@ -17,12 +17,15 @@
17
17
"05fpsr":[309,247200,465,"OP_EVAL: Control stack limited to depth of 100 (nonP2SH)"],
18
18
"4xfv3c":[311,248800,1291,"OP_EVAL: Control stack limited to depth of 100 (P2SH20)"],
19
19
"c8frkn":[311,248800,1315,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)"],
20
-
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (nonP2SH)"],
21
-
"4cvzpw":[335,268000,2569,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH20)"],
22
-
"9782kk":[335,268000,2593,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100 (P2SH32)"],
23
-
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (nonP2SH)"],
24
-
"sqwlkq":[337,269600,2573,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH20)"],
25
-
"ltlhp7":[337,269600,2597,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt OP_EVAL at 100 (P2SH32)"],
20
+
"g3u8du":[41,32800,685,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (nonP2SH)"],
21
+
"4cvzpw":[335,268000,2569,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH20)"],
22
+
"9782kk":[335,268000,2593,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, \"OP_1\" at 100 (P2SH32)"],
23
+
"ekqyxw":[41,32800,687,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (nonP2SH)"],
24
+
"sqwlkq":[337,269600,2573,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH20)"],
25
+
"ltlhp7":[337,269600,2597,"OP_EVAL: Nesting with OP_IF/OP_ENDIF to depth 100, attempt \"<OP_1> OP_EVAL\" at 100 (P2SH32)"],
26
+
"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)"],
27
+
"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)"],
28
+
"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)"],
Copy file name to clipboardexpand all lines: src/lib/vmb-tests/generated/bch_2025_invalid/chip.eval.standard_results.json
+3
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,9 @@
23
23
"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).",
24
24
"sqwlkq":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
25
25
"ltlhp7":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
26
+
"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).",
27
+
"x55fkv":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
28
+
"2wcdcd":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
26
29
"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).",
27
30
"k0n4m0":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
28
31
"htr8ly":"Unable to verify transaction: error in evaluating input index 1: Program called an unassigned, reserved operation.",
Copy file name to clipboardexpand all lines: src/lib/vmb-tests/generated/bch_2025_invalid/chip.eval.standard_stats.csv
+12-3
Original file line number
Diff line number
Diff line change
@@ -20,9 +20,18 @@ c8frkn,"OP_EVAL: Control stack limited to depth of 100 (P2SH32)",483,79,2,1,311,
20
20
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
21
21
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
22
22
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
23
-
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
24
-
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
25
-
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
23
+
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
24
+
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
25
+
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
26
+
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
27
+
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
28
+
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
29
+
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
30
+
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
31
+
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
32
+
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
33
+
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
34
+
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
0 commit comments