Lyd/underflow constraints#494
Open
lydiagarms wants to merge 5 commits into
Open
Conversation
7ca3ae7 to
9b4e2b6
Compare
9b4e2b6 to
8df4208
Compare
1fd1727 to
62d98ca
Compare
62d98ca to
590e8e6
Compare
325cdbe to
dfc7067
Compare
Wei-257
reviewed
Jul 14, 2026
| node.expression?.leftHandSide?.typeName === 'bool' | ||
| ? 'bool' | ||
| : 'field'; | ||
| return withUnderflowGuardAssertions( |
There was a problem hiding this comment.
line 390, case 'InternalFunctionCall', is there any reason that we do not wrap it with "withUnderflowGuardAssertions(...)"?
for example, what if in solidity, we have something like "helper(a - amount);" which rejects when amount is greater than a. but in the circuit, this would not be enforced based on the current behaviour.
Collaborator
Author
There was a problem hiding this comment.
We get an unrelated compiler error for inputs to internal function calls such as these. In commit d011d87 I have therefore added this as unsupported.
…th parameters that are expressions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Currently in the circuits in Starlight, there are no checks to prevent underflows. Say we have a decrementation:
c -= a, we do not currently check that c > a first in the circuits. This means that c could underflow to the field modulus minus a. In contracts like Escrow.zol, this will lead to a user having a very high balance.
Changes
Checklist
How to test
Screenshots / Evidence (if applicable)
NA