# Scalar

Represents a Scalar.

## Implements​

• ShiftedScalar

## Properties​

### high254​

high254: Field;

#### Implementation of​

ShiftedScalar.high254

#### Source​

lib/provable/scalar.ts:31

### lowBit​

lowBit: Bool;

We represent a scalar s in shifted form t = s - 2^255 mod q, split into its low bit (t & 1) and high 254 bits (t >> 1). The reason is that we can efficiently compute the scalar multiplication (t + 2^255) * P = s * P.

#### Implementation of​

ShiftedScalar.lowBit

#### Source​

lib/provable/scalar.ts:30

### ORDER​

static ORDER: bigint = Fq.modulus;

#### Source​

lib/provable/scalar.ts:33

## Methods​

add(y: Scalar): Scalar

Warning: This method is not available for provable code.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:135

### div()​

div(y: Scalar): Scalar

Divide scalar field elements. Throws if the denominator is zero.

Warning: This method is not available for provable code.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:172

### isConstant()​

isConstant(): boolean

Check whether this Scalar is a hard-coded constant in the constraint system. If a Scalar is constructed outside provable code, it is a constant.

#### Returns​

boolean

#### Source​

lib/provable/scalar.ts:67

### mul()​

mul(y: Scalar): Scalar

Multiply scalar field elements.

Warning: This method is not available for provable code.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:159

### neg()​

neg(): Scalar

Negate a scalar field element.

Warning: This method is not available for provable code.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:124

### sub()​

sub(y: Scalar): Scalar

Subtract scalar field elements.

Warning: This method is not available for provable code.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:147

### toBigInt()​

toBigInt(): bigint

Convert this Scalar into a bigint

#### Returns​

bigint

#### Source​

lib/provable/scalar.ts:87

### toConstant()​

toConstant(): Scalar

Convert this Scalar into a constant if it isn't already.

If the scalar is a variable, this only works inside asProver or witness blocks.

See FieldVar for an explanation of constants vs. variables.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:79

### toFields()​

toFields(): Field[]

Serialize this Scalar to Field elements.

Warning: This function is for internal usage. It returns 255 field elements which represent the Scalar in a shifted, bitwise format. The fields are not constrained to be boolean.

Check out Scalar.toFieldsCompressed for a user-friendly serialization that can be used outside proofs.

#### Source​

lib/provable/scalar.ts:225

### toFieldsCompressed()​

toFieldsCompressed(): {  "field": Field;  "highBit": Bool;}

Serialize a Scalar into a Field element plus one bit, where the bit is represented as a Bool.

Warning: This method is not available for provable code.

Note: Since the Scalar field is slightly larger than the base Field, an additional high bit is needed to represent all Scalars. However, for a random Scalar, the high bit will be false with overwhelming probability.

#### Returns​

{  "field": Field;  "highBit": Bool;}
##### field​
field: Field;
##### highBit​
highBit: Bool;

#### Source​

lib/provable/scalar.ts:188

### toJSON()​

toJSON(): string

Serializes this Scalar to a string

#### Returns​

string

#### Source​

lib/provable/scalar.ts:309

### check()​

static check(s: Scalar): void

Part of the Provable interface.

#### Returns​

void

#### Source​

lib/provable/scalar.ts:279

### empty()​

static empty(): Scalar

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:321

### from()​

static from(s: string | number | bigint | Scalar): Scalar

Create a constant Scalar from a bigint, number, string or Scalar.

If the input is too large, it is reduced modulo the scalar field size.

#### Parameters​

s: string | number | bigint | Scalar

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:45

### fromBits()​

static fromBits(bits: Bool[]): Scalar

Creates a Scalar from an array of Bool. This method is provable.

#### Parameters​

bits: Bool[]

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:97

### fromField()​

static fromField(s: Field): Scalar

Provable method to convert a Field into a Scalar.

This is always possible and unambiguous, since the scalar field is larger than the base field.

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:58

### fromFields()​

static fromFields(fields: Field[]): Scalar

Part of the Provable interface.

Creates a data structure from an array of serialized Field elements.

#### Parameters​

fields: Field[]

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:257

### fromJSON()​

static fromJSON(x: string): Scalar

Deserialize a JSON structure into a Scalar. This operation does not affect the circuit and can't be used to prove anything about the string representation of the Scalar.

#### Parameters​

x: string

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:317

### fromValue()​

static fromValue(x: bigint): Scalar

#### Parameters​

x: bigint

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:291

### random()​

static random(): Scalar

Returns a random Scalar. Randomness can not be proven inside a circuit!

#### Returns​

Scalar

#### Source​

lib/provable/scalar.ts:113

### sizeInFields()​

static sizeInFields(): number

Part of the Provable interface.

Returns the size of this type in Field elements.

#### Returns​

number

#### Source​

lib/provable/scalar.ts:272

### toAuxiliary()​

static toAuxiliary(): never[]

Part of the Provable interface.

Serialize a Scalar into its auxiliary data, which are empty.

#### Returns​

never[]

#### Source​

lib/provable/scalar.ts:248

### toFields()​

static toFields(x: Scalar): Field[]

Part of the Provable interface.

Serialize a Scalar into an array of Field elements.

Warning: This function is for internal usage. It returns 255 field elements which represent the Scalar in a shifted, bitwise format. The fields are not constrained to be boolean.

#### Source​

lib/provable/scalar.ts:211

### toInput()​

static toInput(x: Scalar): HashInput

Warning: This function is mainly for internal use. Normally it is not intended to be used by a zkApp developer.

This function is the implementation of ProvableExtended.toInput() for the Scalar type.

#### Returns​

HashInput

An object where the fields key is a Field array of length 1 created from this Field.

#### Source​

lib/provable/scalar.ts:239

### toJSON()​

static toJSON(x: Scalar): string

Serialize a Scalar to a JSON string. This operation does not affect the circuit and can't be used to prove anything about the string representation of the Scalar.

#### Returns​

string

#### Source​

lib/provable/scalar.ts:301

### toValue()​

static toValue(x: Scalar): bigint

#### Returns​

bigint

#### Source​

lib/provable/scalar.ts:287