Second hire at Movement Labs. Designed and led the M2 rollup (including a zero-knowledge fraud-proof path verified on the Risc0 VM), took AptosBFT consensus from unit tests to live mainnet validators, and built the USDCx bridge, while managing three engineering teams.
I joined Movement Labs as its second hire, which meant the M2 rollup didn't have an existing architecture to extend: it had a blank page. I designed and architected the rollup's settlement, verification, and fraud-prevention model, which supports several different flavours of finality depending on the guarantee a given path needs. We went from that blank page to a live testnet in 3 months.
The one I built out in most depth is ZKFP (zero-knowledge fraud proofs): when a state transition on the rollup is disputed, we generate a proof of the Aptos Move execution that produced it, and verify that proof using the Risc0 zkVM rather than trusting the sequencer's claim or forcing a full replay. That keeps the fraud-proof window meaningful without requiring every node to re-execute every transaction.
In parallel, I implemented, tested, and rolled out AptosBFT consensus in production, a Byzantine fault-tolerant protocol where a validator set has to agree on the same ordering of transactions even if some validators are faulty or offline. That's not a system you get right by staring at a spec: it involved rehearsing validator ceremonies (the coordinated process of bringing a new validator set online) and debugging live consensus problems in production, the same code path carried from its first unit test through to real validator operators running it on mainnet infrastructure.
Testnet peaked at 3 million transactions a day before we launched mainnet. After launch, I built and implemented the USDCx bridge (the asset bridge moving USDC between layers) and moved into managing the team.
I used Golang extensively to drive our testing effort: internal tools for replaying client transactions and running soak and load tests, catching the failure modes that only show up under sustained, realistic traffic rather than a quick smoke test.
Day to day, I managed three teams (Engineers, Infrastructure, and Research), running monthly 1:1s, performance reviews, coaching for mid-level and junior engineers, and hiring.
Chains don't win integrations on a whitepaper. They win them on proof they can hold real throughput. 3 million transactions a day works out to roughly 35 transactions a second sustained, before accounting for the bursts that actually define a peak day; that's the number every partner conversation came back to, because it's the difference between "we think this will scale" and a load test they can point to. Hitting it on testnet, ahead of mainnet, is what turned architecture decisions into a chain other teams were willing to build on.