<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Arsen]]></title><description><![CDATA[Blockchain Security Engineer]]></description><link>https://newsletter.arsen.ac</link><image><url>https://substackcdn.com/image/fetch/$s_!z8Le!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e72176b-3097-4ef8-a795-78904f93495b_256x256.png</url><title>Arsen</title><link>https://newsletter.arsen.ac</link></image><generator>Substack</generator><lastBuildDate>Sun, 15 Nov 2026 15:49:12 GMT</lastBuildDate><atom:link href="https://newsletter.arsen.ac/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Arsen. Web3 Security]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[arsen@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[arsen@substack.com]]></itunes:email><itunes:name><![CDATA[Arsen]]></itunes:name></itunes:owner><itunes:author><![CDATA[Arsen]]></itunes:author><googleplay:owner><![CDATA[arsen@substack.com]]></googleplay:owner><googleplay:email><![CDATA[arsen@substack.com]]></googleplay:email><googleplay:author><![CDATA[Arsen]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why you only find common bugs]]></title><description><![CDATA[AI does the first pass now. Here's where the bugs it misses still sit, where to hunt them, and the one domain to stay in for 90 days.]]></description><link>https://newsletter.arsen.ac/p/why-you-only-find-common-bugs</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/why-you-only-find-common-bugs</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 13 Nov 2026 18:01:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NPHQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;I&#8217;m able to find some bugs, but always common, not unique. So I&#8217;m a bit stuck.&#8221;</p><p>I get this kind of DM every week.</p><p>Some start with &#8220;I can do nothing, help me.&#8221;</p><p>Others end with &#8220;I can do something, but I&#8217;m still stuck.&#8221;</p><p>Some of these people have done security for 1-2 years.</p><p>Still no deep bug. Still no private audit.</p><p>Today I&#8217;m sharing the 3 reasons you&#8217;re still stuck in 2026, and what to do instead.</p><p>But first, what changed:</p><ul><li><p>AI reads code top to bottom, and it does it well</p></li><li><p>Contests get thousands of AI-generated reports</p></li><li><p>A lot of bug bounty teams just don&#8217;t pay</p></li></ul><p>The old path was simple.</p><p>Join a contest, find a bug, hit the top 10, post it on X, wait for the DMs.</p><p>That path is closed.</p><h2>1. Stop reading code top to bottom. Hunt the 5% that moves money.</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NPHQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NPHQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!NPHQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174021,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223775732?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NPHQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!NPHQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a8ced8-1989-463b-8a52-19c40fc2a806_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most auditors still read a codebase from top to bottom.</p><p>Deposit, then withdraw, then the next file.</p><p>They hope a High shows up on the first pass.</p><p>Maybe the second.</p><p>AI already does that pass.</p><p>Some AI workflows do it very well.</p><p>So the bugs left for you sit where AI is still weak: the complex, math-heavy parts that need many steps of reasoning.</p><blockquote><p>You don&#8217;t need to read everything better than AI. You need to know where to look.</p></blockquote><p>Here&#8217;s the order I use:</p><ol><li><p>Understand the codebase: actors, assets, roles, state transitions, assumptions</p></li><li><p>Do one manual pass, line by line, only to know what sits where</p></li><li><p>Run an AI workflow for the easy bugs, if you want</p></li><li><p>Pick the 1 to 5 critical parts: the code that moves funds or runs the core formula</p></li><li><p>Learn that part deeply, then go backwards from the worst impact</p></li></ol><p>Step 2 is not hunting yet.</p><p>And understanding the whole project is not the same as understanding its hardest part.</p><p>You need both.</p><p>Going backwards means you start at the damage.</p><p>&#8220;What if this formula is wrong?&#8221; &#8220;What if someone gets this flow stuck?&#8221;</p><p>Then you walk left, right and up from that line until you find what can cause it.</p><p>While you sit there, you research the bug types this kind of code has.</p><p>You chat with AI about it. You write heavy notes.</p><p>I did exactly this in a cross-chain messaging contest.</p><p>The project had other parts.</p><p>I knew they didn&#8217;t matter.</p><p>One flow was critical. If a message got stuck there, the whole protocol stopped.</p><p>So I spent a whole week on about 100 lines of code.</p><p>The attack needed many steps: the code, the chain it ran on, and how that chain works.</p><p>That kind of multi-step research is where AI still fails.</p><p>I found the bug, a denial of service on the messaging.</p><p>It paid $10K.</p><p>Do this on the codebase you&#8217;re on now:</p><ol><li><p>List every function that moves funds or runs a core formula</p></li><li><p>Pick one</p></li><li><p>Write its worst impact at the top of a new note</p></li><li><p>Read backwards from that line for one hour</p></li></ol><h2>2. Stop waiting for contests. Hunt live projects.</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IN5A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IN5A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IN5A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195781,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223775732?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IN5A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!IN5A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bf39d0-d40e-489a-8b83-61487690da41_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Contests used to be the fast way in.</p><p>One good result, and firms knew your name.</p><p>Now your real bug sits in thousands of AI reports.</p><p>So don&#8217;t wait for the next contest.</p><p>Go to projects that are already live. New ones, or ones that ran for a couple of months.</p><p>Here&#8217;s what one live project gives you:</p><ul><li><p>Real experience finding bugs, with or without AI</p></li><li><p>Findings for your portfolio</p></li><li><p>A team that can give you a testimonial</p></li><li><p>Sometimes, money</p></li></ul><p>The money is the smallest part.</p><p>You post the work on X.</p><p>You write up the bug, if the team allows it.</p><p>Then, when you DM a firm for a private audit, you send the portfolio.</p><p>Every week researchers DM me: &#8220;Can I work with you? Can I do a private audit?&#8221;</p><p>Of course you can. But show me what you can do.</p><p>Show me your results. Show me your stats.</p><p>If there are no stats, what&#8217;s the point of working with you?</p><blockquote><p>Prove it to yourself first. Then DM me.</p></blockquote><p>This week:</p><ol><li><p>Pick one project in your domain that has been live for 2+ months</p></li><li><p>Read its core flow, the 5% from part 1</p></li><li><p>Test every idea on a local fork, never on mainnet</p></li><li><p>Report what you find to the team privately, and ask for a testimonial</p></li></ol><h2>3. Stop going wide. Take one domain for 90 days.</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lntp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lntp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!lntp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!lntp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!lntp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lntp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223775732?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lntp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!lntp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!lntp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!lntp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647f4fe5-c387-4a87-bae5-429d9d2670d1_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Early in my journey I jumped between domains:</p><ul><li><p>Lending</p></li><li><p>AMMs</p></li><li><p>Liquid staking</p></li><li><p>Cross-chain</p></li></ul><p>Each one has its own bug types, its own knowledge and its own way of thinking.</p><p>Switch all the time, and you&#8217;re confident in none.</p><p>So take one domain and stay there for at least 90 days.</p><p>Say perpetual futures.</p><p>Open DefiLlama, take the top 3 perps projects, and study them.</p><p>Every feature. Every bug type. How each team built it differently.</p><p>After that, you can hunt perps on any chain: Solana, Sui, Ethereum.</p><p>The design is mostly the same everywhere.</p><p>Only the chain-specific bugs change.</p><p>Lending works the same way.</p><p>On Solana, take Kamino and learn it by heart.</p><p>Then audit the projects that integrate with Kamino.</p><p>You find bugs there because you know the main project by heart.</p><blockquote><p>Get known for one thing first.</p></blockquote><p>Later, when you do private audits, you can move between domains.</p><p>At the start, you can&#8217;t.</p><p>Today:</p><ol><li><p>Pick one domain</p></li><li><p>Open DefiLlama and write down its top 3 projects</p></li><li><p>Block 90 days in your calendar for those 3 only</p></li></ol><p>None of this is fast.</p><p>It&#8217;s hard work, and the results come late.</p><p>But if you do it with a strategy, your chances are much higher than doing it at random.</p><p>If you want to find that 5% in a real Solana codebase, with me next to you, start here:</p><p><a href="https://www.arsen.ac/solana-audits-bootcamp">arsen.ac/solana-audits-bootcamp</a></p><p>&#8212; Arsen</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HMkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HMkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 424w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 848w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 1272w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HMkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp" width="1410" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1410,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61728,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223775732?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HMkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 424w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 848w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 1272w, https://substackcdn.com/image/fetch/$s_!HMkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09bcdb0-2972-4185-8f48-8cad92a259b2_1410x832.webp 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to become a Web3 auditor in 2026]]></title><description><![CDATA[The chain I'd pick today, the one domain I'd hunt for 90 days, and how I'd land my first private audit.]]></description><link>https://newsletter.arsen.ac/p/how-to-become-a-web3-auditor-in-2026</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/how-to-become-a-web3-auditor-in-2026</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 06 Nov 2026 18:01:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SGgd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve done Web3 security full time for almost 3 years.</p><ul><li><p>200+ High and Medium bugs found</p></li><li><p>$1.6B+ TVL secured</p></li><li><p>100+ audits done</p></li></ul><p>It taught me one thing:</p><p>Becoming a skilled Web3 auditor is extremely hard.</p><p>Auditors often ask me:</p><p>&#8220;Is it still possible to become an auditor in 2026?&#8221;</p><p>It&#8217;s much harder now.</p><p>But even with AI, the private audit market is booming. The demand is crazy.</p><p>So here&#8217;s how I&#8217;d become an auditor in 2026:</p><ul><li><p>Why you should pick a niche</p></li><li><p>Which protocols to learn</p></li><li><p>How to get private audits</p></li></ul><p>Let&#8217;s go.</p><h2>1. Why I&#8217;m pushing Solana</h2><p>Early in my career, I was scared of Rust.</p><p>It felt like the next level.</p><p>Then one request changed everything:</p><p>My first Rust audit. A Bitcoin light client.</p><ul><li><p>3 weeks to finish it</p></li><li><p>I learned Rust and C++ on the job</p></li><li><p>I hunted bugs across Bitcoin, Zcash and Dogecoin</p></li></ul><p>I understood that Rust, and most of this tech, isn&#8217;t that complex.</p><p>You just need to get your hands dirty ASAP.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SGgd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SGgd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 424w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 848w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 1272w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!SGgd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png" width="421" height="321.60515603799183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/febdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:737,&quot;resizeWidth&quot;:421,&quot;bytes&quot;:77285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223353716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SGgd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 424w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 848w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 1272w, https://substackcdn.com/image/fetch/$s_!SGgd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebdd9f0-0439-4333-affd-511e9f1dcd14_737x563.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today, 90% of my work is Solana and Rust.</p><h3>It&#8217;s the future of DeFi</h3><p>When I started, most audits, contests and bounties were on EVM.</p><p>Times have changed. EVM is still the biggest market.</p><p>It&#8217;s also the most crowded:</p><ul><li><p>Thousands of auditors</p></li><li><p>Hundreds of AI audit bots</p></li><li><p>Tons of EVM audit resources</p></li></ul><p>That makes the barrier high. Entering EVM isn&#8217;t the same as it was 2 years ago.</p><p>Few people look at the niche, where there are fewer resources and fewer auditors.</p><p>Solana is one of the most promising directions.</p><p>Solana made $143M in app revenue in August.</p><p>Ethereum did $47M in the same month.</p><p>That&#8217;s 3 times less. DefiLlama numbers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WQ6s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WQ6s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 424w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 848w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 1272w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!WQ6s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1486463,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223353716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WQ6s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 424w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 848w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 1272w, https://substackcdn.com/image/fetch/$s_!WQ6s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42cccb58-749d-4e61-9f39-fd5b1f2bcc37_2370x1172.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Auditors who can work on Solana earn more by default.</p><p>Why?</p><p>Not many people know Solana, but the demand keeps growing.</p><h3>Demand is booming</h3><p>Private audits are cooking.</p><p>More and more really strong projects are building on Solana:</p><ul><li><p>Projects &amp; institutions are coming into play</p></li><li><p>The Solana dev community is very solid</p></li><li><p>Cheap tx and gas </p></li></ul><p>We even saw an L1 on Cosmos close and move to Solana.</p><p>This makes Solana the ideal next Top-1 blockchain.</p><p>If I were starting out today, I&#8217;d go to Solana.</p><p>It&#8217;s where the next level is.</p><h3>How to learn Solana the right way</h3><p>1 core rule to understand.</p><p>You shouldn&#8217;t spend too much time in theory.</p><p>You shouldn&#8217;t learn all of Rust or do a Rust course.</p><p>What you should do instead is very simple:</p><ol><li><p>Open the RareSkills book</p></li><li><p>Open Blueshift</p></li><li><p>Spend 2-3 days reading Rust &amp; Solana</p></li></ol><p>At this step, you need the bare minimum.</p><p>Don&#8217;t learn it by heart. Just get a strong 1st overview.</p><p>Make sure you understand the following concepts:</p><ul><li><p>How the account model works</p></li><li><p>What a PDA is</p></li><li><p>What a CPI is</p></li><li><p>What rent is</p></li><li><p>What an instruction is</p></li><li><p>What Anchor is</p></li></ul><p>That&#8217;s enough to start reading the code.</p><p>Afterwards, we move to the more complex part.</p><h2>2. Which protocols to learn</h2><p>You know Solana now. You think you did a lot already.</p><p>But the hardest part is about to begin.</p><p>Soon you&#8217;ll audit projects that hold billions in TVL.</p><p>You need to work like a real professional. But how?</p><h3>Learn 1 domain by heart</h3><p>By domain, I mean one type of DeFi protocol:</p><ul><li><p>CLMM, propAMM</p></li><li><p>Lending &amp; borrowing</p></li><li><p>Perpetual futures</p></li><li><p>Virtual machines / nodes</p></li></ul><p>Early in my journey, I jumped from contest to contest.</p><p>I didn&#8217;t stick to any domain.</p><p>One week I audited cross-chain. The next week, lending.</p><p>Nothing stuck.</p><p>Results appeared only when I went 1 domain at a time.</p><p>Only then did I understand the real game of audits.</p><blockquote><p>Finding creative bugs by knowing the system well.</p></blockquote><p>Just go to DefiLlama and check the top projects out there</p><p>Those are your 1st targets to audit.</p><p>Here's the top of that list:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IZ09!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IZ09!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 424w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 848w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 1272w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IZ09!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png" width="1341" height="924" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:924,&quot;width&quot;:1341,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223455,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223353716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IZ09!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 424w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 848w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 1272w, https://substackcdn.com/image/fetch/$s_!IZ09!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f431b95-aafd-4256-a07e-b723e04c9bc3_1341x924.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Repeat for 90 days &amp; save the knowledge</h3><p>Pick one domain. Then:</p><ol><li><p>Hunt only that domain for 90 days</p></li><li><p>Read the code</p></li><li><p>Study past exploits / reports</p></li><li><p>Record observations</p></li><li><p>Make the right notes</p></li></ol><p>After you read this 1st project, you&#8217;ll gain valuable knowledge: how the core protocol works &amp; what bugs it has</p><p>Then, make sure you save all notes in your DB, and tune your AI with this knowledge</p><p>That gives you an assistant that knows:</p><ul><li><p><strong>Major bugs</strong> you found or missed</p></li><li><p><strong>Patterns</strong> that repeat across codebases</p></li><li><p><strong>Implementations </strong>the devs made</p></li><li><p>Every structured note</p></li></ul><p>30 retros later, you see patterns nobody else sees.</p><p>Wide gets you nowhere. Depth gets you paid.</p><h1>3. How can I earn?</h1><h3>No one knows you</h3><p>When you enter Web3 Security, no one knows you.</p><p>Bounties are harsh. Not everyone pays it.</p><p>So how can you earn? </p><p>By building yourself as a professional auditor.</p><ul><li><p>Public portfolio </p></li><li><p>Strong X account</p></li><li><p>Proven record / Bugs found</p></li></ul><p>It takes a lot of work to build those 3, but it&#8217;s exciting.</p><p>Eventually, if you stick to these 3, you will make it.</p><h3>Are you a real professional?</h3><p>Show that you can find bugs. </p><p>With and without AI, doesn&#8217;t matter.</p><p>It should be a real skill.</p><p>In 2026 it&#8217;s harder, due to the lack of dedicated contests.</p><p>That&#8217;s why I advise the following:</p><ol><li><p>Find live projects and bounties</p></li><li><p>Hunt the bugs there by heart</p></li><li><p>Submit them to the team</p></li><li><p>Build your portfolio from these findings</p></li><li><p>Hopefully get paid (it&#8217;s not the main goal)</p></li><li><p>Repeat</p></li></ol><p>Once you have a public record of 10-20 H/M findings in live projects, you&#8217;ll know the game, and you&#8217;ll be ready for private audits.</p><h3>Pitch yourself</h3><p>You should be a known professional in your own niche.</p><p>Once that&#8217;s set up, share your experience:</p><ul><li><p>Write post-mortems</p></li><li><p>Write technical articles</p></li><li><p>Write tweets with your advice</p></li></ul><p>Share the knowledge, inspire others, pitch yourself.</p><p>Afterwards, DM firms for private engagements.</p><p>Hunt the opportunities wildly.</p><p>And your first $3K private deal will be done.</p><p>If you want to do this with me, my Solana Audits Bootcamp starts Nov 23. Four weeks on real code, with a live call every week.</p><p><strong>Live bonus: join before Sunday, Nov 8 and you get a 30-min 1:1 call with me. We plan your 4 weeks.</strong></p><p><a href="https://www.arsen.ac/web3-auditor-course">https://www.arsen.ac/web3-auditor-course</a></p><p>&#8212; Arsen</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7BQ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7BQ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 424w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 848w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 1272w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7BQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png" width="1456" height="606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a398813a-6344-4126-b497-05a8d1b255e1_1567x652.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:606,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128930,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/223353716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7BQ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 424w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 848w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 1272w, https://substackcdn.com/image/fetch/$s_!7BQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa398813a-6344-4126-b497-05a8d1b255e1_1567x652.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[you MUST do this in the next audit]]></title><description><![CDATA[You spot something weird on day 3, promise to come back to it, and never do. Here's the 3-part row I write so every lead is still there when I need it.]]></description><link>https://newsletter.arsen.ac/p/you-forgot-your-best-lead</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/you-forgot-your-best-lead</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 23 Oct 2026 18:01:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/52e8a211-32d5-4769-9192-3e1d98106f58_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Someone asked me this live, during a workshop:</p><p>&#8220;During an audit, I forget everything quickly. I get confused when I take notes.&#8221;</p><p>I know this feeling.</p><p>Day 3 of an audit.</p><p>You see something weird in a function.</p><p>&#8220;I&#8217;ll come back to it.&#8221;</p><p>You never do.</p><p>Today I&#8217;m sharing the 3 rules I use so a lead survives until the last day of the audit.</p><h2>Stop reasoning in your head</h2><p>After a week of line-by-line review, you forget things.</p><p>That&#8217;s normal. It&#8217;s how the brain works.</p><p>The problem is where you do the thinking.</p><p>Reason in your head, and leads fall out.</p><blockquote><p>Keeping the whole codebase in your head is a disaster.</p></blockquote><p>Your notes have one job: hold everything your head drops.</p><ul><li><p>Every thought, cut to one line</p></li><li><p>Every open question, parked</p></li><li><p>Every lead, kept until it&#8217;s closed</p></li></ul><p>I tried a lot of setups before I got there:</p><ul><li><p>Diagrams</p></li><li><p>Code pasted into Miro</p></li><li><p>Raw notes in VSCode</p></li></ul><p>Miro got the closest.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z0yn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z0yn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 424w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 848w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 1272w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!z0yn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157920,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/221777953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z0yn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 424w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 848w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 1272w, https://substackcdn.com/image/fetch/$s_!z0yn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e348ea1-cf5e-4093-8ab2-5b18362a948f_1840x1206.webp 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The whole codebase fit on one screen.</p><p>It showed me the code.</p><p>My questions about the code had nowhere to go.</p><p>Now I use Notion, in 4 layers:</p><ol><li><p>The system</p></li><li><p>Each flow</p></li><li><p>Each function</p></li><li><p>The line</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XTjM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XTjM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!XTjM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:141427,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/221777953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XTjM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!XTjM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64b6468-ac33-4637-8909-ed864aadc6ac_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A question goes into the layer it belongs to.</p><p>Do this now:</p><ol><li><p>Open your current audit</p></li><li><p>Write down every &#8220;I&#8217;ll come back to it&#8221; from this week, one line each</p></li><li><p>Put each line under the flow it belongs to</p></li></ol><h2>Give every lead one row</h2><p>A lead in your head is gone by Friday.</p><p>Write it down the moment you see it.</p><p>Every lead gets one row, with 3 parts:</p><ul><li><p>Where: the function and the line</p></li><li><p>Why: what looks wrong</p></li><li><p>What breaks: who loses money if it&#8217;s real</p></li></ul><p>Here&#8217;s the difference.</p><p>In your head: &#8220;something off with the fees&#8221;</p><p>As a row:</p><ul><li><p>Where: withdraw, the fee line</p></li><li><p>Why: the fee rounds down to zero on small amounts</p></li><li><p>What breaks: the protocol, if a user splits one withdraw into many small ones</p></li></ul><p>The first one is gone tomorrow.</p><p>The second one you can test.</p><p>Then I mark the line in the code itself with <code>//@audit</code>.</p><p>So I land on it again in one second.</p><blockquote><p>The row tells you what to check. The marker tells you where.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RQu3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RQu3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RQu3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:137370,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/221777953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RQu3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RQu3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d786f38-7b3a-4fb1-979c-0e77a30f0679_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Before you close this tab:</p><ol><li><p>Pick the last 3 leads you parked</p></li><li><p>Give each one a row: Where, Why, What breaks</p></li><li><p>Put <code>//@audit</code> on each of those lines in the code</p></li></ol><h2>Let one row grow into a chapter</h2><p>Sometimes one row keeps pulling you back.</p><p>Don&#8217;t close it. Grow it.</p><p>In one audit, I had a row that said &#8220;leverage update and its behavior&#8221;.</p><p>For me it wasn&#8217;t one lead.</p><p>It was a whole chapter.</p><p>I covered it in every flow:</p><ul><li><p>Open</p></li><li><p>Withdraw</p></li><li><p>Liquidate</p></li></ul><p>Backwards, actor by actor.</p><p>It ended in a critical bug, and $11K.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hT3V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hT3V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hT3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169639,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/221777953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hT3V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!hT3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99e9a207-fb8b-4973-9ce4-3ff364bf0ce3_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>You only see that when the row is written down.</p></blockquote><p>Tonight:</p><ol><li><p>Open your notes</p></li><li><p>Find the row you keep coming back to</p></li><li><p>Walk it through every flow that touches it</p></li><li><p>Write one line on what it does in each</p></li></ol><p>Write the lead down on day 3.</p><p>You won&#8217;t remember it on day 10.</p><p>In my private Audit Program, your notes and your leads are what you submit for review, every phase, by the deadline.</p><p>Then a live call at the end. We go through every bug you missed, and the step that would have caught it.</p><p><a href="https://www.arsen.ac/web3-guided-audit">https://www.arsen.ac/web3-guided-audit</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l-2G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l-2G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 424w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 848w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 1272w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!l-2G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp" width="1456" height="793" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:793,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164062,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/221777953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l-2G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 424w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 848w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 1272w, https://substackcdn.com/image/fetch/$s_!l-2G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24de9873-5c65-43b1-98db-f15c3ca693f1_2048x1115.webp 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8212; Arsen</p>]]></content:encoded></item><item><title><![CDATA[How I Study Web3 Hacks]]></title><description><![CDATA[The exact steps I run on every exploit, on the $42M GMX hack. Plus the template I fill in each time.]]></description><link>https://newsletter.arsen.ac/p/how-i-study-web3-hacks</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/how-i-study-web3-hacks</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 16 Oct 2026 18:02:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/024daecb-52c9-470f-b360-0f667864fa9d_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;What will be the best and fast way to improve hacker mindset beside doing contests?&#8221;</p><p>I got this in my DMs.</p><p>Another one asked me to simplify the &#8220;bad state&#8221; idea.</p><p>So today I&#8217;ll show you exactly how I study a hack.</p><p>Here&#8217;s what most people do:</p><ul><li><p>open the write-up</p></li><li><p>read the attack steps</p></li><li><p><strong>think they got it</strong></p></li><li><p>forget it in a week</p></li></ul><p>Then the same bug sits in their audit, and they walk right past it.</p><p>When I started, I spent hours on Solodit issues and old reports.</p><p>It helps, but only up to a point.</p><p>My example today is the $42M GMX hack. You need 4 facts about it:</p><ul><li><p>GMX V1 is a perps exchange: traders trade against one shared pool</p></li><li><p>GLP is the pool token: its price comes from AUM (what the pool says it&#8217;s worth)</p></li><li><p>AUM depends on two values: the total short size and the average short price</p></li><li><p>The size lives in the Vault: the average price lives in another contract, <code>ShortsTracker</code></p></li></ul><p>That&#8217;s all. Now the 3 steps.</p><h2>1. Find the bad state before you read the attack</h2><p>I start every hack with context.</p><p>Same list, every time:</p><ul><li><p>Which state matters?</p></li><li><p>What does the good state look like?</p></li><li><p>What is the bad state?</p></li><li><p>What does the bad state allow?</p></li></ul><p>For GMX:</p><ul><li><p>state: short size and average short price</p></li><li><p>good state: they move together, every time</p></li><li><p>bad state: size goes up, the average price stays old</p></li><li><p>it allows: AUM looks bigger, GLP looks more expensive, you redeem for more than you put in</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Exbs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Exbs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Exbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121609,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/220722451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Exbs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!Exbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F910499ce-cd80-4a11-907f-79c5f88ea1fb_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Write these 4 lines before you read a single attack step.</p><p>Once you know the bad state, the attack is just one question.</p><p>How do I get there?</p><p>Try it today: take one hack you&#8217;ve already read, close the write-up, and write these 4 lines from the code.</p><h2>2. Ask what stops you, then when it&#8217;s off</h2><p>Here&#8217;s how an attacker thinks.</p><p>He starts from what he wants: the bad state.</p><p>Then he runs the same loop, again and again:</p><ol><li><p>What do I want?</p></li><li><p>What stops me?</p></li><li><p>When is that check off, or who can skip it?</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Npss!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Npss!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!Npss!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!Npss!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!Npss!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Npss!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:168505,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/220722451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Npss!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!Npss!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!Npss!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!Npss!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65b55a5-a200-4e8d-9b69-5d46693cb6d5_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every &#8220;no&#8221; becomes the next question.</p><p>He stops when he reaches a function anyone can call.</p><p>Here&#8217;s the loop on GMX, from my notes:</p><ul><li><p>I want size up and the average price old</p></li><li><p>What stops me? A normal order updates both, through ShortsTracker</p></li><li><p>Can I skip it? Yes, call the Vault directly</p></li><li><p>What stops me now? The Vault works only while a leverage flag is on</p></li><li><p>When is it on? Only while the keeper bot executes an order</p></li><li><p>So I need my own code to run during the keeper&#8217;s order</p></li></ul><p>One more question finishes it.</p><p>What do I control?</p><p>In that sequence, the attacker controls one thing: <code>_account</code>, the address that gets the ETH back.</p><p>He made it a contract.</p><p>The ETH lands, his code runs, and the flag is still on.</p><blockquote><p>Everything that is user-supplied is a tricky place.</p></blockquote><p>The rest is the cash out: redeem GLP at the fake price.</p><p>The extra money comes from every other GLP holder.</p><p>&#8220;But I&#8217;ll never audit GMX.&#8221;</p><p>Doesn&#8217;t matter. The loop works on any code.</p><p>Your homework:</p><ol><li><p>Pick one function in your current audit</p></li><li><p>Write the bad state you want</p></li><li><p>Run the loop: what stops me, when is it off, what do I control</p></li><li><p>Keep going until you hit a function anyone can call, or a check you can&#8217;t get around</p></li></ol><h2>3. Forget the scope. The attacker does.</h2><p>A Whitehat reads the bounty page first.</p><p>The attacker uses everything that touches the protocol: bots, keepers, oracles, other contracts.</p><p>On GMX, the keeper did half the work for him:</p><ul><li><p>it turned the leverage flag on</p></li><li><p>it sent the ETH to his contract</p></li><li><p>nobody hacked it, it just did its job</p></li></ul><p>Now look at it as a Whitehat.</p><p>The keeper is off-chain, so it&#8217;s out of scope.</p><p>Submit this, and the project answers:</p><blockquote><p>&#8220;Off-chain entity validates it, it&#8217;s ok!&#8221;</p></blockquote><p>You&#8217;d beg for a small bounty.</p><p>The attacker drained $42M and kept about $5M after returning the rest.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J4Bx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J4Bx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!J4Bx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/220722451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J4Bx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!J4Bx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970d0b24-2828-4eff-b388-573ba984ed16_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Before your next audit:</p><ol><li><p>List every actor that calls the protocol: users, keepers, admins, oracles, other protocols</p></li><li><p>For each one, ask: what does it do for me if I&#8217;m the attacker?</p></li><li><p>Check the scope only after you have the answer</p></li></ol><p>Here&#8217;s the full template I fill in for every hack:</p><pre><code><code>HACK: &lt;name&gt; &#183; &lt;date&gt; &#183; &lt;loss&gt;
LINKS: 2-3 write-ups, never one

BEFORE I START
- What are the most important parts to focus on?
- What don't I understand yet? *define it clearly
- What is my final goal?

CONTEXT
- Which state matters?
- Good state:
- Bad state:
- What the bad state allows:

THE LOOP
- What do I want? What stops me? When is it off?
- What do I control?
- //@audit on every line the bad value touches, until the payout
- Where did the extra money come from?

OUTSIDE THE SCOPE
- Who else calls this code?
- What does each one do for the attacker?

SOLIDIFY
- Explain it to yourself in simple words
- Re-read the notes and look for a hole
- Move the questions into your checklist, without names
</code></code></pre><p>Pick one hack this week and fill it in.</p><p>That&#8217;s how you train your hacker mindset without a contest.</p><p>My GMX notes came from 3 write-ups: the Neodyme thread, the GMX post-mortem, and the SolidityScan analysis.</p><p>If you want to run the full attacker method on a real codebase with me, join the guided audit: a real audit we run together, not a course you watch.</p><p><a href="https://iron-myth-7d6.notion.site/Stop-finding-surface-bugs-3e8b025761248078af4dfbb0c5bfa7da">Link</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cRXw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cRXw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!cRXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:667181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/220722451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cRXw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!cRXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb06a5b1-8865-4bf8-a5b9-69ce065ec2a5_3000x1200.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8212; Arsen</p>]]></content:encoded></item><item><title><![CDATA[What if I’d start from 0]]></title><description><![CDATA[Nobody hires you first. Pick one lane, shadow the protocol everyone builds on, and walk out with a list nobody else has.]]></description><link>https://newsletter.arsen.ac/p/what-if-id-start-from-0</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/what-if-id-start-from-0</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 09 Oct 2026 18:02:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e5ba42c4-74fa-410c-b6fa-fdf256cb74ff_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;How do I pick my first shadow audit target?&#8221;</p><p>A shadow audit is an audit nobody pays you for.</p><p>You pick a live protocol and audit it like a paid job.</p><p>You open a big repo.</p><p>No idea how it actually works.</p><p>No idea where to start looking for bugs.</p><p>Next week you switch repos and start from zero again.</p><p>Today I&#8217;m sharing the 4 steps to pick that target, and make it pay off even with zero bugs.</p><h2>Pick one lane on a chain that needs auditors</h2><p>Pick a lane and stay in it.</p><p>A lane is one protocol type: lending, CLMM, perps or cross-chain.</p><p>Every switch to a new type resets you to zero.</p><p>When I grinded random contests, every context switch cost me a lot.</p><p>Then I went deep on cross-chain:</p><ul><li><p>A cross-chain contest: $10K</p></li><li><p>The next cross-chain contest, with a teammate: Top 10, $3K</p></li><li><p>Every project after that: smoother ramp-up, more ideas, more patterns to hunt</p></li></ul><p>Same lane. Each codebase got easier to read.</p><p>Now the chain.</p><ul><li><p>EVM: more projects, more auditors, patterns mature enough to push into AI</p></li><li><p>Solana and Move chains: fewer auditors, real demand, and they pay more</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CI23!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CI23!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 424w, https://substackcdn.com/image/fetch/$s_!CI23!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 848w, https://substackcdn.com/image/fetch/$s_!CI23!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 1272w, https://substackcdn.com/image/fetch/$s_!CI23!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!CI23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png" width="1456" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60415,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/219492837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CI23!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 424w, https://substackcdn.com/image/fetch/$s_!CI23!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 848w, https://substackcdn.com/image/fetch/$s_!CI23!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 1272w, https://substackcdn.com/image/fetch/$s_!CI23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3b10460-5d00-41ad-9524-44c382b6444f_1494x674.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>EVM is still a good place to learn.</p><p>But depth on Solana or Move gets noticed faster.</p><p>Coming from EVM?</p><p>The business logic bugs look the same.</p><p>The hard part is the chain&#8217;s own concepts, not the language.</p><p>Do this now:</p><ol><li><p>Open a blank note</p></li><li><p>Write one lane: lending, CLMM, perps or cross-chain</p></li><li><p>Write one chain: Solana, or a Move chain like Sui or Aptos</p></li><li><p>Commit your next three shadow audits to that pair</p></li></ol><h2>Shadow the mature protocol everyone builds on</h2><p>Inside your lane, go to the top.</p><p>The biggest lending market. The biggest CLMM.</p><p>The one other protocols call into.</p><p>One word you&#8217;ll need:</p><ul><li><p>Integration: another app calling into a protocol. Step 4 runs on it</p></li></ul><p>Pick the one that actually interests you.</p><p>Go deep on that one, not all three.</p><p>You&#8217;ll live in it for the next 1-2 months.</p><p>&#8220;Isn&#8217;t the top protocol already audited to death?&#8221;</p><p>Many times.</p><p>Go deep enough and you can still find bugs in the top ones.</p><p>So you get two outcomes:</p><ul><li><p>You find a bug. Good</p></li><li><p>You find nothing. You still learned the base layer</p></li><li><p>Either way, you studied code that a lot of your future private audits build on</p></li></ul><p>That last line is the real reason.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lC3c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lC3c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 424w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 848w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 1272w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lC3c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91011,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/219492837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lC3c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 424w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 848w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 1272w, https://substackcdn.com/image/fetch/$s_!lC3c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71512e2-d592-49c1-b835-2b88cc4a0bfd_1492x730.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The projects that pay you later integrate with this one.</p><blockquote><p>Zero bugs here still means you know the code your next client calls.</p></blockquote><p>Before you close this tab:</p><ol><li><p>List the three biggest lending or CLMM protocols on Solana</p></li><li><p>Next to each, note which other apps integrate with it</p></li><li><p>Circle the one most apps call into. That&#8217;s your target</p></li></ol><h2>Read every past report on that protocol</h2><p>Past reports show you the problem places.</p><p>Before you read a single line of code.</p><p>Then you widen it to the whole lane.</p><p>Early on, I prepared for a ZK rollup contest.</p><p>Here&#8217;s what I did:</p><ul><li><p>Took every past report on that codebase</p></li><li><p>Took every issue too</p></li><li><p>Read all of it before the start</p></li></ul><p>A private audit took the slot, so I never entered.</p><p>But I knew where the problem places were.</p><p>And where the bugs could be.</p><blockquote><p>The bug that shows up in three reports is the one to hunt.</p></blockquote><p>Now go wider.</p><p>Take popular projects of the same type. Other chains count too.</p><p>Ask yourself:</p><ul><li><p>Why is it built this way?</p></li><li><p>Why this design and not the obvious alternative?</p></li><li><p>How does a rival build the same mechanism?</p></li><li><p>Why is one of them more efficient?</p></li><li><p>Which bug patterns repeat across all of them?</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hkMG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hkMG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 424w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 848w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 1272w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hkMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png" width="1380" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1380,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/219492837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hkMG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 424w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 848w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 1272w, https://substackcdn.com/image/fetch/$s_!hkMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8bbe29-27db-4e61-9b3b-ce0a8c3644c1_1380x758.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One protocol shows you its design.</p><p>Its rivals show you the choices behind it.</p><p>Ten minutes:</p><ol><li><p>Make one folder named after your target</p></li><li><p>Save every past audit report on it</p></li><li><p>Add the reports of two rivals of the same type</p></li><li><p>Skim the finding titles of the newest report</p></li></ol><h2>Write the checklist of integration mistakes</h2><p>Every time a mechanism clicks, ask one more question.</p><p>How could an app that calls this get it wrong?</p><p>Write the answer down.</p><p>Later a private client integrates this protocol.</p><p>You already know where integrators slip.</p><blockquote><p>That list is your leverage.</p></blockquote><p>My 1st place came from exactly this.</p><p>$8K. One unique High.</p><p>The bug sat in the contract the staking pool called into, outside the contest scope.</p><p>Everyone else stopped at the scope line.</p><p>I read the out-of-scope docs anyway.</p><p>Here&#8217;s what that contract did on a manual recover:</p><ul><li><p>The caller picked the gas limit</p></li><li><p>It deleted the pool&#8217;s balance entry first</p></li><li><p>Then it sent the funds back as a message</p></li><li><p>If handling the return failed, the message bounced</p></li><li><p>It ignored bounced messages, so the entry never came back</p></li><li><p>Retry: refused</p></li></ul><p>The funds sat there with no record pointing at them.</p><p>The pool assumed the return always lands.</p><p>That&#8217;s not a bug in the big contract.</p><p>That&#8217;s a mistake in how the caller used it.</p><blockquote><p>The base protocol is solid. The apps calling it are where you hunt.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rhOY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rhOY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 424w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 848w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 1272w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!rhOY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png" width="1276" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1276,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53052,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/219492837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rhOY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 424w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 848w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 1272w, https://substackcdn.com/image/fetch/$s_!rhOY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a69abc6-06df-40d9-b645-4ada0827e02f_1276x708.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Start the list today:</p><ol><li><p>Open a doc named after your target</p></li><li><p>Write five ways an app calling it could lose money</p></li><li><p>Add one line every time a mechanism clicks</p></li></ol><p>Your first shadow audit doesn&#8217;t have to find a bug.</p><p>It has to leave you with a list nobody else has.</p><div><hr></div><p>You can run this alone, or run your first one with me.<br><br>Two weeks. Seven people. A real codebase.<br><br>You commit your leads first. Then I open the answer, and we go through every bug you missed.<br><br><a href="https://iron-myth-7d6.notion.site/Stop-finding-surface-bugs-3e8b025761248078af4dfbb0c5bfa7da">LINK</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v5Rv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v5Rv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!v5Rv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:667181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/219492837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v5Rv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!v5Rv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8e1917-062e-4f88-8f64-17e2682e293f_3000x1200.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to get audit experience with no clients]]></title><description><![CDATA[Four ways to build a portfolio before anyone pays you. Public code, public submissions, free audits, and one auditor ahead of you.]]></description><link>https://newsletter.arsen.ac/p/how-to-get-audit-experience-with</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/how-to-get-audit-experience-with</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 02 Oct 2026 18:01:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/09d1c7f1-d85f-44a1-976c-6c48a60a84c8_1314x736.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#8220;How do I get audit experience if nobody will hire me?&#8221;</p></blockquote><p>You keep studying.</p><p>Reports, docs, random threads.</p><p>But nothing tells you whether you can actually find a real bug.</p><p>You&#8217;re not short on information.</p><p>You&#8217;re short on a codebase with your name on the work.</p><p>Today I&#8217;m sharing the 4 ways to get audit experience with no clients.</p><h2>Shadow audit one big protocol nobody pays you for</h2><p>A live protocol doesn&#8217;t care whether someone hired you.</p><p>It gives you everything a paid engagement does:</p><ul><li><p>the same flows</p></li><li><p>the same money</p></li><li><p>the same code you&#8217;d read for a client</p></li></ul><p>The only difference is that nobody told you to open it.</p><p>So pick one lane and go deep on that, not on five:</p><ul><li><p>lending</p></li><li><p>CLMM</p></li><li><p>a launchpad</p></li><li><p>whatever actually pulls you</p></li></ul><p>While you read it, study the past public reports on the same protocol.</p><p>Then check whether the same pattern lives somewhere else in the program.</p><p>You come out with something you own: a checklist of the integration bugs that hit every team plugging into it.</p><p>Integrators repeat the same mistakes. That checklist is your edge.</p><p>My first place came from exactly this kind of reading:</p><ul><li><p>a new chain</p></li><li><p>a new language</p></li><li><p>the last days of the contest, out of ideas</p></li><li><p>docs read, every line in scope read</p></li></ul><p>So I went into the integrations sitting outside the scope.</p><p>That&#8217;s where the High was. $8K, one unique finding.</p><p>Everyone read the same in-scope files.</p><p>Nobody opened the other side of the integration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UiZc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UiZc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 424w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 848w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 1272w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!UiZc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png" width="1456" height="703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:703,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/218411354?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UiZc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 424w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 848w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 1272w, https://substackcdn.com/image/fetch/$s_!UiZc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450a9ded-ec95-4e26-9e4a-6923b896de56_1842x890.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>Out-of-scope code has nobody else in it. That&#8217;s the whole reason to read it.</p></blockquote><p>Your move today:</p><ol><li><p>Open one live Solana lending or CLMM program.</p></li><li><p>Write down its three core flows: deposit, withdraw, and the one the protocol earns on.</p></li><li><p>That list is your scope for the week.</p></li></ol><h2>Take whatever opens and keep every submission public</h2><p>Stop waiting for the right contest to appear.</p><p>Contests are thin right now. So take what opens:</p><ul><li><p>a bounty</p></li><li><p>a CTF</p></li><li><p>a one-off opening</p></li></ul><p>All of it carries your name.</p><p>All of it counts as a portfolio before a client pays you.</p><p>Here&#8217;s what that looked like for me:</p><ul><li><p><strong>Contest 1:</strong> a High, duplicated. Paid $2.</p></li><li><p><strong>Months 2-6:</strong> zero results. Same hours every month.</p></li><li><p><strong>Month 7:</strong> $400.</p></li><li><p><strong>Month 9:</strong> $10K for one Medium in a cross-chain codebase, the only Medium anyone found in the whole scope.</p></li><li><p><strong>Later:</strong> a CTF, around 500 USDC and a job offer I turned down.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!By40!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!By40!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 424w, https://substackcdn.com/image/fetch/$s_!By40!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 848w, https://substackcdn.com/image/fetch/$s_!By40!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!By40!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!By40!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png" width="1456" height="828" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29343c45-2818-4b56-be59-71651f371938_1854x1054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:828,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108289,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/218411354?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!By40!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 424w, https://substackcdn.com/image/fetch/$s_!By40!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 848w, https://substackcdn.com/image/fetch/$s_!By40!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!By40!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29343c45-2818-4b56-be59-71651f371938_1854x1054.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No client. No permission.</p><p>Every submission stayed public, and that&#8217;s the part that compounds.</p><blockquote><p>The payout is not the point yet. The public record is.</p></blockquote><p>Your move today:</p><ol><li><p>Open one live bounty or CTF page.</p></li><li><p>Make two columns: flows in scope, flows outside it.</p></li><li><p>Start reading in the right column.</p></li></ol><h2>Ask teams directly for a free audit</h2><p>Nobody is going to invite you.</p><p>An unpaid finding sits in a portfolio the same way a paid one does.</p><p>The team reading your report never asks what you charged.</p><p>I did free audits early. I just asked for them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I9Ah!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I9Ah!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 424w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 848w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 1272w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I9Ah!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png" width="1456" height="651" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:651,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144127,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/218411354?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I9Ah!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 424w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 848w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 1272w, https://substackcdn.com/image/fetch/$s_!I9Ah!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca2a65e-762e-46fa-b03f-58a3001e1f01_1958x876.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Some teams ignored me. Some said yes.</p><p>You&#8217;re not asking for a favor. You&#8217;re asking for a codebase.</p><p>It&#8217;s still what I tell people who DM me. Build a portfolio with solid bugs in it first:</p><ul><li><p>free audits</p></li><li><p>unpaid bounty reports</p></li><li><p>a CTF writeup</p></li></ul><p>Then message the firms.</p><p>The door opens on the portfolio, never on the message.</p><p>Your move today: write a five-line message, not a pitch deck.</p><ol><li><p>Who you are</p></li><li><p>What you&#8217;ll read</p></li><li><p>What you send back, and when</p></li><li><p>That it costs them nothing</p></li><li><p>One line of proof, even a public CTF writeup</p></li></ol><p>Send it to one team before you close the laptop.</p><h2>Pair with one auditor stronger than you</h2><p>You can&#8217;t learn what you never see.</p><p>No course shows you what a strong auditor opens first.</p><p>Or what he refuses to read at all.</p><p>I DMed a guy who had won the same $10K in the same contest.</p><p>I asked him to audit the next one together. He said yes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RvY7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RvY7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 424w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 848w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 1272w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RvY7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png" width="1456" height="581" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:581,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91478,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/218411354?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RvY7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 424w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 848w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 1272w, https://substackcdn.com/image/fetch/$s_!RvY7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8d4f84d-5871-4d24-905e-cccf0450b8cf_1750x698.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We went full time, contest after contest:</p><ul><li><p>we split the flows</p></li><li><p>we argued about the leads</p></li><li><p>we ran brainstorms and validated each other&#8217;s leads</p></li><li><p>we hunted one attack vector on purpose</p></li></ul><p>I watched what he opened first, and what he skipped completely.</p><p>On a cross-chain bridge we placed Top 10: one High, five Mediums, $3K.</p><p>Then we split. Both of us had taken what we needed.</p><p>The method was never the missing part.</p><p>I had the method for six months while earning nothing.</p><p>Watching someone stronger work is what moved it.</p><blockquote><p>Nobody audits alone. Not the firms, not the teams, not the people making six figures a contest.</p></blockquote><p>Your move today:</p><ol><li><p>List three auditors ahead of you.</p></li><li><p>Message one of them about splitting the next contest.</p></li><li><p>Say which flow you&#8217;ll take. That&#8217;s the part that gets a yes.</p></li></ol><p>Nobody hands you the first audit.</p><p>You take it from public code, a free offer, and one person ahead of you.</p><h2>Surface to deep</h2><p>I run this as a real audit, not a course:</p><ul><li><p>two weeks</p></li><li><p>seven people</p></li><li><p>one live codebase with known bugs in it</p></li></ul><p>Seven seats in this first run, at $299. Fewer than seven people and I refund everyone.</p><p><a href="https://app.notion.com/p/Stop-finding-surface-bugs-3e8b025761248078af4dfbb0c5bfa7da?source=copy_link">https://app.notion.com/p/Stop-finding-surface-bugs-3e8b025761248078af4dfbb0c5bfa7da?source=copy_link</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DDAq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DDAq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!DDAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:667181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.arsen.ac/i/218411354?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DDAq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 424w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 848w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!DDAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a9fcfaa-2ddf-42a8-85cb-d6b0434aee6f_3000x1200.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to hack a Bitcoin light client?]]></title><description><![CDATA[Three merkle proofs verify the structure. The fourth check is a substring search on a field the miner fills in by hand.]]></description><link>https://newsletter.arsen.ac/p/the-proof-the-miner-writes-himself</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/the-proof-the-miner-writes-himself</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Mon, 07 Sep 2026 16:02:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cbadc7ec-3f88-435d-8219-e9906d97e357_1126x592.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The light client verifies one merkle proof before it accepts a block.</p><p>That proof is correct.</p><p>The value it then goes looking for is one the submitter computed himself.</p><p>And it goes looking for it with a text search.</p><p>Quick refresh so we&#8217;re on the same page.</p><p>Some chains don&#8217;t mine their own blocks.</p><p>Dogecoin is one.</p><p>Miners point their hardware at Litecoin, and the same work counts for both chains at once.</p><p>That&#8217;s merged mining, and it&#8217;s a good deal.</p><p>One machine, two rewards, no extra electricity.</p><p>The proof has to live somewhere, and it lives on the parent chain:</p><ul><li><p> Every block starts with a coinbase, the transaction that pays the miner.</p></li><li><p>The coinbase has a field with no consensus meaning at all. Free space.</p></li><li><p>The child chain&#8217;s commitment gets written into that free space.</p></li><li><p>Whoever mines the parent block writes that field. By hand. Anything they want.</p></li></ul><p>Three words you&#8217;ll need:</p><ul><li><p> <strong>Coinbase</strong> - the first transaction in a block. Pays the miner.</p></li><li><p><strong>script_sig</strong> - the free-space field inside it.</p></li><li><p><strong>chain_root</strong> - the commitment that says which child block this work belongs to.</p></li></ul><p>Now the light client.</p><p>You review the aux path and it looks like the strongest code in the file.</p><p>Merkle tooling everywhere.</p><p>Four steps, one after another.</p><p><strong>Step one:</strong> this parent block hasn&#8217;t been used before.</p><p><strong>Step two:</strong> the coinbase transaction is proven into the parent block&#8217;s merkle root. That one is real.</p><p><strong>Step three:</strong> a chain_root is computed. Not verified. Computed, out of the child block hash, a chain id, and a merkle proof.</p><p>All three of those come from whoever is submitting.</p><p>&#8220;It&#8217;s covered in merkle proofs. What could go wrong?&#8221;</p><p>Read step four.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gY3d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gY3d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 424w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 848w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 1272w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gY3d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png" width="902" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107864,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/213018700?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gY3d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 424w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 848w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 1272w, https://substackcdn.com/image/fetch/$s_!gY3d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff178d-d1c7-4cd3-95e4-f37895bbba06_902x598.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><code>.contains()</code>.</p><p>Step two proves structure. Step three derives a number out of attacker input. Step four searches for that number.</p><p>Only one of the four is a check.</p><p>It renders the script to a hex string and asks whether the derived root appears somewhere inside it.</p><p>Somewhere.</p><p>Not at the offset the format specifies. Not once. Not after the marker bytes that say the merged mining section starts here.</p><p>Anywhere in the string is a pass.</p><p>And the field it searches is the one field on the parent chain that a miner fills in freely.</p><p>The attack is not complicated:</p><ul><li><p>miner writes their own chain_root into script_sig</p></li><li><p>writes the honest one in after it</p></li><li><p>both are present in the hex</p></li><li><p><code>.contains()</code> finds whichever it is asked about</p></li><li><p>the same parent block now attests to two different child blocks</p></li><li><p>the light client accepts the one it was handed</p></li></ul><p>The merged mining format exists to stop exactly this.</p><p>There are marker bytes, a position rule, a size and a nonce, and a requirement that the commitment appear once.</p><p>None of that is checked here.</p><p>The format was replaced by a substring search.</p><p>There&#8217;s a second problem in the same line, pointing at the same cause.</p><p><code>.to_hex_string()</code> and <code>.to_string()</code> are two renderings by two different types.</p><p>Bitcoin stores hashes little endian.</p><p>Display prints them the other way round.</p><p>So an honest submitter, handing over correct data in the byte order the chain actually uses, fails this check.</p><p>The search is wrong in both directions. It admits what it shouldn&#8217;t, and it rejects what it should take.</p><p>When you audit a commitment check, ask:</p><ul><li><p>Is this comparing bytes, or comparing strings that describe bytes?</p></li><li><p>Does the format specify a position, and is the position enforced?</p></li><li><p>Can the field appear twice? What happens if it does?</p></li><li><p>Who writes the field being searched? If the answer is a miner, it is attacker input.</p></li><li><p>Are the two sides of the comparison the same type, rendered the same way?</p></li></ul><p>Most reviews check whether the value is there.</p><blockquote><p>Finding a value is not the same as validating where it sits.</p></blockquote><p>The usual version of this finding is a missing check.</p><p>Something absent, you grep for it, you find the gap.</p><p>Here the check is present, and it runs, and it passes for the honest case in every test.</p><p>It is the wrong kind of check, and the wrong kind of check looks exactly like the right kind until someone writes a second value into the same field.</p><blockquote><p>Root cause: a structural commitment verified by substring search.</p></blockquote><p>Two fixes.</p><ol><li><p>Parse the script instead of searching it. Find the marker, read the commitment at the offset the format defines, reject the block if it appears more than once.</p></li><li><p>Compare bytes to bytes. The hex round trip is what let two different orderings look comparable in the first place.</p></li></ol><p>The fix that shipped was neither. Access control, so only the relayer can submit blocks.</p><p>That closes the door. It doesn&#8217;t fix the lock.</p><div><hr></div><p>Arsen</p>]]></content:encoded></item><item><title><![CDATA[How to get wrecked via Solana RPC.]]></title><description><![CDATA[An off-chain service asked the chain how an account was created. Anyone could change the answer for one lamport.]]></description><link>https://newsletter.arsen.ac/p/how-to-get-wrecked-via-solana-rpc</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/how-to-get-wrecked-via-solana-rpc</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Mon, 31 Aug 2026 16:03:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7461888c-2d95-4209-ae2d-2f9b149cf0d1_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The service pulls every account the program owns, no filter, and figures out the rest later.</p><p>The service needs to know how an account was created.</p><p>The account is real.</p><p>Its history is real.</p><p>It still reads the wrong transaction out of it.</p><p>Quick refresh so we&#8217;re on the same page.</p><blockquote><p><strong>On Solana an account stores state.</strong></p></blockquote><p>Current state, nothing else.</p><p>It doesn&#8217;t store how it got there.</p><p>No created_at, no origin field, nothing that says which transaction made it.</p><p>That&#8217;s a good design. Accounts stay small and cheap.</p><p>But if you want the creation transaction, you ask an RPC node for the address history.</p><p>The tradeoff this bug lives on:</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wpFq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 424w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 848w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 1272w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!wpFq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png" width="728" height="239.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:479,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:398576,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/212825463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wpFq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 424w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 848w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 1272w, https://substackcdn.com/image/fetch/$s_!wpFq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff376cc28-b8ec-406c-9031-98b93fce8f0e_2314x762.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>Three words you&#8217;ll need:</p><ul><li><p><strong>PDA</strong> - the account the program creates for each request.</p></li><li><p><strong>Signature</strong> - the ID of a transaction.</p></li><li><p><strong>Backfill</strong> - the catch-up path. Service was down, now it re-reads what it missed.</p></li></ul><p>Now the service.</p><p>The on-chain program was clean.</p><p>Zero findings there.</p><p>So you&#8217;re in the off-chain part. Rust, RPC calls, plumbing.</p><p><strong>First pass</strong>: does it parse the account correctly? It does.</p><p><strong>Second pass</strong>: retries, error handling, deserialization. All fine.</p><p>You never ask: what does this RPC actually promise about order?</p><p>And who else can write into what it returns?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ym0_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ym0_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 424w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 848w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 1272w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ym0_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png" width="798" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:798,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65588,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/212825463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ym0_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 424w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 848w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 1272w, https://substackcdn.com/image/fetch/$s_!Ym0_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d597092-ea10-4f5f-8f8b-010abeff9ff4_798x364.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><code>.first()</code>. That&#8217;s the whole bug.</p><p>And it runs once per account, inside the sweep.</p><p>Here&#8217;s the interesting part.</p><p>There are two ways this service learns about a request.</p><p><strong>Live path: a websocket event arrives and the signature is inside it.</strong></p><p>The service parses that one transaction, and it&#8217;s correct by construction.</p><p>Nobody picked the signature. It was handed over.</p><p>Backfill path: no event.</p><p><em><strong>So the service asks for every account the program owns, then asks each account for its signatures, then takes the first one, then calls the same parsing function as the live path.</strong></em></p><p>&#8220;Same function at the end. What could go wrong?&#8221;</p><p>The live path never had to choose.</p><p>The backfill path invented a lookup, and it identifies the creation transaction by position in a list.</p><blockquote><p>Position in a list that strangers can push to.</p></blockquote><p>The attack is not complicated:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6QJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6QJM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 424w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 848w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 1272w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!6QJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png" width="1456" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:497456,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/212825463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6QJM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 424w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 848w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 1272w, https://substackcdn.com/image/fetch/$s_!6QJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc595d751-690f-4ed3-bed1-4dffa29350c4_2392x1098.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Who pays for it: the catch-up path itself.</p><p>It&#8217;s a denial of service on backfill, not one stuck request.</p><p>Everything that was waiting to be caught up keeps waiting.</p><p>The attacker spends one lamport for that.</p><p>When you audit any off-chain service that reads chain state, check:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dXqn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dXqn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 424w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 848w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 1272w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!dXqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png" width="1456" height="494" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:494,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:459341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/212825463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dXqn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 424w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 848w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 1272w, https://substackcdn.com/image/fetch/$s_!dXqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c7f7a50-5470-454e-b9f9-f57b4f6a2ed7_2452x832.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The model worth keeping:</p><blockquote><p>The account tells you its state. It never tells you its story.</p></blockquote><p>And the story is a list strangers can write to.</p><p>Everyone knows not to trust user input.</p><p>Almost nobody counts a transaction history as user input.</p><p>But that&#8217;s what it is.</p><p>It&#8217;s not the account&#8217;s own data. It&#8217;s a list a node keeps about an address, and the address is public, so the list is open.</p><p>Root cause, one line:</p><blockquote><p><em><strong>Off-chain identity taken from position in a list anyone can append to.</strong></em></p></blockquote><p>Two fixes.</p><ol><li><p>Use <code>.last()</code> instead of <code>.first()</code>. Fixes the order, and it holds until someone spams the address - <code>getSignaturesForAddress</code> returns 1000 signatures max, so <code>.last()</code> is the oldest of that page, not the oldest ever.</p></li><li><p>Stop reading history at all. Put the access mode directly in the PDA, so the state answers the question and there is no signature scan left to attack.</p></li></ol><p>The team went with the second one. Design review, program changed, the whole traversal deleted.</p><div><hr></div><p>Arsen</p>]]></content:encoded></item><item><title><![CDATA[How Correct Code Loses Money]]></title><description><![CDATA[Every function did exactly what it was written to do.]]></description><link>https://newsletter.arsen.ac/p/how-correct-code-loses-money</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/how-correct-code-loses-money</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Fri, 21 Aug 2026 18:01:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ffb1e23f-44dc-4d8a-9607-3d223e76ca95_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The trader owed $600 in fees.</p><p>He had $250 left to pay them with.</p><p>The protocol took the $250, marked the bill settled, then paid him $450 on top.</p><p>He should have walked away with $100.</p><p>He walked away with $450.</p><p>Quick refresh so we&#8217;re on the same page.</p><p>A perp lets you hold a leveraged long or short with no expiry date.</p><p>You post collateral, the protocol marks profit and loss against it, and you sit there forever.</p><p>Forever is the problem.</p><p>Nothing drags a perp&#8217;s price back to spot the way an expiry does.</p><p>So perps use funding, a steady payment between the two sides:</p><p>&#8226; Longs crowded &#8594; longs pay shorts. </p><p>&#8226; Shorts crowded &#8594; shorts pay longs. </p><p>&#8226; It flips whenever the crowd flips.</p><p>So funding is sometimes money you owe, and sometimes money you&#8217;re owed.</p><p>Four words you&#8217;ll need:</p><p>&#8226; <strong>Margin</strong> - the collateral you posted. Fees come out of it. </p><p>&#8226; <strong>PnL</strong> - profit and loss, applied to margin before anything else. </p><p>&#8226; <strong>Funding income</strong> - funding owed to you, when you&#8217;re on the paid side. </p><p>&#8226; <strong>Liquidation check</strong> - the function that decides if you can stay open.</p><p>Now the close path.</p><p>First pass: you read the settlement code. Every line does what it says.</p><p>Second pass: you read the liquidation check.</p><p>Also fine. Deliberate, correct, even commented.</p><p>Both files pass review. Separately.</p><p>You never ask whether the two of them are counting the same money.</p><p>&#8220;It&#8217;s a fee deduction. What could go wrong?&#8221;</p><p>Read it in order.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sfke!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sfke!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 424w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 848w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 1272w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sfke!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png" width="675" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:675,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64019,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/211570896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sfke!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 424w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 848w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 1272w, https://substackcdn.com/image/fetch/$s_!Sfke!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e7d59b-e35e-462d-b3aa-b4d32be7b500_675x389.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The clamp on line 2 is the whole thing.</p><p>Fees can only take what&#8217;s there.</p><p>A $600 bill against $250 collects $250, and the other $350 is never written down anywhere.</p><p>Nothing carries it forward. Nothing nets it against what comes next.</p><p>And what comes next is that last line. The full funding payment, landing after the books already closed.</p><p>Now the liquidation check, same protocol.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1hnd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1hnd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 424w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 848w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 1272w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1hnd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png" width="830" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:830,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67961,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/211570896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1hnd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 424w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 848w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 1272w, https://substackcdn.com/image/fetch/$s_!1hnd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8337ed8c-2677-4345-a9a0-8cae069df527_830x382.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Look at that middle branch.</p><p>Fees exceed margin, the trader is receiving funding, and the check subtracts the shortfall from funding income and keeps going.</p><p>There&#8217;s even a comment on it.</p><p>Somebody sat down, thought about exactly the case where fees run past collateral while funding is owed to the trader, decided funding should absorb it, and wrote that down.</p><p>Then the settlement path was written as if that conversation never happened.</p><p>Walk the numbers.</p><p>Margin after PnL is $250.</p><p>Fees owed are $600.</p><p>Funding owed to the trader is $450.</p><p>Settlement clamps to $250, takes it, moves on.</p><p>The $350 remainder isn&#8217;t deferred. It isn&#8217;t netted. It&#8217;s gone.</p><p>Then funding credits on its own line. The full $450.</p><p>$450 out, where $100 was correct.</p><p>The gap is whichever is smaller: the funding they&#8217;re owed, or the fees that went uncollected.</p><blockquote><p>A clamp that stops an underflow also forgives the difference.</p></blockquote><p>The clamp itself is correct. Without it the split runs past the balance and the transaction aborts.</p><p>The solvency branch is correct too.</p><p>If someone owes you $450, you&#8217;re not insolvent over a $350 gap.</p><p>And the same ordering repeats across every exit path the protocol has.</p><p>Three call sites agreeing reads like a decision.</p><p>Consistency isn&#8217;t correctness.</p><p>Here is the whole thing as one close:</p><p>No flash loan. No oracle. No reentrancy.</p><p>You close a position at the moment funding is paying you and your fees have already eaten your collateral.</p><p>And it repeats. Every close that meets those two conditions.</p><p>The money comes out of the LP pool.</p><p>Depositors pay the funding, and they eat the fees the protocol never collected.</p><p>When you audit a settlement path, check:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cn62!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cn62!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 424w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 848w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 1272w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cn62!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png" width="1456" height="446" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:446,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:469834,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/211570896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cn62!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 424w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 848w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 1272w, https://substackcdn.com/image/fetch/$s_!Cn62!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5a6f98-7d84-4199-a25c-9ac118a242f3_2828x866.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most auditors check that each function is correct on its own.</p><blockquote><p>Few check that two functions share the same model of what money is.</p></blockquote><p>This isn&#8217;t a missing check, and that&#8217;s exactly why it survives.</p><p>The usual version of this finding is &#8220;fee not charged&#8221; or &#8220;wrong account authorised&#8221;.</p><p>Something is absent, you grep for it, you find it.</p><p>Here nothing is absent.</p><p>Fees are charged. The cap is deliberate.</p><p>The solvency model is deliberate, correct, and commented.</p><p>The bug lives between two files that were each reviewed on a different day.</p><blockquote><p>Root cause: settlement clamps then credits, solvency sums then compares.</p></blockquote><p>Two fixes.</p><ol><li><p>Do the arithmetic once. Margin, funding, fees, one number at the end, and clamp that number instead of the fee line.</p></li><li><p>Make the liquidation check call that same function, so the two can&#8217;t drift apart again.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a6h3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a6h3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 424w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 848w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 1272w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!a6h3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png" width="778" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:778,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://defendor.substack.com/i/211570896?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a6h3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 424w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 848w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 1272w, https://substackcdn.com/image/fetch/$s_!a6h3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80cc86ad-78fe-4727-91e0-c0415153b655_778x456.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The second one is what stops it coming back.</p><div><hr></div><p>Arsen</p>]]></content:encoded></item><item><title><![CDATA[Ignore 85% of the code if you want critical bugs]]></title><description><![CDATA[New codebase? The question must be:
How do I find the 5% of code that can kill the protocol?]]></description><link>https://newsletter.arsen.ac/p/ignore-85-of-the-code-if-you-want</link><guid isPermaLink="false">https://newsletter.arsen.ac/p/ignore-85-of-the-code-if-you-want</guid><dc:creator><![CDATA[Arsen]]></dc:creator><pubDate>Sun, 08 Feb 2026 14:50:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d2319558-3703-4a6e-85d8-ccb825c65a1e_4800x2520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>New codebase?</p><p>Easy to drown in files, lines, and edge cases.</p><p>You try to read everything and end up understanding nothing deeply.</p><p>So the real questions are:</p><ul><li><p>How do I find the most critical flows?</p></li><li><p>How do I focus most of my time there?</p></li></ul><p>Senior auditors ask the same thing in one line:</p><blockquote><p><strong>How do I find the 5% of code that can kill the protocol?</strong></p></blockquote><p>You don&#8217;t always need to audit the whole codebase.<br>Most of the time, you need to spot a few key flows and attack them hard.</p><p>This email shows you how I do that.</p><h3>The real truth</h3><blockquote><p>This is a skill, not a magic.</p></blockquote><p>It comes from practice and from understanding how a system works.</p><p>There&#8217;s no magic tool that tags &#8220;<strong>critical flow</strong>&#8221; for you.</p><p>But you can train a simple model in your head:</p><ol><li><p>Find the core flows.</p></li><li><p>Think like an attacker around those flows only.</p></li></ol><h3>Step 1 &#8212; Build a simple mental map</h3><p>First, answer one question:</p><blockquote><p><strong>&#8220;What are the 2&#8211;3 main things this protocol lets users do?&#8221;</strong></p></blockquote><p>In contests or private audits, that often happens on a short kick-off call.<br>Devs walk you through:</p><ul><li><p>What the system does</p></li><li><p>Who the main actors are</p></li><li><p>How &#8220;normal&#8221; behavior looks like</p></li><li><p>Which invariants must always hold</p></li></ul><p>You won&#8217;t get deep understanding here.<br>But you&#8217;ll understand where value and trust move. That&#8217;s enough for the <strong>Initial Discovery Phase</strong>.</p><p>If there&#8217;s no call, recreate it yourself:</p><ol><li><p>Read the docs</p></li><li><p>Feed them into AI</p></li><li><p>Scan the codebase</p></li><li><p>Ask AI targeted questions and verify answers against code</p></li></ol><p>You&#8217;re not hunting bugs yet.<br>You&#8217;re just mapping the territory.</p><h3>Step 2 &#8212; Abstract the critical flows</h3><p>Once you know what the system does, move to <strong>logic flow abstraction</strong>.</p><p>List out:</p><ul><li><p>Main actors (user, admin, LP, liquidator, relayer, etc.)</p></li><li><p>Where real money or sensitive state moves</p></li><li><p>The few public functions everything depends on</p></li></ul><p>Pick one/two main flows:</p><ul><li><p>Deposit</p></li><li><p>Withdrawal</p></li><li><p>Swap</p></li><li><p>Position update</p></li><li><p>Bridge transfer</p></li></ul><p>Follow that flow end-to-end in code.</p><p>Ask:</p><ul><li><p>Who can call this?</p></li><li><p>What can they control?</p></li><li><p>What state does it touch?</p></li><li><p>What must never happen here?</p></li></ul><h3>Step 3 &#8212; Mark the files that matter</h3><p>At this point, you don&#8217;t need the whole repo.<br>You need the subset that touches your chosen flows.</p><p>Mark those files. Ignore the rest.</p><p>Here&#8217;s the tool I use to mark files and jump between them fast:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ToEh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ToEh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 424w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 848w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 1272w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ToEh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png" width="1456" height="603" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:603,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ToEh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 424w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 848w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 1272w, https://substackcdn.com/image/fetch/$s_!ToEh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aacb5bd-1833-4c0e-9304-a3422c3ee807_1550x642.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When I return the next day, I jump straight back into the same &#8220;slice&#8221; of the system.</p><h3>Step 4 &#8212; Set up a thinking workspace</h3><p>Your IDE is for code.<br>You still need a place for thinking.</p><p>Somewhere to:</p><ul><li><p>Draw flows</p></li><li><p>Write invariants</p></li><li><p>List attack ideas</p></li><li><p>Capture &#8220;I don&#8217;t understand this yet&#8221; questions</p></li></ul><p>I use:</p><p><strong>Miro</strong> &#8212; for drawings and state diagrams:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F_xA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F_xA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 424w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 848w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 1272w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!F_xA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png" width="1456" height="1211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1211,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!F_xA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 424w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 848w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 1272w, https://substackcdn.com/image/fetch/$s_!F_xA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93400437-e97d-46be-af44-a1ecd9aeffd0_1700x1414.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Notion</strong> &#8212; for text notes:</p><ul><li><p>What each actor can do</p></li><li><p>What must always hold true</p></li><li><p>Where value enters and leaves</p></li><li><p>Which assumptions I haven&#8217;t tested yet</p></li></ul><p>I revisit these notes often.<br>Bugs usually hide where my notes are vague.</p><p>Here&#8217;s my own notes structure:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JxQw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JxQw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 424w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 848w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 1272w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JxQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png" width="1456" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JxQw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 424w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 848w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 1272w, https://substackcdn.com/image/fetch/$s_!JxQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85dc9a03-eb79-4410-8481-712a913a7607_1600x754.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Better and clear notes = better bugs.</p><h3>Case study &#8212; Raydium CLMM</h3><p>Here&#8217;s how all this plays out in a real protocol.</p><p><strong><a href="https://immunefi.com/blog/bug-fix-reviews/raydium-tick-manipulation-bugfix-review/">Raydium&#8217;s CLMM</a></strong> uses a default tick range for its pools.<br>Storing all ticks is too expensive, so it limits the active range.</p><p>If you want to deposit outside that range, you pass an <strong>extension account</strong> with extra ticks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x5tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x5tu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 424w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 848w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 1272w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!x5tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png" width="1456" height="709" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:709,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!x5tu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 424w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 848w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 1272w, https://substackcdn.com/image/fetch/$s_!x5tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17e5ea7-f3a5-43aa-9c14-6a18a5d6d4d5_1524x742.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That idea is fine.<br>The problem was validation.</p><p>The program didn&#8217;t verify that the &#8220;extra ticks&#8221; account belonged to the correct pool.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gxSO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gxSO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 424w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 848w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 1272w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gxSO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png" width="1069" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:1069,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!gxSO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 424w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 848w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 1272w, https://substackcdn.com/image/fetch/$s_!gxSO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4faecb19-9f3c-4948-95b8-c3b8f26e8aea_1069x348.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That one oversight let an attacker:</p><ol><li><p>Create their own pool</p></li><li><p>Forge an &#8220;extra ticks&#8221; account for it</p></li><li><p>Pass it to a victim pool</p></li></ol><blockquote><p><strong>By doing that, they could flip tick state in the victim pool.</strong><br><strong>And that state persisted.</strong></p></blockquote><p>Later swaps used the tampered tick, so liquidity accounting broke.</p><p>With a specific sequence of swaps + tick flips, the attacker inflated liquidity and withdrew more tokens than they should have.</p><p>Attacker didn&#8217;t brute-force the whole repo.</p><p>Attacker picked one flow &#8212; <strong>ticks handling</strong></p><h3>The real lesson</h3><p>Complex bugs rarely show up when you first look.</p><p>You might follow one flow for weeks.<br>And sometimes you find nothing.</p><p>But this process scales:</p><ul><li><p>Build a simple map</p></li><li><p>Abstract a few critical flows</p></li><li><p>Mark the contracts that matter</p></li><li><p>Go deep there and ignore everything else</p></li></ul><p>That&#8217;s how you move from:</p><p>&#8220;I&#8217;m lost in this repo.&#8221;</p><p>to:</p><p>&#8220;I know exactly which flows can kill this thing.&#8221;</p>]]></content:encoded></item></channel></rss>