@umbra-privacy/rn-quick-poseidon
v0.0.1
Published
Poseidon hash for React Native
Readme
@umbra-privacy/rn-quick-poseidon
Circom-compatible Poseidon hash and symmetric encryption over the BN254 scalar field for React Native, powered by Nitro Modules.
Status
Experimental — this library is under active development and has not been audited. Use at your own risk. APIs may change without notice.
Features
- Poseidon hash (1–12 inputs), Merkle-optimized
hash2 - PRF (pseudo-random function)
- Counter-mode keystream generation
- Symmetric encrypt / decrypt (Poseidon CTR)
- Two-round aggregation (up to 144 inputs)
- H2 UTXO commitment, keystream commitment
- Bit-exact with circomlibjs v0.1.7
All field arithmetic runs natively in C++ (BN254 Fr, Montgomery form) — no JS BigInt overhead.
Installation
npm install @umbra-privacy/rn-quick-poseidonRequires react-native-nitro-modules as a peer dependency.
Usage
import { poseidon, FR_BYTES } from '@umbra-privacy/rn-quick-poseidon'
// Hash two 32-byte field elements (little-endian)
const digest = poseidon.hash2(leftBytes, rightBytes)
// Encrypt field elements with a key
const ciphertext = await poseidon.encrypt(plaintextBytes, keyBytes)
// Decrypt
const plaintext = await poseidon.decrypt(ciphertext, keyBytes)Field elements are encoded as 32-byte little-endian number[] arrays.
Structure
cpp/— Self-contained C++ Poseidon library (no external deps)src/specs/— Nitro HybridObject spec (Poseidon.nitro.ts)nitrogen/— Generated Nitrogen bindingsandroid/— Android build configios/— iOS build config
License
MIT — see LICENSE.
This software is experimental and has not been audited. It is provided as-is, without warranty of any kind. Use in production is permitted, but you do so entirely at your own risk. The authors assume no liability for any damages arising from its use.
