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

Recursive #60

Merged
merged 83 commits into from
Nov 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
9dc19a5
Merge pull request #44 from 0xPolygonHermez/develop
zkronos73 Oct 6, 2022
cc47449
Merge pull request #58 from 0xPolygonHermez/develop
jbaylina Oct 9, 2022
9f86001
Initial proposal
jbaylina Oct 20, 2022
8aea010
Initial proposal
jbaylina Oct 20, 2022
928ba00
recursive circuit
jbaylina Oct 24, 2022
46da98b
Merge branch 'recursive' of github.com:0xPolygonHermez/zkevm-proverjs…
jbaylina Oct 24, 2022
5c34275
deps
jbaylina Oct 24, 2022
a215dd8
rm src recursive
jbaylina Oct 24, 2022
aa3e417
Fix LLAST
jbaylina Oct 24, 2022
a904f7e
c12b to gl
jbaylina Oct 24, 2022
b95af58
rename recursive_verifier
jbaylina Oct 24, 2022
554facb
genrecursive
jbaylina Oct 24, 2022
049f017
WIP multi-proof
krlosMata Oct 24, 2022
5abdfb5
Merge branch 'recursive' of github.com:0xPolygonHermez/zkevm-proverjs…
krlosMata Oct 24, 2022
81c14ef
add aggregate batch test
krlosMata Oct 24, 2022
ccd8c17
fix init pols & gen multiple batches working good
krlosMata Oct 24, 2022
17f2d35
update rom branch in package.json
krlosMata Oct 24, 2022
024579a
update package.json scripts
jbaylina Oct 24, 2022
1738a74
update package.json scripts
jbaylina Oct 24, 2022
fc9f311
Fix recursive evals
jbaylina Oct 25, 2022
7c40baf
deps jsonbigint
jbaylina Oct 25, 2022
5f00263
Fix recursive values
jbaylina Oct 25, 2022
24a32eb
script recursive
jbaylina Oct 25, 2022
e91657a
deps
jbaylina Oct 26, 2022
c3b0f92
remove preProcessTx
krlosMata Oct 26, 2022
f68ec0f
package progress
jbaylina Oct 26, 2022
963656e
Merge branch 'recursive' of https://github.com/0xPolygonHermez/zkevm-…
jbaylina Oct 26, 2022
8b01b2f
adapt full-tracer
krlosMata Oct 26, 2022
04284d3
update package.json and scripts
zkronos73 Oct 27, 2022
ebe2f54
recursive scripts changes
zkronos73 Oct 27, 2022
f2d508c
Initial proposal
jbaylina Oct 20, 2022
0da7971
recursive circuit
jbaylina Oct 24, 2022
efa0f36
deps
jbaylina Oct 24, 2022
e1273a0
rm src recursive
jbaylina Oct 24, 2022
3632ff1
Fix LLAST
jbaylina Oct 24, 2022
eeeee2b
c12b to gl
jbaylina Oct 24, 2022
4cb5043
rename recursive_verifier
jbaylina Oct 24, 2022
5fe1631
genrecursive
jbaylina Oct 24, 2022
20e1552
WIP multi-proof
krlosMata Oct 24, 2022
eb6cdd5
add aggregate batch test
krlosMata Oct 24, 2022
36b3a32
fix init pols & gen multiple batches working good
krlosMata Oct 24, 2022
76bd770
update rom branch in package.json
krlosMata Oct 24, 2022
d93263f
update package.json scripts
jbaylina Oct 24, 2022
2623a10
update package.json scripts
jbaylina Oct 24, 2022
a57f7e6
Fix recursive evals
jbaylina Oct 25, 2022
68c60d1
deps jsonbigint
jbaylina Oct 25, 2022
a235d98
Fix recursive values
jbaylina Oct 25, 2022
93f5af0
script recursive
jbaylina Oct 25, 2022
fc2554f
deps
jbaylina Oct 26, 2022
53faf8b
remove preProcessTx
krlosMata Oct 26, 2022
6ac43a6
package progress
jbaylina Oct 26, 2022
5a14cc5
adapt full-tracer
krlosMata Oct 26, 2022
b9f20e1
update package.json and scripts
zkronos73 Oct 27, 2022
b8b6a4e
update recursive input
krlosMata Oct 27, 2022
72c59f5
rebuild inputSnark
krlosMata Oct 27, 2022
3ce3e3d
update scripts to recursive
zkronos73 Oct 27, 2022
7eae677
Merge branch 'recursive' of https://github.com/0xPolygonHermez/zkevm-…
zkronos73 Oct 27, 2022
a7b7601
fix bug on script and add --steps option
zkronos73 Oct 28, 2022
01d09fa
fix bug on final.circom
zkronos73 Oct 28, 2022
4fd934d
update package.json
krlosMata Nov 3, 2022
cb262af
Add BASEFEE opcode
ignasirv Nov 3, 2022
ce259ab
Deps
jbaylina Nov 7, 2022
a813425
Merge branch 'recursive' of github.com:0xPolygonHermez/zkevm-proverjs…
jbaylina Nov 7, 2022
1091dfa
fix package
zkronos73 Nov 7, 2022
d5689b7
Merge branch 'recursive' of https://github.com/0xPolygonHermez/zkevm-…
zkronos73 Nov 7, 2022
fc7957f
Merge pull request #64 from 0xPolygonHermez/feature/basefee
krlosMata Nov 8, 2022
b77c08b
add chelpers for recursive steps
zkronos73 Nov 8, 2022
a7bea75
fix recursive chelper directory name
zkronos73 Nov 8, 2022
ab031b3
selfdestruct to sendall
krlosMata Nov 8, 2022
19d8d4c
update package.json
krlosMata Nov 8, 2022
75bf8bb
Merge pull request #66 from 0xPolygonHermez/configurable-chelpers-class
jbaylina Nov 8, 2022
f638bae
add recursive starkinfo
zkronos73 Nov 8, 2022
c5aadd7
fix problem in package.json
zkronos73 Nov 8, 2022
6e81605
fix package.json
zkronos73 Nov 8, 2022
25ed301
Merge pull request #67 from 0xPolygonHermez/recusive-starkinfo
jbaylina Nov 8, 2022
cafb41a
zkin join recursive
zkronos73 Nov 8, 2022
c272194
Merge branch 'recursive' of https://github.com/0xPolygonHermez/zkevm-…
zkronos73 Nov 8, 2022
675d94b
fix package recursive starkstruct
zkronos73 Nov 8, 2022
88da65a
fix join zkin
zkronos73 Nov 10, 2022
10e95cc
remove touched functions
krlosMata Nov 11, 2022
2060a95
skipassert to 0
krlosMata Nov 11, 2022
f1c779f
fix recursive
zkronos73 Nov 14, 2022
6a04380
Merge pull request #65 from 0xPolygonHermez/feature/recursive-new
krlosMata Nov 14, 2022
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
107 changes: 73 additions & 34 deletions package.json

Large diffs are not rendered by default.

112 changes: 93 additions & 19 deletions pil/basic_main.pil
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,6 @@ namespace Main(%N);
zkPC' = doJMP * (addr - (zkPC+1)) +
(zkPC+1) ;



(A0-op0)*assert = 0;
(A1-op1)*assert = 0;
(A2-op2)*assert = 0;
Expand All @@ -286,23 +284,99 @@ namespace Main(%N);
(A6-op6)*assert = 0;
(A7-op7)*assert = 0;

public globalHash0 = FREE0(0);
public globalHash1 = FREE1(0);
public globalHash2 = FREE2(0);
public globalHash3 = FREE3(0);
public globalHash4 = FREE4(0);
public globalHash5 = FREE5(0);
public globalHash6 = FREE6(0);
public globalHash7 = FREE7(0);

Global.L1 * (FREE0 - :globalHash0) = 0;
Global.L1 * (FREE1 - :globalHash1) = 0;
Global.L1 * (FREE2 - :globalHash2) = 0;
Global.L1 * (FREE3 - :globalHash3) = 0;
Global.L1 * (FREE4 - :globalHash4) = 0;
Global.L1 * (FREE5 - :globalHash5) = 0;
Global.L1 * (FREE6 - :globalHash6) = 0;
Global.L1 * (FREE7 - :globalHash7) = 0;
public oldStateRoot0 = B0(0);
public oldStateRoot1 = B1(0);
public oldStateRoot2 = B2(0);
public oldStateRoot3 = B3(0);
public oldStateRoot4 = B4(0);
public oldStateRoot5 = B5(0);
public oldStateRoot6 = B6(0);
public oldStateRoot7 = B7(0);
Global.L1 * (B0 - :oldStateRoot0) = 0;
Global.L1 * (B1 - :oldStateRoot1) = 0;
Global.L1 * (B2 - :oldStateRoot2) = 0;
Global.L1 * (B3 - :oldStateRoot3) = 0;
Global.L1 * (B4 - :oldStateRoot4) = 0;
Global.L1 * (B5 - :oldStateRoot5) = 0;
Global.L1 * (B6 - :oldStateRoot6) = 0;
Global.L1 * (B7 - :oldStateRoot7) = 0;

public oldAccInputHash0 = C0(0);
public oldAccInputHash1 = C1(0);
public oldAccInputHash2 = C2(0);
public oldAccInputHash3 = C3(0);
public oldAccInputHash4 = C4(0);
public oldAccInputHash5 = C5(0);
public oldAccInputHash6 = C6(0);
public oldAccInputHash7 = C7(0);
Global.L1 * (C0 - :oldAccInputHash0) = 0;
Global.L1 * (C1 - :oldAccInputHash1) = 0;
Global.L1 * (C2 - :oldAccInputHash2) = 0;
Global.L1 * (C3 - :oldAccInputHash3) = 0;
Global.L1 * (C4 - :oldAccInputHash4) = 0;
Global.L1 * (C5 - :oldAccInputHash5) = 0;
Global.L1 * (C6 - :oldAccInputHash6) = 0;
Global.L1 * (C7 - :oldAccInputHash7) = 0;

public oldBatchNum = SP(0);
Global.L1 * (SP - :oldBatchNum) = 0;

public chainId = GAS(0);
Global.L1 * (GAS - :chainId) = 0;

public newStateRoot0 = SR0(%N-1);
public newStateRoot1 = SR1(%N-1);
public newStateRoot2 = SR2(%N-1);
public newStateRoot3 = SR3(%N-1);
public newStateRoot4 = SR4(%N-1);
public newStateRoot5 = SR5(%N-1);
public newStateRoot6 = SR6(%N-1);
public newStateRoot7 = SR7(%N-1);
Global.LLAST * (SR0 - :newStateRoot0) = 0;
Global.LLAST * (SR1 - :newStateRoot1) = 0;
Global.LLAST * (SR2 - :newStateRoot2) = 0;
Global.LLAST * (SR3 - :newStateRoot3) = 0;
Global.LLAST * (SR4 - :newStateRoot4) = 0;
Global.LLAST * (SR5 - :newStateRoot5) = 0;
Global.LLAST * (SR6 - :newStateRoot6) = 0;
Global.LLAST * (SR7 - :newStateRoot7) = 0;

public newAccInputHash0 = D0(%N -1);
public newAccInputHash1 = D1(%N -1);
public newAccInputHash2 = D2(%N -1);
public newAccInputHash3 = D3(%N -1);
public newAccInputHash4 = D4(%N -1);
public newAccInputHash5 = D5(%N -1);
public newAccInputHash6 = D6(%N -1);
public newAccInputHash7 = D7(%N -1);
Global.LLAST * (D0 - :newAccInputHash0) = 0;
Global.LLAST * (D1 - :newAccInputHash1) = 0;
Global.LLAST * (D2 - :newAccInputHash2) = 0;
Global.LLAST * (D3 - :newAccInputHash3) = 0;
Global.LLAST * (D4 - :newAccInputHash4) = 0;
Global.LLAST * (D5 - :newAccInputHash5) = 0;
Global.LLAST * (D6 - :newAccInputHash6) = 0;
Global.LLAST * (D7 - :newAccInputHash7) = 0;

public localExitRoot0 = E0(%N-1);
public localExitRoot1 = E1(%N-1);
public localExitRoot2 = E2(%N-1);
public localExitRoot3 = E3(%N-1);
public localExitRoot4 = E4(%N-1);
public localExitRoot5 = E5(%N-1);
public localExitRoot6 = E6(%N-1);
public localExitRoot7 = E7(%N-1);
Global.LLAST * (E0 - :localExitRoot0) = 0;
Global.LLAST * (E1 - :localExitRoot1) = 0;
Global.LLAST * (E2 - :localExitRoot2) = 0;
Global.LLAST * (E3 - :localExitRoot3) = 0;
Global.LLAST * (E4 - :localExitRoot4) = 0;
Global.LLAST * (E5 - :localExitRoot5) = 0;
Global.LLAST * (E6 - :localExitRoot6) = 0;
Global.LLAST * (E7 - :localExitRoot7) = 0;

public newBatchNum = PC(%N-1);
Global.LLAST * (PC - :newBatchNum) = 0;

pol commit sKeyI[4];
pol commit sKey[4];
Expand Down
1 change: 1 addition & 0 deletions pil/global.pil
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
namespace Global(%N);
pol constant L1; // 1, 0, 0, 0, 0,
pol constant LLAST; // 0,0,0,0,0, ...., 0, 1
pol constant BYTE;
pol constant BYTE2;
112 changes: 95 additions & 17 deletions pil/main.pil
Original file line number Diff line number Diff line change
Expand Up @@ -308,23 +308,101 @@ namespace Main(%N);
(A6-op6)*assert = 0;
(A7-op7)*assert = 0;

public globalHash0 = FREE0(0);
public globalHash1 = FREE1(0);
public globalHash2 = FREE2(0);
public globalHash3 = FREE3(0);
public globalHash4 = FREE4(0);
public globalHash5 = FREE5(0);
public globalHash6 = FREE6(0);
public globalHash7 = FREE7(0);

Global.L1 * (FREE0 - :globalHash0) = 0;
Global.L1 * (FREE1 - :globalHash1) = 0;
Global.L1 * (FREE2 - :globalHash2) = 0;
Global.L1 * (FREE3 - :globalHash3) = 0;
Global.L1 * (FREE4 - :globalHash4) = 0;
Global.L1 * (FREE5 - :globalHash5) = 0;
Global.L1 * (FREE6 - :globalHash6) = 0;
Global.L1 * (FREE7 - :globalHash7) = 0;
public oldStateRoot0 = B0(0);
public oldStateRoot1 = B1(0);
public oldStateRoot2 = B2(0);
public oldStateRoot3 = B3(0);
public oldStateRoot4 = B4(0);
public oldStateRoot5 = B5(0);
public oldStateRoot6 = B6(0);
public oldStateRoot7 = B7(0);
Global.L1 * (B0 - :oldStateRoot0) = 0;
Global.L1 * (B1 - :oldStateRoot1) = 0;
Global.L1 * (B2 - :oldStateRoot2) = 0;
Global.L1 * (B3 - :oldStateRoot3) = 0;
Global.L1 * (B4 - :oldStateRoot4) = 0;
Global.L1 * (B5 - :oldStateRoot5) = 0;
Global.L1 * (B6 - :oldStateRoot6) = 0;
Global.L1 * (B7 - :oldStateRoot7) = 0;

public oldAccInputHash0 = C0(0);
public oldAccInputHash1 = C1(0);
public oldAccInputHash2 = C2(0);
public oldAccInputHash3 = C3(0);
public oldAccInputHash4 = C4(0);
public oldAccInputHash5 = C5(0);
public oldAccInputHash6 = C6(0);
public oldAccInputHash7 = C7(0);
Global.L1 * (C0 - :oldAccInputHash0) = 0;
Global.L1 * (C1 - :oldAccInputHash1) = 0;
Global.L1 * (C2 - :oldAccInputHash2) = 0;
Global.L1 * (C3 - :oldAccInputHash3) = 0;
Global.L1 * (C4 - :oldAccInputHash4) = 0;
Global.L1 * (C5 - :oldAccInputHash5) = 0;
Global.L1 * (C6 - :oldAccInputHash6) = 0;
Global.L1 * (C7 - :oldAccInputHash7) = 0;

public oldBatchNum = SP(0);
Global.L1 * (SP - :oldBatchNum) = 0;

public chainId = GAS(0);
Global.L1 * (GAS - :chainId) = 0;

public newStateRoot0 = SR0(%N-1);
public newStateRoot1 = SR1(%N-1);
public newStateRoot2 = SR2(%N-1);
public newStateRoot3 = SR3(%N-1);
public newStateRoot4 = SR4(%N-1);
public newStateRoot5 = SR5(%N-1);
public newStateRoot6 = SR6(%N-1);
public newStateRoot7 = SR7(%N-1);
Global.LLAST * (SR0 - :newStateRoot0) = 0;
Global.LLAST * (SR1 - :newStateRoot1) = 0;
Global.LLAST * (SR2 - :newStateRoot2) = 0;
Global.LLAST * (SR3 - :newStateRoot3) = 0;
Global.LLAST * (SR4 - :newStateRoot4) = 0;
Global.LLAST * (SR5 - :newStateRoot5) = 0;
Global.LLAST * (SR6 - :newStateRoot6) = 0;
Global.LLAST * (SR7 - :newStateRoot7) = 0;

public newAccInputHash0 = D0(%N -1);
public newAccInputHash1 = D1(%N -1);
public newAccInputHash2 = D2(%N -1);
public newAccInputHash3 = D3(%N -1);
public newAccInputHash4 = D4(%N -1);
public newAccInputHash5 = D5(%N -1);
public newAccInputHash6 = D6(%N -1);
public newAccInputHash7 = D7(%N -1);
Global.LLAST * (D0 - :newAccInputHash0) = 0;
Global.LLAST * (D1 - :newAccInputHash1) = 0;
Global.LLAST * (D2 - :newAccInputHash2) = 0;
Global.LLAST * (D3 - :newAccInputHash3) = 0;
Global.LLAST * (D4 - :newAccInputHash4) = 0;
Global.LLAST * (D5 - :newAccInputHash5) = 0;
Global.LLAST * (D6 - :newAccInputHash6) = 0;
Global.LLAST * (D7 - :newAccInputHash7) = 0;

public localExitRoot0 = E0(%N-1);
public localExitRoot1 = E1(%N-1);
public localExitRoot2 = E2(%N-1);
public localExitRoot3 = E3(%N-1);
public localExitRoot4 = E4(%N-1);
public localExitRoot5 = E5(%N-1);
public localExitRoot6 = E6(%N-1);
public localExitRoot7 = E7(%N-1);
Global.LLAST * (E0 - :localExitRoot0) = 0;
Global.LLAST * (E1 - :localExitRoot1) = 0;
Global.LLAST * (E2 - :localExitRoot2) = 0;
Global.LLAST * (E3 - :localExitRoot3) = 0;
Global.LLAST * (E4 - :localExitRoot4) = 0;
Global.LLAST * (E5 - :localExitRoot5) = 0;
Global.LLAST * (E6 - :localExitRoot6) = 0;
Global.LLAST * (E7 - :localExitRoot7) = 0;

public newBatchNum = PC(%N-1);
Global.LLAST * (PC - :newBatchNum) = 0;



// Check that the calculated hash is well formed
sWR + hashPDigest {
Expand Down
2 changes: 1 addition & 1 deletion pil/padding_kk.pil
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ namespace PaddingKK(%N);
pol constant crValid;

/* Read Data output
crLatch * crValid {addr, crOffset - crLen -1, crLen, crV0C, crV1C, crV2C, crV3C, crV4C, crV5C, crV6C, crV7C}
crLatch * crValid {addr, PaddingKK.len - PaddingKK.rem - PaddingKK.crLen + 1, crLen, crV0C, crV1C, crV2C, crV3C, crV4C, crV5C, crV6C, crV7C}
*/

/* Read Len output
Expand Down
39 changes: 39 additions & 0 deletions pre.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
checkMandatoryOptArg() {
argname=$3
[ "$2" = "true" ] && echo "ERROR: --$1 without mandatory argument. usage: --$1=<${argname:=value}>" && exit 1
}

checkAllMandatoryOptArgs() {
checkMandatoryOptArg build $npm_config_build buildpath
checkMandatoryOptArg pil $npm_config_pil file.pil
checkMandatoryOptArg pilconfig $npm_config_pilconfig pilconfig.json
checkMandatoryOptArg bctree $npm_config_bctree constanttreebuilder
checkMandatoryOptArg nth $npm_config_nth
checkMandatoryOptArg starkstruct $npm_config_starkstruct debug
checkMandatoryOptArg input $npm_config_input input
checkMandatoryOptArg from $npm_config_from step
checkMandatoryOptArg to $npm_config_to step
checkMandatoryOptArg step $npm_config_step step
}

usage() {
echo "options:"
echo " --build=<buildpath> folder were outputs was stored."
echo " --pil=<file.pil>"
echo " --pilconfig=<pilconfig.json>"
echo " --bctree=<builder> alternative binary to generate constanttree (ex: ../zkevm-prover/build/bctree)"
echo " --nth=<sufix> suffix used on commited files and derivated (ex: _0)"
echo " --starkstruct=debug auto-generate starkstruct, used in non-stardard pil as basic."
echo " --input=<input.json> input used in execution/proof."
echo " --from=<step> where start the process (ex: buildconstanttree)"
echo " --to=<step> where fiuish the process (ex: pilverify)"
echo " --step=<step> execute only one step of proccess (ex: exec)"
echo " --continue restart process from last step wellprocessed"
}

checkAllMandatoryOptArgs

[ ! -z $npm_config_help ] && usage && exit 1

BDIR="${npm_config_build:=build/proof}"
mkdir -p $BDIR
# NODE="--trace-gc --trace-gc-ignore-scavenger --max-semi-space-size=1024 --max-old-space-size=524288"
Expand All @@ -11,4 +48,6 @@ PILSTARK="node $NODE node_modules/pil-stark/src"
PILCOM="node $NODE node_modules/pilcom/src"
SNARKJS="node $NODE node_modules/snarkjs/cli.js"
BCTREE="${npm_config_bctree:=$PILSTARK/main_buildconsttree.js}"
# [ ! -z $npm_config_nth ] &&
NTH="${npm_config_nth}"
true
Loading