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

fix: allow usage of decimal string encoding for fields larger than a i128 #2547

Merged
merged 2 commits into from
Sep 4, 2023

Conversation

TomAFrench
Copy link
Member

Description

Problem*

Resolves #2545
Resolves partly #2456

Summary*

When parsing fields from strings, we're currently converting the string into an i128 temporarily if it's a decimal representation. This limits the size of values which can be passed in as a decimal string compared to hex strings.

We now instead parse using a BigUint to ensure that we can handle all inputs.

Documentation

  • This PR requires documentation updates when merged.

    • I will submit a noir-lang/docs PR.
    • I will request for and support Dev Rel's help in documenting this PR.

Additional Context

Note that FieldElement has a try_from_str implementation but as it returns an Option<FieldElement> rather than a Result<FieldElement, Err>, it's then not suitable for dealing with user input.

https://github.com/noir-lang/acvm/blob/5ad18bf8b365b57ba4c6f84004b5178e54562e7e/acir_field/src/generic_ark.rs#L204-L211

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

Copy link
Contributor

@kevaundray kevaundray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One nit about canonical inputs

@kevaundray kevaundray added this pull request to the merge queue Sep 4, 2023
Merged via the queue into master with commit d73f30e Sep 4, 2023
11 checks passed
@kevaundray kevaundray deleted the abi-field-size-restriction branch September 4, 2023 10:58
TomAFrench added a commit that referenced this pull request Sep 5, 2023
* master:
  chore: Replace hashers of hashmaps in dfg with fxhashes (#2490)
  chore: remove duplicate span from FunctionReturnType (#2546)
  feat: Add support for brillig call stacks in runtime errors (#2549)
  feat: add `noirc_abi_wasm` crate for ABI encoding in JS (#1945)
  chore: move CRS files into their own directory (#2558)
  chore: Cleanup `rebuild.sh` script (#2470)
  chore(ci): add mocked backend binary to improve `compile_success_empty` tests (#2554)
  chore: add noir-source-resolver (#2485)
  chore: fix double verify proof (#2556)
  feat: add `nargo backend ls` and `nargo backend use` command to switch between backends (#2552)
  chore(ci): bump checkout action to v4 (#2551)
  feat: Support for optional assertion messages (#2491)
  fix: allow usage of decimal string encoding for fields larger than a `i128` (#2547)
  feat(nargo): add hidden option to produce JSON output from `nargo info` (#2542)
  chore(stdlib)!: Rename `fixed_base_scalar_mul` to be more descriptive (#2488)
  chore: Document requirement for range opcode on `r_witness` in  `GeneratedAcir::euclidean_division` (#2437)
  chore!: ACVM 0.24 (#2504)
  fix(aztec_noir): generalise loop to not always inject a hasher instance (#2529)
  chore: create helper functions for writing programs and contracts to file (#2526)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Large Field Input Causes Error
2 participants