garaga
v1.0.1
Published
State-of-the-art Elliptic Curve operations and SNARKS verification for Cairo & Starknet 🐺
Maintainers
Readme
Garaga 🐺
State-of-the-art Elliptic Curve operations and SNARKS verification for Cairo & Starknet in TypeScript/JavaScript.
Quick Start
npm install garagayarn add garagaRequirements: Node.js >= 18.0.0
What is Garaga?
Garaga provides optimized cryptographic primitives for TypeScript/JavaScript:
- Elliptic Curve Operations - High-performance curve arithmetic
- SNARK Verification - Groth16, Noir Honk proof systems
- Pairing-Based Cryptography - BN254, BLS12-381 curves
- Starknet Integration - Generate calldata for Cairo contracts
Basic Usage
import { init, msmCalldataBuilder, getGroth16CallData, CurveId } from 'garaga';
// Initialize WASM module
await init();
// Multi-scalar multiplication
const calldata = msmCalldataBuilder(points, scalars, CurveId.BN254);
// Groth16 proof verification calldata
const groth16Calldata = getGroth16CallData(proof, verifyingKey, CurveId.BN254);Key Features
✅ TypeScript Support - Full type definitions included ✅ WASM Performance - Rust-powered cryptographic operations ✅ Multiple Curves - BN254, BLS12-381 support ✅ Proof Systems - Groth16, Noir Honk verification ✅ Starknet Ready - Generate calldata for Cairo contracts ✅ Drand Integration - Verifiable randomness support
Available Functions
📋 For complete API documentation with examples, see: API Reference
msmCalldataBuilder()- Multi-scalar multiplication calldata generationmpcCalldataBuilder()- Multi-pairing check calldata generationschnorrCalldataBuilder()- Schnorr signature verification calldataecdsaCalldataBuilder()- ECDSA signature verification calldataeddsaCalldataBuilder()- EdDSA signature verification calldatatoWeirstrass()- Convert from Twisted Edwards to Weierstrass coordinatestoTwistedEdwards()- Convert from Weierstrass to Twisted Edwards coordinatesgetGroth16CallData()- Generate Groth16 proof verification calldatagetZKHonkCallData()- Generate Noir ZK Honk proof verification calldatafetchAndGetDrandCallData()- Fetch Drand randomness and generate calldataposeidonHashBN254()- Compute Poseidon hash on BN254 curve- and more... See the api reference (link above) for more details.
Building from Source
For development or custom builds:
git clone https://github.com/keep-starknet-strange/garaga.git
cd tools/npm/garaga_ts
npm ci && npm run buildDocker build (recommended):
docker compose up --build
npm install ./garaga-<version>.tgzDocumentation & Links
- 📖 Documentation: garaga.gitbook.io
- 🔧 GitHub: github.com/keep-starknet-strange/garaga
- 📦 NPM: npmjs.com/package/garaga
- 🐛 Issues: Report bugs
Requirements
- Node.js >= 18.0.0
- For building: Rust + wasm-pack
License
MIT License - see LICENSE
