Comments (4)
I think the assert! makes big numbers in the GoldilocksField
"lost".
But if we change the code:
assert!(
num_bits <= log_floor(F::ORDER, 2),
"{} bits may overflow the field",
num_bits
);
to
assert!(
num_bits <= log2_ceil(F::ORDER as usize),
"{} bits may overflow the field",
num_bits
);
And create a Target
related to a GoldilocksField
number through le_sum.
And set the target in the witness to any number larger than 2^63
and less than F::ORDER
, the prove
will work but the verify
will fail. The error is as follows:
I think the restriction in the BaseSumGate is the reason.
from plonky2.
You are right that Goldilocks field elements with 64 bits are not reachable with this gadget, but we want to make sure it's impossible to overflow and this is only possible by rejecting 64 bit vectors altogether.
In Plonky2 we only use this gadget with smaller vectors, so this isn't an issue for us. Do you have a use case where supporting 64 bit vectors is necessary?
from plonky2.
You are right that Goldilocks field elements with 64 bits are not reachable with this gadget, but we want to make sure it's impossible to overflow and this is only possible by rejecting 64 bit vectors altogether. In Plonky2 we only use this gadget with smaller vectors, so this isn't an issue for us. Do you have a use case where supporting 64 bit vectors is necessary?
Yeah, in my case I need to prove the calculation of u128
numbers, and I found the BigUintTarget can do this. But in order to created the Poseidon
hash of some data including the u128
numbers, I need to convert BigUintTarget
to two Target
related to two GoldilocksField
values.
In order to do the converting, I transfer the BigUintTarget
into bits first, and then use le_sum
to generate two Target
s related to two GoldilocksField
. Sometimes the 64 bits BoolTarget
vec reaches.
Anyway, luckily, I have solved this problem today, without any changed to the plonky2 repo
.
The compromised solution is that, I generate a target with the first 63 bits, and add it to a constant target with the value `` 1 << 63` if the highest bit is 1.
If you have any better idea of this case, please let me know. Thanks~
from plonky2.
Ok great, will close this then.
from plonky2.
Related Issues (20)
- The `Solidity` Verifier for `Plonky2` Proofs HOT 7
- what is the most expensive part of `compute_quotient_polys` under `plonky2/plonk2/src/plonk/prover.rs`
- Panic when trying to generate proof with invalid witness
- Understanding selected gate for each row in the trace table
- Add Prometheus metrics support to the prover
- Increase testing in starky crate HOT 3
- Allow larger constraint degrees for logUp HOT 1
- Add workspace CHANGELOG for future releases
- Deal with `CompressedStarkProof` on `starky` side
- Failed to build for wasm32-unknown-unknown with no_std
- Move `README`'s contribution guidance into a `CONTRIBUTING.md`
- Support monolith hash instead of Poseidon. HOT 1
- Amortize serialization size bloat
- Question: why BaseSumGate takes up the whole row while the other gates can share the same row across multiple instances? HOT 1
- plonky2 works very slow after MacOS Sonoma 14.4 has beed updated HOT 3
- Fix CTLs with exactly two looking tables
- Solving cross verification of n-recursed circuits using Domain Separator HOT 4
- CTL's looking table grouping is wonky
- Starky proof is generated but can't be verified HOT 2
- Explicitely mention that `starky` doesn't support `ZK`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plonky2.