Skip to content

Implementation of the ZK-friendly Poseidon hash in TypeScript. The hash is prepared for the elliptic curve BLS12-381.

License

Notifications You must be signed in to change notification settings

jmagan/poseidon-bls12381

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Poseidon for BLS12-381

Implementation of the ZK-friendly Poseidon hash in TypeScript. The hash is prepared for the elliptic curve BLS12-381.

This implementation is based on the original Poseidon paper and the official Poseidon implementation. The updated paper recommends that the parameters are calculated with the script code/generate_params_poseidon.sage. The parameters are prepared for the curve BLS12-381 and a security level of 128 bits using the recommended script.

✏️ Use

Add to your javascript project through npm

$ npm install poseidon-bls12381

Poseidon hash is designed for ZK circuits and its parameters are a group of field elements of its elliptic curve. That's why, you'll need to know beforehand how many parameters you want to use in your hash function.

This repository provides function from 1 to 16 parameters. This is an example of call with 2 parameters:

import { poseidon2 } from "poseidon-bls12381";

const hash = poseidon2([BigInt("0x01"), BigInt("0x02")]);

🛠️ Build

This project provides the scripts for building and testing:

# Build

$ npm install
$ npm run build

# Test

$ npm run test

📃 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Implementation of the ZK-friendly Poseidon hash in TypeScript. The hash is prepared for the elliptic curve BLS12-381.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published