Integers
An integer type is a range constrained field type. The Noir frontend currently supports unsigned, arbitrary-sized integer types.
Note: When an integer is defined in Noir without a specific type, it will default to
Field. The one exception is for loop indices which default tou64since comparisons onFields are not possible.
An integer type is specified first with the letter u, indicating its unsigned nature, followed by
its length in bits (e.g. 32). For example, a u32 variable can store a value in the range of
.
Note: The default proving backend supports both even (e.g.
u16,u48) and odd (e.g.u5,u3) sized integer types.
Taking a look of how the type is used:
fn main(x : Field, y : u32) {
let z = x as u32 + y;
}
x, y and z are all private values in this example. However, x is a field while y and z
are unsigned 32-bit integers. If y or z exceeds the range , proofs created
will be rejected by the verifier.