Founder of @ZealynxSecurity. 10 years QA → 4+ years Smart Contract Security. Building an audit firm in public. Building https://xitter.cf/t.co/OfrgnFHscJ for Web3 builders

Book an Audit →
Joined June 2022
I stopped asking AI to find bugs. I've built an AI workflow that runs semi-automatically and consistently finds Critical issues. I used this system alone in the @immunefi audit competition for @QuantusNetwork. It found a Critical issue nobody else did, and I finished 2nd out of 98 researchers. Then, with two days left in the @Firelightfi Audit Competition, I ran it and found a paid High. Same for the ENS Audit Comp. I launched it in the last two days and found me a Critical. Honestly, I’m very proud of this AI workflow I've built. And I'm still improving it to work for Bug Bounties even more autonomously. I already knew the system worked because it constantly finds issues in private client repos. But seeing it work in a public contest, with everyone looking at the same code, is different. And yes, I genuinely need to start doing bug bounties. I wrote an article explaining exactly how I did it, which models I used, what worked, and also what failed. Btw, screenshot with proof below.
The @QuantusNetwork Audit Competition is a wrap! 🏆 Top Winners: 🥇 @therealbytes - $3,286 🥈 @ZealynxSecurity - $2,366 🥉 @Valistheaeth - $2,145 🏅@hnaito_eth - $1,449 🏅@maakayjunior - $1,324 Congrats to all participants & winners! 🎖
20
15
90
10,400
Nobody will back an AI agent's loan twice if they can't get their money back. Last week I reviewed a draft standard where a staker, a vault or an insurer can stand behind an agent's credit line and take the loss if the agent doesn't pay. In the first version, a backer that covered a default had no way to recover anything onchain, and one short payment locked it out of that lender for good. If you're building credit for agents, decide who gets paid back first before your first default decides it for you. I'd put the backer first and the lender's fee last.
134
I keep running into agent payment projects lately, and they mostly get the payment flow right and the trust wrong. The one that stuck with me was an x402 facilitator live on Celo. The operator, not the merchant, set where a vault's first payments go. You only see that in the vault code, not in the docs. The dev took the feedback really well and is fixing it. A swap API for agents and an x402 test suite had the same kind of gap, and both fixed it within days.
1
2
4
263
Bloqarl | Zealynx retweeted
A week inside Zealynx Insiders. Membership value should be visible in the work, not hidden behind landing-page promises. Here is what happened from 19 to 25 September.
1
2
2
704
Bloqarl | Zealynx retweeted
A fee formula in Uniswap V3 that forks keep getting wrong. You hold the NET input and need the fee that corresponds to it, so you gross it back up: mulDivRoundingUp(amountIn, feePips, 1e6 - feePips) Not 1e6. Minus feePips. Get that denominator wrong and you charge a fee on a fee.
1
2
4
363
Bloqarl | Zealynx retweeted
I run a grants programme that gives away smart contract audits. Last season, eight protocols applied. Eight got funded. There were no rejections — not one. Here is why that happened, and why Season 2 is open until October 4. — Why the programme exists Almost every early-stage founder I talk to makes the same trade. A serious audit costs more than the runway allows. So they ship unaudited and hope, or they don't ship at all. I've watched good protocols take that bet. I've watched some of them lose it. That trade is the thing I'm trying to break. Not with a discount code — with real money against real engagements. — What actually happened in Season 1 Eight protocols applied, across six chains and four continents, with zero paid distribution. Not one was VC-funded. That's the number I'm proudest of. We published the Builder tier at 25%. Then I read the applications: frozen commit hashes, honest line counts, real invariant suites. One team's mutation testing proved their own tests could fail. That isn't a pitch deck, that's engineering. So we upgraded every Builder Grant to 50%. One time, in return for the trust those teams placed in a first-season programme. Every applicant got an individual decision with the reasons. No form letters. — The part founders get wrong We score the scaffolding, not the flaws. Your bugs are not held against you. Your bugs are the reason the grant exists. A rich bug surface on solid foundations is the ideal applicant, not a disqualification. If you've been putting this off because you think your code isn't ready — that's exactly backwards. Wait until it's clean and you'll be applying for an audit you no longer need. — Season 2 One protocol gets its audit 100% covered. Two get 50%. Builder grants cover 25% for the rest of the round. Over $100,000, subsidised against our standard rate of $6,000 per auditor per week. Same founder-led, senior-only audit our paying clients get. Every report publishes in full when the engagement completes. Applications close October 4. Winners announced October 11. grants.zealynx.io/grants/sea…
2
1
4
819
Bloqarl | Zealynx retweeted
I keep correcting agent mistakes with more instructions. The uncomfortable part is that the next version can still make exactly the same mistake. Most of my Hermes workflows improve through prompts, files and recorded corrections. That works, but the correction remains prose. Nothing automatically proves that the failure has actually been removed. I have now found a Hermes plugin called Afterforge that approaches this differently. It can inspect a failed tool run, preserve the correction as a reviewable hypothesis and turn an approved case into an executable pytest regression. The important part is that the agent cannot approve its own test. A human has to inspect and approve the exact regression recipe first. I do not have the right failure case for it yet, and I would only test it with non-sensitive workflow history because it stores a separate local, unencrypted copy of bounded conversation data. But the idea is interesting. Instead of telling an agent “do not make this mistake again,” I could eventually require the next version to prove it no longer does. That is a much stronger form of memory than another paragraph in a prompt.
3
2
8
566
Bloqarl | Zealynx retweeted
"$50K for an audit" is wrong in three specific ways: It assumes one engagement, when the code will change. It assumes a fixed price, when scope and your own prep move it 2-3x. It assumes security is bought once, not run. Bring your own number to lesson 2. Most people move it.
1
3
6
423
Bloqarl | Zealynx retweeted
Three years ago my newsletter, DeFi Protocol by code, went quiet. Today it's back, with gifts for the 282 people who stayed: - the full archive, now free - free security courses for founders and devs - a free first pass on your code with Krait - a fully covered audit, up to $24K, until Oct 4
1
1
5
419
Bloqarl | Zealynx retweeted
When I verify audit fixes, I do not ask only whether the original exploit still works. I review the patch as new code: trace the root cause, test alternate paths, then look for fresh bugs introduced under remediation pressure.
An audit is not finished when findings are delivered. For each patch, verify three things: it fixes the root cause, closes every known path, and introduces no new bug. Then publish final statuses against a fixed commit. zealynx.io/glossary/fix-veri…
2
5
404
Bloqarl | Zealynx retweeted
Integer division truncates. In a DEX, every truncation is a decision about who eats the lost fraction. Uniswap V3 answers it the same way in every branch of every function. Input rounds up. Output rounds down. Fee rounds up. Every wei of rounding error lands on the pool's side of the ledger.
1
2
2
346
Bloqarl | Zealynx retweeted
The highest-return security spend for most new protocols isn't the audit. It's the threat model written before it and the monitoring running after, because those two cover the window an audit structurally can't. I sell audits. Judge the argument on the numbers rather than on who's making it — they're in the lesson.
1
1
7
465
Bloqarl | Zealynx retweeted
When I audit staking systems, I treat emergency mode as a separate product state. I ask what a user can still do after deposits stop: claim, unstake, or exit. A pause is not safe if the protocol survives by trapping the people it is meant to protect.
An emergency pause should stop new risk—not trap users. For staking systems, test deposits, claims, unstaking and exits separately. One global pause can turn a safety control into a custody failure. zealynx.io/resources/checkli…
1
4
359
Bloqarl | Zealynx retweeted
If you hold a Uniswap V3 position and call collect, you may withdraw less than you have earned. collect does not settle fees. It reads tokensOwed as it finds it, and tokensOwed only changes when something calls position.update. The fix is burn(0) first. It is a documented idiom, not a trick.
1
4
7
438
Bloqarl | Zealynx retweeted
Weekly membership value should be visible in the work, not hidden in landing-page promises. This week inside Zealynx Insiders: WHAT MEMBERS WORKED ON One member completed a Teller audit and turned two collateral-flow findings into a broader review method.
1
2
5
382
Bloqarl | Zealynx retweeted
A bridge lost $624M and nobody noticed for six days. Not a clever exploit — no alert existed for a large withdrawal, so nothing fired. A user found it when their own transaction failed. Monitoring costs $2-20K a month. It's the line most budgets don't have at all, and it's the difference between four hours and six days.
2
2
6
524
Bloqarl | Zealynx retweeted
When I audit ERC-4626 vaults, I do not stop at the normal deposit path. I test the empty-vault state, direct donations, and rounding together. Dead shares help, but the real question is whether any realistic sequence can make a user deposit mint zero shares.
An empty ERC-4626 vault has a dangerous edge case. A first depositor can donate assets directly, distort the share price, and make the next deposit round to zero shares. Dead shares blunt this—but should not stand alone. zealynx.io/glossary/dead-sha…
1
2
372
Weekly membership value should be visible in the work, not hidden in landing-page promises. This week inside Zealynx Insiders: WHAT MEMBERS WORKED ON One member spent five consecutive check-ins turning Uniswap V3 mathematics into Solidity tests.
1
1
3
193
I also published two applied security concepts. One turns vague safety claims into measurable invariants. The other asks wallet builders to map who can authorize each action across normal, recovery, and compromised-session states.
1
28
The practical value created this week was a tighter path from learning to verification. Formulas became tests. Broad security claims became conditions that can fail. Community questions exposed where direct evidence is still needed.
28