Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat word hi-lo refactor #963

Open
wants to merge 106 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
bd6cc37
add fundamental utils
DreamWuGit Sep 20, 2023
ca5c41e
update some math gadgets & cb helpers
DreamWuGit Sep 21, 2023
36753ed
update common gadgets
DreamWuGit Sep 24, 2023
f323b2a
update most opcodes
DreamWuGit Sep 25, 2023
da72879
update memory gadgets etc.
DreamWuGit Sep 27, 2023
99f6178
update create,returndatacopy etc.
DreamWuGit Sep 28, 2023
7fb9278
update begin_tx callop etc.
DreamWuGit Oct 7, 2023
86a5362
update query_word_rlc
DreamWuGit Oct 7, 2023
763fdd9
update blockctx, logs etc
DreamWuGit Oct 8, 2023
616da92
Word hi low precompiles (#994)
darth-cy Oct 9, 2023
5805934
udpate l1fee, rlp, selfbalance etc
DreamWuGit Oct 10, 2023
052d45b
update end_block gasprice & some error cases
DreamWuGit Oct 11, 2023
da07f2b
fix some build errors
DreamWuGit Oct 12, 2023
6632d78
fix word assign issues
DreamWuGit Oct 12, 2023
b4bedc6
udpate rw table etc.
DreamWuGit Oct 16, 2023
c8511c9
update state circuit constrain builder& dev
DreamWuGit Oct 18, 2023
2274ca1
update state circuit: mpi, lookups etc
DreamWuGit Oct 19, 2023
b0ff99d
state circuit udpate assign, state roots export
DreamWuGit Oct 23, 2023
3ad2e7c
some update for MptUpdateRow
DreamWuGit Oct 24, 2023
ea38209
update creating and merge develop
DreamWuGit Oct 25, 2023
2db1dfb
fix some issue
DreamWuGit Oct 25, 2023
ac2ce70
update keccak circuit, bytecode circuit
DreamWuGit Oct 26, 2023
f28ac6e
update copy circuit
DreamWuGit Oct 27, 2023
ba56761
keep old output_rlc
DreamWuGit Oct 31, 2023
0439eba
fix mpt related
DreamWuGit Nov 1, 2023
2a47e89
temp disable exports word equal checking and fix issues
DreamWuGit Nov 2, 2023
7be0753
update mpt table & disable test
DreamWuGit Nov 3, 2023
608275b
fix Ltword issue
DreamWuGit Nov 6, 2023
1796e71
Use hi-lo PR (#1016)
z2trillion Nov 7, 2023
734f9a6
fix state circuit test failures, degree increase by 1
DreamWuGit Nov 8, 2023
bb129bf
fix some evm circuit issues
DreamWuGit Nov 9, 2023
83984a3
fix copytable load etc. issue
DreamWuGit Nov 9, 2023
4e4fb70
fix memory copy lookup
DreamWuGit Nov 10, 2023
b39e084
fix copy constrain_id and part of keccak lookup
DreamWuGit Nov 10, 2023
a7ab6a7
fix returndatacopy, disable keccak looup begin_tx
DreamWuGit Nov 10, 2023
37228fb
fix create keccak lookup
DreamWuGit Nov 13, 2023
7c56acf
fix calldataload value assign
DreamWuGit Nov 13, 2023
2d4438d
fix bytecode empty_word
DreamWuGit Nov 14, 2023
5dfc55e
fix codehash in test
DreamWuGit Nov 15, 2023
afbced7
fix state circuit degree
DreamWuGit Nov 15, 2023
efcdd04
fix scroll feature related
DreamWuGit Nov 17, 2023
ad70e3f
add poseidon_code_hash column and lookup poseidon table
DreamWuGit Nov 17, 2023
2a32527
fix poseidoncode hash assign and related
DreamWuGit Nov 19, 2023
df89ad7
fix blockhash, endtx, excodehash in poseidon feature
DreamWuGit Nov 20, 2023
9e7ff97
fix create posedion hash
DreamWuGit Nov 20, 2023
35ee2c6
disable pi circuit keccak lookup, do it in stage2
DreamWuGit Nov 20, 2023
a8d447d
fix precompiles lookup error
DreamWuGit Nov 22, 2023
08e9640
remove unused imports
DreamWuGit Nov 25, 2023
0b4112b
ajust MAX_STEP_HEIGHT to avoid end_block occupy > 1 row
DreamWuGit Nov 27, 2023
0f26886
fix PrecompileFailedGadget callee_address
DreamWuGit Nov 27, 2023
4ccce98
merge to main&resolve conflicts
DreamWuGit Nov 28, 2023
930cdf5
pick mpt test fixes by mason
DreamWuGit Nov 28, 2023
3be910e
fix ecrecover recovered_addr_keccak rebasing
DreamWuGit Nov 28, 2023
7281f12
fix most clippy issues
DreamWuGit Nov 29, 2023
8763727
Fix mpt circuit lookups (#1046)
z2trillion Nov 29, 2023
04c5113
update blcokctx after rebase
DreamWuGit Nov 29, 2023
cffde0a
sycn latest develop and update cell assign
DreamWuGit Nov 30, 2023
3c2d787
fix clippys
DreamWuGit Nov 30, 2023
f233f7f
update word cell assign option
DreamWuGit Dec 1, 2023
2ae3542
Merge commit '17351c6290b8efb88ae39c04c5bd2ffe2fa161c9' into word_hi_lo
silathdiir Dec 1, 2023
2f578b1
Merge commit '07cf6bd31df5a06cd6b19bf66880973e985a5b41' into word_hi_lo
silathdiir Dec 1, 2023
e36007d
Merge commit '7fa17b18f669f9a13a860b239cbe4bbbe1706c22' into word_hi_lo
silathdiir Dec 1, 2023
b7d74e3
Merge branch 'develop' into word_hi_lo
silathdiir Dec 4, 2023
88f2d72
Increase `STEP_WIDTH` to fix CI of scroll feature.
silathdiir Dec 4, 2023
41f5d0d
Fix to not `unwrap` for `AssignedCell` when calling function `assign`…
silathdiir Dec 4, 2023
8d64e46
Try to enable all tests in super-circuit.
silathdiir Dec 4, 2023
bb76423
Comment out `serial_test_super_circuit_1tx_deploy_2max_tx`.
silathdiir Dec 4, 2023
2cc777d
some cleanup
DreamWuGit Dec 6, 2023
f827019
Merge branch 'develop' into word_hi_lo
lightsing Dec 6, 2023
5651173
Update bytecode_unroller.rs
lispc Dec 6, 2023
24385b5
use v0.8 mpt-circuits
lightsing Dec 7, 2023
a619084
Merge remote-tracking branch 'origin/develop' into word_hi_lo
silathdiir Dec 11, 2023
5b39183
Fix access-list to hi-lo in copy-circuit.
silathdiir Dec 11, 2023
453ff8a
renable missing constraint of create & some clean up
DreamWuGit Dec 12, 2023
56b22a6
cleanup comments
DreamWuGit Dec 12, 2023
d6066da
Merge branch 'develop' into word_hi_lo
DreamWuGit Dec 12, 2023
30f821e
bug: fix callee address of hi-lo in CALL OP (for testool cases) (#1055)
silathdiir Dec 13, 2023
9a02431
fix test tool assign overflow of create (#1062)
DreamWuGit Dec 14, 2023
d566e26
use unwrap_or_default
DreamWuGit Dec 14, 2023
52426de
Merge branch 'word_hi_lo' of https://github.com/scroll-tech/zkevm-cir…
DreamWuGit Dec 14, 2023
727c20f
feat: word hi lo refactor stage2 (#1069)
DreamWuGit Jan 23, 2024
146ae5d
merge to main, will fix left merging build error
DreamWuGit Jan 25, 2024
577bc07
update access list, eip1559 gadgets to word type
DreamWuGit Jan 25, 2024
501949a
fix state circuit merging error
DreamWuGit Jan 25, 2024
6d85bde
try update tx circuit access list lookup
DreamWuGit Jan 25, 2024
c4d1d60
enlarge STEP_WIDTH
DreamWuGit Jan 26, 2024
9c22c46
fix eip1559 tx lookup
DreamWuGit Jan 29, 2024
40fe794
scroll feature needs more STEP_WIDTH
DreamWuGit Jan 29, 2024
6e2d12a
remove some todos comments
DreamWuGit Jan 29, 2024
8084fc0
update require_equal_unaligned_word
DreamWuGit Jan 30, 2024
15e6872
fix clippy
DreamWuGit Jan 30, 2024
28bf326
Merge branch 'develop' into word_hi_lo
DreamWuGit Jan 30, 2024
b197de7
fix address too big for balance gadget found by test tool
DreamWuGit Jan 31, 2024
0482fee
Merge branch 'word_hi_lo' of https://github.com/scroll-tech/zkevm-cir…
DreamWuGit Jan 31, 2024
57b988c
Merge branch 'develop' into word_hi_lo
DreamWuGit Jan 31, 2024
b42d763
Merge branch 'develop' into word_hi_lo
DreamWuGit Jan 31, 2024
2979f63
enable missing serial_test_super_circuit_1tx_deploy_2max_tx
DreamWuGit Jan 31, 2024
1f9b601
revise & cleanup comments for tx circuit related
DreamWuGit Feb 1, 2024
d321c9e
minor update for sig& super circuit
DreamWuGit Feb 1, 2024
ef1fd70
rename rpi_rlc_acc_word
DreamWuGit Feb 2, 2024
5864288
remove some outdated todos
DreamWuGit Feb 2, 2024
5756d65
merge cancun2 change(tload, tstore, mcopy) into word hi-lo (#1104)
DreamWuGit Feb 2, 2024
cc89aa0
fix build error by merge cancun changes
DreamWuGit Feb 2, 2024
4265368
fix merge conflicts
DreamWuGit Feb 18, 2024
1a1a38a
update merging affair
DreamWuGit Feb 18, 2024
82d1066
Merge branch 'develop' into word_hi_lo
lispc Feb 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion aggregator/src/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,8 @@ pub(crate) fn extract_hash_cells(
keccak_packed_multi::get_input_bytes_col_idx_in_cell_manager()
+ <KeccakTable as LookupTable<Fr>>::columns(&keccak_config.keccak_table)
.len()
- 1;
- 1
- 2; // exclude last word limbs' columns
for (offset, keccak_row) in witness.iter().enumerate() {
let row = keccak_config.set_row(&mut region, offset, keccak_row)?;

Expand Down
7 changes: 5 additions & 2 deletions eth-types/src/evm_types/opcode_ids.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1240,8 +1240,11 @@ impl FromStr for OpcodeId {
"BASEFEE" => OpcodeId::BASEFEE,
#[cfg(feature = "scroll")]
"BASEFEE" => OpcodeId::INVALID(0x48),
"TLOAD" => OpcodeId::INVALID(0xb3),
"TSTORE" => OpcodeId::INVALID(0xb4),
"BLOBHASH" => OpcodeId::INVALID(0x49),
"BLOBBASEFEE" => OpcodeId::INVALID(0x4a),
"TLOAD" => OpcodeId::INVALID(0x5c),
"TSTORE" => OpcodeId::INVALID(0x5d),
"MCOPY" => OpcodeId::INVALID(0x5e),
_ => {
// Parse an invalid opcode value as reported by geth
static RE: LazyLock<Regex> = LazyLock::new(|| {
Expand Down
4 changes: 2 additions & 2 deletions gadgets/src/comparator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
use eth_types::Field;
use halo2_proofs::{
circuit::{Chip, Region, Value},
plonk::{ConstraintSystem, Error, Expression, TableColumn, VirtualCells},
plonk::{Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells},
poly::Rotation,
};

Expand Down Expand Up @@ -64,7 +64,7 @@ impl<F: Field, const N_BYTES: usize> ComparatorChip<F, N_BYTES> {
q_enable: impl FnOnce(&mut VirtualCells<F>) -> Expression<F> + Clone,
lhs: impl FnOnce(&mut VirtualCells<F>) -> Expression<F> + Clone,
rhs: impl FnOnce(&mut VirtualCells<F>) -> Expression<F> + Clone,
u8_table: TableColumn,
u8_table: Column<Fixed>,
) -> ComparatorConfig<F, N_BYTES> {
let lt_config =
LtChip::configure(meta, q_enable.clone(), lhs.clone(), rhs.clone(), u8_table);
Expand Down
24 changes: 14 additions & 10 deletions gadgets/src/less_than.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use eth_types::Field;
use halo2_proofs::{
circuit::{Chip, Region, Value},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, TableColumn, VirtualCells},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells},
poly::Rotation,
};

Expand Down Expand Up @@ -37,7 +37,9 @@ pub struct LtConfig<F, const N_BYTES: usize> {
/// Denotes the bytes representation of the difference between lhs and rhs.
pub diff: [Column<Advice>; N_BYTES],
/// Denotes the range within which each byte should lie.
pub u8_table: TableColumn,
//pub u8_table: TableColumn,
pub u8_table: Column<Fixed>,

/// Denotes the range within which both lhs and rhs lie.
pub range: F,
}
Expand Down Expand Up @@ -68,7 +70,8 @@ impl<F: Field, const N_BYTES: usize> LtChip<F, N_BYTES> {
q_enable: impl FnOnce(&mut VirtualCells<'_, F>) -> Expression<F> + Clone,
lhs: impl FnOnce(&mut VirtualCells<F>) -> Expression<F>,
rhs: impl FnOnce(&mut VirtualCells<F>) -> Expression<F>,
u8_table: TableColumn,
//u8_table: TableColumn,
u8_table: Column<Fixed>,
) -> LtConfig<F, N_BYTES> {
let lt = meta.advice_column();
let diff = [(); N_BYTES].map(|_| meta.advice_column());
Expand All @@ -94,11 +97,11 @@ impl<F: Field, const N_BYTES: usize> LtChip<F, N_BYTES> {
});

for cell_column in diff {
meta.lookup("range check for u8", |meta| {
meta.lookup_any("range check for u8", |meta| {
let q_enable = q_enable.clone()(meta);
vec![(
q_enable * meta.query_advice(cell_column, Rotation::cur()),
u8_table,
meta.query_fixed(u8_table, Rotation::cur()),
)]
});
}
Expand Down Expand Up @@ -156,11 +159,12 @@ impl<F: Field, const N_BYTES: usize> LtInstruction<F> for LtChip<F, N_BYTES> {
) -> Result<(), Error> {
const RANGE: usize = u8::MAX as usize;

layouter.assign_table(
//layouter.assign_table(
layouter.assign_region(
|| "load u8 range check table",
|mut table| {
|mut region| {
for i in 0..=RANGE {
table.assign_cell(
region.assign_fixed(
|| "assign cell in fixed column",
self.config.u8_table,
i,
Expand Down Expand Up @@ -265,7 +269,7 @@ mod test {
let q_enable = meta.complex_selector();
let value = meta.advice_column();
let check = meta.advice_column();
let u8_table = meta.lookup_table_column();
let u8_table = meta.fixed_column();

let lt = LtChip::configure(
meta,
Expand Down Expand Up @@ -389,7 +393,7 @@ mod test {
let q_enable = meta.complex_selector();
let (value_a, value_b) = (meta.advice_column(), meta.advice_column());
let check = meta.advice_column();
let u16_table = meta.lookup_table_column();
let u16_table = meta.fixed_column();

let lt = LtChip::configure(
meta,
Expand Down
23 changes: 14 additions & 9 deletions gadgets/src/mul_add.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use eth_types::{Field, Word, ToU16LittleEndian};
use halo2_proofs::{
circuit::{Region, Value},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, TableColumn, VirtualCells},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells},
poly::Rotation,
};

Expand All @@ -46,7 +46,8 @@ pub struct MulAddConfig<F> {
/// Sum of the parts higher than 256-bit in the product.
pub overflow: Expression<F>,
/// Lookup table for LtChips and carry_lo/hi.
pub u16_table: TableColumn,
// pub u16_table: TableColumn,
pub u16_table: Column<Fixed>,
/// Range check of a, b which needs to be in [0, 2^64)
pub range_check_64: UIntRangeCheckChip<F, { UIntRangeCheckChip::SIZE_U64 }, 8>,
/// Range check of c, d which needs to be in [0, 2^128)
Expand Down Expand Up @@ -118,7 +119,8 @@ impl<F: Field> MulAddChip<F> {
pub fn configure(
meta: &mut ConstraintSystem<F>,
q_enable: impl FnOnce(&mut VirtualCells<'_, F>) -> Expression<F> + Clone,
u16_table: TableColumn,
//u16_table: TableColumn,
u16_table: Column<Fixed>,
) -> MulAddConfig<F> {
let col0 = meta.advice_column();
let col1 = meta.advice_column();
Expand Down Expand Up @@ -157,9 +159,10 @@ impl<F: Field> MulAddChip<F> {
carry_cols.append(&mut carry_hi_cols.clone());

for (col, rot) in carry_cols.into_iter() {
meta.lookup("mul carry range check lo/hi lookup u16", |meta| {
meta.lookup_any("mul carry range check lo/hi lookup u16", |meta| {
let q_enable = q_enable.clone()(meta);
vec![(q_enable * meta.query_advice(col, Rotation(rot)), u16_table)]
let u16_expr = meta.query_fixed(u16_table, Rotation::cur());
vec![(q_enable * meta.query_advice(col, Rotation(rot)), u16_expr)]
});
}
}
Expand Down Expand Up @@ -506,7 +509,8 @@ mod test {

fn configure(meta: &mut halo2_proofs::plonk::ConstraintSystem<F>) -> Self::Config {
let q_enable = meta.complex_selector();
let u16_table = meta.lookup_table_column();
//let u16_table = meta.lookup_table_column();
let u16_table = meta.fixed_column();
let mul_config =
MulAddChip::configure(meta, |meta| meta.query_selector(q_enable), u16_table);
Self::Config {
Expand All @@ -522,11 +526,12 @@ mod test {
) -> Result<(), halo2_proofs::plonk::Error> {
let chip = MulAddChip::construct(config.mul_config);

layouter.assign_table(
//layouter.assign_table(
layouter.assign_region(
|| "u16 table",
|mut table| {
|mut region| {
for i in 0..=65535 {
table.assign_cell(
region.assign_fixed(
|| format!("u16 table row {i}"),
chip.config.u16_table,
i,
Expand Down
13 changes: 8 additions & 5 deletions gadgets/src/range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::util::Expr;
use eth_types::Field;
use halo2_proofs::{
circuit::{Chip, Region, Value},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, TableColumn, VirtualCells},
plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells},
poly::Rotation,
};

Expand All @@ -36,7 +36,8 @@ pub struct UIntRangeCheckConfig<F, const N_2BYTE: usize, const N_EXPR: usize> {
/// Denotes the little-endian representation of expression in u16.
pub u16_repr: [Column<Advice>; N_2BYTE],
/// Denotes the u16 lookup table.
pub u16_table: TableColumn,
//pub u16_table: TableColumn,
pub u16_table: Column<Fixed>,
_marker: std::marker::PhantomData<F>,
}

Expand All @@ -61,7 +62,8 @@ impl<F: Field, const N_2BYTE: usize, const N_EXPR: usize> UIntRangeCheckChip<F,
meta: &mut ConstraintSystem<F>,
q_enable: impl FnOnce(&mut VirtualCells<F>) -> Expression<F> + Clone,
expressions: impl FnOnce(&mut VirtualCells<F>) -> [Expression<F>; N_EXPR],
u16_table: TableColumn,
//u16_table: TableColumn,
u16_table: Column<Fixed>,
) -> UIntRangeCheckConfig<F, N_2BYTE, N_EXPR> {
let u16_repr = [(); N_2BYTE].map(|_| meta.advice_column());

Expand All @@ -83,9 +85,10 @@ impl<F: Field, const N_2BYTE: usize, const N_EXPR: usize> UIntRangeCheckChip<F,
});

for column in u16_repr {
meta.lookup(concat!("u16 cell range check"), |meta| {
meta.lookup_any(concat!("u16 cell range check"), |meta| {
let cell = meta.query_advice(column, Rotation::cur());
vec![(cell, u16_table)]
let u16_expr = meta.query_fixed(u16_table, Rotation::cur());
vec![(cell, u16_expr)]
});
}

Expand Down
4 changes: 2 additions & 2 deletions testool/Config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,10 @@ paths = [
[[skip_paths]]
desc = "too big"
paths = [
# "stTimeConsuming", # full of useless sstore tests
"stTimeConsuming", # full of useless sstore tests
# "stExample",
# "stQuadraticComplexityTest",
# "50000"
"50000"
]

[[skip_paths]]
Expand Down
2 changes: 2 additions & 0 deletions testool/src/statetest/yaml.rs
Original file line number Diff line number Diff line change
Expand Up @@ -771,6 +771,7 @@ arith:
run_test(t1, TestSuite::default(), CircuitsConfig::default())?;
Ok(())
}

#[test]
fn test_result_bad_storage() -> Result<()> {
let mut tc = YamlStateTestBuilder::new(&Compiler::default()).load_yaml(
Expand All @@ -796,6 +797,7 @@ arith:

Ok(())
}

#[test]
fn bad_balance() -> Result<()> {
let mut tc = YamlStateTestBuilder::new(&Compiler::default()).load_yaml(
Expand Down
23 changes: 16 additions & 7 deletions zkevm-circuits/src/bytecode_circuit/bytecode_unroller.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
use crate::{table::BytecodeFieldTag, util::get_push_size};
use crate::{
table::BytecodeFieldTag,
util::{get_push_size, word::Word},
};
use halo2_proofs::circuit::Value;

use bus_mapping::state_db::CodeDB;
use eth_types::{Field, ToWord, Word, U256};
use eth_types::{Field, ToWord, U256};
use std::vec;

/// Public data for the bytecode
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, Default)]
pub(crate) struct BytecodeRow<F: Field> {
pub(crate) code_hash: Word,
pub(crate) code_hash: Word<Value<F>>,
pub(crate) tag: F,
pub(crate) index: F,
pub(crate) is_code: F,
pub(crate) value: F,
}

/// Unrolled bytecode
#[derive(Clone, Debug, PartialEq, Default)]
#[derive(Clone, Debug, Default)]
pub struct UnrolledBytecode<F: Field> {
pub(crate) bytes: Vec<u8>,
pub(crate) rows: Vec<BytecodeRow<F>>,
Expand All @@ -23,11 +28,15 @@ pub struct UnrolledBytecode<F: Field> {
/// Get unrolled bytecode from raw bytes
pub fn unroll<F: Field>(bytes: Vec<u8>) -> UnrolledBytecode<F> {
let code_hash = CodeDB::hash(&bytes[..]);
unroll_with_codehash(code_hash.to_word(), bytes)
let code_hash_word = Word::from(code_hash.to_word()).map(Value::known);
unroll_with_codehash(code_hash_word, bytes)
}

/// Get unrolled bytecode from raw bytes and codehash
pub fn unroll_with_codehash<F: Field>(code_hash: U256, bytes: Vec<u8>) -> UnrolledBytecode<F> {
pub fn unroll_with_codehash<F: Field>(
code_hash: Word<Value<F>>,
bytes: Vec<u8>,
) -> UnrolledBytecode<F> {
let mut rows = vec![BytecodeRow::<F> {
code_hash,
tag: F::from(BytecodeFieldTag::Header as u64),
Expand Down
Loading
Loading