UNPKG

@mysten/sui

Version:

Sui TypeScript API(Work in Progress)

64 lines (63 loc) 2.35 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var poseidon_exports = {}; __export(poseidon_exports, { BN254_FIELD_SIZE: () => BN254_FIELD_SIZE, poseidonHash: () => poseidonHash }); module.exports = __toCommonJS(poseidon_exports); var import_poseidon_lite = require("poseidon-lite"); const poseidonNumToHashFN = [ import_poseidon_lite.poseidon1, import_poseidon_lite.poseidon2, import_poseidon_lite.poseidon3, import_poseidon_lite.poseidon4, import_poseidon_lite.poseidon5, import_poseidon_lite.poseidon6, import_poseidon_lite.poseidon7, import_poseidon_lite.poseidon8, import_poseidon_lite.poseidon9, import_poseidon_lite.poseidon10, import_poseidon_lite.poseidon11, import_poseidon_lite.poseidon12, import_poseidon_lite.poseidon13, import_poseidon_lite.poseidon14, import_poseidon_lite.poseidon15, import_poseidon_lite.poseidon16 ]; const BN254_FIELD_SIZE = 21888242871839275222246405745257275088548364400416034343698204186575808495617n; function poseidonHash(inputs) { inputs.forEach((x) => { const b = BigInt(x); if (b < 0 || b >= BN254_FIELD_SIZE) { throw new Error(`Element ${b} not in the BN254 field`); } }); const hashFN = poseidonNumToHashFN[inputs.length - 1]; if (hashFN) { return hashFN(inputs); } else if (inputs.length <= 32) { const hash1 = poseidonHash(inputs.slice(0, 16)); const hash2 = poseidonHash(inputs.slice(16)); return poseidonHash([hash1, hash2]); } else { throw new Error(`Yet to implement: Unable to hash a vector of length ${inputs.length}`); } } //# sourceMappingURL=poseidon.js.map