Skip to main content

Hash Functions

Poseidon Hash

POST /api/zk-toolkit/hash/poseidon
Request:
{
  "input": "hello world"
}
Response:
{
  "success": true,
  "data": {
    "hash": "0x1234567890abcdef..."
  }
}

Pedersen Hash

POST /api/zk-toolkit/hash/pedersen

MiMC Hash

POST /api/zk-toolkit/hash/mimc
Request (with optional key):
{
  "input": "data",
  "key": "optional_key"
}

Field Arithmetic

All operations use BN254 prime field.

Add

POST /api/zk-toolkit/field/add
Request:
{
  "a": "5",
  "b": "7"
}
Response:
{
  "success": true,
  "data": {
    "result": "12"
  }
}

Subtract

POST /api/zk-toolkit/field/sub

Multiply

POST /api/zk-toolkit/field/mul

Divide

POST /api/zk-toolkit/field/div

Inverse

POST /api/zk-toolkit/field/inv
Request:
{
  "a": "5"
}

Power

POST /api/zk-toolkit/field/pow
Request:
{
  "base": "2",
  "exp": "256"
}

Square Root

POST /api/zk-toolkit/field/sqrt

Random Element

GET /api/zk-toolkit/field/random

Get Prime

GET /api/zk-toolkit/field/prime

Elliptic Curve (Baby JubJub)

Base Point

GET /api/zk-toolkit/ec/base
Response:
{
  "success": true,
  "data": {
    "x": "5299619240641551281634865583518297030282874472190772894086521144482721001553",
    "y": "16950150798460657717958625567821834550301663161624707787222815936182638968203"
  }
}

Scalar Multiplication (Base Point)

POST /api/zk-toolkit/ec/mulbase
Request:
{
  "scalar": "12345"
}
Response:
{
  "success": true,
  "data": {
    "x": "123...",
    "y": "456..."
  }
}

Point Addition

POST /api/zk-toolkit/ec/add
Request:
{
  "p1": { "x": "...", "y": "..." },
  "p2": { "x": "...", "y": "..." }
}

Scalar Multiplication

POST /api/zk-toolkit/ec/mul
Request:
{
  "point": { "x": "...", "y": "..." },
  "scalar": "12345"
}

Check Point on Curve

POST /api/zk-toolkit/ec/isoncurve
Request:
{
  "x": "...",
  "y": "..."
}

Curve Parameters

GET /api/zk-toolkit/ec/params

Shamir Secret Sharing

Split Secret

POST /api/zk-toolkit/shamir/split
Request:
{
  "secret": "42",
  "threshold": 3,
  "shares": 5
}
Response:
{
  "success": true,
  "data": {
    "shares": [
      "1:1234567890",
      "2:2345678901",
      "3:3456789012",
      "4:4567890123",
      "5:5678901234"
    ],
    "threshold": 3,
    "total": 5
  }
}

Combine Shares

POST /api/zk-toolkit/shamir/combine
Request:
{
  "shares": [
    "1:1234567890",
    "2:2345678901",
    "3:3456789012"
  ]
}
Response:
{
  "success": true,
  "data": {
    "secret": "42"
  }
}

Groth16 Proofs

Generate Proof

POST /api/zk-toolkit/proof/generate
Request:
{
  "inputs": {
    "a": "5",
    "b": "7"
  }
}
Response:
{
  "success": true,
  "data": {
    "proof": {
      "pi_a": [...],
      "pi_b": [...],
      "pi_c": [...],
      "protocol": "groth16"
    },
    "publicSignals": ["12"]
  }
}

Verify Proof

POST /api/zk-toolkit/proof/verify
Request:
{
  "proof": { ... },
  "publicSignals": ["12"]
}

List Circuits

GET /api/zk-toolkit/proof/circuits

Error Codes

CodeDescription
INVALID_INPUTInvalid input format
FIELD_OVERFLOWValue exceeds field prime
NOT_ON_CURVEPoint not on Baby JubJub curve
PROOF_FAILEDProof generation/verification failed
INVALID_SHARESInvalid or insufficient shares