@sybil-center/zkc-o1js
Version:
Work with sybil-center ZKC & MINA protocol
104 lines • 6.73 kB
JavaScript
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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