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

chore: merge parser attestor #8

Merged
merged 89 commits into from
Oct 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
8b6324f
init
Autoparallel Jul 24, 2024
2867df5
feat: basic parse for
Autoparallel Jul 24, 2024
76e95f2
feat: pointer + depth for machine
Autoparallel Jul 24, 2024
fc33353
feat: another test, a bit more refinement
Autoparallel Jul 24, 2024
4017674
WIP
Autoparallel Jul 26, 2024
c9c67c9
feat: bit constraints
Autoparallel Jul 29, 2024
099ef3e
add files
Autoparallel Jul 29, 2024
1cd77e2
feat: 2d arrays
Autoparallel Jul 29, 2024
3ed399d
feat: makefile
Autoparallel Jul 29, 2024
22c6b03
editing makefile - running raw commands
Autoparallel Jul 29, 2024
4d88b5b
wip: fails to verify
Autoparallel Jul 29, 2024
59b1a8b
verifies
Autoparallel Jul 30, 2024
8f55eb1
edit witnessgen
Autoparallel Jul 30, 2024
d32bbd6
witness includes key sizes
Autoparallel Jul 31, 2024
1c98156
fix: witnessgen
Autoparallel Jul 31, 2024
6443d1a
reorganizing and prepping
Autoparallel Jul 31, 2024
36edb7a
constraints depending ...
Autoparallel Jul 31, 2024
054aa08
fix previous issue
Autoparallel Jul 31, 2024
04098b0
progress
Autoparallel Jul 31, 2024
d9880e0
time to debug
Autoparallel Aug 1, 2024
d9bab05
save
Autoparallel Aug 1, 2024
dc6482e
add: bytes.circom
Autoparallel Aug 2, 2024
bf90392
revert: rust witgen to bytes
Autoparallel Aug 2, 2024
bdf390c
feat: ASCII template
Autoparallel Aug 2, 2024
8d0f572
refactor: ASCII now as nums
Autoparallel Aug 2, 2024
6d57a03
WIP: string matching
Autoparallel Aug 2, 2024
48339d9
refactor: only one key now
Autoparallel Aug 2, 2024
ae2894a
cleanup
Autoparallel Aug 2, 2024
69fc6a0
rename to OLD
Autoparallel Aug 2, 2024
2dea3ec
fix: gitignore
Autoparallel Aug 5, 2024
e936d63
feat: justfile
Autoparallel Aug 5, 2024
e1333d9
remove redundant constraint
Autoparallel Aug 5, 2024
8652af5
refactor: bytes, new templates, justfile
Autoparallel Aug 5, 2024
cd8d460
init
Autoparallel Aug 5, 2024
58f8275
feat: harness and example test
Autoparallel Aug 5, 2024
aa3fe67
reorg
Autoparallel Aug 5, 2024
4d8971d
refactor further
Autoparallel Aug 5, 2024
9087fe5
gitignore and readme
Autoparallel Aug 5, 2024
7402761
fix rust
Autoparallel Aug 5, 2024
3dbf653
reorg further
Autoparallel Aug 5, 2024
edbba50
cleanup warnings
Autoparallel Aug 5, 2024
69a675a
unit test suite
Autoparallel Aug 5, 2024
deb61ab
Update .gitignore
Autoparallel Aug 5, 2024
c919fe8
Update README.md
Autoparallel Aug 5, 2024
45da002
fix + test: `IsEqualArray`
Autoparallel Aug 5, 2024
c9e4506
Update extract.circom
Autoparallel Aug 5, 2024
8e0318d
feat: test harness #3
Autoparallel Aug 6, 2024
274d15a
feat: parser state machine (#4)
Autoparallel Aug 7, 2024
ed2c440
tests/refactor: state update and improved JSON parsing (#11)
Autoparallel Aug 15, 2024
9b6f694
feat: upgrade input JSON creation (#14)
Autoparallel Aug 15, 2024
9ffb44f
feat: stack machine parsing (#18)
Autoparallel Aug 22, 2024
7bb4afc
fix: breakout of `parsing_number` (#45)
Autoparallel Aug 22, 2024
71b4470
feat: substring matching (#17)
lonerapier Aug 23, 2024
4473a8b
update package.json (#64)
Autoparallel Aug 26, 2024
9a44739
refactor: organize circuits and begin HTTP parsing (#65)
Autoparallel Aug 28, 2024
6a48ff5
feat: value extractor (#37)
lonerapier Aug 28, 2024
2af0bcd
remove deleted files (#66)
lonerapier Aug 29, 2024
b3bd8da
build and explainer docs (#70)
lonerapier Aug 30, 2024
5d6aac5
feat: basic but generic http parser (#69)
Autoparallel Aug 30, 2024
cc47938
feat: Rust CLI improvements and HTTP lockfile example (#72)
Autoparallel Sep 3, 2024
a0ee612
feat: http body extractor (#73)
lonerapier Sep 3, 2024
1d814b3
feat: parser improvs (#75)
lonerapier Sep 3, 2024
12a6651
feat: http locking and circuit codegen (#76)
Autoparallel Sep 9, 2024
4f7c835
Create bounty.md
brunny-eth Sep 10, 2024
ff87a3f
Update bounty.md
brunny-eth Sep 10, 2024
669f76f
Create LICENSE-MIT
brunny-eth Sep 10, 2024
aa33b93
Create LICENSE-Apache
brunny-eth Sep 10, 2024
14d224f
Update README.md (#81)
brunny-eth Sep 10, 2024
3ba1df1
differentiate reponse and request (#82)
Autoparallel Sep 11, 2024
ab92ce9
Consistency in Licenses / README across Repos #155 (#86)
brunny-eth Sep 11, 2024
dfd7e62
Update package.json (#89)
Autoparallel Sep 11, 2024
fc67ae7
feat(cli): add extractor witness gen (#90)
lonerapier Sep 13, 2024
726b6f9
feat: http + json extended example (#91)
lonerapier Sep 24, 2024
7fa287d
fix: circuit warnings (#93)
lonerapier Sep 26, 2024
af08a7a
feat: general value extractor (#95)
lonerapier Oct 18, 2024
5fd9651
feat: NIVC circuits + tests (#96)
Autoparallel Oct 22, 2024
1ff48a4
Merge remote-tracking branch 'parser-attestor/main'
lonerapier Oct 28, 2024
fab6430
feat: http parse max lengths (#106)
lonerapier Oct 28, 2024
374a138
Merge branch 'main' into chore/merge-parser-attestor
lonerapier Oct 29, 2024
788fc90
fix: add dependencies
lonerapier Oct 29, 2024
44aa062
ci: add concurrency
lonerapier Oct 29, 2024
5e9dbc8
update package lock
lonerapier Oct 29, 2024
19ffa66
Merge remote-tracking branch 'parser-attestor/main' into chore/merge-…
lonerapier Oct 29, 2024
6d983eb
Merge branch 'main' into chore/merge-parser-attestor
lonerapier Oct 30, 2024
b9a614b
remove cli
lonerapier Oct 30, 2024
7c1d998
remove codegen'd circuits and tests
lonerapier Oct 30, 2024
87b29cd
remove unused workflows
lonerapier Oct 30, 2024
571543d
update lockfile
lonerapier Oct 30, 2024
78c0ad8
update version
lonerapier Oct 30, 2024
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
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/bounty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: Bounty
about: Create a bounty for contributors
title: ''
labels: 'bounty'
assignees: ''

---

**Bounty description**

A clear and concise description of the project; should be accessible to a contributor with minimal context.

**Implementation requirements**

A clear and comprehensive list of the requirements for the bounty to be considered complete.

- [ ] Task 1
- Subtasks (if relevant)
- [ ] Task 2
- Subtasks (if relevant)
- [ ] Task 3
- Subtasks (if relevant)

**Bonus features**

Any additional features that will enhance the value of the bounty.

- [ ] Bonus Feature 1
- [ ] Bonus Feature 2

**Resources**

A list of potentially-useful resources. This list should be less than 5 total resources.

**Criteria**

For timely submissions of bounties that meet the implementation requirements, a bounty of at least $250 will be awarded to the contributor. Additional bounty amounts are available and will be rewarded based on the following criteria:

1. Completion of any of the bonus features listed above and/or other bonus features that improve the quality of the submission.
2. Correctness and security: A thorough review of the implementation should convince our team that they are correct and secure, with all requirements met.
3. Code clarity and quality: Succinct, easy-to-follow code with appropriate naming conventions. Utilize Rust’s type system for flexibility and security (e.g., compile-time checks where possible), and avoid external crates. Optimizations should be a lower priority than clarity, but can be included behind a feature flag as a bonus.
4. Documentation quality: Provide comprehensive README’s, Cargo docs, and inline comments where code itself is not self-explanatory. Prioritize clarity and readability.
39 changes: 39 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: circom

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
circom:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: |
npm install
npm install -g snarkjs

- name: Download and install Circom
run: |
CIRCOM_VERSION=2.1.9
curl -L https://github.com/iden3/circom/releases/download/v$CIRCOM_VERSION/circom-linux-amd64 -o circom
chmod +x circom
sudo mv circom /usr/local/bin/
circom --version

- name: Run tests
run: npm run test
20 changes: 18 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
*.r1cs
/target

node_modules/*

# Circomkit generated
build/*
ptau/*
circuits/test/*.circom
circuits/main/*

# Rust generated
inputs/**/*.json
!inputs/search/witness.json

# Circom-witnesscalc generated
ir_log/*
log_input_signals.txt
*.bin
node_modules/*
*.r1cs
9 changes: 9 additions & 0 deletions .mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extension": [
"ts"
],
"require": "ts-node/register",
"spec": "circuits/test/**/*.test.ts",
"timeout": 100000,
"exit": true
}
190 changes: 190 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

Copyright 2024 Pluto Development Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading