npm install

Random you can prove.
Verification anyone can run.

npm MIT Node 18+ CI

VRF evaluation pipeline

One input α → proof π → verified output β

prove (holder of SK) verify (anyone with PK)

What is a Verifiable Random Function?

🔑

Unique & pseudorandom

📄

Compact proof π

Public verify

Who holds what?

RFC 9381 vs this port

Where VRFs are used

Leader election (simplified)

Round αslot / block hash
prove(SK, α)each candidate
Proof π
verify(PK)network
Lowest β winspublic random

DNSSEC & naming

Randomness beacons

Lotteries & games

This library

RSA-FDH

RSA-PSS-NOSALT

EC P-256 (browser)

Quick start

npm install libvrf
import { VRF, VRFType } from 'libvrf';

const sk = VRF.create(VRFType.RSA_FDH_VRF_RSA2048_SHA256)!;
const pk = sk.getPublicKey()!;
const alpha = new TextEncoder().encode('hello');

const proof = sk.getVRFProof(alpha)!;
const [ok, beta] = pk.verifyVRFProof(alpha, proof);
console.log(ok, Buffer.from(beta).toString('hex'));