@@ -342,88 +342,29 @@ impl MptUpdateConfig {
342
342
& self ,
343
343
region : & mut Region < ' _ , Fr > ,
344
344
proofs : & [ Proof ] ,
345
+ n_rows : usize ,
345
346
randomness : Value < Fr > ,
346
- ) -> usize {
347
- self . assign_inner ( region, proofs, randomness)
348
- }
347
+ ) {
348
+ let mut n_rows_used = 1 ; // selector on first row is disabled.
349
+ for proof in proofs {
350
+ n_rows_used += self . assign_proof ( region, n_rows_used, proof, randomness) ;
351
+ }
352
+
353
+ let expected_offset = Self :: n_rows_required ( proofs) ;
354
+ debug_assert ! (
355
+ n_rows_used == expected_offset,
356
+ "assign used {n_rows_used} rows but {expected_offset} rows expected from `n_rows_required`" ,
357
+ ) ;
349
358
350
- /// Valid assignment proving that the address 0 doesn't exist in an empty MPT.
351
- pub fn assign_padding_row ( & self , region : & mut Region < ' _ , Fr > , offset : usize ) {
352
- self . proof_type
353
- . assign ( region, offset, MPTProofType :: AccountDoesNotExist ) ;
354
- self . key . assign ( region, offset, * ZERO_PAIR_HASH ) ;
355
- self . other_key . assign ( region, offset, * ZERO_PAIR_HASH ) ;
356
- self . domain . assign ( region, offset, HashDomain :: Pair ) ;
359
+ for offset in n_rows_used..n_rows {
360
+ self . assign_padding_row ( region, offset) ;
361
+ }
357
362
}
358
363
359
364
pub fn n_rows_required ( proofs : & [ Proof ] ) -> usize {
360
365
// +1 because assigment starts on offset = 1 instead of offset = 0.
361
366
proofs. iter ( ) . map ( Proof :: n_rows) . sum :: < usize > ( ) + 1
362
367
}
363
-
364
- // fn assign_account_trie_rows(
365
- // &self,
366
- // region: &mut Region<'_, Fr>,
367
- // starting_offset: usize,
368
- // rows: &TrieRows,
369
- // ) -> usize {
370
- // let n_rows = self.assign_trie_rows(region, starting_offset, rows);
371
- // for i in 0..n_rows {
372
- // self.segment_type
373
- // .assign(region, starting_offset + i, SegmentType::AccountTrie);
374
- // }
375
- // n_rows
376
- // }
377
-
378
- // fn assign_storage_trie_rows(
379
- // &self,
380
- // region: &mut Region<'_, Fr>,
381
- // starting_offset: usize,
382
- // rows: &TrieRows,
383
- // ) -> usize {
384
- // let n_rows = self.assign_trie_rows(region, starting_offset, rows);
385
- // for i in 0..n_rows {
386
- // self.segment_type
387
- // .assign(region, starting_offset + i, SegmentType::StorageTrie);
388
- // }
389
- // n_rows
390
- // }
391
-
392
- // fn assign_trie_rows(
393
- // &self,
394
- // region: &mut Region<'_, Fr>,
395
- // starting_offset: usize,
396
- // rows: &TrieRows,
397
- // ) -> usize {
398
- // for (i, row) in rows.0.iter().enumerate() {
399
- // let offset = starting_offset + i;
400
- // self.depth
401
- // .assign(region, offset, u64::try_from(i + 1).unwrap());
402
- // self.path_type.assign(region, offset, row.path_type);
403
-
404
- // if let Some(next_row) = rows.0.get(i + 1) {
405
- // if !matches!(next_row.path_type, PathType::Start | PathType::Common)
406
- // && row.path_type == PathType::Common
407
- // {
408
- // self.intermediate_values[2].assign(
409
- // region,
410
- // offset,
411
- // next_domain(row.domain, row.direction),
412
- // );
413
- // }
414
- // }
415
- // for (value, column) in [
416
- // (row.sibling, self.sibling),
417
- // (row.old, self.old_hash),
418
- // (row.new, self.new_hash),
419
- // (row.direction.into(), self.direction),
420
- // (row.domain.into(), self.domain),
421
- // ] {
422
- // column.assign(region, offset, value);
423
- // }
424
- // }
425
- // rows.len()
426
- // }
427
368
}
428
369
429
370
fn old_left < F : FieldExt > ( config : & MptUpdateConfig ) -> Query < F > {
0 commit comments