... | @@ -83,14 +83,12 @@ pub struct BitwiseCircuitConfig<F: Field> { |
... | @@ -83,14 +83,12 @@ pub struct BitwiseCircuitConfig<F: Field> { |
|
|
|
|
|
电路中的行数不可能是16的整数倍,因为存在一些填充值(如begin_padding),电路自动padding的行使用Tag::Nil进行约束,Tag为Nil的行的值都为默认值,即为0
|
|
电路中的行数不可能是16的整数倍,因为存在一些填充值(如begin_padding),电路自动padding的行使用Tag::Nil进行约束,Tag为Nil的行的值都为默认值,即为0
|
|
|
|
|
|
- tag_is_not_nil,cnt=0 ---> acc_0=byte_0、acc_1=byte_1、acc_2=byte_2、sum_2=byte_2
|
|
- tag_is_not_nil,cnt=0 ---> acc_0=byte_0、acc_1=byte_1、acc_2=byte_2、sum_2=byte_2
|
|
- tag_is_not_nil,cnt != 0 ---> `acc_0=byte_0+acc_0_pre*256`,`acc_1=byte_1+acc_1_pre*256`,`acc_2=acc_2_pre*256`, `sum_2=byte_2+sum2_pre`,`cnt=cnt_pre+1`,`tag=tag_pre`
|
|
- tag_is_not_nil,cnt != 0 ---> `acc_0=byte_0+acc_0_pre*256`,`acc_1=byte_1+acc_1_pre*256`,`acc_2=acc_2_pre*256`, `sum_2=byte_2+sum2_pre`,`cnt=cnt_pre+1`,`tag=tag_pre`
|
|
- tag_is_not_nil,next_cnt=0 --> cnt=15
|
|
- tag_is_not_nil,next_cnt=0 --> cnt=15
|
|
|
|
|
|
- tag_is_nil ---> byte_0=0, byte_1=0, byte_2=0, acc_0=0, acc_1=0, acc_2=0, sum_2=0, cnt=0
|
|
- tag_is_nil ---> byte_0=0, byte_1=0, byte_2=0, acc_0=0, acc_1=0, acc_2=0, sum_2=0, cnt=0
|
|
|
|
|
|
next_cnt=0--->cnt=15 (同时也验证了,只要cnt=15则next_cnt=0)
|
|
|
|
|
|
|
|
### LookUp约束
|
|
### LookUp约束
|
|
|
|
|
|
使用lookup对`<tag、byte_0、byte1、byte_2>`进行证明,来源:bitwise,去向:fixed (fxed子电路中有对256位的数值的and、or、xor的计算的枚举)
|
|
使用lookup对`<tag、byte_0、byte1、byte_2>`进行证明,来源:bitwise,去向:fixed (fxed子电路中有对256位的数值的and、or、xor的计算的枚举)
|
... | | ... | |