{"id":21970044,"url":"https://github.com/scroll-tech/ceno-recursion","last_synced_at":"2026-02-27T03:31:30.012Z","repository":{"id":263374597,"uuid":"872755466","full_name":"scroll-tech/ceno-recursion","owner":"scroll-tech","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-10T14:40:30.000Z","size":107341,"stargazers_count":4,"open_issues_count":26,"forks_count":0,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-10-10T12:32:18.653Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scroll-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-15T02:44:09.000Z","updated_at":"2025-06-30T14:13:35.000Z","dependencies_parsed_at":"2024-11-18T06:53:27.210Z","dependency_job_id":"4559d66f-79aa-4a3f-8a98-341322661881","html_url":"https://github.com/scroll-tech/ceno-recursion","commit_stats":null,"previous_names":["scroll-tech/ceno-recursion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scroll-tech/ceno-recursion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fceno-recursion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fceno-recursion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fceno-recursion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fceno-recursion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scroll-tech","download_url":"https://codeload.github.com/scroll-tech/ceno-recursion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scroll-tech%2Fceno-recursion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29883693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"online","status_checked_at":"2026-02-27T02:00:06.759Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T14:29:49.075Z","updated_at":"2026-02-27T03:31:29.994Z","avatar_url":"https://github.com/scroll-tech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CoBBl: SNARK over Basic Blocks\n\nCoBBl is an end-to-end SNARK system that divides a computation into blocks and verify their correctness in parallel. CoBBl is divided into two components:\n\n#### CirC Blocks\nA front-end SNARK compiler based on CirC that divides a program into blocks and generates all constraints related to verification.\n\n#### Spartan Parallel\nA modified Spartan proof system that supports data-parallelism and additional properties. **Currently does not support Goldilocks and cannot verify ceno!!!**\n\n## Running the recursive verifier for ceno\n* Requires `rustc 1.74.0-nightly`\n* First set up all compilers: `bash setup.sh`\n* Then run the ceno verifier: `bash encode_ceno.sh`\n* Note that `spartan_parallel` currently does not support Goldilocks fields and cannot verify the circuit generated by `circ_blocks`\n* Finally run `bash verify_ceno.sh`, which emits size \u0026 number of execution for each block before throwing out a verifier error due to wrong field size.\n\n## File Structure\nCirC Blocks generates constraints from customized Zokrates codes (see `zok_format.md`) located in `zok_tests/benchmarks`.\n\n### Ceno Demo\nThis is a verbose encoding of ceno into Zokrates, aiming for as much resemblance to the Rust code as possible. This produces inefficient constraints, but is useful for debugging purposes. Currently implements functions up to `TowerVerify::verify`, which is located in `zok_tests/benchmarks/ceno_demo/tower_verifier.zok`.\n\n### Ceno Compact\nWork in progress\n\n## Producing alternative inputs for Tower Verifier\n* Please review `zok_format.md` first, especially the `.input` and `.witness` section.\n* Clone or switch to the custom branch `https://github.com/scroll-tech/ceno/tree/kunming/recursive_verifier`.\n* Navigate to `ceno/ceno_zkvm` and run the benchmark: `RAYON_NUM_THREADS=1 cargo run --example riscv_opcodes` (might not work with multicore)\n* For every benchmark, copy lines below `INPUT:` to `zok_tests/benchmarks/ceno_demo/tower_verifier.input`\nand lines below `WITNESS:` to `zok_tests/benchmarks/ceno_demo/tower_verifier.witness`,\ndon't forget the `END` at the end of each file\n* Run the ceno verifier: `bash encode_ceno.sh`\n* I know this is looks stupid, I'm trying to come up with a better solution.\n\n## Other compilation flags and functionalities\nMany flags are WIP. For temporary hacks, alter the code directly and recompile through `bash setup.sh`\n\n#### Verbose outputs for\n\n#### Working with a different field\n\n#### Verify circuit using `spartan_parallel` (only supported in Curve25519)\n\n# Continuous Integration\n\nAt the moment we only have a [simple CI](.github/workflows/) that checks formatting and `cargo check` and runs [setup.sh](setup.sh) and [encode_ceno.sh](encode_ceno.sh).\n\nTODO:\n- [ ] run tests in CI, too.  (That means we need to fix our tests.)\n- [ ] reorganise the code, so that we only need a single `carge check` or `cargo test` instead of having to run that in a dozen different directories.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fceno-recursion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscroll-tech%2Fceno-recursion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscroll-tech%2Fceno-recursion/lists"}