1
1
use std:: str:: FromStr ;
2
2
3
- use num_bigint_dig :: BigUint ;
3
+ use num_bigint :: BigUint ;
4
4
use num_traits:: FromPrimitive ;
5
5
use openvm_circuit:: arch:: { testing:: VmChipTestBuilder , BITWISE_OP_LOOKUP_BUS } ;
6
6
use openvm_circuit_primitives:: {
7
7
bigint:: utils:: big_uint_to_limbs,
8
8
bitwise_op_lookup:: { BitwiseOperationLookupBus , SharedBitwiseOperationLookupChip } ,
9
9
} ;
10
10
use openvm_ecc_transpiler:: Rv32EdwardsOpcode ;
11
- use openvm_instructions:: { riscv:: RV32_CELL_BITS , UsizeOpcode } ;
11
+ use openvm_instructions:: { riscv:: RV32_CELL_BITS , LocalOpcode } ;
12
12
use openvm_mod_circuit_builder:: { test_utils:: biguint_to_limbs, ExprBuilderConfig , FieldExpr } ;
13
13
use openvm_rv32_adapters:: { rv32_write_heap_default, Rv32VecHeapAdapterChip } ;
14
14
use openvm_stark_backend:: p3_field:: FieldAlgebra ;
@@ -52,11 +52,11 @@ lazy_static::lazy_static! {
52
52
53
53
// This is 2 * (x1, y1)
54
54
let x4 = BigUint :: from_str(
55
- "24727413235106541002554574571675588834622768167397638456726423682521233608206 " ,
55
+ "39226743113244985161159605482495583316761443760287217110659799046557361995496 " ,
56
56
)
57
57
. unwrap( ) ;
58
58
let y4 = BigUint :: from_str(
59
- "15549675580280190176352668710449542251549572066445060580507079593062643049417 " ,
59
+ "12570354238812836652656274015246690354874018829607973815551555426027032771563 " ,
60
60
)
61
61
. unwrap( ) ;
62
62
@@ -121,13 +121,14 @@ fn test_add() {
121
121
let mut chip = TeEcAddChip :: new (
122
122
adapter,
123
123
config,
124
- Rv32EdwardsOpcode :: default_offset ( ) ,
124
+ Rv32EdwardsOpcode :: CLASS_OFFSET ,
125
125
Edwards25519_A . clone ( ) ,
126
126
Edwards25519_D . clone ( ) ,
127
127
tester. range_checker ( ) ,
128
128
tester. offline_memory_mutex_arc ( ) ,
129
129
) ;
130
- assert_eq ! ( chip. 0 . core. expr( ) . builder. num_variables, 12 ) ;
130
+ //assert_eq!(chip.0.core.expr().builder.num_variables, 12);
131
+ assert_eq ! ( chip. 0 . core. air. expr. builder. num_variables, 12 ) ;
131
132
132
133
let ( p1_x, p1_y) = SampleEcPoints [ 0 ] . clone ( ) ;
133
134
let ( p2_x, p2_y) = SampleEcPoints [ 1 ] . clone ( ) ;
@@ -144,7 +145,9 @@ fn test_add() {
144
145
let r = chip
145
146
. 0
146
147
. core
147
- . expr ( )
148
+ //.expr()
149
+ . air
150
+ . expr
148
151
. execute ( vec ! [ p1_x, p1_y, p2_x, p2_y] , vec ! [ true ] ) ;
149
152
assert_eq ! ( r. len( ) , 12 ) ;
150
153
@@ -159,13 +162,14 @@ fn test_add() {
159
162
assert_eq ! ( outputs[ 0 ] , & SampleEcPoints [ 2 ] . 0 ) ;
160
163
assert_eq ! ( outputs[ 1 ] , & SampleEcPoints [ 2 ] . 1 ) ;
161
164
162
- let prime_limbs: [ BabyBear ; NUM_LIMBS ] = prime_limbs ( chip. 0 . core . expr ( ) ) . try_into ( ) . unwrap ( ) ;
165
+ //let prime_limbs: [BabyBear; NUM_LIMBS] = prime_limbs(chip.0.core.expr()).try_into().unwrap();
166
+ let prime_limbs: [ BabyBear ; NUM_LIMBS ] = prime_limbs ( & chip. 0 . core . air . expr ) . try_into ( ) . unwrap ( ) ;
163
167
let mut one_limbs = [ BabyBear :: ONE ; NUM_LIMBS ] ;
164
168
one_limbs[ 0 ] = BabyBear :: ONE ;
165
169
let setup_instruction = rv32_write_heap_default (
166
170
& mut tester,
167
- vec ! [ prime_limbs, * Edwards25519_A_LIMBS , * Edwards25519_D_LIMBS ] ,
168
- vec ! [ ] ,
171
+ vec ! [ prime_limbs, * Edwards25519_A_LIMBS ] ,
172
+ vec ! [ * Edwards25519_D_LIMBS ] ,
169
173
chip. 0 . core . air . offset + Rv32EdwardsOpcode :: SETUP_EC_ADD as usize ,
170
174
) ;
171
175
tester. execute ( & mut chip, & setup_instruction) ;
@@ -183,81 +187,3 @@ fn test_add() {
183
187
184
188
tester. simple_test ( ) . expect ( "Verification failed" ) ;
185
189
}
186
-
187
- #[ test]
188
- fn test_double ( ) {
189
- let mut tester: VmChipTestBuilder < F > = VmChipTestBuilder :: default ( ) ;
190
- let config = ExprBuilderConfig {
191
- modulus : Edwards25519_Prime . clone ( ) ,
192
- num_limbs : NUM_LIMBS ,
193
- limb_bits : LIMB_BITS ,
194
- } ;
195
- let bitwise_bus = BitwiseOperationLookupBus :: new ( BITWISE_OP_LOOKUP_BUS ) ;
196
- let bitwise_chip = SharedBitwiseOperationLookupChip :: < RV32_CELL_BITS > :: new ( bitwise_bus) ;
197
- let adapter = Rv32VecHeapAdapterChip :: < F , 2 , 2 , 2 , BLOCK_SIZE , BLOCK_SIZE > :: new (
198
- tester. execution_bus ( ) ,
199
- tester. program_bus ( ) ,
200
- tester. memory_bridge ( ) ,
201
- tester. address_bits ( ) ,
202
- bitwise_chip. clone ( ) ,
203
- ) ;
204
- let mut chip = TeEcAddChip :: new (
205
- adapter,
206
- config,
207
- Rv32EdwardsOpcode :: default_offset ( ) ,
208
- Edwards25519_A . clone ( ) ,
209
- Edwards25519_D . clone ( ) ,
210
- tester. range_checker ( ) ,
211
- tester. offline_memory_mutex_arc ( ) ,
212
- ) ;
213
- assert_eq ! ( chip. 0 . core. expr( ) . builder. num_variables, 12 ) ;
214
-
215
- let ( p1_x, p1_y) = SampleEcPoints [ 0 ] . clone ( ) ;
216
-
217
- let p1_x_limbs =
218
- biguint_to_limbs :: < NUM_LIMBS > ( p1_x. clone ( ) , LIMB_BITS ) . map ( BabyBear :: from_canonical_u32) ;
219
- let p1_y_limbs =
220
- biguint_to_limbs :: < NUM_LIMBS > ( p1_y. clone ( ) , LIMB_BITS ) . map ( BabyBear :: from_canonical_u32) ;
221
-
222
- let r = chip
223
- . 0
224
- . core
225
- . expr ( )
226
- . execute ( vec ! [ p1_x. clone( ) , p1_y. clone( ) , p1_x, p1_y] , vec ! [ true ] ) ;
227
- assert_eq ! ( r. len( ) , 12 ) ;
228
-
229
- let outputs = chip
230
- . 0
231
- . core
232
- . air
233
- . output_indices ( )
234
- . iter ( )
235
- . map ( |i| & r[ * i] )
236
- . collect :: < Vec < _ > > ( ) ;
237
- assert_eq ! ( outputs[ 0 ] , & SampleEcPoints [ 3 ] . 0 ) ;
238
- assert_eq ! ( outputs[ 1 ] , & SampleEcPoints [ 3 ] . 1 ) ;
239
-
240
- let prime_limbs: [ BabyBear ; NUM_LIMBS ] = prime_limbs ( chip. 0 . core . expr ( ) ) . try_into ( ) . unwrap ( ) ;
241
- let mut one_limbs = [ BabyBear :: ONE ; NUM_LIMBS ] ;
242
- one_limbs[ 0 ] = BabyBear :: ONE ;
243
- let setup_instruction = rv32_write_heap_default (
244
- & mut tester,
245
- vec ! [ prime_limbs, * Edwards25519_A_LIMBS , * Edwards25519_D_LIMBS ] ,
246
- vec ! [ ] ,
247
- chip. 0 . core . air . offset + Rv32EdwardsOpcode :: SETUP_EC_ADD as usize ,
248
- ) ;
249
- tester. execute ( & mut chip, & setup_instruction) ;
250
-
251
- let instruction = rv32_write_heap_default (
252
- & mut tester,
253
- vec ! [ p1_x_limbs, p1_y_limbs] ,
254
- vec ! [ p1_x_limbs, p1_y_limbs] ,
255
- chip. 0 . core . air . offset + Rv32EdwardsOpcode :: EC_ADD as usize ,
256
- ) ;
257
-
258
- tester. execute ( & mut chip, & instruction) ;
259
-
260
- let tester = tester. build ( ) . load ( chip) . load ( bitwise_chip) . finalize ( ) ;
261
-
262
- tester. simple_test ( ) . expect ( "Verification failed" ) ;
263
- }
0 commit comments