... | @@ -7,7 +7,7 @@ Bytecode table中存放的可能并不只是一个合约的Bytecode,不同的 |
... | @@ -7,7 +7,7 @@ Bytecode table中存放的可能并不只是一个合约的Bytecode,不同的 |
|
在对Bytecode进行处理时,将Bytecode分为两类:
|
|
在对Bytecode进行处理时,将Bytecode分为两类:
|
|
|
|
|
|
1. Opcode(非PUSH):操作指令,如ADD、SUB、CODECOPY
|
|
1. Opcode(非PUSH):操作指令,如ADD、SUB、CODECOPY
|
|
2. Opcode(PUSH):PUSH1~PUSH2
|
|
2. Opcode(PUSH):PUSH1~PUSH32,以及PUSH的Byte
|
|
|
|
|
|
## Witness、Column设计
|
|
## Witness、Column设计
|
|
|
|
|
... | @@ -174,7 +174,7 @@ cnt_prev !=0 ----> `acc_hi_prev + is_high*(acc_hi_prev*255 + bytecode) - acc_hi_ |
... | @@ -174,7 +174,7 @@ cnt_prev !=0 ----> `acc_hi_prev + is_high*(acc_hi_prev*255 + bytecode) - acc_hi_ |
|
|
|
|
|
  cnt_prev !=0 && is_high=0 ----> `acc_hi_cur-acc_hi_prev=0` (cnt < 16的行,acc_hi的值是不变的)
|
|
  cnt_prev !=0 && is_high=0 ----> `acc_hi_cur-acc_hi_prev=0` (cnt < 16的行,acc_hi的值是不变的)
|
|
|
|
|
|
  cnt_prev !=0 && is_high=1 ----> `acc_hi_prev + (acc_hi_prev*255 + bytecode) - acc_hi_cur =0=0` (即acc_hi_cur的值为`acc_pre*256+bytecoce`)
|
|
  cnt_prev !=0 && is_high=1 ----> `acc_hi_prev*256 + bytecode - acc_hi_cur =0` (即acc_hi_cur的值为`acc_pre*256+bytecoce`)
|
|
|
|
|
|
cnt_prev !=0 ----> `acc_lo_cur - acc_lo_prev - (1-is_high) *(acc_lo_prev*255 + bytecode)=0` (约束acc_lo,当cnt < 16, 即high=0时,acc_lo_cur=acc_lo_prev*256 + bytecode)
|
|
cnt_prev !=0 ----> `acc_lo_cur - acc_lo_prev - (1-is_high) *(acc_lo_prev*255 + bytecode)=0` (约束acc_lo,当cnt < 16, 即high=0时,acc_lo_cur=acc_lo_prev*256 + bytecode)
|
|
|
|
|
... | | ... | |