Skip to content

Commit 8c1d4a6

Browse files
authored
Merge branch 'master' into EIP-7823-set-upper-bounds-for-MODEXP---OOB-side
2 parents b73e423 + c29b603 commit 8c1d4a6

29 files changed

+1100
-24
lines changed

Makefile

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ CONSTANTS := constants/constants.lisp
2828
CONSTANTS_LONDON := constants/london/constants.zkasm
2929
CONSTANTS_CANCUN := constants/cancun/constants.zkasm
3030
CONSTANTS_PRAGUE := constants/prague/constants.zkasm
31+
CONSTANTS_OSAKA := constants/osaka/constants.zkasm
3132

32-
EC_DATA := ecdata
33+
EC_DATA_LONDON := ecdata/london
34+
35+
EC_DATA_OSAKA := ecdata/osaka
3336

3437
EUC := euc
3538

@@ -95,7 +98,8 @@ TABLES_LONDON := reftables/london/*.lisp
9598
TABLES_CANCUN := reftables/cancun/*.lisp
9699
TABLES_PRAGUE := reftables/prague/*.lisp
97100

98-
TRM := trm/trm.zkasm
101+
TRM_LONDON := trm/trm_london.zkasm
102+
TRM_OSAKA := trm/trm_osaka.zkasm
99103

100104
TXN_DATA_LONDON := txndata/london
101105
TXN_DATA_SHANGHAI := txndata/shanghai
@@ -116,7 +120,6 @@ ZKEVM_MODULES_COMMON := ${CONSTANTS} \
116120
${BIN} \
117121
${BLAKE2f_MODEXP_DATA} \
118122
${BLOCKHASH} \
119-
${EC_DATA} \
120123
${EUC} \
121124
${EXP} \
122125
${GAS} \
@@ -128,13 +131,13 @@ ZKEVM_MODULES_COMMON := ${CONSTANTS} \
128131
${SHAKIRA_DATA} \
129132
${SHIFT} \
130133
${STP} \
131-
${TRM} \
132134
${WCP}
133135

134136
ZKEVM_MODULES_LONDON := ${ZKEVM_MODULES_COMMON} \
135137
${CONSTANTS_LONDON} \
136138
${TABLES_LONDON} \
137139
${BLOCKDATA_LONDON} \
140+
${EC_DATA_LONDON} \
138141
${HUB_LONDON} \
139142
${LOG_INFO_LONDON} \
140143
${MMIO_LONDON} \
@@ -143,6 +146,7 @@ ZKEVM_MODULES_LONDON := ${ZKEVM_MODULES_COMMON} \
143146
${OOB_LONDON} \
144147
${RLP_TXN_LONDON} \
145148
${RLP_TXN_RCPT_LONDON} \
149+
${TRM_LONDON} \
146150
${TXN_DATA_LONDON}
147151

148152

@@ -152,6 +156,7 @@ ZKEVM_MODULES_SHANGHAI := ${ZKEVM_MODULES_COMMON} \
152156
${CONSTANTS_LONDON} \
153157
${TABLES_LONDON} \
154158
${BLOCKDATA_PARIS} \
159+
${EC_DATA_LONDON} \
155160
${HUB_SHANGHAI} \
156161
${LOG_INFO_LONDON} \
157162
${MMIO_LONDON} \
@@ -160,13 +165,15 @@ ZKEVM_MODULES_SHANGHAI := ${ZKEVM_MODULES_COMMON} \
160165
${OOB_SHANGHAI} \
161166
${RLP_TXN_LONDON} \
162167
${RLP_TXN_RCPT_LONDON} \
168+
${TRM_LONDON} \
163169
${TXN_DATA_SHANGHAI}
164170

165171
ZKEVM_MODULES_CANCUN := ${ZKEVM_MODULES_COMMON} \
166172
${CONSTANTS_CANCUN} \
167173
${TABLES_CANCUN} \
168174
${BLOCKDATA_CANCUN} \
169175
${BLS_CANCUN} \
176+
${EC_DATA_LONDON} \
170177
${HUB_CANCUN} \
171178
${LOG_INFO_CANCUN} \
172179
${MMIO_CANCUN} \
@@ -176,13 +183,15 @@ ZKEVM_MODULES_CANCUN := ${ZKEVM_MODULES_COMMON} \
176183
${RLP_TXN_CANCUN} \
177184
${RLP_TXN_RCPT_LONDON} \
178185
${RLP_UTILS_CANCUN} \
186+
${TRM_LONDON} \
179187
${TXN_DATA_CANCUN}
180188

181189
ZKEVM_MODULES_PRAGUE := ${ZKEVM_MODULES_COMMON} \
182190
${CONSTANTS_PRAGUE} \
183191
${TABLES_PRAGUE} \
184192
${BLOCKDATA_CANCUN} \
185193
${BLS_PRAGUE} \
194+
${EC_DATA_LONDON} \
186195
${HUB_PRAGUE} \
187196
${LOG_INFO_CANCUN} \
188197
${MMIO_CANCUN} \
@@ -192,13 +201,15 @@ ZKEVM_MODULES_PRAGUE := ${ZKEVM_MODULES_COMMON} \
192201
${RLP_TXN_PRAGUE} \
193202
${RLP_TXN_RCPT_LONDON} \
194203
${RLP_UTILS_CANCUN} \
204+
${TRM_LONDON} \
195205
${TXN_DATA_PRAGUE}
196206

197207
ZKEVM_MODULES_OSAKA := ${ZKEVM_MODULES_COMMON} \
198-
${CONSTANTS_PRAGUE} \
208+
${CONSTANTS_OSAKA} \
199209
${TABLES_PRAGUE} \
200210
${BLOCKDATA_CANCUN} \
201211
${BLS_PRAGUE} \
212+
${EC_DATA_OSAKA} \
202213
${HUB_OSAKA} \
203214
${LOG_INFO_CANCUN} \
204215
${MMIO_CANCUN} \
@@ -208,6 +219,7 @@ ZKEVM_MODULES_OSAKA := ${ZKEVM_MODULES_COMMON} \
208219
${RLP_TXN_PRAGUE} \
209220
${RLP_TXN_RCPT_OSAKA} \
210221
${RLP_UTILS_CANCUN} \
222+
${TRM_OSAKA} \
211223
${TXN_DATA_OSAKA}
212224

213225
all: zkevm_london.bin zkevm_paris.bin zkevm_shanghai.bin zkevm_cancun.bin zkevm_prague.bin zkevm_osaka.bin

bin/bin.zkasm

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ include "../constants/evm.zkasm"
33
include "../util/bit_xoan.zkasm"
44
include "../util/byte.zkasm"
55
include "../util/signextend.zkasm"
6+
include "../util/log2.zkasm"
67

7-
;; The bin module (BIN) handles the following 6 EVM instructions :
8+
;; The bin module (BIN) handles the following EVM instructions :
89
;; 1. AND 2. OR 3. XOR
910
;; 4. NOT 5. BYTE 6. SIGNEXTEND
11+
;; 7. CLZ
1012
;; The first four correspond to the bitwise operations.
1113
;; BYTE and SIGNEXTEND need to extract a byte from ARGUMENT_2.
14+
1215
pub fn bin(INST=0x16 u8, ARGUMENT_1 u256, ARGUMENT_2 u256) -> (RES u256) {
1316

1417
if INST==EVM_INST_XOR goto xor_call
@@ -17,6 +20,7 @@ pub fn bin(INST=0x16 u8, ARGUMENT_1 u256, ARGUMENT_2 u256) -> (RES u256) {
1720
if INST==EVM_INST_NOT goto not_call
1821
if INST==EVM_INST_BYTE goto byte_call
1922
if INST==EVM_INST_SIGNEXTEND goto signextend_call
23+
if INST==EVM_INST_CLZ goto clz_call
2024
fail
2125
var inst u2
2226

@@ -50,9 +54,22 @@ signextend_call:
5054
if c1 != 0 goto exit_unchanged
5155
RES = signextend(size, ARGUMENT_2)
5256
return
57+
clz_call:
58+
;; special case for 0
59+
if ARGUMENT_1 == 0 goto exit_256
60+
var lg2 u8
61+
var tmp u8
62+
;; TODO: we shouldn't those intermediate result ...
63+
lg2 = log2(ARGUMENT_1)
64+
tmp = 255 - lg2
65+
RES = tmp
66+
return
5367
exit_0:
5468
RES = 0
5569
return
70+
exit_256:
71+
RES = 256
72+
return
5673
exit_unchanged:
5774
RES = ARGUMENT_2
5875
return

constants/cancun/constants.zkasm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
const MAX_PRC_ADDRESS = 0x0a
1+
const MAX_PRC_CONTIGUOUS_ADDRESS = 0x0a

constants/constants.lisp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
EVM_INST_SHL 0x1b
4646
EVM_INST_SHR 0x1c
4747
EVM_INST_SAR 0x1d
48+
EVM_INST_CLZ 0x1e ;; Osaka, EIP-7939
4849
;; KECCAK256
4950
EVM_INST_SHA3 0x20
5051
;; Environmental Information

constants/evm.zkasm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const EVM_INST_BYTE = 0x1a
1313
const EVM_INST_SHL = 0x1b
1414
const EVM_INST_SHR = 0x1c
1515
const EVM_INST_SAR = 0x1d
16+
const EVM_INST_CLZ = 0x1e
1617
const EVM_INST_CREATE = 0xF0
1718
const EVM_INST_CALL = 0xF1
1819
const EVM_INST_CALLCODE = 0xF2

constants/london/constants.zkasm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
const MAX_PRC_ADDRESS = 0x09
1+
const MAX_PRC_CONTIGUOUS_ADDRESS = 0x09

constants/osaka/constants.zkasm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const MAX_PRC_CONTIGUOUS_ADDRESS = 0x11
2+
;; this constant will be used once issue in go-corset is fixed https://github.com/Consensys/go-corset/issues/1284
3+
const P256_VERIFY_ADDRESS = 0x100

constants/prague/constants.zkasm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
const MAX_PRC_ADDRESS = 0x11
1+
const MAX_PRC_CONTIGUOUS_ADDRESS = 0x11
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)