You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The approach taken in Standard Honk to avoid zero polynomials was to add a single valid arithmetic gate by default in the constructor of the standard circuit constructor.
The increased complexity of the relations in Ultra Honk makes this approach less straightforward. The biggest issue is that a lookup must be performed to populate various lookup related polys with non-zero values. This automatically increases the circuit size by at least the size of the corresponding table. Currently the approach (encapsulated in add_gates_to_ensure_all_polys_are_non_zero()) increases the circuit size by 16k and is obviously untenable.
One solution would be to add a dummy table with one row and perform a lookup on that. We should also investigate whether there is a way to simply allow zero polynomials and handle the resulting commitments accordingly.
Relatedly, for Ultra Honk we have the additional requirement that all polynomials for which we require a shift must have constant coefficient equal to zero. The current approach to doing this is to add a valid gate with all four wires equal to zero. This only works if there are no public inputs, however, since PI are always placed at the start of the witness polys. A universal solution may be to simple add 0 as a PI by default.
The text was updated successfully, but these errors were encountered:
The approach taken in Standard Honk to avoid zero polynomials was to add a single valid arithmetic gate by default in the constructor of the standard circuit constructor.
The increased complexity of the relations in Ultra Honk makes this approach less straightforward. The biggest issue is that a lookup must be performed to populate various lookup related polys with non-zero values. This automatically increases the circuit size by at least the size of the corresponding table. Currently the approach (encapsulated in
add_gates_to_ensure_all_polys_are_non_zero()
) increases the circuit size by 16k and is obviously untenable.One solution would be to add a dummy table with one row and perform a lookup on that. We should also investigate whether there is a way to simply allow zero polynomials and handle the resulting commitments accordingly.
Relatedly, for Ultra Honk we have the additional requirement that all polynomials for which we require a shift must have constant coefficient equal to zero. The current approach to doing this is to add a valid gate with all four wires equal to zero. This only works if there are no public inputs, however, since PI are always placed at the start of the witness polys. A universal solution may be to simple add 0 as a PI by default.
The text was updated successfully, but these errors were encountered: