kevincharm's webpage
مرحبا! Welcome to my corner of teh interwebs. I write smart contracts and adjacent cryptography so that one day we can verify everything in our lives trustlessly through code instead of institutions.
I began programming with C in 1998, so I've been doing this for 27 years! Currently, I mainly spend my time contributing to Scroll.
You can reach me on Twitter at @kevincharm or email me at kevin@kevincharm.com. Visit my GitHub if you're looking for code. I also sometimes write stuff in my grimoire.
My stuff
- Anyrand - Verifiable randomness on any EVM, powered by drand
- broth16 - Groth16 using BLS12-381 pairings in TypeScript
- kate - KZG vector commitments in TypeScript
- blstoise - Toy BLS on BLS12-381 implementation in TypeScript
- sharmander256 - SHA-256 implementation in TypeScript
- bls-bn254 - Verify BLS on the BN254 curve, RFC9380 compliant (Solidity & TypeScript library)
- sol-rfc9380 - BN254 map-to-point functions from RFC9380 (SVDW, SSWU) in Solidity
- solshuffle - Gas-efficient stateless shuffle on EVM (Solidity/Yul library)
- gfc-fpe - Generalised Feistel cipher for stateless shuffling (TypeScript library)
- sparse-merkle-tree - Sparse Merkle Tree implementation (Solidity & TypeScript library)
- smt_fe - Sparse Merkle Tree implementation in Fe
- RNGesus - EVM verifier for drand BLS12-381 beacons (based on 0xPARC's circom-pairing circuits)
- Terrestrial Instigator - bare metal x86_64 space shooter game
- argir - x86_64 hobby kernel
External contributions
Including paid and unpaid
- LottoPGF - Continuous capital formation for public goods through verifiable randomness
- Devcon Auction & Raffle - Raffle optimisation, implement VRF & Passport attestation
- drand - BLS-on-BN254 scheme for random beacons
- kyber - BN254 curve support
- Chainlink - Sequencer uptime feed for Arbitrum chains; Bitcoin indexer
- Uniswap Anchored View - Upgrade Compound's UAV to Uniswap V3

Talks
- All raffles are scams: How to raffle the Ethereum way - EthCC[6] (Paris, 2023)