UNPKG

o1js

Version:

TypeScript framework for zk-SNARKs and zkApps

37 lines (33 loc) 1.38 kB
/** * This file contains some examples of finite fields, to be used for tests */ import { Fp, Fq, createField } from './finite-field.js'; export { exampleFields }; // some primes let pSmall = 101n; let pBabybear = (1n << 31n) - 1n; let pGoldilocks = (1n << 64n) - (1n << 32n) + 1n; let p25519 = (1n << 255n) - 19n; let pSecp256k1 = (1n << 256n) - (1n << 32n) - 0b1111010001n; let pSecq256k1 = (1n << 256n) - 0x14551231950b75fc4402da1732fc9bebfn; let pBls12_377 = 0x01ae3a4617c510eac63b05c06ca1493b1a22d9f300f5138f1ef3622fba094800170b5d44300000008508c00000000001n; let qBls12_377 = 0x12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001n; let pBls12_381 = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn; let qBls12_381 = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001n; let exampleFields = { Fp, Fq, small: createField(pSmall), babybear: createField(pBabybear), goldilocks: createField(pGoldilocks), f25519: createField(p25519), secp256k1: createField(pSecp256k1), secq256k1: createField(pSecq256k1), secp256r1: createField(0xffffffff00000001000000000000000000000000ffffffffffffffffffffffffn), bls12_377_base: createField(pBls12_377), bls12_377_scalar: createField(qBls12_377), bls12_381_base: createField(pBls12_381), bls12_381_scalar: createField(qBls12_381), };