1.0.6 • Published 3 years ago

@sismo-core/pythia-1 v1.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Installation

$ yarn add @sismo-core/pythia-1

Prover js (Pythia1Prover)

const prover = new Pythia1Prover(
    // + Optional override of the circuit path for ES module (see below for more information)
    {
        wasmPath: "https://[Your server].pythia-1.wasm",
        zkeyPath: "https://[Your server].pythia-1.zkey"
    }
); 

To generate the proof, we need to provide a .wasm and a .zkey to the witness calculator. For CommonJS modules we add theses files directly in the package and we resolve the path. For ES module we can't do that, that's why we choose to host files on an S3.

If this solution doesn't suite you or if you want to optimize the download time, you can override S3 paths by adding a third params in the Pythia1Prover constructor and host files wherever you want.

ES modules (which can be overridden)

export const wasmPath = "https://static.sismo.io/pythia-1-zkps/v1/pythia-1.wasm";
export const zkeyPath = "https://static.sismo.io/pythia-1-zkps/v1/pythia-1.zkey";

CommonJS

export const wasmPath = require.resolve('./pythia-1.wasm');
export const zkeyPath = require.resolve('./pythia-1.zkey');

Generate Snark Proof

const params = {
    secret,
    destinationIdentifier,
    chainId,
    commitmentReceipt,
    commitmentSignerPubKey,
    groupId,
    ticketIdentifier,
    value,
    claimedValue,
    isStrict
}

const snarkProof = await prover.generateSnarkProof(params);

// Generate inputs
// This function is automatically called by generateSnarkProof but you can call it in your tests
const { privateInputs, publicInputs } = await prover.generateInputs(params);

// Throw human readable errors
// This function is automatically called by generateSnarkProof but you can call it in your tests
try {
    await prover.userParamsValidation(params);
} catch (e) {
    console.log(e);
}
ParamsTypeDescription
secretBigNumberishSecret used to generate the commitment send to the commitment signer
destinationIdentifierBigNumberishDestination account
chainIdBigNumberishChain id
commitmentReceiptBigNumberish, BigNumberish, BigNumberishReceipt of the commitment signer
commitmentSignerPubKeyBigNumberish, BigNumberishPublic key of the commitment signer
groupIdBigNumberishGroupId send by the commitment signer
ticketIdentifierBigNumberishInternal nullifier
valueBigNumberishValue send by the commitment signer
claimedValueBigNumberishValue selected by the user
isStrictBigNumberishDefine if the value is strict or not

License

Distributed under the MIT License.

Contribute

Please, feel free to open issues, PRs or simply provide feedback!

Contact

Prefer Discord or Twitter

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago