{"id":20910104,"url":"https://github.com/viperproject/viper-data-collection","last_synced_at":"2026-04-21T18:03:42.126Z","repository":{"id":218690194,"uuid":"710216939","full_name":"viperproject/viper-data-collection","owner":"viperproject","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-15T19:12:20.000Z","size":418,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-19T15:23:17.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","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/viperproject.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}},"created_at":"2023-10-26T08:55:32.000Z","updated_at":"2024-01-23T09:28:51.000Z","dependencies_parsed_at":"2024-01-31T11:30:02.402Z","dependency_job_id":"22a43b63-2907-487f-8edd-a1b2488de00b","html_url":"https://github.com/viperproject/viper-data-collection","commit_stats":null,"previous_names":["viperproject/viper-data-collection"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-data-collection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-data-collection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-data-collection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-data-collection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viperproject","download_url":"https://codeload.github.com/viperproject/viper-data-collection/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243302388,"owners_count":20269499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-18T14:13:54.826Z","updated_at":"2025-12-11T18:58:44.794Z","avatar_url":"https://github.com/viperproject.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# viper-data-collection\nThis is a backend to collect and benchmark user programs and metadata (with consent) from Viper verifiers and frontends for future evaluation. \nIt consists of a PostgresQL database run in a Docker container to store the data and a webserver to submit programs and post queries about stored data.\n## Prerequisites:\n- JDK 11\n- [SBT](https://www.scala-sbt.org)\n- [Z3Prover](https://github.com/Z3Prover/z3)\n  * Make sure to `export Z3_EXE=\"path/to/z3\"` in your shell file\n- [Boogie](https://github.com/boogie-org/boogie)\n  * Make sure to `export BOOGIE_EXE=\"path/to/boogie\"` in your shell file\n- [Docker](https://www.docker.com)\n- [Docker-Compose](https://docs.docker.com/compose/)\n\n## Setup\n\n#### On Server\n\n- Clone this repository recursively: `git clone --recursive https://github.com/viperproject/viper-data-collection`\n- Make sure all files in `bash_scripts` are marked executable.\n- Run `sbt compile`\n- Set up port forwarding from `localhost:WEBSERVER_LOCAL_PORT` (can be found in `util/Config`) to your desired outbound port to be able to access the API.\n\n#### Code to modify\n\nFor programs to be submitted to your instance, change the following files:\n\n- Silver: In `viper.silver.utility.ProgramSubmitter` change `val API_HOST` in the trait `ProgramSubmitter` to `http://server_ip:outbound_port`. This implementation is used by Silicon, Carbon, ViperServer, Gobra and Nagini.\n\n- Prusti: In `prusti_utils::program_submitter` change `const API_HOST` to `http://server_ip:outbound_port`.\n\n- vdc-query-frontend: In `queryFrontend.Config` change `val API_HOST` to `http://server_ip:outbound_port`.\n\n## Usage\n\n#### Running Backend\nRunning `./run.sh` will start the Docker database container and the API webserver.\n\n#### Submitting Programs\n\nUser programs will only be submitted with their consent. To submit their programs, users have to explicitly pass a flag in the respective frontend:\n- Silicon, Carbon, Gobra: Add `--submitForEvaluation` to the command.\n- ViperServer: Pass `--submitForEvaluation` as a verifier option.\n- Prusti: There are different ways to pass options to Prusti, I would recommend adding the line `submit_for_evaluation = true` to your `Prusti.toml`\n- Nagini: Add `--submit-for-evaluation` to the command.\n#### Querying WebAPI\nTo access the API, either query `http://server_ip:outbound_port/query_endpoint` directly, or use the pre-written queries in `vdc-query-frontend/src/main/scala/queryFrontend/APIQueries`, which handle correct serialization of the query data.\n\n#### Database Backups\nTo back up the database, run `bash_scripts/db_backup.sh`. This will store a compressed backup in `db/backups/`. To restore an older version, run `bash_scripts/db_restore.sh backup_filename`. The file has to be found in `db/backups/`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fviper-data-collection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviperproject%2Fviper-data-collection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fviper-data-collection/lists"}