diff --git a/zkvm-prover/.work/.gitignore b/zkvm-prover/.work/.gitignore new file mode 100644 index 0000000000..1be1050983 --- /dev/null +++ b/zkvm-prover/.work/.gitignore @@ -0,0 +1 @@ +*.vmexe \ No newline at end of file diff --git a/zkvm-prover/.work/batch/openvm.toml b/zkvm-prover/.work/batch/openvm.toml new file mode 100644 index 0000000000..f96da131a6 --- /dev/null +++ b/zkvm-prover/.work/batch/openvm.toml @@ -0,0 +1,34 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.rv32m] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.castf] + +[app_vm_config.modular] +supported_modulus = [ + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", + "52435875175126190479447740508185965837690552500527637822603658699938581184513", +] +[app_vm_config.native] +[app_vm_config.pairing] +supported_curves = ["Bls12_381"] +[app_vm_config.sha256] +[app_vm_config.fp2] +supported_modulus = [ + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", +] +[[app_vm_config.ecc.supported_curves]] +modulus = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787" +scalar = "52435875175126190479447740508185965837690552500527637822603658699938581184513" +a = "0" +b = "4" \ No newline at end of file diff --git a/zkvm-prover/.work/bundle/openvm.toml b/zkvm-prover/.work/bundle/openvm.toml new file mode 100644 index 0000000000..9b9590e638 --- /dev/null +++ b/zkvm-prover/.work/bundle/openvm.toml @@ -0,0 +1,17 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.rv32m] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.castf] + +[app_vm_config.native] \ No newline at end of file diff --git a/zkvm-prover/.work/chunk/openvm.toml b/zkvm-prover/.work/chunk/openvm.toml new file mode 100644 index 0000000000..8bfa220331 --- /dev/null +++ b/zkvm-prover/.work/chunk/openvm.toml @@ -0,0 +1,53 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.rv32m] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.bigint] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.modular] +supported_modulus = [ + "21888242871839275222246405745257275088696311157297823662689037894645226208583", + "21888242871839275222246405745257275088548364400416034343698204186575808495617", + "115792089237316195423570985008687907853269984665640564039457584007908834671663", + "115792089237316195423570985008687907852837564279074904382605163141518161494337", + "115792089210356248762697446949407573530086143415290314195533631308867097853951", + "115792089210356248762697446949407573529996955224135760342422259061068512044369" +] + +[app_vm_config.fp2] +supported_modulus = ["21888242871839275222246405745257275088696311157297823662689037894645226208583"] + +[app_vm_config.pairing] +supported_curves = ["Bn254"] + +[app_vm_config.sha256] + +[[app_vm_config.ecc.supported_curves]] +modulus = "115792089237316195423570985008687907853269984665640564039457584007908834671663" +scalar = "115792089237316195423570985008687907852837564279074904382605163141518161494337" +a = "0" +b = "7" + +[[app_vm_config.ecc.supported_curves]] +modulus = "115792089210356248762697446949407573530086143415290314195533631308867097853951" +scalar = "115792089210356248762697446949407573529996955224135760342422259061068512044369" +a = "115792089210356248762697446949407573530086143415290314195533631308867097853948" +b = "41058363725152142129326129780047268409114441015993725554835256314039467401291" + +[[app_vm_config.ecc.supported_curves]] +modulus = "21888242871839275222246405745257275088696311157297823662689037894645226208583" +scalar = "21888242871839275222246405745257275088548364400416034343698204186575808495617" +a = "0" +b = "3" \ No newline at end of file diff --git a/zkvm-prover/.work/download-release.sh b/zkvm-prover/.work/download-release.sh new file mode 100644 index 0000000000..ce17d95795 --- /dev/null +++ b/zkvm-prover/.work/download-release.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# release version +if [ -z "${SCROLL_ZKVM_VERSION}" ]; then + SCROLL_ZKVM_VERSION=$($SHELL ./print_high_zkvm_version.sh | cut -d' ' -f1|cut -c2-) +fi + +echo $SCROLL_ZKVM_VERSION + +# chunk-circuit exe +wget https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION/chunk/app.vmexe -O .work/chunk/app.vmexe + +# batch-circuit exe +wget https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION/batch/app.vmexe -O .work/batch/app.vmexe + +# bundle-circuit exe +wget https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION/bundle/app.vmexe -O .work/bundle/app.vmexe + +# bundle-circuit exe, legacy version, may not exist +wget https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION/bundle/app_euclidv1.vmexe -O .work/bundle/app_euclidv1.vmexe || echo "legacy app not exist for $SCROLL_ZKVM_VERSION" diff --git a/zkvm-prover/Makefile b/zkvm-prover/Makefile index 1d5e1fbe4d..63740a61ce 100644 --- a/zkvm-prover/Makefile +++ b/zkvm-prover/Makefile @@ -1,5 +1,10 @@ .PHONY: prover lint tests_binary +RUST_MIN_STACK ?= 16777216 +export RUST_MIN_STACK + +CIRCUIT_STUFF = .work/chunk/app.vmexe .work/batch/app.vmexe .work/bundle/app.vmexe + ifeq (4.3,$(firstword $(sort $(MAKE_VERSION) 4.3))) PLONKY3_VERSION=$(shell grep -m 1 "Plonky3.git" ./Cargo.lock | cut -d "#" -f2 | cut -c-7) else @@ -46,3 +51,9 @@ lint: cargo check --all-features cargo clippy --all-features --all-targets -- -D warnings cargo fmt --all + +$(CIRCUIT_STUFF): + bash .work/download-release.sh + +test_run: $(CIRCUIT_STUFF) + GO_TAG=${GO_TAG} GIT_REV=${GIT_REV} ZK_VERSION=${ZK_VERSION} cargo run --release -- --config ./config.json \ No newline at end of file diff --git a/zkvm-prover/README.md b/zkvm-prover/README.md new file mode 100644 index 0000000000..58819223b7 --- /dev/null +++ b/zkvm-prover/README.md @@ -0,0 +1,11 @@ +## Prover + +A runnable zkvm prover which can communicate with coordinator, receving proving task and generate proof + +## Testing + ++ Get the url of the endpoint of coordinator and a rpc endpoint response to the cooresponding chain + ++ Build a `config.json` file with previous knowledge from the template in current directory + ++ Call `make test_run` \ No newline at end of file diff --git a/zkvm-prover/config.json b/zkvm-prover/config.json.template similarity index 62% rename from zkvm-prover/config.json rename to zkvm-prover/config.json.template index 978c2be570..98a498a8dc 100644 --- a/zkvm-prover/config.json +++ b/zkvm-prover/config.json.template @@ -1,15 +1,15 @@ { "sdk_config": { - "prover_name_prefix": "prover-1", - "keys_dir": "keys", + "prover_name_prefix": "test-prover", + "keys_dir": ".work", "coordinator": { - "base_url": "http://localhost:8555", + "base_url": "", "retry_count": 10, "retry_wait_time_sec": 10, "connection_timeout_sec": 30 }, "l2geth": { - "endpoint": "http://localhost:9999" + "endpoint": "" }, "prover": { "circuit_type": 2, @@ -20,12 +20,12 @@ ], "circuit_version": "v0.13.1" }, - "db_path": "unique-db-path-for-prover-1" + "db_path": ".work/db" }, "circuits": { "euclidV2": { "hard_fork_name": "euclidV2", - "workspace_path": "/home/ubuntu/prover-workdir" + "workspace_path": ".work" } } } \ No newline at end of file