Skip to main content
Version: 2.4.0

UInt8

Defined in: lib/provable/int.ts:1511

A 8 bit unsigned integer with values ranging from 0 to 255.

Extends​

Constructors​

new UInt8()​

new UInt8(x: number | bigint | FieldVar | UInt8): UInt8

Defined in: lib/provable/int.ts:1522

Create a UInt8 from a bigint or number. The max value of a UInt8 is 2^8 - 1 = 255.

Warning: Cannot overflow past 255, an error is thrown if the result is greater than 255.

Parameters​

x​

number | bigint | FieldVar | UInt8

Returns​

UInt8

Overrides​

Struct({
value: Field,
}).constructor

Properties​

value​

value: Field = Field;

Defined in: lib/provable/int.ts:1512

Inherited from​

Struct({
value: Field,
}).value

_isStruct​

static _isStruct: true;

Defined in: lib/provable/types/struct.ts:133

Inherited from​

Struct({
value: Field,
})._isStruct

empty()​

static empty: () => {
value: Field;
};

Defined in: lib/provable/types/struct.ts:143

Returns​

{
value: Field;
}
value​
value: Field = Field;

Inherited from​

Struct({
value: Field,
}).empty

fromFields()​

static fromFields: (fields: Field[]) => {
value: Field;
};

Defined in: lib/provable/types/provable-intf.ts:115

Parameters​

fields​

Field[]

Returns​

{
value: Field;
}
value​
value: Field = Field;

Inherited from​

Struct({
value: Field,
}).fromFields

fromJSON()​

static fromJSON: (x: {
value: string;
}) => {
value: Field;
};

Defined in: lib/provable/types/struct.ts:142

Parameters​

x​
value​

string = Field

Returns​

{
value: Field;
}
value​
value: Field = Field;

Inherited from​

Struct({
value: Field,
}).fromJSON

NUM_BITS​

static NUM_BITS: number = 8;

Defined in: lib/provable/int.ts:1514


toAuxiliary()​

static toAuxiliary: (value?: {
value: Field;
}) => any[];

Defined in: lib/provable/types/provable-intf.ts:47

A function that takes value (optional), an element of type T, as argument and returns an array of any type that make up the "auxiliary" (non-provable) data of value.

Parameters​

value?​

the element of type T to generate the auxiliary data array from, optional. If not provided, a default value for auxiliary data is returned.

value​

Field = Field

Returns​

any[]

An array of any type describing how this T element is made up of "auxiliary" (non-provable) data.

Inherited from​

Struct({
value: Field,
}).toAuxiliary

toCanonical()?​

static optional toCanonical: (x: {
value: Field;
}) => {
value: Field;
};

Defined in: lib/provable/types/provable-intf.ts:104

Optional method which transforms a provable type into its canonical representation.

This is needed for types that have multiple representations of the same underlying value, and might even not have perfect completeness for some of those representations.

An example is the ForeignField class, which allows non-native field elements to exist in unreduced form. The unreduced form is not perfectly complete, for example, addition of two unreduced field elements can cause a prover error.

Specific protocols need to be able to protect themselves against incomplete operations at all costs. For example, when using actions and reducer, the reducer must be able to produce a proof regardless of the input action. toCanonical() converts any input into a safe form and enables us to handle cases like this generically.

Note: For most types, this method is the identity function. The identity function will also be used when the toCanonical() is not present on a type.

Parameters​

x​
value​

Field = Field

Returns​

{
value: Field;
}
value​
value: Field = Field;

Inherited from​

Struct({
value: Field,
}).toCanonical

toFields()​

static toFields: (value: {
value: Field;
}) => Field[];

Defined in: lib/provable/types/provable-intf.ts:36

A function that takes value, an element of type T, as argument and returns an array of Field elements that make up the provable data of value.

Parameters​

value​

the element of type T to generate the Field array from.

value​

Field = Field

Returns​

Field[]

A Field array describing how this T element is made up of Field elements.

Inherited from​

Struct({
value: Field,
}).toFields

toJSON()​

static toJSON: (x: {
value: Field;
}) => {
value: string;
};

Defined in: lib/provable/types/struct.ts:141

Parameters​

x​
value​

Field = Field

Returns​

{
value: string;
}
value​
value: string = Field;

Inherited from​

Struct({
value: Field,
}).toJSON

toValue()​

static toValue: (x: {
value: Field;
}) => {
value: bigint;
};

Defined in: lib/provable/types/provable-intf.ts:81

Convert provable type to a normal JS type.

Parameters​

x​
value​

Field = Field

Returns​

{
value: bigint;
}
value​
value: bigint = Field;

Inherited from​

Struct({
value: Field,
}).toValue

Unsafe​

static Unsafe: {
fromField: UInt8;
};

Defined in: lib/provable/int.ts:1528

fromField()​

Create a UInt8 from a Field without constraining its range.

Warning: This is unsafe, because it does not prove that the input Field actually fits in 8 bits.
Only use this if you know what you are doing, otherwise use the safe UInt8.from.

Parameters​
x​

Field

Returns​

UInt8

Accessors​

one​

Get Signature​

get static one(): UInt8

Defined in: lib/provable/int.ts:1549

Static method to create a UInt8 with value 1.

Returns​

UInt8


zero​

Get Signature​

get static zero(): UInt8

Defined in: lib/provable/int.ts:1543

Static method to create a UInt8 with value 0.

Returns​

UInt8

Methods​

add()​

add(y: number | bigint | UInt8): UInt8

Defined in: lib/provable/int.ts:1565

Add a UInt8 to another UInt8 without allowing overflow.

Parameters​

y​

number | bigint | UInt8

Returns​

UInt8

Example​

const x = UInt8.from(3);
const sum = x.add(5);
sum.assertEquals(8);

Throws​

if the result is greater than 255.


assertEquals()​

assertEquals(y: number | bigint | UInt8, message?: string): void

Defined in: lib/provable/int.ts:1811

Assert that this UInt8 is equal another UInt8 value.

Important: If an assertion fails, the code throws an error.

Parameters​

y​

the UInt8 value to compare & assert with this UInt8.

number | bigint | UInt8

message?​

string

a string error message to print if the assertion fails, optional.

Returns​

void


assertGreaterThan()​

assertGreaterThan(y: number | bigint | UInt8, message?: string): void

Defined in: lib/provable/int.ts:1787

Assert that this UInt8 is greater than another UInt8 value.

Important: If an assertion fails, the code throws an error.

Parameters​

y​

the UInt8 value to compare & assert with this UInt8.

number | bigint | UInt8

message?​

string

a string error message to print if the assertion fails, optional.

Returns​

void


assertGreaterThanOrEqual()​

assertGreaterThanOrEqual(y: UInt8, message?: string): void

Defined in: lib/provable/int.ts:1799

Assert that this UInt8 is greater than or equal to another UInt8 value.

Important: If an assertion fails, the code throws an error.

Parameters​

y​

UInt8

the UInt8 value to compare & assert with this UInt8.

message?​

string

a string error message to print if the assertion fails, optional.

Returns​

void


assertLessThan()​

assertLessThan(y: number | bigint | UInt8, message?: string): void

Defined in: lib/provable/int.ts:1715

Assert that this UInt8 is less than another UInt8 value.

Important: If an assertion fails, the code throws an error.

Parameters​

y​

the UInt8 value to compare & assert with this UInt8.

number | bigint | UInt8

message?​

string

a string error message to print if the assertion fails, optional.

Returns​

void


assertLessThanOrEqual()​

assertLessThanOrEqual(y: number | bigint | UInt8, message?: string): void

Defined in: lib/provable/int.ts:1737

Assert that this UInt8 is less than or equal to another UInt8 value.

Important: If an assertion fails, the code throws an error.

Parameters​

y​

the UInt8 value to compare & assert with this UInt8.

number | bigint | UInt8

message?​

string

a string error message to print if the assertion fails, optional.

Returns​

void


div()​

div(y: number | bigint | UInt8): UInt8

Defined in: lib/provable/int.ts:1618

Divide a UInt8 by another UInt8. This is integer division that rounds down.

Parameters​

y​

number | bigint | UInt8

Returns​

UInt8

Example​

const x = UInt8.from(7);
const quotient = x.div(2);
quotient.assertEquals(3);

divMod()​

divMod(y: number | bigint | UInt8): {
quotient: UInt8;
remainder: UInt8;
}

Defined in: lib/provable/int.ts:1645

Get the quotient and remainder of a UInt8 divided by another UInt8:

x == y * q + r, where 0 <= r < y.

Parameters​

y​

a UInt8 to get the quotient and remainder of another UInt8.

number | bigint | UInt8

Returns​

{
quotient: UInt8;
remainder: UInt8;
}

The quotient q and remainder r.

quotient​
quotient: UInt8;
remainder​
remainder: UInt8;

greaterThan()​

greaterThan(y: number | bigint | UInt8): Bool

Defined in: lib/provable/int.ts:1761

Check if this UInt8 is greater than another UInt8. Returns a Bool.

Parameters​

y​

number | bigint | UInt8

Returns​

Bool

Example​

// 5 > 3
UInt8.from(5).greaterThan(3);

greaterThanOrEqual()​

greaterThanOrEqual(y: number | bigint | UInt8): Bool

Defined in: lib/provable/int.ts:1775

Check if this UInt8 is greater than or equal another UInt8 value. Returns a Bool.

Parameters​

y​

number | bigint | UInt8

Returns​

Bool

Example​

// 3 >= 3
UInt8.from(3).greaterThanOrEqual(3);

isConstant()​

isConstant(): boolean

Defined in: lib/provable/int.ts:1905

Returns​

boolean


lessThan()​

lessThan(y: number | bigint | UInt8): Bool

Defined in: lib/provable/int.ts:1699

Check if this UInt8 is less than another UInt8 value. Returns a Bool.

Parameters​

y​

number | bigint | UInt8

Returns​

Bool

Example​

UInt8.from(2).lessThan(UInt8.from(3));

lessThanOrEqual()​

lessThanOrEqual(y: number | bigint | UInt8): Bool

Defined in: lib/provable/int.ts:1682

Check if this UInt8 is less than or equal to another UInt8 value. Returns a Bool.

Parameters​

y​

number | bigint | UInt8

Returns​

Bool

Example​

UInt8.from(3).lessThanOrEqual(UInt8.from(5));

mod()​

mod(y: number | bigint | UInt8): UInt8

Defined in: lib/provable/int.ts:1632

Get the remainder a UInt8 of division of another UInt8.

Parameters​

y​

number | bigint | UInt8

Returns​

UInt8

Example​

const x = UInt8.from(50);
const mod = x.mod(30);
mod.assertEquals(20);

mul()​

mul(y: number | bigint | UInt8): UInt8

Defined in: lib/provable/int.ts:1601

Multiply a UInt8 by another UInt8 without allowing overflow.

Parameters​

y​

number | bigint | UInt8

Returns​

UInt8

Example​

const x = UInt8.from(3);
const product = x.mul(5);
product.assertEquals(15);

Throws​

if the result is greater than 255.


sub()​

sub(y: number | bigint | UInt8): UInt8

Defined in: lib/provable/int.ts:1583

Subtract a UInt8 from another UInt8 without allowing underflow.

Parameters​

y​

number | bigint | UInt8

Returns​

UInt8

Example​

const x = UInt8.from(8);
const difference = x.sub(5);
difference.assertEquals(3);

Throws​

if the result is less than 0.


toBigInt()​

toBigInt(): bigint

Defined in: lib/provable/int.ts:1839

Serialize the UInt8 to a bigint.

Warning: This operation is not provable.

Returns​

bigint


toBits()​

toBits(length: number): Bool[]

Defined in: lib/provable/int.ts:1922

Returns an array of Bool elements representing little endian binary representation of this UInt8 element.

If you use the optional length argument, proves that the UInt8 element fits in length bits. The length has to be between 0 and 8 and the method throws if it isn't.

Warning: The cost of this operation in a zk proof depends on the length you specify, which by default is 8 bits. Prefer to pass a smaller length if possible.

Parameters​

length​

number = 8

the number of bits to fit the element. If the element does not fit in length bits, the functions throws an error.

Returns​

Bool[]

An array of Bool element representing little endian binary representation of this UInt8.


toNumber()​

toNumber(): number

Defined in: lib/provable/int.ts:1830

Serialize the UInt8 to a number.

Warning: This operation is not provable.

Returns​

number


toString()​

toString(): string

Defined in: lib/provable/int.ts:1821

Serialize the UInt8 to a string, e.g. for printing.

Warning: This operation is not provable.

Returns​

string


toUInt32()​

toUInt32(): UInt32

Defined in: lib/provable/int.ts:1859

Turns a UInt8 into a UInt32.

Returns​

UInt32


toUInt64()​

toUInt64(): UInt64

Defined in: lib/provable/int.ts:1866

Turns a UInt8 into a UInt64.

Returns​

UInt64


check()​

static check(x: 
| Field
| {
value: Field;
}): void

Defined in: lib/provable/int.ts:1847

Provable.check for UInt8. Proves that the input is in the [0, 255] range.

Parameters​

x​

Field | { value: Field; }

Returns​

void

Overrides​

Struct({
value: Field,
}).check

from()​

static from(x: 
| number
| bigint
| Field
| UInt64
| UInt32
| UInt8): UInt8

Defined in: lib/provable/int.ts:1880

Creates a new UInt8.

Parameters​

x​

number | bigint | Field | UInt64 | UInt32 | UInt8

Returns​

UInt8


fromBits()​

static fromBits(bits: (boolean | Bool)[]): UInt8

Defined in: lib/provable/int.ts:1946

Convert a bit array into a UInt8 element using little endian binary representation

The method throws if the given bits do not fit in a single UInt8 element. In this case, no more than 8 bits are allowed.

Important: If the given bits array is an array of booleans or Bool elements that all are constant, the resulting UInt8 element will be a constant as well. Or else, if the given array is a mixture of constants and variables of Bool type, the resulting UInt8 will be a variable as well.

Parameters​

bits​

(boolean | Bool)[]

An array of Bool or boolean type.

Returns​

UInt8

A UInt8 element matching the little endian binary representation of the given bits array.


fromValue()​

static fromValue(x: 
| number
| UInt8
| {
value: string | number | bigint | Field;
}): UInt8

Defined in: lib/provable/int.ts:1891

Parameters​

x​

number | UInt8 | { value: string | number | bigint | Field; }

Returns​

UInt8

Overrides​

Struct({
value: Field,
}).fromValue

MAXINT()​

static MAXINT(): UInt8

Defined in: lib/provable/int.ts:1873

Creates a UInt8 with a value of 255.

Returns​

UInt8


sizeInFields()​

static sizeInFields(): number

Defined in: lib/provable/types/provable-intf.ts:66

Return the size of the T type in terms of Field type, as Field is the primitive type.

Returns​

number

A number representing the size of the T type in terms of Field type.

Inherited from​

Struct({
value: Field,
}).sizeInFields

toInput()​

static toInput(x: {
value: Field;
}): HashInput

Defined in: lib/provable/int.ts:1852

Parameters​

x​
value​

Field

Returns​

HashInput

Overrides​

Struct({
value: Field,
}).toInput