Skip to content

Commit

Permalink
calldata return code counter tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ignasirv committed Jan 10, 2023
1 parent ad8770b commit 6c28750
Show file tree
Hide file tree
Showing 13 changed files with 284 additions and 67 deletions.
48 changes: 48 additions & 0 deletions counters/countersConstants.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,54 @@ CONST %OPSIGNEXTEND_CNT_KECCAK_F = 0
CONST %OPSIGNEXTEND_CNT_MEM_ALIGN = 0
CONST %OPSIGNEXTEND_CNT_PADDING_PG = 0
CONST %OPSIGNEXTEND_CNT_POSEIDON_G = 0
; opBLOCKHASH
CONST %OPBLOCKHASH_STEP = 100
CONST %OPBLOCKHASH_CNT_BINARY = 0
CONST %OPBLOCKHASH_CNT_ARITH = 0
CONST %OPBLOCKHASH_CNT_KECCAK_F = 1
CONST %OPBLOCKHASH_CNT_MEM_ALIGN = 0
CONST %OPBLOCKHASH_CNT_PADDING_PG = 0
CONST %OPBLOCKHASH_CNT_POSEIDON_G = 2
; opCALLDATALOAD
CONST %OPCALLDATALOAD_STEP = 100 + %SHLARITH_STEP + %SHRARITH_STEP + %DIVARITH_STEP
CONST %OPCALLDATALOAD_CNT_BINARY = 1 + %SHLARITH_CNT_BINARY + %SHRARITH_CNT_BINARY + %DIVARITH_CNT_BINARY
CONST %OPCALLDATALOAD_CNT_ARITH = 0 + %SHLARITH_CNT_ARITH + %SHRARITH_CNT_ARITH + %DIVARITH_CNT_ARITH
CONST %OPCALLDATALOAD_CNT_KECCAK_F = 0 + %SHLARITH_CNT_KECCAK_F + %SHRARITH_CNT_KECCAK_F + %DIVARITH_CNT_KECCAK_F
CONST %OPCALLDATALOAD_CNT_MEM_ALIGN = 0 + %SHLARITH_CNT_MEM_ALIGN + %SHRARITH_CNT_MEM_ALIGN + %DIVARITH_CNT_MEM_ALIGN
CONST %OPCALLDATALOAD_CNT_PADDING_PG = 0 + %SHLARITH_CNT_PADDING_PG + %SHRARITH_CNT_PADDING_PG + %DIVARITH_CNT_PADDING_PG
CONST %OPCALLDATALOAD_CNT_POSEIDON_G = 0 + %SHLARITH_CNT_POSEIDON_G + %SHRARITH_CNT_POSEIDON_G + %DIVARITH_CNT_POSEIDON_G
; opCALLDATACOPY - COMPLEX - hardcoded values at test
CONST %OPCALLDATACOPY_STEP = 100
CONST %OPCALLDATACOPY_CNT_BINARY = 2
CONST %OPCALLDATACOPY_CNT_ARITH = 0
CONST %OPCALLDATACOPY_CNT_KECCAK_F = 0
CONST %OPCALLDATACOPY_CNT_MEM_ALIGN = 0
CONST %OPCALLDATACOPY_CNT_PADDING_PG = 0
CONST %OPCALLDATACOPY_CNT_POSEIDON_G = 0
; opRETURNDATACOPY - COMPLEX - hardcoded values at test
CONST %OPRETURNDATACOPY_STEP = 100
CONST %OPRETURNDATACOPY_CNT_BINARY = 2
CONST %OPRETURNDATACOPY_CNT_ARITH = 0
CONST %OPRETURNDATACOPY_CNT_KECCAK_F = 0
CONST %OPRETURNDATACOPY_CNT_MEM_ALIGN = 0
CONST %OPRETURNDATACOPY_CNT_PADDING_PG = 0
CONST %OPRETURNDATACOPY_CNT_POSEIDON_G = 0
; opCODECOPY - COMPLEX - hardcoded values at test
CONST %OPCODECOPY_STEP = 100
CONST %OPCODECOPY_CNT_BINARY = 0
CONST %OPCODECOPY_CNT_ARITH = 0
CONST %OPCODECOPY_CNT_KECCAK_F = 0
CONST %OPCODECOPY_CNT_MEM_ALIGN = 0
CONST %OPCODECOPY_CNT_PADDING_PG = 0
CONST %OPCODECOPY_CNT_POSEIDON_G = 0
; opEXTCODECOPY - COMPLEX - hardcoded values at test
CONST %OPEXTCODECOPY_STEP = 100
CONST %OPEXTCODECOPY_CNT_BINARY = 0
CONST %OPEXTCODECOPY_CNT_ARITH = 0
CONST %OPEXTCODECOPY_CNT_KECCAK_F = 0
CONST %OPEXTCODECOPY_CNT_MEM_ALIGN = 0
CONST %OPEXTCODECOPY_CNT_PADDING_PG = 0
CONST %OPEXTCODECOPY_CNT_POSEIDON_G = 0
; MSTORE32
CONST %MSTORE32_STEP = 50 + %OFFSETUTIL_STEP
CONST %MSTORE32_CNT_BINARY = 1 + %OFFSETUTIL_CNT_BINARY
Expand Down
12 changes: 11 additions & 1 deletion counters/endIncludes.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,14 @@ INCLUDE "../main/2-exp.zkasm"
INCLUDE "../main/vars.zkasm"
INCLUDE "../main/utils.zkasm"
INCLUDE "../main/opcodes/calldata-returndata-code.zkasm"
INCLUDE "../main/opcodes/arithmetic.zkasm"
INCLUDE "../main/opcodes/arithmetic.zkasm"
INCLUDE "../main/opcodes/block.zkasm"
INCLUDE "../main/opcodes/comparison.zkasm"
INCLUDE "../main/opcodes/context-information.zkasm"
INCLUDE "../main/opcodes/create-terminate-context.zkasm"
INCLUDE "../main/opcodes/crypto.zkasm"
INCLUDE "../main/opcodes/flow-control.zkasm"
INCLUDE "../main/opcodes/logs.zkasm"
INCLUDE "../main/opcodes/stack-operations.zkasm"
INCLUDE "../main/opcodes/storage-memory.zkasm"
INCLUDE "../main/touched.zkasm"
29 changes: 29 additions & 0 deletions counters/tests/opBLOCKHASH.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
1 => D
2 :HASHK(0)
10 :MSTORE(txCount)
1 :MSTORE(SP++)
:JMP(opBLOCKHASH)
checkCounters:
%OPBLOCKHASH_STEP - STEP:JMPN(failedCounters)
%OPBLOCKHASH_CNT_BINARY - CNT_BINARY :JMPNZ(failedCounters)
%OPBLOCKHASH_CNT_ARITH - CNT_ARITH :JMPNZ(failedCounters)
%OPBLOCKHASH_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
%OPBLOCKHASH_CNT_MEM_ALIGN - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPBLOCKHASH_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
%OPBLOCKHASH_CNT_POSEIDON_G - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
28 changes: 28 additions & 0 deletions counters/tests/opCALLDATACOPY.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
43 :MSTORE(SP++)
54 :MSTORE(SP++)
432543 :MSTORE(SP++)
:JMP(opCALLDATACOPY)
checkCounters:
500 - STEP:JMPN(failedCounters)
24 - CNT_BINARY :JMPNZ(failedCounters)
10 - CNT_ARITH :JMPNZ(failedCounters)
%OPCALLDATACOPY_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
2 - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPCALLDATACOPY_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
%OPCALLDATACOPY_CNT_POSEIDON_G - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
29 changes: 29 additions & 0 deletions counters/tests/opCALLDATALOAD.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
128 :MSTORE(txCalldataLen)
1 :MSTORE(SP++)
:JMP(opCALLDATALOAD)
checkCounters:
%OPCALLDATALOAD_STEP - STEP:JMPN(failedCounters)
8 - CNT_BINARY :JMPNZ(failedCounters)
;%OPCALLDATALOAD_CNT_BINARY - CNT_BINARY :JMPNZ(failedCounters)
3 - CNT_ARITH :JMPNZ(failedCounters)
;%OPCALLDATALOAD_CNT_ARITH - CNT_ARITH :JMPNZ(failedCounters)
%OPCALLDATALOAD_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
%OPCALLDATALOAD_CNT_MEM_ALIGN - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPCALLDATALOAD_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
%OPCALLDATALOAD_CNT_POSEIDON_G - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
28 changes: 28 additions & 0 deletions counters/tests/opCODECOPY.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
43 :MSTORE(SP++)
54 :MSTORE(SP++)
432543 :MSTORE(SP++)
:JMP(opCODECOPY)
checkCounters:
1800 - STEP:JMPN(failedCounters)
97 - CNT_BINARY :JMPNZ(failedCounters)
4 - CNT_ARITH :JMPNZ(failedCounters)
%OPCODECOPY_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
43 - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPCODECOPY_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
%OPCODECOPY_CNT_POSEIDON_G - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
29 changes: 29 additions & 0 deletions counters/tests/opEXTCODECOPY.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
43 :MSTORE(SP++)
54 :MSTORE(SP++)
432543 :MSTORE(SP++)
43 :MSTORE(SP++)
:JMP(opEXTCODECOPY)
checkCounters:
2000 - STEP:JMPN(failedCounters)
102 - CNT_BINARY :JMPNZ(failedCounters)
4 - CNT_ARITH :JMPNZ(failedCounters)
%OPEXTCODECOPY_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
43 - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPEXTCODECOPY_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
8 - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
34 changes: 34 additions & 0 deletions counters/tests/opRETURNDATACOPY.zkasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
INCLUDE "../initIncludes.zkasm"

start:
1000000 => GAS

operation:
1 => CTX
10000 :MSTORE(retDataLength)
5 :MSTORE(retDataOffset)
2 => CTX
1 :MSTORE(originCTX)
1 :MSTORE(retDataCTX)
43 :MSTORE(SP++)
54 :MSTORE(SP++)
4000 :MSTORE(SP++)
:JMP(opRETURNDATACOPY)
checkCounters:
1000 - STEP:JMPN(failedCounters)
35 - CNT_BINARY :JMPNZ(failedCounters)
13 - CNT_ARITH :JMPNZ(failedCounters)
%OPRETURNDATACOPY_CNT_KECCAK_F - CNT_KECCAK_F :JMPNZ(failedCounters)
2 - CNT_MEM_ALIGN :JMPNZ(failedCounters)
%OPRETURNDATACOPY_CNT_PADDING_PG - CNT_PADDING_PG :JMPNZ(failedCounters)
%OPRETURNDATACOPY_CNT_POSEIDON_G - CNT_POSEIDON_G :JMPNZ(failedCounters)

0 => A,B,C,D,E,CTX, SP, PC, GAS, MAXMEM, SR, HASHPOS, RR ; Set all registers to 0
finalizeExecution:
:JMP(finalWait)
readCode:
:JMP(checkCounters)
failedCounters:
2 => A
1 :ASSERT
INCLUDE "../endIncludes.zkasm"
14 changes: 7 additions & 7 deletions main/opcodes/block.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ opBLOCKHASHzero:
*/
opCOINBASE:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -81,7 +81,7 @@ opCOINBASE:
*/
opTIMESTAMP:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -100,7 +100,7 @@ opTIMESTAMP:
*/
opNUMBER:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS - %GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -120,7 +120,7 @@ opNUMBER:
*/
opDIFFICULTY:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -140,7 +140,7 @@ opDIFFICULTY:
*/
opGASLIMIT:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -160,7 +160,7 @@ opGASLIMIT:
*/
opCHAINID:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand All @@ -179,7 +179,7 @@ opCHAINID:
*/
opBASEFEE:
; checks zk-counters
%MAX_CNT_STEPS - STEP - 100 :JMPN(outOfCountersStep)
%MAX_CNT_STEPS - STEP - 10 :JMPN(outOfCountersStep)

; check out-of-gas
GAS-%GAS_QUICK_STEP => GAS :JMPN(outOfGas)
Expand Down
Loading

0 comments on commit 6c28750

Please sign in to comment.