Resume
Experience
Senior Software Engineer · Repyh Labs · 2025 – now
Protocol engineer on the delta network (Rust).
- Documented the SDK and base libraries for early app developers.
- Modularized domain tasks; fixed transaction-application logic; typed abstractions.
- Added NFT support; designed and built the archive node.
- Built the integration-testing API and its test suite.
Software Engineer · O(1) Labs · 2022 – 2024
Crypto & protocol engineer on the Mina Protocol.
- Codebase-wide cleanup, refactoring and higher test coverage (OCaml, Nix).
- o1vm / Optimism: low-level communication with the fault-proof op-program (Rust, Go).
- Berkeley hard fork: pre/post-fork test harness.
- Prototyped account deletion (core zkApps feature); chunking.
Software Engineer · Nomadic Labs · 2021 – 2022
- Led the consensus team (from July 2021).
- Implemented the Tenderbake consensus for the Ithaca protocol upgrade; maintenance.
- Test maintenance and migration Python → Tezt for the new consensus.
- Merge Team (core reviewers) member.
Senior Software Engineer · Tweag I/O · 2019 – 2021
Project lead & consultant.
- Tezos clients (mockup/proxy client, Sapling client).
- Gerrit plugins (enforce owner approval, CI-related UI extensions).
- Built the internship program (setup, outreach, selection).
Researcher · CEA / LSL · 2008 – 2019
- Development of (formal) program analyses on source and binary code, for safer and more secure software engineering.
- Lead developer and team co-lead of the open-source binary-analysis and symbolic-execution platform BINSEC.
- Co-advisor and day-to-day supervisor of two PhD students, plus MSc interns (see Students).
- Lectures on software attacks & vulnerabilities (ENSTA).
Visiting Professor · UFRN / DIMAp (Natal, Brazil) · 2013 – 2015
Post-doc · LORIA / Paréo · 2007 – 2008
Generation of construction functions respecting algebraic invariants for OCaml.
ATER · Université Paris 6 Pierre & Marie Curie · 2006 – 2007
Teaching assistant.
Education
PhD. in Computer Science · Université Paris 6 Pierre & Marie Curie · 2003 – 2006
Thesis: Tableaux et déduction modulo (Tableaux and Deduction Modulo), defended 17 October 2006. Automated theorem proving, rewriting, proof theory.
MSc. in Computer Science (DEA): Programming, Semantics, Proofs & Languages · Université Paris 7 Denis Diderot · 2002 – 2003
MSc. in Computer Science & Applied Mathematics (Engineering degree) · ENSEEIHT (Toulouse) · 1999 – 2002
Tools
BINSEC · OCaml
Formal methods platform for security-oriented binary code analysis (symbolic execution, fuzzing, code deobfuscation, …).
Frama-C · OCaml
C/C++ software analyzers — plugins metrics and mthread (initial version).
SMTpp · OCaml
Preprocessing platform for SMT-LIB, the problem repository for SMT solvers.
PathCrawler online · Java, JavaScript
Web application for users to play with the PathCrawler test generation tool.
Moca · OCaml
Construction functions generator for datatypes with (algebraic) invariants.
Students
Frédéric Recoules (PhD, co-advisor) · 2016 – 2021
Automatic verification of low-level code: C, assembly & binary code.
Manh-Dung Nguyen (PhD, co-advisor) · 2016 – 2020
Advanced fuzzing techniques for vulnerability discoveries at scale.
Vítor Alcantâra de Almeida (MSc) · 2013 – 2015
WPTrans: assistant for program verification in Frama-C.
Cauim de Souza Lima (MSc) · 2019 (Mar–Apr)
Combining formal and learning approaches for binary-level security analysis.
Yaëlle Vinçont (MSc) · 2017 (Apr–Sep)
Combining fuzzing and symbolic execution for vulnerability detection.
Guillaume Girol (MSc) · 2017 (Apr–Sep)
Sharpening symbolic methods for vulnerability detection.
Publications
23 publications (22 peer-reviewed), in reverse chronological order (also on the publications page).
2024
- A Generic Deskolemization Strategy
J. Rosain, R. Bonichon, J. Cailler, O. Hermant
LPAR 2024, EPiC Series in Computing 100, p. 246–263 · doi
2021
- Program Protection Through Software-Based Hardware Abstraction
T. McDonald, R. Manikyam, S. Bardin, R. Bonichon, T. R. Andel
SECRYPT 2021 · pdf - Search-based Approaches for Local Blackbox Deobfuscation: Understand, Improve and Mitigate
G. Menguy, S. Bardin, R. Bonichon, C. de Souza Lima
CCS 2021 · pdf - Interface Compliance of Inline Assembly: Automatically Check, Patch and Refine
F. Recoules, S. Bardin, R. Bonichon, M. Lemerre, L. Mounier, M.-L. Potet
ICSE 2021 — Distinguished Paper Award · pdf
2020
2019
- How to Kill Symbolic Deobfuscation for Free (or: Unleashing the Potential of Path-Oriented Protections)
M. Ollivier, S. Bardin, R. Bonichon, J.-Y. Marion
ACSAC 2019 · pdf - Obfuscation: Where Are We in Anti-DSE Protections? (a first attempt)
M. Ollivier, S. Bardin, R. Bonichon, J.-Y. Marion
SSPREW 2019 · pdf - Get rid of inline assembly through verification-oriented lifting
F. Recoules, S. Bardin, R. Bonichon, L. Mounier, M.-L. Potet
ASE 2019 · pdf - De l'assembleur sur la ligne ? Appelez TInA !
F. Recoules, S. Bardin, R. Bonichon, L. Mounier, M.-L. Potet
JFLA 2019 · pdf - En finir avec les faux positifs grâce à l’exécution symbolique robuste
B. Farinier, S. Bardin, R. Bonichon, M.-L. Potet
JFLA 2019 · pdf
2018
- Model Generation for Quantified Formulas: A Taint-Based Approach
B. Farinier, S. Bardin, R. Bonichon, M.-L. Potet
CAV 2018 · pdf
2015
2014
- LLVM-Based Code Generation for B
R. Bonichon, D. Déharbe, T. Lecomte, V. Medeiros Jr
SBMF 2014 - Extending SMT-LIB v2 with \(\lambda\)-Terms and Polymorphism
R. Bonichon, D. Déharbe, C. Tavares
SMT Workshop 2014 · pdf
2011
- A Mergeable Interval Map
R. Bonichon, P. Cuoq
Stud. Inform. Univ. 9(1), p. 5–37 · pdf - Rigorous Evidence of Freedom from Concurrency Faults in Industrial Control Software
R. Bonichon, G. Canet, L. Correnson, E. Goubault, E. Haucourt, M. Hirschowitz, S. Labbé, S. Mimram
SAFECOMP 2011, p. 85–98 · pdf · doi
2007
- Zenon: An Extensible Automated Theorem Prover Producing Checkable Proofs
R. Bonichon, D. Delahaye, D. Doligez
LPAR 2007 · pdf
2006
Skills
- Automated theorem proving, SMT solving
- Symbolic execution & binary analysis, software verification
- BFT consensus, blockchain protocols, ZK proof systems
- Functional programming (OCaml, Rust)
- LLM-assisted development
Languages
- French (native)
- English (fluent, TOEIC 966)
- Portuguese (fluent, spoken at home)
- German (fluent)
Technologies
- OCaml
- Rust, Lisp, Python, C, Java, JavaScript
- Emacs, git, nix, Makefile, Docker, LaTeX
- Linux, OpenBSD
Misc
- Guitar (classical, acoustic)
- Distance running (marathon)
- Cycling