🔑
VRF evaluation pipeline
One input α → proof π → verified output β
prove (holder of SK)
verify (anyone with PK)
Concept
What is a Verifiable Random Function?
📄
Compact proof π
✓
Public verify
Who holds what?
RFC 9381 vs this port
Use cases
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
libvrf
This library
RSA-FDH
RSA-PSS-NOSALT
EC P-256 (browser)
Developers
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'));