{"id":23484916,"url":"https://github.com/pluto/parser-attestor","last_synced_at":"2025-04-15T01:26:59.350Z","repository":{"id":256623769,"uuid":"833250630","full_name":"pluto/parser-attestor","owner":"pluto","description":"Circuits for parsing, locking, and extracting from various widely-used formats including JSON and HTTP.","archived":false,"fork":false,"pushed_at":"2024-10-22T20:31:15.000Z","size":125555,"stargazers_count":12,"open_issues_count":29,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-23T10:06:09.812Z","etag":null,"topics":["circom","zero-knowledge"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pluto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-07-24T16:47:01.000Z","updated_at":"2024-10-22T20:31:16.000Z","dependencies_parsed_at":"2024-10-22T18:26:16.683Z","dependency_job_id":"b5e41d3f-9049-402c-97b9-8e044e0bb43a","html_url":"https://github.com/pluto/parser-attestor","commit_stats":null,"previous_names":["pluto/parser-attestor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pluto%2Fparser-attestor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pluto%2Fparser-attestor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pluto%2Fparser-attestor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pluto%2Fparser-attestor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pluto","download_url":"https://codeload.github.com/pluto/parser-attestor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231157666,"owners_count":18336356,"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":["circom","zero-knowledge"],"created_at":"2024-12-24T22:11:37.231Z","updated_at":"2024-12-24T22:11:37.862Z","avatar_url":"https://github.com/pluto.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  Parser Attestor\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pluto/parser-attestor/graphs/contributors\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/pluto/spark?style=flat-square\u0026logo=github\u0026logoColor=8b949e\u0026labelColor=282f3b\u0026color=32c955\" alt=\"Contributors\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/pluto/parser-attestor/actions/workflows/test.yaml\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/tests-passing-32c955?style=flat-square\u0026logo=github-actions\u0026logoColor=8b949e\u0026labelColor=282f3b\" alt=\"Tests\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/pluto/parser-attestor/actions/workflows/lint.yaml\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/lint-passing-32c955?style=flat-square\u0026logo=github-actions\u0026logoColor=8b949e\u0026labelColor=282f3b\" alt=\"Lint\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n## Overview\n\n`parser-attestor` is a project focused on implementing parsers and extractors/selective-disclosure for various data formats inside of zero-knowledge circuits.\n\n## Repository Structure\n\n- `circuits/`: Current implementation of circuits\n  - `http`: HTTP parser and extractor\n  - `json`: JSON parser and extractor\n    - `json` has its own documentation [here](docs/json.md)\n  - `utils`: Utility circuits\n  - `test`: Circuit tests\n- `src/`: Rust `pabuild` binary\n  - `pabuild` has its own documentation [here](docs/pabuild.md)\n- `examples/`: Reference examples for JSON and HTTP parsers\n\nDocumentation, in general, can be found in the `docs` directory.\nWe will add to this over time to make working with `parser-attestor` easier.\n\n## Getting Started\n\n### Prerequisites\n\nTo use this repo, you will need to install the following dependencies.\nThese instructions should work on Linux/GNU and MacOS, but aren't guaranteed to work on Windows.\n\n#### Install Rust\nTo install Rust, you need to run:\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nexec $SHELL\n```\nCheck this is installed by running:\n```sh\nrustc --version \u0026\u0026 cargo --version\n```\nto see the path to your Rust compiler and Cargo package manager.\n\n#### Install Circom\nSuccinctly, `cd` to a directory of your choosing and run:\n```sh\ngit clone https://github.com/iden3/circom.git\ncd circom\ncargo build --release\ncargo install --path circom\n```\nin order to install `circom` globally.\n\n#### Install Node\nFirst, install `nvm` by running:\n```sh\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nexec $SHELL\n```\nNow with `nvm` installed, run:\n```sh\nnvm install --lts\nnvm use --lts\nnode --version \u0026\u0026 npm --version\n```\n\n#### Node packages\nFrom the root of the repository, you can now run:\n```sh\nnpm install\n```\nwhich will install all the necessary packages for working with Circom.\nThis includes executables `circomkit`, `snarkjs`, and `mocha` which are accessible with Node: `npx`.\n\n##### Circomkit\nThis repository uses `circomkit` to manage Circom circuits.\nTo see what you can do with `circomkit`, we suggest running:\n```\nnpx circomkit help\n```\n`circomkit` can essentially do everything you would want to do with these Circuits, though we can't guarantee all commands work properly.\n\n**Example:**\nFor example, to compile the `json-parser`, you can run the following from the repository root:\n```\nnpx circomkit compile json-parser\n```\nwhich implicitly checks the `circuits.json` for an object that points to the circuit's code itself.\n\nIf you are having trouble with `circomkit`, consider:\n\n##### SNARKJS\nLikewise, `snarkjs` is used to handle proofs and verification under the hood.\nThere is [documentation](https://docs.circom.io/getting-started/compiling-circuits/) on Circom's usage to work with this.\nWe suggest starting at that link and carrying through to \"Proving circuits with ZK\".\n\n##### Mocha\n`mocha` will also be installed from before.\nRunning\n```sh\nnpx mocha\n```\nwill run every circuit test.\nTo filter tests, you can use the `-g` flag (very helpful!).\n\n\n### Install `pabuild`\nFrom the root of this repository, run:\n```sh\ncargo install --path .\n```\nto install the `pabuild` binary.\nYou can see a help menu with the subcommands by:\n```sh\npabuild --help\n```\nThis is our local Rust command line application.\nPlease see the [documentation](docs/pabuild.md) for how to use this alongside the other tools.\n\n\n## License\n\nLicensed under the Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n\n## Contributing\n\nWe welcome contributions to our open-source projects. If you want to contribute or follow along with contributor discussions, join our [main Telegram channel](https://t.me/pluto_xyz/1) to chat about Pluto's development.\n\nOur contributor guidelines can be found in [CONTRIBUTING.md](./CONTRIBUTING.md). A good starting point is issues labelled 'bounty' in our repositories.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpluto%2Fparser-attestor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpluto%2Fparser-attestor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpluto%2Fparser-attestor/lists"}