UNPKG

@sybil-center/zkc-o1js

Version:

Work with sybil-center ZKC & MINA protocol

104 lines 6.73 kB
import { Field, Poseidon, PublicKey, Signature } from "o1js"; import { Preparator, TransformationGraph } from "@sybil-center/zkc-core"; const graph = new TransformationGraph(); const numTypes = [ "uint16", "uint32", "uint64", "uint128", "uint256", "uint" ]; const extendNodes = [ { name: "mina:field", isType: (value) => value instanceof Field }, { name: "mina:fields", spread: true, isType: (value) => { return Array.isArray(value) && value.filter((i) => !(i instanceof Field)).length === 0; } }, { name: "mina:publickey", isType: (value) => value instanceof PublicKey }, { name: "mina:signature", isType: (value) => value instanceof Signature } ]; function numsToField() { return numTypes.reduce((prev, name) => { prev.push({ name: `mina:${name}-field`, inputType: `${name}`, outputType: "mina:field", transform: (value) => new Field(value) }); return prev; }, []); } function numsModMinaOrder() { return numTypes.reduce((prev, name) => { prev.push({ name: `mina:${name}-field.order`, inputType: `${name}`, outputType: `${name}`, transform: (value) => { const num = typeof value === "number" ? BigInt(value) : value; return num % Field.ORDER; } }); return prev; }, []); } const extendLinks = [ { name: "mina:base58-publickey", inputType: "base58", outputType: "mina:publickey", transform: (value) => PublicKey.fromBase58(value) }, { name: "mina:publickey-fields", inputType: "mina:publickey", outputType: "mina:fields", transform: (pk) => pk.toFields() }, { name: "mina:base58-signature", inputType: "base58", outputType: "mina:signature", transform: (value) => Signature.fromBase58(value) }, { name: "mina:signature-fields", inputType: "mina:signature", outputType: "mina:fields", transform: (value) => value.toFields() }, { name: "mina:hash-poseidon", inputType: "mina:field", outputType: "mina:field", transform: (value) => Poseidon.hash([value]) }, { name: "mina:hex-field", inputType: "hex", outputType: "mina:field", transform: (value) => { const num = graph.transform(value, ["hex-bytes", "bytes-uint"]); return Field(num); } }, ...numsToField(), ...numsModMinaOrder(), ]; const o1jsPreparator = new Preparator(); o1jsPreparator.extendGraph(extendNodes, extendLinks); export { o1jsPreparator }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbInByZXBhcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQWtDLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpHLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztBQUV4QyxNQUFNLFFBQVEsR0FBRztJQUNmLFFBQVE7SUFDUixRQUFRO0lBQ1IsUUFBUTtJQUNSLFNBQVM7SUFDVCxTQUFTO0lBQ1QsTUFBTTtDQUNQLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBZ0I7SUFDL0I7UUFDRSxJQUFJLEVBQUUsWUFBWTtRQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxLQUFLO0tBQy9DO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUN6RixDQUFDO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksU0FBUztLQUNuRDtJQUNEO1FBQ0UsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixNQUFNLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxTQUFTO0tB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