<?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[Crypto Data Bytes]]></title><description><![CDATA[Breaking down crypto data into byte-sized bits. Home of the Bytexplorers.]]></description><link>https://read.cryptodatabytes.com</link><image><url>https://substackcdn.com/image/fetch/$s_!BYSz!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png</url><title>Crypto Data Bytes</title><link>https://read.cryptodatabytes.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 08:56:40 GMT</lastBuildDate><atom:link href="https://read.cryptodatabytes.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Andrew Hong]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[cryptodatabytes@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[cryptodatabytes@substack.com]]></itunes:email><itunes:name><![CDATA[Andrew Hong]]></itunes:name></itunes:owner><itunes:author><![CDATA[Andrew Hong]]></itunes:author><googleplay:owner><![CDATA[cryptodatabytes@substack.com]]></googleplay:owner><googleplay:email><![CDATA[cryptodatabytes@substack.com]]></googleplay:email><googleplay:author><![CDATA[Andrew Hong]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to Analyze Thousands of Transactions During a Live Hack]]></title><description><![CDATA[Resolv's USR stablecoin was hacked for $80m this weekend, and I was one of the first to analyze and monitor it because of Claude Code and Herd MCP.]]></description><link>https://read.cryptodatabytes.com/p/how-to-analyze-thousands-of-transactions</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/how-to-analyze-thousands-of-transactions</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Tue, 24 Mar 2026 13:21:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JqUb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When a critical event like a hack occurs, you don&#8217;t get the couple of hours or days you usually would to do analysis. Every minute counts - and you often start from not knowing anything about the contracts and watching the attacker's wallet(s) fire off dozens of transactions a second.</p><p>I&#8217;ll go over my workflow for creating this hack analysis and monitoring report in a GitHub Gist that&#8217;s updated every 5 minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JqUb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JqUb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 424w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 848w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JqUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png" width="1456" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255817,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/191977355?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.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_!JqUb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 424w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 848w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!JqUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a33394-1471-4240-87d4-6ce1f8f23167_1880x1022.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://gist.github.com/andrewhong5297/cace9842972a09c9ea7371da6a3486ab">Full Report Here</a></figcaption></figure></div><p>As soon as I saw the initial $50m mint, I opened Claude Code (which already had <a href="https://docs.herd.eco/herd-mcp/introduction">Herd MCP</a> installed) and told it to analyze USR and tell me what caused the hack.</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/andrewhong5297/status/2035568702779773028&quot;,&quot;full_text&quot;:&quot;USR hack due to SERVICE_ROLE completing the requested swap for an inflated amount\n\nThe service role has always just been an EOA address (while the admin is a multisig). There were no oracle or bound/max mint checks on TheCounter or the SimpleToken contract &quot;,&quot;username&quot;:&quot;andrewhong5297&quot;,&quot;name&quot;:&quot;ilemi&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1724513825293017088/-QsTay3l_normal.jpg&quot;,&quot;date&quot;:&quot;2026-03-22T04:06:12.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HD_JJRlbcAAMP7W.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/n8gySqkrXh&quot;},{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HD_KLY6awAAtS6S.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/n8gySqkrXh&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:5,&quot;retweet_count&quot;:7,&quot;like_count&quot;:76,&quot;impression_count&quot;:18078,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div><p>The hack was pretty simple (unfortunately, a team's private key was compromised), but it was still nice to understand it and find the related hack transactions within a minute. I immediately knew I wanted to monitor the attacker&#8217;s wallet for any further activity and to check the team&#8217;s multisig to see their responses. </p><p>The agent was able to track transfers to and from the attacker wallet to keep expanding the wallets to monitor, and it was also able to check across the USR contracts to find the team multisig and read the queued transactions. </p><p>I immediately set this loop:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ihYv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ihYv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 424w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 848w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 1272w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ihYv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png" width="1190" height="192" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:1190,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/191977355?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.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_!ihYv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 424w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 848w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 1272w, https://substackcdn.com/image/fetch/$s_!ihYv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953ccd5f-7c0d-4cf9-8feb-8e4511f4590b_1190x192.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>The initial report was now being uploaded to GitHub in a gist for me to easily read. Now, I could keep up with the activity and add things to the report as I did my own sleuthing alongside the agent.</p><p>You can&nbsp;<a href="https://gist.github.com/andrewhong5297/cace9842972a09c9ea7371da6a3486ab">read the gist</a>&nbsp;yourself here; whenever I told Claude to add a new section, I would tell it to add and keep track of the methodology too. So for prices, I told it to check the spot price after each block of swaps, by reading traces data and querying onchain read functions.</p><p>This would have taken hours to do by hand, and I&#8217;m finding myself using AI to help with research and analysis in crypto more and more now.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Herd MCP: The Missing Crypto “Web Search” Tool]]></title><description><![CDATA[We're releasing our MCP, with tools optimized for helping LLMs like Claude Code build a research and validation loop across contracts, transactions, and wallets.]]></description><link>https://read.cryptodatabytes.com/p/herd-mcp-the-missing-crypto-web-search</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/herd-mcp-the-missing-crypto-web-search</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 23 Feb 2026 16:39:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Qvw2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>The Broken Learning Loop with LLM Agents in Crypto</h3><p>If you&#8217;ve spent any time building with Cursor, Claude Code, Codex, or Openclaw, you&#8217;ll realize the hardest part of coding is not the writing and running the code, but the planning and validation that comes at each step of development.</p><p>Building in crypto makes this problem 10x more apparent due to the unbounded, adversarial nature of blockchains. Most of the time, agents are working in a bounded box - your codebase is all yours, and only updated by you. Blockchains are shared codebases that everyone constantly adds to and commits to. What&#8217;s true about the &#8220;code&#8221; and states now might not be in the next minute. This has been coined as the &#8220;<a href="https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest">dark forest</a>&#8221; nature of crypto.</p><p>The good thing is that there are already thousands of examples of whatever you want to do onchain, for your agent to enhance your plan and validate it against real transaction data. But these are not laid out in clean end-to-end user journeys. They&#8217;re broken up across millions of transactions, contracts, and wallets - and you just have to know how to search and piece them together.</p><p>However, your agent can&#8217;t just &#8220;web search&#8221; for addresses either, because they can easily be misled into the wrong contracts, outdated documentation, or missing edge cases. This leads to brute-forcing with many assumptions about the blockchain, and there is no way to create a <a href="https://www.youtube.com/watch?v=Zx_GOhGik0o">learning test loop</a> to help with planning or validation. In crypto, that could mean your or your customers&#8217; money is at risk. Searching and learning about protocols is typically done by very technical researchers/devs opening 50+ tabs of different tools like Etherscan, Dune, Blocksec, docs, and Github pages - but not anymore!</p><h3>Agents are missing a crypto &#8220;web search&#8221; tool</h3><p>Web search tools help agents search and extract relevant information from docs, GitHub repos, and more. Given 50 relevant sources, it can probably triangulate on the right answer. Smart contracts are different - if the agent finds 50 addresses, then it&#8217;s likely to go down a very wrong rabbithole. Herd&#8217;s tools help agents navigate precise relationships when starting from any contract, transaction, or wallet:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qvw2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qvw2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 424w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 848w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qvw2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png" width="728" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1076,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:308090,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/188491410?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Qvw2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 424w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 848w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!Qvw2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa905aa-c3ab-4cfe-8713-25ad91a9931c_1732x1280.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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>You can think of it as building a relationship graph on the fly - the difference being that we aren&#8217;t hardcoding what a &#8220;node&#8221; or &#8220;relationship&#8221; is because you can&#8217;t really categorize all onchain objects that cleanly (many of us have tried). Instead, we let the agent build a knowledge graph tailored to the task at hand.</p><p><a href="https://herd.eco">Herd</a> has built the most searchable and human-readable Ethereum block explorer over the last year, and&nbsp;<a href="https://docs.herd.eco/herd-mcp/introduction">we&#8217;re now releasing an MCP that includes all the functionality of our explorer (and more)</a>. It&#8217;s a set of tools focused on navigating the &#8220;unknown unknowns&#8221; of onchain relationships, with lookup functions for every transaction type to enhance planning and QA validation. It also includes bookmarking tools that let you easily reference the same contracts, wallets, and transactions across chats.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yiV6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yiV6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 424w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 848w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yiV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png" width="612" height="579.9263456090652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1338,&quot;width&quot;:1412,&quot;resizeWidth&quot;:612,&quot;bytes&quot;:341369,&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://read.cryptodatabytes.com/i/188491410?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.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_!yiV6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 424w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 848w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!yiV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e97269-1f74-4791-8469-f36a8353c84b_1412x1338.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://docs.herd.eco/herd-mcp/introduction">docs link</a></figcaption></figure></div><p>On top of relationship lookups, our tools contain some of the most in-depth contract and transaction data in the industry, combining our own data engineering with 10+ top SDKs and APIs in the space. We also support analysis for all types of wallets: EOA, 4337, 7702, multisig - you name it.</p><div class="pullquote"><p>&#9881;&#65039; To install the MCP &#8220;<strong>claude mcp add --transport http herd-mcp https://mcp.herd.eco/v1</strong>&#8221;. </p><p><a href="https://docs.herd.eco/herd-mcp/configuration">More configuration docs here (currently on Base/Ethereum).</a></p></div><h3>How to Leverage the Herd MCP as a Builder</h3><p>Let&#8217;s walk through developing something in crypto (a data pipeline/query, transaction script, miniapp, etc) using an agent. You must guide the agent through four phases:</p><p><strong>(1) &#128506;&#65039; Research</strong>: Think of this as going wide to find the right contracts to call/analyze. There are many &#8220;unknown unknowns&#8221; that may not be documented. What&#8217;s the user journey through the contract? Who can participate during the journey, when, and through what contracts? Here are some example questions:</p><ul><li><p>Tell me about USDC on Ethereum. Who is handling minting? Can you check the last few mints?</p></li><li><p>Find the basenames registration contract on Base. Can you figure out what contracts are called during registration? Which contracts can be called to mint basenames, and how is this managed?</p></li><li><p>Look up the steakhouse morpho vault on ethereum. What are the key functions called by users versus other roles in the contract? What&#8217;s the market structure under the vault - where are those tokens located? Who can move those tokens?</p></li></ul><p><strong>(2) &#9997;&#65039; Planning: </strong>Once you have a complete set of contracts to build on, it&#8217;s time to go &#8220;deep&#8221;. Here, you want to focus on studying wallets to understand different user patterns and to look for edge cases in transactions that help break any assumptions the agent makes.</p><ul><li><p>Given the steakhouse multisig, analyze how they interact with their steakUSDC vault. How does this compare to how the Gauntlet multisig interacts with the vault? At each state, what read functions or queries would you write to understand the allocation queue?</p></li><li><p>Looking at the Nouns contract, analyze how the last five auction winners interact with the token after receiving the token. Are there any interesting patterns in how/where they transfer the token to (i.e. either trading or cold storage)?</p></li></ul><p><strong>(3) &#129302; Implementation</strong>: This is when you let the agent do its thing with code. You should enable more skills and MCPs at this point to help with its development cycles. Here are some good ones to add:</p><ul><li><p><a href="https://docs.dune.com/api-reference/agents/mcp#dune-mcp">Dune Analytics</a> or <a href="https://docs.allium.so/ai/mcp/overview">Allium</a> for SQL queries (MCP)</p></li><li><p><a href="https://www.alchemy.com/docs/alchemy-mcp-server">Alchemy&#8217;s RPC (MCP)</a></p></li><li><p><a href="https://github.com/trailofbits/skills">Trail of Bits Security (Skills)</a></p></li><li><p><a href="https://mcp.api.coingecko.com/">Coingecko Token (MCP)</a></p></li><li><p><a href="https://docs.privy.io/basics/get-started/using-llms">Privy Wallets (MCP)</a></p></li><li><p><a href="https://github.com/upstash/context7">Context7 (docs retrieval MCP)</a></p></li></ul><p><strong>(4) &#9989; Validation</strong>: Finally, you want to catch hallucinations or mistakes. You can do this by comparing historical onchain data to the outputs produced by your code. You can ask &#8220;Use Herd to look up relevant transactions based on our code, and check that the historical transaction results data matches the outputs from what we&#8217;ve built.&#8221; Some of these transactions likely already surfaced during the research/planning process, but it helps to explicitly tell the agent to check again.</p><p>Having the agent do this and document it also provides you with a reference you can share to help others build confidence in your/the agent's work, too.</p><div><hr></div><blockquote><p>&#129323; Herd is experimenting with tools that let you create modular actions and queries for simulating, transacting, and reading from the blockchain. DM/email me if you are interested in trying this out.</p></blockquote><p>Now you&#8217;re ready to go and safely build in crypto with your favorite agents/LLMs! You can always reach out to me at <strong>andrew@herd.eco</strong> or <strong>andrewhong5297</strong> on Twitter and Telegram for any questions or feature requests.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Unwrapping DeFi: The Evolution of Tokens, Pools, and Vaults]]></title><description><![CDATA[An overview of all the fundamentals and how billion dollar token flywheels are built onchain]]></description><link>https://read.cryptodatabytes.com/p/unwrapping-defi-the-evolution-of</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/unwrapping-defi-the-evolution-of</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 27 Oct 2025 15:36:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MV6x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s become the opinion of many (including <a href="https://www.youtube.com/shorts/fFIRAfRPzyg">BlackRock&#8217;s CEO Larry Fink</a> and <a href="https://www.coindesk.com/policy/2025/10/02/tokenization-is-going-to-eat-the-entire-financial-system-says-robinhood-ceo">Robinhood CEO Vlad Tenev</a>) that &#8220;everything will be tokenized&#8221;. While this statement feels sensationalist and easy to dismiss, it&#8217;s driven by the promise of much higher distribution, liquidity, and returns onchain than can be obtained offchain.</p><p>But if you don&#8217;t really understand crypto (underneath the tokens), it probably just looks like copycat stablecoins and some mystery yield are driving the newest wave of adoption. It becomes very hard to discern the underlying patterns and strategies at play, even though it&#8217;s all technically transparent and open on the blockchain. It&#8217;s also very easy to think that wild token incentives are still driving the growth. But the 2020-2023 era of pure incentives farming and rotations is mostly out the door.</p><p>Decentralized finance (defi) has evolved with each crypto cycle, each time condensing hundreds of years of learning from traditional finance and economics into onchain protocols that are more efficient, trustless, and permissionless than their offchain counterparts. First came wrapping assets into <strong>tokens</strong>, then wrapping tokens together into <strong>pools</strong> that facilitate lending and trading, and now wrapping those pools with portfolio management and complex structured product protocols called <strong>vaults</strong>.</p><p>The spread math for where yield comes from is conceptually simple: you can stack yields through multiple tokens by placing them in pools and vaults, where you earn fees from anyone using those tokens for financial transactions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MV6x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MV6x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MV6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg" width="418" height="362.01785714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1261,&quot;width&quot;:1456,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:226217,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/177260978?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MV6x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MV6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893386fb-a09f-47e1-abaa-a562086ec633_2148x1861.jpeg 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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 spreads already somewhat exist in traditional finance, but are only accessible to large intermediaries (banks/funds), who then give you that 1-cent yield in your Chase account. In crypto, it goes directly to you as the user/liquidity provider.</p><p>Both the opportunities and complexity in defi have gone up exponentially over the last five years - I want to take the time to unwrap it all for you. You must know these fundamental concepts and how they&#8217;re connected if you want to navigate defi:</p><ul><li><p><strong>Tokens</strong>: How billion-dollar token flywheels get built</p></li><li><p><strong>Pools</strong>: How tokens plug into markets for trading/lending, and capital efficiency</p></li><li><p><strong>Vaults</strong>: How liquidity is managed across pools for safer and higher yields</p></li></ul><p>This article will cover more of the business &#8220;what&#8221; and &#8220;why&#8221; behind these concepts, rather than the technical &#8220;how&#8221; at the code level. All three of the above are operated using &#8220;<a href="https://ethereum.org/developers/docs/smart-contracts/">smart contracts</a>&#8221; that are deployed in sets that work together as a &#8220;protocol&#8221;.</p><blockquote><p><em><a href="https://x.com/@herd_eco">@herd_eco</a> will be hosting a <a href="https://luma.com/event/manage/evt-nWUplhuHCK6hFrg">workshop (and happy hour) in NYC this Thursday, October 30th</a>, covering everything here and demoing our new product for creating/executing defi strategies and more.</em></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Understanding the Token Flywheel</strong></h2><p>A token is a smart contract that usually follows a specific standard (<a href="https://read.cryptodatabytes.com/p/every-erceip-explained-with-trends">ERC20, ERC721, ERC1155</a>). For stablecoin and aspiring blue-chip tokens, there are two fundamental goals:</p><ul><li><p>Sustainably manage the issuance and redemption of some asset, which gives it value</p></li><li><p>Create liquidity loops on top of token wrappers that expand the yield of the token and its prominence in the ecosystem</p></li></ul><p>Any token that can satisfy that dual mandate ends up with a strong growth flywheel:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rm5K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rm5K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rm5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg" width="666" height="396.58104395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1456,&quot;resizeWidth&quot;:666,&quot;bytes&quot;:236090,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/177260978?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rm5K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rm5K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52050ca3-7583-4657-8685-0f177712f660_2591x1543.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">This flywheel is not for pumping your market cap to a billion using CEX listing/DAT methods, a &#8220;billion dollars&#8221; here means usage of the token across defi.</figcaption></figure></div><p>It&#8217;s hard to follow a token across many constantly changing protocols (contracts), leading most people to think of a token as a singular asset and engage only in surface-level trading discussions. That&#8217;s the wrong way to think about a token.</p><p>Let&#8217;s start by understanding how token issuance and redemption are managed. Tokens with actual &#8220;collateral&#8221; underlying them usually have code modules that delegate minting and burning functionality to another contract or allowlist.</p><p>Below are some primary categories of stablecoins (with their owner/deploy date):</p><p><strong>Fiat Backed: </strong><a href="https://www.circle.com/blog/an-overview-of-usdc-and-circles-stablecoin-infrastructure">USDC</a> (circle, 2018), <a href="https://tether.to/ru/redeem-tethers-to-fiat-currency/">USDT</a> (tether, 2017), <a href="https://www.paxos.com/mint-and-redeem">PyUSD</a> (paypal, 2023)</p><ul><li><p>1:1 pegged redemptions, with treasury bills (T-bills) and other high-quality liquid assets held offchain as backing. Most of the time it&#8217;s offchain, but <a href="https://www.liquity.org/bold">some do onchain redemptions</a> (Bold, Liquity). Anyone can now launch something similar by pairing Bridge (acq by Stripe) for offchain issuance/reserve management and m0 for onchain liquidity/cross-chain token management (<a href="https://metamask.io/news/introducing-metamask-usd-your-dollar-your-wallet">mUSD</a>, Metamask)</p></li></ul><p><strong>Over-Collateralized: </strong><a href="https://github.com/sky-ecosystem/intro-docs/blob/main/overview/dai.md">Dai</a> (Maker/Sky, 2019)</p><ul><li><p>Users &#8220;borrow&#8221; these tokens against collateral (originally ETH) they deposit, paying a borrow rate (stability fee) on the position. This pattern is called a collateralized debt position (CDP). Maker also offers a savings rate (akin to the Fed funds rate) on the token. The protocol can adjust both of these to maintain supply and demand and the soft $1 peg.</p></li></ul><p><strong>&#8220;Algorithmic&#8221; Stablecoins: </strong><a href="https://www.gate.com/learn/articles/what-are-tribe-and-fei-all-you-need-to-know-about-tribe/4901">Fei/Tribe</a> (Fei Protocol, 2021), <a href="https://www.coindesk.com/learn/the-fall-of-terra-a-timeline-of-the-meteoric-rise-and-crash-of-ust-and-luna">UST/luna</a> (Terra, 2021)</p><ul><li><p>Tries to use fancy dual-token tokenomics to uphold value and prevent a run on collateral. None of them worked, but they&#8217;re worth reading about.</p></li></ul><p><strong>Delta-Neutral: </strong><a href="https://docs.ethena.fi/how-usde-works">USDe</a> (Ethena, 2023), <a href="https://docs.neutrl.fi/protocol-mechanics/smart-contract-architecture">Neutrl</a> (Neutrl, 2025)</p><ul><li><p>Users can deposit collateral (a specified set of tokens, such as ETH, USDT, etc.) to mint USDe, and Ethena takes a hedge against the collateral in open markets. This hedge is taking a short position on perps to earn money from the funding rate (which pays shorts most of the time) and protect against collateral value drops. Ethena has started offering a <a href="https://www.megaeth.com/blog-news/megaeth-introduces-usdm">stablecoin launching service</a> to manage both the issuance (partnered with <a href="https://www.businesswire.com/news/home/20250723391461/en/Anchorage-Digital-Partners-with-Ethena-Labs-to-Launch-the-First-GENIUS-Compliant-Federally-Regulated-Stablecoin">Anchorage</a>) and the yield onchain.</p></li></ul><p>You can read more about these different types of tokens <a href="https://www.galaxy.com/insights/research/the-state-of-onchain-yield">in this article</a>. Generally, they have evolved to require more diverse sets of collateral with less over-collateralization (the delta-neutral strategies like Ethena are at 101% collateralization, versus Dai at around 270%). The algo stablecoin era is over due to the highly unpredictable nature of the fancy tokenomics model.</p><p>Next, let&#8217;s talk about wrapper tokens and their role in the flywheel. The canonical example of a wrapper token is <a href="https://herd.eco/ethereum/contract/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/summary">WETH</a> (Wrapped ETH), which turns the native ETH chain asset into an ERC20 token. This is necessary because most contracts are built around the ERC20 token standard, so converting to WETH simplifies the logic. You can also unwrap the WETH into ETH at any time, redeeming the underlying ETH. The amount of ETH is just tied to the amount of WETH, and has no ties to the wallet that originally wrapped it.</p><p>Wrapper tokens can be used by protocols to represent:</p><ul><li><p>Interest/reward accrual, where the wrapper balance is <a href="https://updraft.cyfrin.io/courses/advanced-foundry/cross-chain-rebase-token/what-is-a-rebase-token">automatically increased over time</a> (like lending in <a href="https://aave.com/docs/developers/smart-contracts/tokenization">Aave</a> aTokens). Sometimes these are referred to as &#8220;rebasing&#8221; tokens.</p></li><li><p>Breaking down the underlying token into more modular pieces, such as splitting a yield token from Aave into principal and yield tokens (<a href="https://app.pendle.finance/trade/education/learn?level=1">pendle</a>). Or turning an NFT into a set of fungible tokens for fractional ownership (<a href="https://fractional.gitbook.io/fractional">fractional.art</a>).</p></li><li><p>Wrapping many underlying tokens at once, such as in a liquidity pool (<a href="https://docs.uniswap.org/contracts/v2/concepts/core-concepts/pools#pool-tokens">Uniswap</a>) when you need to represent both tokens in the pair or in a vault where the wrapper represents a share of all tokens in the vault contract (<a href="https://docs.morpho.org/learn/concepts/vault/">MetaMorpho</a>).</p></li></ul><p>I gave only one example protocol for the cases here, but these are all common patterns used by hundreds of protocols on Ethereum.</p><p>Because wrapper tokens follow ERC standards, they can often be reused in other protocols. Let&#8217;s examine USDe (the best new example of a strong token flywheel, with a $12bn market cap as of 2025/10/22). You could stake it for revenue share from <a href="https://docs.ethena.fi/solution-design/staking-usde">Ethena&#8217;s protocol revenue</a> to get sUSDe, split that yield (YT-sUSDe) and principal (PT-sUSDe) <a href="https://app.pendle.finance/trade/education/learn?level=1">using Pendle</a>, supply the principal token into a <a href="https://app.morpho.org/ethereum/market/0x79b4e55cef9e7c214b5cc965e1984229ada26a66051e35366a75c4d92b776735/pt-srusde-15jan2026-usdc">Morpho Market</a> to earn on PT-sUSDe/USDC, or deposit into a <a href="https://app.morpho.org/ethereum/vault/0xd41830d88dfD08678b0B886E0122193d54b02Acc/mev-capital-pts-usdc">Morpho vault</a> that holds a more diversified set of positions (where the PT market position may make up 40% of the vault) to get MC_PTS. Don&#8217;t worry if this jargon doesn&#8217;t make sense to you - we&#8217;ll review the types of pools and actions behind these wrappers next. The flow looks like this:</p><p><strong>USDe </strong>-(stake)-&gt;<strong> sUSDe </strong>-(strip)-&gt; <strong>PT-sUSDe and YT-sUSDe </strong>-(supply)-&gt;<strong> PT-sUSDe/USDC </strong>-(vault)-&gt;<strong> MC_PTS</strong></p><p>You could consider all of the following wrappers as &#8220;extensions&#8221; of the base USDe token. They have some set of extended value and capabilities that the base token does not. When analyzing a token, look for all the wrappers around it to understand its full value and growth (easier said than done, I know).</p><h2><strong>How Pools Work and Make Money</strong></h2><p>In the examples above, the wrapper token returned represents a share of a &#8220;pool,&#8221; which is the contract into which the underlying token is deposited. Pools have become a blanket term for any contract that holds the token deposits of many different users at once, to be easily utilized by other users. It&#8217;s a peer-to-peer (P2P) system with a protocol that manages all ownership, math, and order-matching logic. The point of pools has always been to maximize capital efficiency for a set of financial orders/actions and to earn usage fees paid to users.</p><p>Here are the main types of pools you need to know, in the order that they were developed and became popular in the ecosystem:</p><blockquote><p><strong>Lending Pools (Money Markets):</strong></p></blockquote><p><strong>Actions</strong>: Lend, Borrow, Loop</p><p><strong>Wrapper: </strong>Rebasing token on either the lent or borrowed amount, based on the interest rate (floating).</p><p><strong>History: </strong>CDPs (like over-collateralized DAI borrowing) kicked off basic onchain lending, with Aave and Compound launching pooled money markets in 2019 where users could lend and borrow from shared liquidity. The pools all have some interest rate curve that has some target &#8220;utilization rate&#8221; that <a href="https://aavescan.com/">defines the supply and borrow rates</a>. The slope increases slowly until the target is reached, then becomes very steep until 100%. Each token also has a custom set risk profile which determines the Loan-to-Value and Liquidation-Loan-to-Value parameters - <a href="https://aave.com/docs/resources/parameters">Risk profiles and LTV/LLTV</a> are set on the collateral, defining how much you can borrow against it. From 2020 to 2023, we saw many attempts to make collateral management and liquidation auctions more efficient (see Rari isolated pools, Alchemix self-paying loans, and B-protocol pooled liquidations). This is also where &#8220;flash loans&#8221; came from, where you can borrow and repay a large sum of money within one block with zero collateral.</p><p><strong>Key Trend: </strong>Tokens have to be manually added to these markets <a href="https://aave.com/help/governance/proposals">through governance proposals</a> (with <a href="https://docs.euler.finance/developers/evc/">some exceptions</a>), leading to some <a href="https://www.reddit.com/r/CryptoCurrency/comments/z2wdgi/a_detailed_explanation_of_what_happened_with_crv/">heavily contentious discussion about riskier assets like CRV</a> and other bad actors attempting to game the pool systems. As the crypto space onboards more institutions and adds <a href="https://x.com/merlinegalite/status/1981347703440240928?s=46&amp;t=5HZUtpkwvua3hPnZXUkl6g">RWAs as collateral</a>, the requirements and counterparty risks of pools will become even more sensitive. On the institutional side, you don&#8217;t want to mix KYC and non-KYC funds so you end up with allowlisted pools like <a href="https://aave.com/blog/horizon-launch">Aave Horizon RWA</a>. For accessing a wider range of institutional borrowers and enabling undercollateralized lending, we see products taking normal deposits into a pool but then lending out to borrowers through privately managed and credit scoring/slashing methods (<a href="https://maple.finance/insights/yield-generation-underwriting-and-risk-management">Maple</a> and <a href="https://www.3jane.xyz/pdf/whitepaper.pdf">3Jane</a> respectively). This will be interesting to watch as we see thousands of stablecoins and RWAs get launched, because you will have this tension between issuers wanting to access the yield benefits of all these pools by being added in, but also the protocols managing the pools have to satisfy the institutional requirements which means being strict about the asset classes and participants allowed.</p><blockquote><p><strong>Trading Pools (Liquidity Pools)</strong></p></blockquote><p><strong>Actions</strong>: Add/Remove Liquidity, Swap</p><p><strong>Wrapper: </strong>LP tokens, which redeem for an equal share of the underlying pool tokens plus trading fees earned (usually configured between 0.05%-1% of volume). This pool token balances may have changed since the deposit, leading to <a href="https://www.coinbase.com/learn/crypto-glossary/what-is-impermanent-loss">impermanent loss</a> (it&#8217;s permanent).</p><p><strong>History</strong>: What started as a two-token pair with Uniswap&#8217;s <a href="https://docs.uniswap.org/contracts/v2/concepts/protocol-overview/how-uniswap-works">xy=k curve</a> to create an automed market maker (AMM) has evolved mostly in math and the granularity of the price curves (exchange rates) to improve <a href="https://0x.org/post/what-is-price-impact">price impact</a> and idle liquidity in pools. There have been <a href="https://docs.curve.finance/stableswap-exchange/overview/">stablecoin-specific curves</a>, <a href="https://medium.com/@kinaumov/back-to-the-basics-uniswap-balancer-curve-e930c3ad9046">weighted 8 token curves</a>, <a href="https://docs.uniswap.org/concepts/protocol/concentrated-liquidity">concentration curves to manage liquidity in specific tick ranges</a> so that you can control impermanent loss, and most recently pool <a href="https://docs.uniswap.org/contracts/v4/concepts/hooks">hooks</a> to allow more composability with other protocols before/during/after each swap. Unlike lending pools, liquidity pools have always been permissionless, so anyone can add any tokens to them (because pairs don&#8217;t affect each other in a &#8220;collateral&#8221; sense). A lot of focus in the last year has also been on token launchpads, which are heavily influenced by the trading curve tied to the initial liquidity. There have been many new protocols like <a href="https://medium.com/@buildwithbhavya/the-math-behind-pump-fun-b58fdb30ed77">pump.fun</a>, <a href="https://clanker.gitbook.io/clanker-documentation/references/core-contracts/v4">clanker</a>, <a href="https://docs.doppler.lol/how-it-works/publish-your-docs">doppler</a> (used by zora) with unique liquidity bootstrapping or bonding curves that give a token more initial momentum, price discovery, and/or anti-sniper mechanisms.</p><p><strong>Key Trend: </strong>Both lending and liquidity pools aim to minimize idle capital, so new protocol versions have introduced extensions that enable more seamless capital transfer between the two. Some examples are <a href="https://docs-v2.balancer.fi/concepts/pools/boosted.html#case-study-bb-a-usd">Balancer boosted pools</a> which keep idle liquidity in a yield-bearing pool (like Aave), or Uniswap hooks that allow protocols like <a href="https://docs.euler.finance/concepts/advanced/euler-swap/">Eulerswap</a> to push liquidity from their lending pool into Uniswap for JIT swaps. This kind of rebalancing is becoming more popular within each pool, too, with protocols like <a href="https://docs.arrakis.finance/text/arrakisPro/strategies/overview.html">Arrakis</a> managing concentrated liquidity price targets and <a href="https://docs.morpho.org/curate/tutorials-v1/public-allocator/">Morpho&#8217;s PublicAllocator</a> for balancing the target rate across lending pool markets.</p><p><em>There&#8217;s a lot more to be said on the constant debate about how orders are matched for trading pairs, be it AMMs, CLOBs, intent market makers, perp DEXs, etc. But those differences aren&#8217;t really relevant to the point of this article. For another time!</em></p><blockquote><p><strong>Staking Pools (Insurance Funds)</strong></p></blockquote><p><strong>Actions</strong>: Stake, Lock</p><p><strong>Wrapper: S</strong>ome token with &#8220;s&#8221; in front of it, usually earning some split of protocol revenue.</p><p><strong>History</strong>: With staking, you are usually putting up your tokens to be potentially slashed (losing stake) in a black swan/negative event. This can range from staking ETH on a validator and <a href="https://eth2book.info/latest/part2/incentives/slashing/">getting slashed</a> if you fail a block proposal, to <a href="https://aave.com/docs/developers/umbrella">absorbing bad debt</a> from lending pools like Aave. Sometimes it&#8217;s just meant to be a lockup to prevent immediate selling, so supply is more stable - Ethena does this with <a href="https://docs.ethena.fi/solution-design/staking-usde">USDe -&gt; sUSDe</a>. In all these cases, the protocol will often share some revenue directly with stakers for taking on the extra risk/illiquidity.</p><p><strong>Key Trend: </strong>Staking has always been and will continue to be a core component of maintaining protocol security and providing initial yield to users. It&#8217;s the simplest of the pools here, but core to the token flywheel. You might hear people say &#8220;restaking&#8221; which just means using an existing blue-chip token to stake in a different protocol (instead of issuing a protocol native token) - it&#8217;s the same staking mechanics, don&#8217;t overthink it.</p><blockquote><p><strong>Incentivized Pools (Gauges)</strong></p></blockquote><p><strong>Actions</strong>: Vote</p><p><strong>Wrapper: </strong>was common to add &#8220;ve&#8221; to the token being staked, starting with Curve (veCRV). You earn the protocol token as yield, on top of the usage fees from liquidity/lending pools.</p><p><strong>History</strong>: Let&#8217;s say you&#8217;re a token issuer and you have all these lending/liquidity pools with somewhat similar yields. How can you push users to choose your tokens&#8217; pools over another? By adding token incentives that can be earned, of course! Many protocols (regardless of if it&#8217;s a token, pool, vault, etc) will launch a protocol token for governance/ownership purposes. These can then be used to pay out liquidity providers over time (called &#8220;emissions&#8221;). So a pool protocol (like Aave) can emit tokens for deposits into their pools, and then Ethena could add ENA incentives on top of specifically the aEthUSDe Aave pool for more rewards. Emission pools emerged as a way to direct token incentives to specific liquidity or lending pools, helping protocols compete for user liquidity. Curve pioneered this model with <a href="https://www.cube.exchange/what-is/vetokenomics">vote-escrow (ve) mechanics</a>, allowing tokenholders to lock CRV and vote on where emissions should flow (to boost their own rewards) in &#8220;gauges&#8221;. There were then many pooling layers built on top to fight for voting majority in the underlying protocol pools - such as Yearn, Convex, Tokemak, Butterfly, and Olympus. This happened in tandem with the airdrop and vampire attack era, where teams like Sushiswap would fork other protocols and do heavy incentives to drain usage from competitors. This is where the 1670% yields came from.</p><p><strong>Key Trend: </strong>It was an ugly but notable part of defi pool history, incentivized pools still exist but are much tamer than before. See <a href="https://www.aerodrome.finance/vote">aerodrome</a> and <a href="https://app.pendle.finance/vependle/vote">pendle</a> for some modern examples of incentive pool voting. The good news is that a lot of the technology they built transitioned well into &#8220;vaults&#8221; for more serious defi strategy management. Yearn and Tokemak (Auto Finance) are two that have stuck around the post-farming era.</p><blockquote><p><strong>Strategy Pools (Vaults)</strong></p></blockquote><p><strong>Actions: </strong>Deposit, Redeem</p><p><strong>Wrapper: </strong>shares of the vault token, as a percentage. The percentage ensures you can automatically redeem any earned interest on any tokens in the vault.</p><p><strong>History: </strong>Vaults largely emerged from the emissions- and incentive-based farming era mentioned above. They&#8217;re now standardized with ERC4626, and are fully focused on efficient allocation and rebalancing across pools. I&#8217;ll talk a lot more about vault structures in the next section instead of yapping here.</p><blockquote><p><strong>Structured Pools (Structured Finance)</strong></p></blockquote><p><strong>Actions</strong>: Strip, Split</p><p><strong>Wrapper: </strong>Really can be anything that represents a component of the underlying token (and what it owns/earns). The goal is to create a more liquid wrapper token. Commonly &#8220;L&#8221; prefixed, such as LSTs, LYTs, LRTs, Liquid lockers etc.</p><p><strong>History</strong>: These are pools that take in an asset and restructure it into smaller components. Breaking tokens down creates more opportunities for wrapper reuse. Pendle has been the most successful example of this with <a href="https://app.pendle.finance/trade/education/learn?level=2">principal (PT) and yield (YT) tokens stripped from yield-bearing tokens</a> being implemented all across defi. There have been many attempts at &#8220;fractionalization&#8221; as well during the NFT cycle in 2022, such as turning NFTs into fungible shares for <a href="https://fractional.gitbook.io/fractional">fractional ownership</a>.</p><p><strong>Key Trend: </strong>As defi becomes more mature, we can expect to see many more protocols that convert traditional structured finance products into their crypto native counterparts. This kind of pool is the most technically complex to implement and usually tough to communicate and coordinate with users.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Vault Management and Yield Strategies</strong></h2><p>Many of these pools have yields that are isolated from one another at a protocol level but dependent through wrappers. How can a user easily manage all these wrappers and pools to optimize yield? The answer lies in &#8220;strategies&#8221;.</p><p>From 2019-2022, users had to discover and manage strategies across tokens and pools individually. Some popular strategies included &#8220;levering up&#8221; on positions, for example in a lending pool if you deposited $100 of ETH you could borrow $80 of USDC, swap that into ETH, and deposit it again to earn extra yield. You&#8217;re taking on the risk of getting liquidated if ETH price falls below the LTV, but otherwise earning yield (assuming the USDC borrow rate &lt; ETH supply rate). Getting into the various farming vaults often required going through a set of swap/pool/stake steps across multiple transactions. To get around this, solidity developers would aggregate the function calls in a separate contract so that a user could sign just one transaction to enter some position - this was called a &#8220;zap&#8221; (first seen in <a href="https://defiprime.com/defizap">defi zap</a>). Products like Zapper, Instadapp, and Defisaver then built out numerous contracts for zapping into each new protocol that popped up, like a game of whack-a-mole. These are not simple to deploy either, given the security risks - you can <a href="https://docs.defisaver.com/">read about Defisaver&#8217;s architecture</a> for a glimpse of the complexity. As one would expect, it became impossible for any one team to keep up with every new defi protocol/version/vault. The retail products for stuff like this today do have 10x better UX than in 2020 - everything from leverage management with the products mentioned above or portfolio/ETF management with products like <a href="https://app.reserve.org/">Reserve</a> and <a href="http://glider.fi/">Glider.fi</a>.</p><p>So, naturally, it makes sense to have users deposit into a vault that manages different zaps themselves - and just call them &#8220;strategies&#8221; instead. Most vaults today follow the <a href="https://ethereum.org/developers/docs/standards/tokens/erc-4626/#mapoftheinterface">ERC4626 standard</a>, which consists of:</p><ul><li><p>A user who deposits some token into the vault to get a <strong>vault wrapper token</strong> representing a percentage share of all tokens in the vault, where that share includes any yield earned in the vault that can be redeemed anytime.</p></li><li><p>Functions in the vault for managing &#8220;<strong>strategies</strong>&#8221; that move around tokens and positions (sometimes these functions are called &#8220;adapters&#8221; since they have custom logic that needs to be adapted to specific protocols and pools).</p></li><li><p>A <strong>curator</strong> who defines and executes the strategies over time and adds/removes tokens.</p></li></ul><p>As with any ERC standard, there end up being many extension standards on top of the base standard (ERC4626), such as <a href="https://eips.ethereum.org/EIPS/eip-7540">ERC7540</a>. These extensions aren&#8217;t always made into a standard, and may be protocol specific such as the adapters in <a href="https://github.com/morpho-org/vault-v2/tree/main/src/adapters">Morpho vaults v2</a>.</p><p>The vault strategies right now are pretty similar: a vault supplies tokens to a set of lending/liquidity pools. Most of them don&#8217;t take on much/any leverage. For the more manually managed vaults, the best example is how Morpho curators work by <a href="https://docs.morpho.org/curate/tutorials-v1/manage-allocations/">managing caps and flows across different markets</a>. <a href="https://yearn.fi/v3">Yearn</a> and <a href="https://app.lagoon.finance/">Lagoon</a> are other great examples. Then there are more protocol automated vaults like <a href="https://sommelier-finance.gitbook.io/sommelier-documentation">Sommelier</a> and <a href="https://docs.beefy.finance/beefy-products/vaults">Beefy</a>. Vaults works for trading strategies too, see <a href="https://app.hyperliquid.xyz/vaults">Hyperliquid Vaults</a>. We&#8217;re in a period right now where teams are figuring out how to build the most flexible vaults (access the most pools/tokens) and execute and manage strategies within them.</p><p>The yield structure for the user (depositor) looks something like this (<a href="https://app.morpho.org/base/vault/0x27D8c7273fd3fcC6956a0B370cE5Fd4A7fc65c18/seamless-weth-vault">Morpho vault</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_!SXfB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SXfB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SXfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg" width="291" height="345" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:345,&quot;width&quot;:291,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9279,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/177260978?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SXfB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SXfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32f0d0b-0045-4285-a9f0-486a990bb18a_291x345.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://app.morpho.org/base/vault/0x27D8c7273fd3fcC6956a0B370cE5Fd4A7fc65c18/seamless-weth-vault">Morpho Vault</a></figcaption></figure></div><p>The &#8220;native fee&#8221; comes from underlying lending pool utilization across allocations, the MORPHO and SEAM tokens are emissions on top, and the vault curator takes a hefty 15% performance fee.</p><p>Now, vaults do have <a href="https://x.com/Togbe0x/status/1982551032053051738">a transparency problem</a>, in that users don&#8217;t always understand what strategies are actually underneath them. That&#8217;s something we&#8217;re hoping to help with using Herd, soon. Be careful when depositing into high-yield vaults.</p><p><strong>Now tying everything we&#8217;ve learn back together in the token flywheel using the Ethena stablecoin USDe as the example, we get a flow diagram like this:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JE4A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JE4A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JE4A!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg" width="932" height="398.78846153846155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:623,&quot;width&quot;:1456,&quot;resizeWidth&quot;:932,&quot;bytes&quot;:398911,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/177260978?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JE4A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JE4A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe38e150e-995b-4f7c-b8de-434c8b990be7_3056x1308.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 pool, wrapper, and vault adds to the value of the base USDe token, and as Ethena grows, the ecosystem will push for more complex pools and vaults to be built on top. All this creates more demand for minting the USDe token.</p><p>Naturally, the token issuer wants to own as much of this flywheel yield as possible. So it&#8217;s becoming more popular for the token issuer to offer vaults of their own, see <a href="https://app.perena.org/invest/jlpdn">Perena</a> and <a href="https://docs.midas.app/liquid-yield-token">Midas</a> (tbd on how safe these are, I have just seen them mentioned here and there).</p><h2><strong>Concluding Thoughts</strong></h2><p>If you made it this far - first off, props for actually reading in the age of AI - you should now understand the history and growth of defi much better. Next time someone talks about a token or pool, you&#8217;ll know how to traverse the web of related tokens, pools, and vaults to have a much more nuanced discussion.</p><p>There is a growing problem with executing transactions across all these different strategies. Herd is working on a new standard and AI for easily composing these transactions, stay tuned for the follow-up article on our new product (or <a href="https://luma.com/ucqxa409">come to our event in NYC this Thursday, Oct 30th</a> to see the live demo).</p><p>I&#8217;ll also note that I&#8217;ve left out many lower-level concepts and nuances related to token, pool, and vault operation risks. Many of these risks revolve around how to price a token across protocols, getting into the oracle problem (aggregating off-chain price feeds/calculations onchain as a source of truth for token prices) - I recommend searching up the <a href="https://defillama.com/oracles">oracles listed here</a>. As well as the <a href="https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest">dark forest of MEV/sniper bots</a> that run behind the scenes. If people enjoy this article, I can do another one on the operational &#8220;how&#8221; side of defi that covers these deeper and more difficult topics.</p><p>I&#8217;m always open to chat about any of this if you dm me - be it questions, critiques, or ideas!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Vibe Coding a Batch Swap App using 0x, Dune, and EIP5792/7702]]></title><description><![CDATA[Learn how to vibe code a swap app on top of a Herd trail that makes integrating 0x and Dune balances a breeze! We'll batch all swaps in one go using the new EIP5792/7702 standards.]]></description><link>https://read.cryptodatabytes.com/p/vibe-coding-a-batch-swap-app-using</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/vibe-coding-a-batch-swap-app-using</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Thu, 28 Aug 2025 15:26:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6ibc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Swapping tokens is one of the most fundamental parts of crypto, yet learning to integrate all the required pieces and data to build a swap app is no simple feat.</p><p>That is, until today. I created <a href="https://herd.eco/trails/01981008-788e-7612-b501-b7f568328ef2/overlook">a trail on Herd</a> that combines a Dune balances API with the 0x swap contracts, to make building this app trivial for anyone.</p><blockquote><p><strong>ICYMI</strong>: We built a next generation block explorer called Herd (<a href="https://herd.eco/">herd.eco</a>), available to everyone! We built it to make <a href="https://x.com/herd_eco/status/1953141420262343135">exploring onchain and building apps 100x easier</a>. You can go to <a href="https://docs.herd.eco/">our docs</a> for a quick overview.</p><p>Our main feature is called a &#8220;<a href="https://docs.herd.eco/herd-app/coterminal-trails">trail</a>&#8221;, which is a series of onchain functions optimized for human readability and LLM tools (like v0 and cursor).</p><p>We <a href="https://discord.com/invite/NsfPWZZuKU">have a Discord</a> you can join to meet other trailblazers and ask questions.</p></blockquote><p>I&#8217;ll walk through how I built this trail and then vibe coded the app, breaking down key concepts and components along the way. There is a full video guide covering everything in this article in much more depth too:</p><div id="youtube2-UE5lxCHncA0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;UE5lxCHncA0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/UE5lxCHncA0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em><strong>&#128073; You don&#8217;t need to be technical, we&#8217;ll be using a simple no-code interface and code agents for this whole guide.</strong></em></p><p>Key reference links:</p><ul><li><p><a href="https://herd.eco/trails/01981008-788e-7612-b501-b7f568328ef2/overlook">The swap trail</a></p></li><li><p><a href="https://v0-batch-swap-tokens.vercel.app/">The app</a></p></li><li><p><a href="https://github.com/andrewhong5297/v0-batch-swap-tokens">The github repo</a></p></li><li><p><a href="https://v0.app/chat/batch-swap-tokens-mkLa0DpsaGL">The v0 chat</a></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Building the Trail</h2><p>First, we start by adding a &#8220;primary step&#8221; to the trail, which means a function that will be executed to create a transaction onchain. We click &#8220;add step&#8221;, and then toggle to the &#8220;swap&#8221; tab to add the swap component to our trail. This uses the <a href="https://0x.org/docs/0x-swap-api/introduction">0x dex aggregator</a> to route swaps between one token to another, with a specified &#8220;sell&#8221; amount. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I6JB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I6JB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 424w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 848w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 1272w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I6JB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png" width="502" height="323.6447105788423" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11c969a2-343e-442c-8e90-571ddf671119_1002x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1002,&quot;resizeWidth&quot;:502,&quot;bytes&quot;:71377,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.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_!I6JB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 424w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 848w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 1272w, https://substackcdn.com/image/fetch/$s_!I6JB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11c969a2-343e-442c-8e90-571ddf671119_1002x646.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/trails/01981008-788e-7612-b501-b7f568328ef">Try it yourself, you can &#8220;fork&#8221; this trail then add a step</a></figcaption></figure></div><p>So in the &#8220;edit&#8221; panel, we can see there is a buy_token_address, sell_token_address, and sell_token_amount. We&#8217;ll creator_hardcode the buy token to USDC, and let the user choose which sell token they want to use and how much of it to sell.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PPpT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PPpT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 424w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 848w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 1272w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PPpT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png" width="584" height="361.75555555555553" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1440,&quot;resizeWidth&quot;:584,&quot;bytes&quot;:132048,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.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_!PPpT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 424w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 848w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 1272w, https://substackcdn.com/image/fetch/$s_!PPpT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7947d4d-c152-4c2a-a8c1-76d32179db1d_1440x892.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">click the node, then go to &#8220;edit inputs&#8221;</figcaption></figure></div><p>You&#8217;ll notice it says &#8220;user_input&#8221; before the form field, this is a derive method. We support many derive methods for inputs, such as using read functions and events, typescript code, and more - <a href="https://docs.herd.eco/herd-app/canvas-creating-trails#derive-methods">read about them here</a>.</p><p>You could publish the trail now to test it out in the overlook (a simple sandbox that comes with each trail), where inputting 0.1 ETH (0x000&#8230;) gives us this swap:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pvRW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pvRW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 424w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 848w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pvRW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png" width="496" height="596.5536062378168" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1234,&quot;width&quot;:1026,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:202806,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.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_!pvRW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 424w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 848w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!pvRW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f7ff39c-50e2-4f81-a650-fc0eb698e865_1026x1234.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Note that this is exactly what the trail API returns to the app later too</figcaption></figure></div><p>Next, we need to know the balances of the user&#8217;s wallet to be able to know what tokens and amounts can be swapped. Dune&#8217;s <a href="https://docs.sim.dune.com/evm/balances">SIM balances API</a> is a perfect tool for this, giving us the tokens with their balances, USD values, and metadata in a single call. We add this to a code node like so, and enable the read API:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1fO-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1fO-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 424w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 848w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1fO-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png" width="655" height="503.3962912087912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1119,&quot;width&quot;:1456,&quot;resizeWidth&quot;:655,&quot;bytes&quot;:303112,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.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_!1fO-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 424w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 848w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!1fO-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe146aae-3d23-46dc-8611-7347d7ecf7ef_1834x1410.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 can easily test the code node, which give us this response:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VUNa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VUNa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 424w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 848w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 1272w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VUNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png" width="494" height="550" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:550,&quot;width&quot;:494,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173422,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.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_!VUNa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 424w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 848w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 1272w, https://substackcdn.com/image/fetch/$s_!VUNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63665186-c18b-4f18-aeaa-c4829a811d46_494x550.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>And that&#8217;s all we need in the trail! Now it&#8217;s time to build the app.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Building the App</h2><p>To start, we create an app in Herd and copy the guidebook prompt from the trail. All you need to do is click the &#8220;guidebook&#8221; button and then copy the prompt link</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lpVt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lpVt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 424w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 848w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 1272w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lpVt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png" width="552" height="460.9255533199195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:994,&quot;resizeWidth&quot;:552,&quot;bytes&quot;:124040,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.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_!lpVt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 424w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 848w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 1272w, https://substackcdn.com/image/fetch/$s_!lpVt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c875128-2cbf-4793-a188-bf0cf801d3f4_994x830.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 prompt is just a long llms text file that covers how to integrate the trails API and each of the steps. You can read <a href="https://trails-api.herd.eco/v1/trails/01981008-788e-7612-b501-b7f568328ef2/versions/01981008-7892-747d-adfe-4fbf2281aac9/guidebook.txt?promptObject=web_app&amp;trailAppId=0198e91b-bf69-7e45-80b6-182589306b09">the one for this trail here</a>, and <a href="https://docs.herd.eco/herd-app/guidebook-llm-api">our docs</a> cover the guidebook in more detail.</p><p>We start by prompting v0 to create a simple mobile app that loads the tokens and lets users select any number of tokens as well as some percentage to sell (10%, 50%, 100%). One v0 starts to struggle on some harder requests, I moved to Cursor by creating a GitHub repo, so that they can share the same code and I can use the more powerful agent that Cursor provides. This part is easier to follow in the youtube video, so I won&#8217;t do screenshots here. With some UI tweaking, we end up with this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6ibc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ibc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 424w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 848w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 1272w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ibc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png" width="374" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:374,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173253,&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://read.cryptodatabytes.com/i/172123670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.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_!6ibc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 424w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 848w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 1272w, https://substackcdn.com/image/fetch/$s_!6ibc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458234b9-881e-412c-bfd3-3537836f2f4c_374x700.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>For batching all swaps in one transaction, I just fed it the <a href="https://viem.sh/docs/actions/wallet/sendCalls">sendCalls and waitForCallsStatus</a> from the viem docs to basically call the trail once for each selected token to get the swap calldata, and then batch all of them at once. This uses EIP7702 by default with a fallback to EIP5792 if wallet doesn&#8217;t support it. EIP7702 is a standard where you can treat your wallet as a proxy and set an &#8220;implementation&#8221; contract, meaning that you can now call your wallet from your wallet to call a function on the contract (i.e. your address is both the &#8220;from&#8221; and &#8220;to&#8221; on the transaction). This requires setting up this delegation, which some wallets might not have done yet. So, EIP5792 is just a wallet standard that allows you to just sign many transactions in one signature but each one is still sent onchain separately (effectively still providing you the same UX improvements).</p><p>And that&#8217;s it! In less than half an hour, you have a fully functional and sleek swap app. Please try it out yourself and share your app with me when you&#8217;re done! We have a <a href="https://discord.com/invite/NsfPWZZuKU">community Discord</a> where you can reach out if you have any questions or problems.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Explore Clanker (Token Launchpad) and Build an App without Coding]]></title><description><![CDATA[Learn to leverage our new Herd LLM Explorer to analyze protocols at 100x the speed and easily create applications - starting with one of the most popular token launchpads on Base.]]></description><link>https://read.cryptodatabytes.com/p/explore-clanker-token-launchpad-and</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/explore-clanker-token-launchpad-and</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Sat, 16 Aug 2025 15:13:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HE90!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;ve spent the last 8 months building a next generation block explorer called Herd (<a href="https://herd.eco">herd.eco</a>), and am excited to announce that it&#8217;s finally available to everyone! We built it to make <a href="https://x.com/herd_eco/status/1953141420262343135">exploring onchain and building apps 100x easier</a>. You can go to <a href="https://docs.herd.eco/">our docs</a> for a quick overview.</p><p>I know that it&#8217;s been a long time since I&#8217;ve posted here, and I&#8217;m excited to get back into creating guides for you guys again &#129303;</p><blockquote><p><em>Herd has a <a href="https://discord.com/invite/NsfPWZZuKU">Discord server too, come join</a> and learn about new protocols and apps with the community.</em></p></blockquote><div><hr></div><h2>From Launchpad Protocol to Launcher App in Minutes</h2><p><a href="https://herd.eco/protocol/clanker?blockchain=base">Clanker</a> is a token launchpad that has created over 300k+ tokens and done $3bn+ of trading volume. It&#8217;s a crowd favorite that started off on <a href="https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster">Farcaster</a> in 2024, and has gone through multiple protocol versions (new contract deployments) since.</p><p>I built this simple token launcher app on top of Clanker in just a few minutes (no code at all) using <a href="https://v0.app/">v0</a> and <a href="https://www.cursor.com/">cursor</a>, by leveraging a one-click copy/paste prompt from Herd.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xcGR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xcGR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 424w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 848w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 1272w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xcGR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png" width="570" height="492.0947802197802" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1257,&quot;width&quot;:1456,&quot;resizeWidth&quot;:570,&quot;bytes&quot;:582366,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.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_!xcGR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 424w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 848w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 1272w, https://substackcdn.com/image/fetch/$s_!xcGR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850d5243-8185-4a8f-b321-4ff032c42910_1796x1550.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://v0-split-revenue-token-launcher.vercel.app/">link to app</a></figcaption></figure></div><p>And all I had to do was copy and paste <a href="https://herd.eco/trails/0197137c-2be8-7c84-a6dd-69a6daa97026/overlook">the &#8220;guidebook&#8221; from a Herd trail</a>, which creates a specialized LLM prompt for any AI to easily build on top of these contracts:</p><p>What is a trail? How does building the app without coding work? Where does the Herd explorer fit into this? I know, I know, it&#8217;s a lot. Let&#8217;s starting by using Herd  to find and understand a few key contracts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Exploring and Understanding Clanker Contracts</h2><blockquote><p>Our goal is to understand the full user journey of Clanker, meaning &#8220;what are all the functions a user is expected to call, with what variables and in what order?&#8221;</p></blockquote><p>Here&#8217;s a video that goes in depth on the contracts and building up the trail - we&#8217;ll cover some of the main exploration steps in the rest of this guide.</p><div id="youtube2-Ox82r6whTXU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Ox82r6whTXU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Ox82r6whTXU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>One of the first features you&#8217;ll notice on Herd is that we have a more contextual search bar. When you enter a query, you&#8217;ll be searching across the protocol names, contract names, and functions/functionalities all in one go. Let&#8217;s start by searching for &#8220;clanker&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9_-v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9_-v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 424w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 848w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9_-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202648,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.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_!9_-v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 424w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 848w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!9_-v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8290f5-d65e-4924-803f-80d4ee8e2501_1878x1048.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 results are shown in a google style format with a short description, and some stats on recent transactions/wallets and deployment age. We&#8217;ll actually click the &#8220;protocol&#8221; results and open up the Clanker protocol page first, which gives us this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZHQt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZHQt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 424w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 848w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZHQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png" width="1456" height="1280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1280,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:270177,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.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_!ZHQt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 424w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 848w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!ZHQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c5b1d15-3669-479d-944d-a734d379dcec_1786x1570.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/protocol/clanker?blockchain=base">link to protocol page</a></figcaption></figure></div><p>The protocol page gives us the key links to their socials and documentation, to make it easier to start sorting through the noise. There is also a full chronological ordering of all contracts they&#8217;ve deployed, so you can easily see what is being used the most and also what they are most recently developing (looks like Clanker has some new auction and fee contracts in the last month).</p><p>By looking through the results (page 3), I can see there are two main &#8220;Clanker&#8221; factory contracts that deploy tokens - these match up with versions 3.1 and 4.0 <a href="https://clanker.gitbook.io/clanker-documentation/references/deployed-contracts">in the documentation</a>. We&#8217;ll focus on version 3.1 for this guide.</p><p>When I paste the 3.1 token factory address (0x2A78&#8230;7382) into the explorer, I&#8217;m taken to <a href="https://herd.eco/base/contract/0x2a787b2362021cc3eea3c24c4748a6cd5b687382/summary">the contract page</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_!49Rr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!49Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 424w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 848w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!49Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png" width="1456" height="1236" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1236,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:465053,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.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_!49Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 424w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 848w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!49Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40069244-55b1-49d8-ba8d-1d58f255cf26_1810x1536.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/base/contract/0x2a787b2362021cc3eea3c24c4748a6cd5b687382/summary">Link to contract page</a></figcaption></figure></div><p>We have a custom solidity parser and LLM processing pipeline to summarize how a contract works - shown in the summary tab above. I can see there are a few ways of deploying a token, a few admin functions, and a way to collect rewards (presumably fees). </p><p>The user journey must begin with token deployment, so let&#8217;s start by finding that function. We can switch to the &#8220;functions&#8221; tab on the contract page and get this view:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HE90!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HE90!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 424w, https://substackcdn.com/image/fetch/$s_!HE90!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 848w, https://substackcdn.com/image/fetch/$s_!HE90!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 1272w, https://substackcdn.com/image/fetch/$s_!HE90!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HE90!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png" width="1456" height="1068" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1068,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267940,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.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_!HE90!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 424w, https://substackcdn.com/image/fetch/$s_!HE90!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 848w, https://substackcdn.com/image/fetch/$s_!HE90!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 1272w, https://substackcdn.com/image/fetch/$s_!HE90!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a70779-acc1-49b1-9170-1adf07e88eda_1810x1328.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Functions are ordered by actual onchain call stats, so you can see the most popular ones. They also include a short summary for quickly understanding what they do. Looks like there were 60 tokens deployed in the last day from this contract, let&#8217;s look at the function details page now.</p><p>This is where the meat of the information is - we have a summary of the function and all inputs/outputs, as well as showing what events are emitted by the function. The table below also shows up the most recent calls of this function, so we can very quickly find an example transaction to dig into and understand (you can filter for direct or indirect calls from an EOA too if you&#8217;d like).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IVKN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IVKN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 424w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 848w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IVKN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png" width="1456" height="1229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1229,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:376714,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.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_!IVKN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 424w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 848w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 1272w, https://substackcdn.com/image/fetch/$s_!IVKN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b6f23c-7dc5-4c75-a9ee-0c8110627a24_1810x1528.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/base/contract/0x2a787b2362021cc3eea3c24c4748a6cd5b687382/functions/0xe9119a4e">Link to function details</a></figcaption></figure></div><p>Now let&#8217;s click on the first transaction, to better understand what happens when a token is deployed and if there are any other contracts we should be aware of. We can easily see that there were two contracts deployed in the transaction, one token and one 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_!se1u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!se1u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 424w, https://substackcdn.com/image/fetch/$s_!se1u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 848w, https://substackcdn.com/image/fetch/$s_!se1u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!se1u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!se1u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png" width="1456" height="1189" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1189,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267591,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.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_!se1u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 424w, https://substackcdn.com/image/fetch/$s_!se1u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 848w, https://substackcdn.com/image/fetch/$s_!se1u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!se1u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8818a01d-a509-44b2-b55a-9236140e39fc_1810x1478.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/base/tx/0x8bcc807f7f1435b0c65acc39f874b8614538fc72937c38ebb9aafb61952e9c1a?isSimulated=false&amp;chatId=0198af31-ea3a-7f6c-b561-f2adb49afa5d">Link to transaction page</a></figcaption></figure></div><p>From here, if I scroll down through the call traces I can see that there is another contract called at the end called &#8220;LpLockerv2&#8221; which seems to facilitate all token rewards. I can tell at a glance because of the event summary and decoded arguments are side-by-side in the trace card:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FSdM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FSdM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 424w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 848w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FSdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png" width="1456" height="1189" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1189,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:277336,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.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_!FSdM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 424w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 848w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!FSdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b9666d0-0762-432a-86b3-59d84ff10dda_1810x1478.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>And that makes sense, because if we quickly examine the code tab in the contract page we can see that the &#8220;claimRewards&#8221; function we saw earlier on the functions tab actually just calls the LpLockerv2 contract with a &#8220;collectRewards&#8221; call.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ycSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ycSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 424w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 848w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 1272w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ycSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png" width="1456" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:238759,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.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_!ycSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 424w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 848w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 1272w, https://substackcdn.com/image/fetch/$s_!ycSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f04f11-b6d2-495b-91a9-d8cfa1601896_1810x810.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/base/contract/0x2a787b2362021cc3eea3c24c4748a6cd5b687382/code">link to code</a></figcaption></figure></div><p>Now, if you looked through the docs on the protocol page earlier, you might have found that there is also mention of vesting tokens. This can be seen in the transaction as well, where there is a vault deposit that emits an event showing the amount and end time of vesting:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0L93!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0L93!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 424w, https://substackcdn.com/image/fetch/$s_!0L93!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 848w, https://substackcdn.com/image/fetch/$s_!0L93!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!0L93!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0L93!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png" width="1456" height="1107" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1107,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255745,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.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_!0L93!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 424w, https://substackcdn.com/image/fetch/$s_!0L93!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 848w, https://substackcdn.com/image/fetch/$s_!0L93!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!0L93!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02f6ed8-e99e-4da3-aa99-3e7a33fda26b_1810x1376.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Another way you could have found these two other contracts and information would be to use the &#8220;related contracts&#8221; tab on the contract page, where we can see what other contracts are called by Clanker contract (or vice versa too).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gxgz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gxgz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 424w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 848w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gxgz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png" width="1456" height="895" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:895,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224324,&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://read.cryptodatabytes.com/i/171094463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.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_!gxgz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 424w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 848w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!gxgz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0309dab9-5368-4c9b-b84c-e63abe8d3eed_1810x1112.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://herd.eco/base/contract/0x2a787b2362021cc3eea3c24c4748a6cd5b687382/related">Link to related contracts tab</a></figcaption></figure></div><p>And with that, we have a great understanding now of how a token deployment works and what other functions the user likely needs to call! </p><ol><li><p>deployToken on Clanker to launch the token</p></li><li><p>claimRewards or collectRewards (on Clanker or LpLockerv2) to claim fees</p></li><li><p>withdraw on ClankerVault for vested tokens</p></li></ol><h2>Creating the Trail</h2><p>For actually creating the trail, the hard work is already all done! We can directly just paste in these transaction hashes to pull in the function and data into each step of the trail to reuse some of the past function inputs.</p><p>In the <a href="https://youtu.be/Ox82r6whTXU">YouTube video from earlier</a>, I cover this much more in depth, showing off a splits contract as well (which handles splitting funds between any number of wallets). </p><p>We hope you find the new explorer useful in sleuthing protocols, and you can always reach the team and the <a href="https://discord.com/invite/NsfPWZZuKU">community in our Discord</a> if you have any questions, feedback, or feature requests!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[[2025 Annual Guide] Crypto Data Engineering Guide]]></title><description><![CDATA[Crypto data transformation is expensive in both time and money if you don't know what you're doing. Read this to make your ETL life much easier.]]></description><link>https://read.cryptodatabytes.com/p/2025-annual-guide-crypto-data-engineering</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/2025-annual-guide-crypto-data-engineering</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 06 Jan 2025 17:30:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>This is my fourth annual crypto data guide. You can read my old guides to understand the data space segmentation through <a href="https://read.cryptodatabytes.com/p/2022-guide-to-web3-data-thinking">2022</a>, <a href="https://read.cryptodatabytes.com/p/2023-guide-to-web3-data-tools">2023</a>, and <a href="https://read.cryptodatabytes.com/p/2024-annual-guide-web3-data-tools">2024</a>.</em></p><p><em>Thanks to <a href="https://x.com/notnotstorm">Storm</a>, <a href="https://x.com/jefftyling">Jeff</a>, and <a href="https://x.com/mewwts">Mats</a> for their review and input into this year&#8217;s guide.</em></p><p>I&#8217;ve left Dune to work on <a href="https://x.com/andrewhong5297/status/1845958032007614631">my own data product</a> now, and have been setting up our data engineering and backend for the past few months. As such, this year&#8217;s guide will focus on Ethereum (EVM) data engineering instead of the entire data tooling stack. Most of the interesting product changes in the last year have been in data engineering anyways.</p><p>In this guide I&#8217;ll teach you how to navigate efficiently acquiring any onchain datasets you need for your app in a continuous ETL pipeline. Some topics we will cover:</p><ul><li><p>Backfills, and the increasing cost of raw data as chains scale</p></li><li><p>Solutions to the &#8220;backfill and transform&#8221; problem, such as post-execution versus re-execution transforms</p></li></ul><p>Here are some definitions you need to know to understand this guide:</p><ul><li><p><strong>Client</strong>: Repositories containing <a href="https://ethereum.org/en/developers/docs/nodes-and-clients/">software implementations of the Ethereum Virtual Machine (EVM)</a> that execute transactions and process blockchain state, such as Geth, Reth, and Erigon. Often referred to as &#8220;nodes&#8221; when run.</p></li></ul><ul><li><p><strong>RPCs:</strong> Standard API interfaces on clients, which are then run by providers like Alchemy, so developers can query blockchain data without running their own nodes. Alchemy has a <a href="https://dashboard.alchemy.com/sandbox?network=BASE_MAINNET&amp;method=debug_traceTransaction&amp;body.id=1&amp;body.jsonrpc=2.0&amp;body.method=debug_traceTransaction&amp;body.params%5B0%5D=0x8ba4d5225cd6c216a197fd1c84ca7ae01cb435cd892005ea7478e860c6fa674f&amp;body.params%5B1%5D.tracer=callTracer&amp;body.params%5B1%5D.tracerConfig.onlyTopCall&amp;body.params%5B1%5D.timeout=5s">great sandbox for learning RPCs</a>.</p></li><li><p><strong>Events/Functions/Transactions (<a href="https://www.quicknode.com/guides/ethereum-development/transactions/what-are-ethereum-transactions">Execution Lifecycle</a>)</strong>: Transactions trigger contract functions, emitting events as logs. Transactions are bundled into blocks. Transactions can be replayed for a full memory trace.</p></li><li><p><strong>Data Platforms (like Dune)</strong>: Browser/cloud platforms that aggregate, decode, and visualize on-chain data, allowing users to create and share custom queries.</p></li><li><p><strong>Utility API Libraries</strong>: Developer libraries that abstract complex RPC calls into intuitive programming interfaces:</p><ul><li><p><strong>Typescript</strong>: <a href="https://viem.sh/docs/introduction">viem</a>, <a href="https://docs.ethers.org/v5/">ethers</a></p></li><li><p><strong>Python</strong>: <a href="https://ctc.readthedocs.io/en/latest/index.html">ctc</a>, <a href="https://github.com/ApeWorX/ape">ape</a>, <a href="https://github.com/ethereum/web3.py">web3</a></p></li><li><p><strong>Rust</strong>: <a href="https://docs.rs/ethers/0.5.0/ethers/">ethers</a></p></li></ul></li><li><p><strong>ETL, specifically transformations (<a href="https://www.getdbt.com/blog/guide-to-data-lineage">dbt models, data lineage</a>)</strong>: The process of applying some processing logic to raw data to create abstracted tables called &#8220;models&#8221; that you can then use for app/analytics purposes.</p></li></ul><p>As always, feel free to <a href="https://x.com/andrewhong5297">reach out to me</a> with any thoughts or questions.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Backfills, and the Increasing Cost of Raw Data</h2><p>EVM data has three core raw datasets:</p><ul><li><p>blocks/transactions (top level transaction from/to/gas/data)</p></li><li><p>logs/receipts (events emitted from contracts, tied to transactions)</p></li><li><p>traces (full call traces of each transaction)</p></li></ul><p>Shovel <a href="https://indexsupply.com/shovel/docs/#examples">has a guide</a> covering these basic datasets fairly well, and <a href="https://github.com/paradigmxyz/cryo?tab=readme-ov-file#cryo-datasets">Cryo also provides many more almost 40 raw datasets</a> in their cli tool:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PK_k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PK_k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 424w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 848w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 1272w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PK_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png" width="1456" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1007079,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PK_k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 424w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 848w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 1272w, https://substackcdn.com/image/fetch/$s_!PK_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80afc7ac-46a0-4ebe-ab15-4805d2077567_2686x796.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://docs.google.com/spreadsheets/d/1E7S1JNl7MIqCJIk6VxvJLkTq8bjn9JJkYIKv2UyPdbQ/edit?gid=641369297#gid=641369297">Link to Cryo Datasets</a>. These are great for data analysts and scientists to quickly extract and leverage, but less of a fit for an app data pipeline.</figcaption></figure></div><p>Downloading all the data from past blocks is called a &#8220;backfill&#8221;, with continuous syncs called a &#8220;frontfill.&#8221; Backfilling blocks + receipts on Base (EVM) using Quicknode RPC costs almost $10k:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Glh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Glh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 424w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 848w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 1272w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Glh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png" width="434" height="284.3448275862069" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:696,&quot;resizeWidth&quot;:434,&quot;bytes&quot;:156792,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Glh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 424w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 848w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 1272w, https://substackcdn.com/image/fetch/$s_!2Glh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e7118b-97ce-4784-9af6-5c5584adbfed_696x456.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">From Quicknode Streams, priced for Blocks + Receipts on Base from block 1.</figcaption></figure></div><p>After discounts, most platforms quote  around $4k for a Base backfill of traces and logs, and monthly frontfill cost of about $2k. You can optimize some costs here by running your own <a href="https://github.com/paradigmxyz/reth">reth node</a> on a service like <a href="https://www.blockjoy.com/#use-cases">Blockjoy</a> for $650/mo (though keeping a node running and client up to date has its own labor costs).</p><p>Many teams try to backfill directly into their own database and then run transforms on top after (ELT), as it my take many transformation model attempts to get to the final dataset you want. This was much cheaper to do in the past with small chains like Ethereum mainnet (I remember when backfills only cost $200).</p><p>Blockchains have scaled wildly in the last year, with Solana and Base (EVM) leading the way. To give you a sense of scale, core Solana data takes up roughly 500TB and Base data takes up 50TB. With this current storage scale, you can add another $4-10k a month for storing, transforming, and querying all this data on GCP/AWS - then multiply this all by the number of chains you&#8217;re trying to support. These costs start to add up quickly if you aren&#8217;t careful!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FS0K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FS0K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FS0K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg" width="616" height="346.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:616,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!FS0K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FS0K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248e91ad-7b0a-4b61-aa91-034aa4e67778_4096x2304.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://x.com/base/status/1870127250156511433">Twitter</a> (archive is the historical state of the chain. Clients like GETH/RETH can have different requirements based on implementation, this chart mainly serves to show you the rate of data growth)</figcaption></figure></div><p>Keep in mind that all chains are starting to hyper scale, with Base growing it&#8217;s gas limit exponentially (read as number of transactions/state) and Solana aiming for 1 million TPS. The devs are only working to minimize size of state that nodes need, not the poor souls who have to index and work with the data. So if you plan to store all raw data from a chain as part of your data strategy, you&#8217;re in for a lot of $$$ pain.</p><p>We&#8217;re also quickly moving away from a block-by-block processing model (goodbye 2 second block times) to a pure event streaming model (100-200ms per block, and even faster with <a href="https://mirror.xyz/preconf.eth/sgcuSbd1jgaRXj9odSJW-_OlWIg6jcDREw1hUJnXtgI">preconfs</a>). Again, this means that some of the slower data pipelines and delayed transforms you&#8217;ve been relying on will start to fall apart - make an error, and who knows when your pipeline will catch up to the latest block/event again.</p><p>So what can you do? It&#8217;s time to start studying different methods of backfilling and transforming crypto data!</p><h2>A Mental Model for Crypto Data Transforms</h2><p>Usually, the first iteration of the data pipeline involves tracking a few events from a set of contracts and then performing basic transforms on them before inserting them into a database. </p><p><a href="https://thegraph.com/docs/en/subgraphs/developing/subgraphs/">Subgraphs on theGraph</a> created the best developer experience (DX) around this pattern, letting you track events and factories and also saving necessary related parameters such as lending pool reserves and user params <a href="https://github.com/aave/protocol-subgraphs/blob/main/src/mapping/lending-pool/lending-pool.ts#L241">at time of liquidation on Aave</a>. The process is as follows:</p><ol><li><p>List a set of contracts and ABIs in a yaml/schema</p></li><li><p>Define a set of mapping (transform logic) typescript files that process each event into columns on the schema</p></li><li><p>Run these mappings over the whole history of the chain and persist these schemas to a database block-by-block</p></li><li><p>theGraph handles the raw data so you don&#8217;t have to deal with the RPC and storage issues of a full backfill</p></li></ol><p>However, over the years these initial subgraphs ran into several limitations:</p><ul><li><p>Backfills can run into performance issues (so every time you edit a subgraph), and can also lag behind on faster chains.</p></li><li><p>If you require some enhanced decoding, read functions, or RPC calls then you can&#8217;t use <a href="https://viem.sh/docs/abi/decodeAbiParameters#decodeabiparameters">viem</a> or other helper packages.</p></li><li><p>Only supports graphQL, so aggregation queries and further transformations on top are painful.</p></li></ul><p>Realizing these limitations, many of the data products from 2022/2023 contained some sort of &#8220;subgraph migration&#8221; feature, such as Satsuma (acq. Alchemy), Goldsky, Ponder, Subquery, Subsquid, and StreamingFast. All of these take different approaches at keeping the simple DX of subgraphs while solving some of the problems mentioned earlier. theGraph is of course also trying to tackle some of these, choosing StreamingFast as their core partner.</p><p>We&#8217;ll get into all the core data engineering problems in the following sections, but at this stage we can define our transform needs as follows:</p><blockquote><p>Hook onto an event/function (like a Swap) and then gather &#8220;periphery&#8221; information at the time of the hook using a combination of packages and read functionality. This is also a good time to gather a filtered version of a larger dataset, such as full traces only when there was a Swap in the transaction.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Post-Execution Transforms</h2><p>So we know we can combine the extract and transform steps with some subgraph-esque hooks. Let&#8217;s call that a &#8220;post-execution transform,&#8221; defined as transforming the default raw data from an RPC after a transaction/block is committed. Below are some tools that I&#8217;ve found most useful for a specific use case. </p><blockquote><p>Remember that it&#8217;s very unlikely a single platform will fulfill all your needs, so don&#8217;t get too attached to always using the same tool.</p></blockquote><p>Let&#8217;s start with the tools that let you directly build from the RPC:</p><h4>Easiest Self-Hosted Transform Solution: Ponder (Typescript Library)</h4><p>The best way to do this without relying on a cloud vendor is by using ponder.sh. You can hook onto any ABI event, and then use viem to do any onchain calls/reads you need to enhance the data before inserting it into your database. Here&#8217;s <a href="https://github.com/ponder-sh/ponder/blob/main/examples/feature-read-contract/src/FileStore.ts">a simple example</a> of combining a hook and a read function together. You can imagine hooking onto a <a href="https://docs.uniswap.org/concepts/protocol/swaps">Uniswap V3 Swap</a> event, then calling <a href="https://docs.uniswap.org/concepts/protocol/oracle">their TWAP oracle</a> and combining that with reads on the tick movements at the start and end of the block.</p><p>I personally use ponder to power the Bytexplorer mint page <a href="https://github.com/andrewhong5297/bytexplorers-directory/blob/main/packages/ponder/src/erc1155.ts">to track ERC6551, ERC20, ERC721, ERC1155, and some factory contracts</a>.</p><blockquote><p>If you&#8217;re tracking a few specific contracts, need to make various API calls during your transformation, and want to store this data in your own database; then Ponder will be the simplest and lowest cost option when combined with an RPC provider like Quicknode or Alchemy.</p></blockquote><p>You can check out <a href="https://docs.envio.dev/docs/HyperIndex/getting-started">envio</a> for a similar solution.</p><h4>Lightweight Cloud Solution: Quicknode (Typescript/Python)</h4><p>If you want a more lightweight solution than Ponder with a simple key value store (like a mongoDB), then check out Quicknode functions (they also provide an RPC). I would pick this if you don&#8217;t need to join the data heavily to some internal database table, but still want something more flexible than a subgraph.</p><p>They have <a href="https://www.quicknode.com/guides/quicknode-products/functions/how-to-use-functions-to-monitor-aave-positions#functions">a great guide here with Aave</a>. You can think of functions like a lambda on AWS, with three key steps:</p><ol><li><p>Set up a &#8220;stream&#8221; of backfill data to run through the function</p></li><li><p>Write some arbitrary typescript/python scripts as a &#8220;function&#8221; that can be chained together to transform data</p></li><li><p>Store outputs in a key-value store that can be queried via API</p></li><li><p>If you want to store the stream directly in your DB with some logic on a stream, use &#8220;filters&#8221; in the stream settings instead.</p></li></ol><p>I believe <a href="https://www.indexing.co/">indexing.co</a> is the only other platform to support functions as well, you can reach out to their team to test it out.</p><blockquote><p>This is the most flexible and lightweight option out there, useful if you are working with object specific data (sets of wallets, tokens, and contracts that don&#8217;t require many aggregations or joins).</p></blockquote><h4>Quickest Self-Hosted Bulk Analytics Solution: Cryo (Rust, Python)</h4><p>I already mentioned them earlier, but <a href="https://github.com/paradigmxyz/cryo?tab=readme-ov-file#cryo-datasets">Cryo supports almost 40 raw datasets</a> that are basic transforms on top of raw RPC data. Storm (the maintainer) gave a great high level talk on self-hosted data and where Cryo fits in:</p><div id="youtube2-1DFxuspPE2g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1DFxuspPE2g&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1DFxuspPE2g?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>You can find a <a href="https://www.youtube.com/live/Q5jTqAov5bA?t=20906s">more recent talk here</a> too that goes more in depth</em></p><p>If you just want generic raw datasets for one-time analytics purposes, you should check to see if there are <a href="https://docs.google.com/spreadsheets/d/1E7S1JNl7MIqCJIk6VxvJLkTq8bjn9JJkYIKv2UyPdbQ/edit?gid=641369297#gid=641369297">any supported datasets on cryo</a> that you can easily pull with their CLI (run node or get an RPC &#8594; pull with cryo &#8594; saves in parquet files &#8594; query with duckdb). This is NOT for building a continuous pipeline, or for adding transforms during extraction though.</p><p>Now onto the SQL tools that let you build on top of basic tables built out of RPC data&#8230;</p><h4>Transform/Query Without Your Own Data Warehouse: Dune (SQL)</h4><p>My recommendation is to always use <a href="https://read.cryptodatabytes.com/p/a-basic-wizard-guide-to-dune-sql">a cloud SQL data provider like Dune</a> first to test out your transformation logic without cost, before jumping straight into the raw data with some of the tools I will talk about later. You should think of your contract data as a small subset of all the available data, and using a platform like Dune will help you build familiarity with transforms across the post-execution space. Everything from creation_traces (deployed contracts), ERC20 transfers, prices, DEX trades, ENS names, and more will be tables you likely create or use down the line. You can create your own query views and matviews for a pseudo DAG like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uEi9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uEi9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 424w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 848w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 1272w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uEi9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png" width="1456" height="403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:403,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:293497,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uEi9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 424w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 848w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 1272w, https://substackcdn.com/image/fetch/$s_!uEi9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc14f4a-0f83-43cf-91ca-5a24d7adba4e_1978x548.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3581323/lineage">Every query has a &#8220;lineage&#8221; button</a>. Note that you can&#8217;t programmatically execute the queries by order of inheritance, so the lineage is only for show.</figcaption></figure></div><p>I often utilize the <a href="https://docs.dune.com/api-reference/executions/filtering">Dune API filters</a> to test these transforms in my backend before ever loading large tables into my database - just remember <a href="https://docs.dune.com/api-reference/executions/endpoint/get-query-result">to query filters on results</a> and not re-execute the query each call (which will be really expensive). You can also <a href="https://docs.dune.com/api-reference/tables/endpoint/overview">upload small sets of your data to Dune</a> for testing against some of your internal schemas too. It&#8217;s also great for daily or weekly jobs you may need to run, like <a href="https://dune.com/case-studies/cow-protocols-journey-into-automated-payments-and-understanding-user-behavior">Cowswap does for distributing solver rewards</a>.</p><p>Remember that Dune data is not real-time, with large variations of freshness across tables (<a href="https://dune.com/dune/meta-monitor">between 1 minute to 1 hour to 1 day</a>), and the execution engine can run into queues/variance during busy times. With Dune, do not expect to be able to pull raw datasets into your own database without paying a lot of money. The ideal setup is needing to pull already deeply abstracted tables like <a href="https://docs.dune.com/data-catalog/curated/evm/DEX/dex-trades">dex.trades</a>, where you can pull up the last 100 million trades (100m rows, 25 columns at 25,000 datapoints per credit with 100,000 credits) using the premium plan of $1k/mo. 100 million trades is roughly 2 months of trades on Base (as of december 2024). You can use functions like array_agg to pull as many values as you can into one cell so save on credits.</p><p><a href="https://www.allium.so/">Allium</a> has a SQL offering with a more powerful API and data extraction, that is real-time within 5 seconds and has a dedicated engine - albeit with fewer community example queries and tables.</p><blockquote><p>Choose these options if you want a data solution where you don&#8217;t need an data warehouse of your own for onchain data. Your complexity here will be in finding and creating the SQL tables you need within the platform. You can expect to pay at least $1k a month at scale for immediate access to the most powerful data pipelines in crypto.</p></blockquote><h4>Easiest SQL-to-your-Warehouse Transforms: Goldsky (SQL)</h4><p>Unfortunately, Dune does not have good data engineering DX. It&#8217;s not easy to manage <a href="https://docs.dune.com/query-engine/query-a-query">pipelines of query views</a> to sink into an external database. I&#8217;ve found that Goldsky has the best self-serve experience for this, with a DAG table builder:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hHr7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hHr7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 424w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 848w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 1272w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hHr7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png" width="618" height="401.5302197802198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:618,&quot;bytes&quot;:1268049,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hHr7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 424w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 848w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 1272w, https://substackcdn.com/image/fetch/$s_!hHr7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abea279-104f-42b4-aa29-076efe88a5de_2210x1436.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://docs.goldsky.com/mirror/create-a-pipeline">Goldsky Mirror / Pipeline</a></figcaption></figure></div><p>They support many sinks (pushing data from queries into your database) for a large number of data destinations with one click, coming close to the ease of use level of a tool like fivetran. I believe they have some of the most startup friendly pricing for first-time backfills or academic usage as well, if you reach out nicely <a href="https://goldsky.com/team">to the team</a>.</p><p>You can create a DAG of queries in Goldsky the same way that you can in Dune, however Goldsky actually supports stateful transforms through streaming SQL with <a href="https://www.confluent.io/blog/getting-started-with-apache-flink-sql/#dynamic-tables-continuous-queries">Flink</a> (<a href="https://atlan.com/batch-processing-vs-stream-processing/#batch-processing-vs-stream-processing-a-tabular-comparison">instead of batch</a> like dbt). You also can interweave data from external handlers using <a href="https://docs.goldsky.com/mirror/extensions/transforms#2-external-handler-transforms-new">http requests or webhooks</a>, for you to externally manage some custom functions before pushing and joining with other Goldsky datasets.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Re-Execution Transforms</h2><p>If you&#8217;re a beginner data engineer, I highly recommend using one of the earlier solutions for whatever you are trying to do. When you get into more advanced and data heavy pipelines, you may need to study re-execution transforms.</p><p><a href="https://book.getfoundry.sh/tutorials/forking-mainnet-with-cast-anvil">Forking a chain with custom execution</a> has been a common practice in Solidity testing workflows for years. The basic idea is that you can take a chain and it&#8217;s state, and copy, edit, and run it locally so that you can do anything you want to it:</p><ul><li><p>Submitting transactions at any block from any wallet (without the key)</p></li><li><p>Editing contract code to add events or even new variables to enhance the data</p></li><li><p>Adding opcodes or other low level functionality for more visibility (<a href="https://book.getfoundry.sh/cheatcodes/">cheatcodes</a>)</p></li></ul><p>Once you&#8217;ve made your edits, you can replay a previous/future block and then use the same RPC endpoints to extract your enhanced data. </p><blockquote><p>There has been an ongoing trend to build data tooling closer to the execution level, since any edits you make here will save you time doing expensive joins and queries post-execution.</p></blockquote><p>The only downside here is that you have to learn Solidity and some lower-level VM lifecycle concepts to leverage these tools.</p><h4>Easiest Events Editor: Shadow (Cloud or Self-Hosted)</h4><p>Sometimes you will want to enhance the data around a key emitted event (like a Swap). Shadow makes it easy to add new events that let you capture more data around the exact time of execution. Note that getting data at transaction level granularity requires a re-execution environment, all the tools from post-execution can really only get you data at a block level granularity. This is very important for data like prices, liquidity, balances, health factors, oracle math, and more.</p><p><a href="https://blog.shadow.xyz/uniswap-v3/">Here&#8217;s an example</a> of their added events to Uniswap V3, namely making it easier to grab liquidity and price data during the swap. There is a <a href="https://blog.shadow.xyz/shadow-registry/">registry of examples</a> they&#8217;ve built to easily learn and run alongside their <a href="https://github.com/shadow-hq/shadow-reth?ref=blog.shadow.xyz">shadow reth</a> node which takes advantage of some fancy <a href="https://www.paradigm.xyz/2024/05/reth-exex">reth client exex features</a>. Don&#8217;t worry if that&#8217;s all word soup to you, basically just means you can edit events and run it yourself somewhat simply.</p><p>Emily Hsia, CTO of Shadow, gave a great presentation talking about using Shadow in your data pipeline below (2:39:18):</p><div id="youtube2-ta7yY51RK2Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ta7yY51RK2Q&quot;,&quot;startTime&quot;:&quot;9558&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ta7yY51RK2Q?start=9558&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><blockquote><p>The RPC standard support doesn&#8217;t change at all when you edit events, so you can then use Ponder with a Shadow RPC to create a subgraph/hook data engineering experience on top.</p></blockquote><p>Other options include <a href="https://tryghost.xyz/log">ghostlogs</a> and <a href="https://docs.sim.io/docs/patch">sim patch</a>, but these are not open-source and self hostable (if that matters to you).</p><h4>Most Powerful Re-Execution Hooks: Sim (smlXL, acq. Dune)</h4><p>For more complex transforms, you may need data from different points in time of execution and not just a single event. You can <a href="https://docs.sim.io/docs/tracking-erc721-transfers">create hooks inside of a smart contract using Sim</a>, such as hooking on to every time a storage variable like a balance mapping has changed, every transfer event, or every call trace in a transaction/block:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ssjy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ssjy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 424w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 848w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ssjy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png" width="1456" height="791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:791,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:453862,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ssjy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 424w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 848w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!ssjy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7b05a4f-100b-45fe-851e-abe1a616308b_1882x1022.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>You can easily get real-time balances at the latest block using something like <a href="https://docs.dune.com/echo/evm/balances">Dune Echo API</a>, but my use case required being able to get a balance at any historical block - even within a specific transaction. So one fun Sim canvas I created is getting balance changes of all addresses and tokens involved in a transaction (pre and post) using a combination of storage hooks and block hooks.</p><p>The logic in my lambda (set of hooks in solidity) is as follows:</p><ol><li><p>For a given transaction, before the balance mapping is changed store the owner, token address, and current balance to a data mapping called &#8220;balances&#8221; with a struct of &#8220;BalanceInfo&#8221;</p></li><li><p>Each time the balance is changed, update the final balance value in &#8220;BalanceInfo&#8221;. </p></li><li><p>We keep only the last update, and at the end of the block we return the whole &#8220;balances&#8221; mapping with the complete before and after &#8220;BalanceInfo&#8221; data (shown in the test logs). </p></li><li><p>Nothing is saved to a database, I get to process this per API call using an &#8220;external trigger&#8221; component.</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_!MjI2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MjI2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 424w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 848w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 1272w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MjI2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png" width="1456" height="1222" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1222,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:741210,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MjI2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 424w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 848w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 1272w, https://substackcdn.com/image/fetch/$s_!MjI2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc9fea86-8e0a-49e1-8365-0d70ee4e7734_1606x1348.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://studio.sim.io/crypto-data-bytes/canvases/e6e16506-4b85-4acb-a75f-9073289b53cd">Link to Canvas with Code</a></figcaption></figure></div><p>This kind of data extraction requires RPC tracing, storage layouts, and low level memory diff tracking to produce - the kind of expertise very few people in crypto have. Meanwhile I can create that pipeline using Sim in just 100 lines. Getting dynamic data like balances at a transaction level granularity was previously impossible, but now it can be done.</p><blockquote><p>Sim is the data tool that I use the most for my new data engineering stack, covering 90% of my use cases. The other 10% is covered by Dune and Quicknode.</p><p>After these transformations above, you can then write SQL queries on top and execute those as API endpoints or directly sink it to your database like Goldsky.</p></blockquote><p>Sim also supports <a href="https://docs.sim.io/docs/evm-lambda#stateful-lambdas">stateful solidity transforms</a>, meaning you can add a storage variable whose state carries on through all blocks. With a simple mapping variable, you essentially can create a key value store in your lambda!</p><h4>Lightweight Custom Read Functions: TEVM (Typescript Library)</h4><p>A common data gathering utility in crypto <a href="https://github.com/banteg/multicall.py">is the &#8220;multicall&#8221;</a>, where you essentially create a new contract with a function that calls a set of other read functions when called. This way you can gather a bunch of data across contracts while only making one RPC call (saving you time and money). Viem actually has a powered up version of this <a href="https://viem.sh/docs/actions/public/simulate">in their simulate call</a> that lets you override state too.</p><p>We can now take it a step further, and rewrite read functions on any existing contract completely. This is like editing events, but <a href="https://tevm.sh/why/reuse-solidity/">it is written directly in typescript</a> making it even more lightweight as it doesn&#8217;t have the full compile/deployment process that Shadow and Sim have.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7iPg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7iPg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 424w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 848w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7iPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png" width="528" height="465.14285714285717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1036,&quot;width&quot;:1176,&quot;resizeWidth&quot;:528,&quot;bytes&quot;:764417,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7iPg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 424w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 848w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!7iPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff264c054-c9fb-4cae-9fe3-8a9949a825c2_1176x1036.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://x.com/FUCORY/status/1801546199092367532">Twitter Link</a></figcaption></figure></div><p>To be honest I have not built many examples with TEVM yet, but I have some fun public experiments coming up soon. I&#8217;m very excited about it so I&#8217;m including this tool in here now for others to check out, too.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Concluding Thoughts: Tradeoffs on Transforms</h2><p>All in all, your data pipeline will depend on when and where you handle your transforms (thanks captain obvious). Below is a little chart of the tools and concepts I&#8217;ve mentioned today and when they can be used:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y8c_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y8c_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y8c_!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg" width="868" height="786.9230769230769" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1320,&quot;width&quot;:1456,&quot;resizeWidth&quot;:868,&quot;bytes&quot;:403430,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y8c_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y8c_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779daefa-861c-4adf-8d82-72a3fdffe16e_2100x1904.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><em>Remember these are only a subset of all the crypto data tools, there are many others but they largely fall under the same usage archetypes that are shown above.</em></p><p>As a rule of thumb, I usually try and get a basic pipeline working on a cloud platform provider first and then decide later if I want to pull it out into an external pipeline/database later. Doing every dataset yourself from scratch each time will slow you down immensely and cost you both in infra and engineers.</p><p>In the end, you will most likely need a combination of tools here to meet both your app and analytics data requirements. The open source and open data nature of crypto means we&#8217;re given a lot of powerful tools and platforms, instead of just closed APIs.</p><p>Many analysts live in the world of Dune, and only know SQL. Learning the rest of the data stack with some of the tools here will be a way to take your skills and career to the next level, because as the space evolves, so will the number and quality of apps. Those apps will need good data. And good data requires great data engineers and engineering - I hope that will be driven by you.</p><p>Best of luck to all of you in 2025!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Solana Data RPC Guide - Blocks, Tokens, Transfers, and More]]></title><description><![CDATA[Pat Doyle takes us through how to query Solana RPCs, with code comparisons to EVM RPCs.]]></description><link>https://read.cryptodatabytes.com/p/solana-data-rpc-guide-blocks-tokens</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/solana-data-rpc-guide-blocks-tokens</guid><dc:creator><![CDATA[Pat Doyle]]></dc:creator><pubDate>Wed, 30 Oct 2024 15:01:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>This article was written by the amazing <a href="https://x.com/doyle126">Pat Doyle</a> - go follow him on Twitter!</em></p><p><em>If you want to be a guest author on Crypto Data Bytes, you can <a href="https://twitter.com/andrewhong5297">dm me</a>.</em></p></blockquote><p>In this article we will go through analyzing Solana data using only RPC methods. We will also have the corresponding analysis for Ethereum using only RPC methods. The goal here is to give data engineers and analysts coming from the Ethereum world a better understanding of how Solana data is structured and can be used in analysis.&nbsp;&nbsp;</p><p>The audience should have some technical experience and familiarity with analyzing Ethereum logs and traces.&nbsp;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p>Requirements:</p><ul><li><p>Ability to run Python/Jupyter Notebooks</p></li><li><p>Ethereum &amp; Solana Nodes Endpoints (I am using <a href="https://alchemy.com/?r=0285a78c73e7835a">Alchemy</a>, the free credits should be plenty to run the examples)</p></li></ul><p>We will walk through 3 examples:&nbsp;</p><ol><li><p>Getting the Latest Block&nbsp;</p></li><li><p>Analyzing Compute Units / Gas Fees</p></li><li><p>Analyzing Token Transfers</p></li></ol><p>I have included additional resources at the bottom of the article if you are brand new to Solana and want to dig deeper.</p><div class="pullquote"><p><em>&#128104;&#8205;&#128187;</em> The code for all the examples<a href="https://github.com/phatdoyle/evm-vs-sol-rpc-methods"> can be found here.</a>&#128161;</p><p>Feel free to open an issue or PR if you have suggestions.&nbsp;</p></div><h2>Get Current Block - Starting Simple</h2><p><em><a href="https://github.com/phatdoyle/evm-vs-sol-rpc-methods/blob/main/1.Get_Current_Block_Number.ipynb">code for this section</a></em></p><p><strong>Why do we want this?</strong></p><p>Let&#8217;s start with a really simple example.&nbsp; Getting the current block in a blockchain is always helpful. Why do I need this? Well, imagine I have a pipeline of data that is running on a schedule every hour.&nbsp; To avoid over processing data we would only want to process our latest state plus 1 block and the most recent block.&nbsp; This will allow our data consumption to move faster and our rpc request to stay lower.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mtqp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mtqp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 424w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 848w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 1272w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mtqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png" width="648" height="190" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:190,&quot;width&quot;:648,&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_!mtqp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 424w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 848w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 1272w, https://substackcdn.com/image/fetch/$s_!mtqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96a171a2-974c-46e0-951c-22214ef5afc6_648x190.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://docs.alchemy.com/reference/eth-blocknumber">(eth_blockNumber)</a> <a href="https://solana.com/docs/rpc/http/getslot">(solana getSlot)</a></figcaption></figure></div><p>Ethereum eth_blockNumber:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BN7d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BN7d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 424w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 848w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 1272w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BN7d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png" width="1456" height="308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:308,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!BN7d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 424w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 848w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 1272w, https://substackcdn.com/image/fetch/$s_!BN7d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb64fa5-033b-4584-8cb6-2056e5d532c6_1600x338.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Solana getSlot:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AlR_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AlR_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 424w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 848w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 1272w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AlR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png" width="1456" height="391" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:391,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!AlR_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 424w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 848w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 1272w, https://substackcdn.com/image/fetch/$s_!AlR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d6dd56-eecb-492b-a7c9-35225841f707_1600x430.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Cool. That was easy.&nbsp; Not much to it. Let's keep doing more analysis at the block level.&nbsp;</p><h2>Get Block Gas Fees &amp; Compute Units</h2><p><em><a href="https://github.com/phatdoyle/evm-vs-sol-rpc-methods/blob/main/2.Get_Gas_Used_In_Block.ipynb">code for this section</a></em></p><p><strong>Why do we want this?</strong></p><p>I want to understand how network demand is changing over time.&nbsp; Understanding the change in gas fees is a good way to get a view into this trend.&nbsp;&nbsp;</p><p>Ethereum uses the concept of gas while Solana uses compute units.&nbsp; They are slightly different but can be used to measure similar trends.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hwmF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hwmF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 424w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 848w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 1272w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hwmF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png" width="640" height="164" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:164,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12458,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hwmF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 424w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 848w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 1272w, https://substackcdn.com/image/fetch/$s_!hwmF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5ee74f5-84dc-46bb-8e8a-415fb45285df_640x164.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3><strong>Ethereum</strong></h3><p>The ETH Block header data just gives us the value we need so parsing the data is actually pretty straight forward. We will use the eth_getBlockByNumber method and pass in the block number of interest in the params.&nbsp; For each block we will return the gas_used / gas_limit and plot those values, with the current gas limit is a value of 30,000,000</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m_Ar!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m_Ar!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 424w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 848w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 1272w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m_Ar!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png" width="665" height="383.65384615384613" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:1456,&quot;resizeWidth&quot;:665,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!m_Ar!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 424w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 848w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 1272w, https://substackcdn.com/image/fetch/$s_!m_Ar!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fca3b0-062b-4884-93c9-8ba10a9494a4_1600x923.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><strong>Solana</strong></h3><p>In the case of Solana - The compute units need to be aggregated for each transaction within the block.&nbsp; In the request, we set transactionDetails to <strong>True</strong>.&nbsp; This returns all the transaction data within the block itself. The transaction data contains all the compute units of interest.&nbsp; To do this we will use the method getBlock.&nbsp; This method has a parameter that allows us to request all the transaction data within the block. As mentioned - The compute units used are within the transaction data so we need to set this to true.&nbsp; Now we just iterate over each block, parse the computeUnitsUsed and group the values by block. To calculate the % of compute units used we divide our total used CUs by the max CUs per block of 48,000,000.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yweQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yweQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yweQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png" width="649" height="380.66346153846155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:649,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!yweQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 424w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 848w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 1272w, https://substackcdn.com/image/fetch/$s_!yweQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F294ddc6c-fe1f-40f6-ab81-e64cfa999bf1_1600x939.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Get Tokens Transferred in a Block</h2><p><em><a href="https://github.com/phatdoyle/evm-vs-sol-rpc-methods/blob/main/3.Get_Token_Transfers_Per_Block.ipynb">code for this section</a></em></p><p><strong>Why do we want this?</strong></p><p>Token transfers are at the core of every blockchain researcher&#8217;s tool belt.&nbsp; They give us insight into where assets are moving, how balances change over time, token issuance and much more.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ezdA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ezdA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 424w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 848w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 1272w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ezdA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png" width="641" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:641,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17748,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ezdA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 424w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 848w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 1272w, https://substackcdn.com/image/fetch/$s_!ezdA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2ca10c-3158-4aa9-83ac-80db25367bb3_641x231.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p><a href="https://docs.alchemy.com/reference/eth-getlogs">eth_getLogs</a></p></li><li><p><a href="https://solana.com/docs/rpc/http/getblock">solana getBlock</a></p></li><li><p><a href="https://solana.com/docs/rpc/http/getaccountinfo">solana getAccountInfo</a></p></li></ul><h3><strong>Ethereum</strong></h3><p>Ethereum provides nice and straightforward methods to retrieve logs.&nbsp; Thankfully the ERC process has given us a set of standard contract events that allow us to simply and easily fetch this data.&nbsp; For this example we will get USDC transfers that occur within a 10 block range and plot them.&nbsp; First we begin by creating a function that will get the logs emitted by a contract. We use the eth_getLogs method and include the parameters in our payload:&nbsp; The transfer event signature, the beginning block, the end block and the contract address.&nbsp; Then we iterate through a block range, aggregate our data and plot it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uQiP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uQiP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 424w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 848w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 1272w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uQiP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png" width="627" height="378.95604395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:627,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!uQiP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 424w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 848w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 1272w, https://substackcdn.com/image/fetch/$s_!uQiP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F139db1df-c615-45cd-b7bf-535ae53067c7_1600x967.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><strong>Solana</strong></h3><p>There are two different approaches you can take to pull the amount transferred per block from Solana. Each approach is slightly different and will yield different results for a few reasons. It is important to understand what you are analyzing and how these different approaches can be used.&nbsp; One important thing to note that is a key difference from the EVM is that all Solana tokens share the same token program (<a href="https://spl.solana.com/token">SPL Token Program</a>).&nbsp; So in each instruction you will be able to see that a token transfer instruction will come from the SPL Token Program.&nbsp; Compare this to the EVM all the event data will come from the specific token contract itself.</p><blockquote><p>Approach #1: Parsing Transfer with Instructions</p></blockquote><p>Lets walk through getting the transfers of USDC per block first.&nbsp; Buckle up, this isn&#8217;t as straightforward as ETH but still doable.&nbsp; First, what we will do is request all transactions in a range of blocks. The function below will return all the transactions and transaction details in a block. &nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VB6R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VB6R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 424w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 848w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 1272w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VB6R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png" width="727" height="430.407967032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:862,&quot;width&quot;:1456,&quot;resizeWidth&quot;:727,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!VB6R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 424w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 848w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 1272w, https://substackcdn.com/image/fetch/$s_!VB6R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3130c2-1c05-4fc0-8f6c-7934001b8a05_1600x947.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Once we get all the transactions we have to do quite a bit of data filtering and cleaning.&nbsp; A single transaction can have many instructions. Each instruction can then have an inner instruction.&nbsp; Transfer instructions can exist in both the Outer and Inner instruction.&nbsp; There are also different types of instructions that indicate tokens moving - these would be transfer, transferChecked, mintTo, mintToChecked, and Burn.&nbsp; We need to make sure we parse all of these instruction types.&nbsp;</p><p>For all the transactions we will need to filter for transfers from the SPL Program where one of the transfer types above is present.&nbsp;</p><p>Ok, great - progress. But there is one big problem.&nbsp; For standard `transfer` &amp; `mintTo` types we actually do not get any information about the token. We need the token mint address, the decimal precision.&nbsp;&nbsp;</p><p>Below is an example of a transfer of<a href="https://solscan.io/tx/3dnZkG7yZcxYufobiFG7hWPg8FrBxaJofR8NreTZ8eUM9LxPRqadEJXkunEe2ACNtWx67vTNp1J79HwkV1yLto7J"> `wSOL`</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5fxX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5fxX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 424w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 848w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 1272w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5fxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png" width="586" height="167.69182389937106" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20252a27-2fc6-4e81-800f-102363f53008_636x182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:182,&quot;width&quot;:636,&quot;resizeWidth&quot;:586,&quot;bytes&quot;:12636,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5fxX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 424w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 848w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 1272w, https://substackcdn.com/image/fetch/$s_!5fxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20252a27-2fc6-4e81-800f-102363f53008_636x182.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>It tells us the sender, recipient and the amount transferred but we can see the token address is missing.&nbsp; Without this information our analysis will be incomplete.&nbsp; The reason for this is basically a detail of SPL Token Program/PDAs works. Remember, when you create a transfer of an asset, the program creates a Program Derived Account which actually holds the balance and maps back to your EOA wallet.&nbsp; If this is a bit confusing it might be worth revisiting how tokens work on Solana.&nbsp; Andrew Hong has another great write up on tokens <a href="https://read.cryptodatabytes.com/p/a-guide-to-solana-token2022-token">here</a>.&nbsp;&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8n8j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8n8j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 424w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 848w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 1272w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8n8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png" width="1456" height="189" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:189,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!8n8j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 424w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 848w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 1272w, https://substackcdn.com/image/fetch/$s_!8n8j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fced24ac2-56e8-4e43-a497-db22180ff945_1600x208.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>To get the information about the token what we actually can do is make an additional RPC call for each Source / Destination address in the transfer.&nbsp; We use the getAccountInfo method and call this function for each source/destination address&nbsp;in a transfer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VsW5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VsW5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 424w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 848w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 1272w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VsW5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png" width="1456" height="1036" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1036,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!VsW5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 424w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 848w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 1272w, https://substackcdn.com/image/fetch/$s_!VsW5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd9b64c-9b13-497f-b905-26a3b41eb9b5_1600x1138.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>This function will return the Owner (or the EOA), the mint address (token address) and token decimal and amount they hold (we don&#8217;t need this but I thought it nice to show). I think of it similar to the balanceOf function on an ERC20 address.&nbsp; Below is an example response from the getAccountInfo method.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bfx7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bfx7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 424w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 848w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 1272w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bfx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png" width="471" height="497.9570747217806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:665,&quot;width&quot;:629,&quot;resizeWidth&quot;:471,&quot;bytes&quot;:30536,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bfx7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 424w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 848w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 1272w, https://substackcdn.com/image/fetch/$s_!bfx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9378640b-8b1c-4c7f-97d0-9612cbc7646c_629x665.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Finally, we arrive at a data frame with all the necessary information we need to start analysis.&nbsp; We can filter our dataframe for just USDC Transfers, sum the amount, group by block number and plot.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u9Kq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u9Kq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 424w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 848w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 1272w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u9Kq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png" width="1456" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb46403f-227a-4573-a953-fe992d11cf54_1600x802.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!u9Kq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 424w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 848w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 1272w, https://substackcdn.com/image/fetch/$s_!u9Kq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb46403f-227a-4573-a953-fe992d11cf54_1600x802.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>With this data we can start to do all sorts of token analysis.&nbsp; Getting to this point is not a linear path and requires multiple RPC calls. This is the best approach to getting transfers.&nbsp;</p><blockquote><p>Approach #2: Parsing Transfers with Pre &amp; Post Token Balance Changes</p></blockquote><p>Each transaction includes details about the balances of accounts before and after a transaction.&nbsp; So a simple approach to calculate the total value that was transferred within a block is to calculate the balance change for each address and token involved in the transaction.&nbsp; We can then sum these up and group them.&nbsp; This approach will tell us the balance changes and thus we can back out the transferred amount.&nbsp; However, these balance changes are different from transfers since a wallet can send/receive the same amount of an asset in a transaction and will have a 0 balance change but there will be transfers in the instructions.&nbsp;</p><p>After we parse the balance changes we get an output data frame that looks like this: <br>We see the Owner, the amount of the token before and after the transaction, the change and the token address. </p><p>From here we can start to filter for our token of interest. In this case it will be USDC and then we will plot it.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9-tO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9-tO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 424w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 848w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 1272w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9-tO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png" width="653" height="384.80357142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:858,&quot;width&quot;:1456,&quot;resizeWidth&quot;:653,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!9-tO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 424w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 848w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 1272w, https://substackcdn.com/image/fetch/$s_!9-tO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb7f0eb1-b754-4a13-ba06-3a7c62bd10fa_1600x943.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Remember, this is the path of least resistance - However, what we are actually tracking is the total amount of an asset that changed wallets in a transaction.&nbsp; This transaction is a good example of why this technique is not 100% accurate for tracking transfers.&nbsp;</p><p><strong>How do our 2 approaches compare?</strong></p><p>Let&#8217;s put our two approaches side by side and you can see that the charts follow a similar trend.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KdU_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KdU_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 424w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 848w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 1272w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KdU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png" width="1456" height="723" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:723,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!KdU_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 424w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 848w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 1272w, https://substackcdn.com/image/fetch/$s_!KdU_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc098bea4-ecd9-4045-8131-5de6cd54b07f_1600x794.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 can see that in block 294291897, our transfer values do not line up. While the general trend remains consistent it is not a 1 to 1 approach.&nbsp; I wanted to show both techniques because I think it is important to explain that transfers &amp; balance changes are not the same across the board.&nbsp;</p><h1><strong>What&#8217;s next?</strong></h1><p>I hope this was helpful as a baseline for getting some of the fundamental analysis going on Solana.&nbsp; In part 2, we will dive deeper into analyzing a specific protocol using just RPC methods and the program IDLs.&nbsp; If you have feedback, comments, questions please feel free to <a href="https://x.com/doyle126">DM me on Twitter/X</a>. </p><p>I am always open to feedback and ideas.&nbsp;</p><h3><strong>Additional Resources</strong></h3><ul><li><p><a href="https://read.cryptodatabytes.com/p/a-guide-to-solana-for-ethereum-analysts">A Guide to Solana for Ethereum Analysts</a> by <a href="https://x.com/andrewhong5297">Andrew Hong</a> is a great resource for learning terminology and concepts for Solana.&nbsp;</p></li><li><p><a href="https://read.cryptodatabytes.com/p/a-guide-to-solana-token2022-token">A Guide to Solana Token2022</a> by <a href="https://x.com/andrewhong5297">Andrew Hong</a></p></li><li><p><a href="https://sandwiched.me/">MEV Monitoring</a> on Solana by <a href="https://x.com/0xGhostLogs">Ghost</a></p></li><li><p><a href="https://solana.com/docs/rpc">Solana Docs</a> have a ton of great resources as well.&nbsp;</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building Your Solana Data Pipeline]]></title><description><![CDATA[A short video covering everything you need to know to build a Solana data pipeline on Dune]]></description><link>https://read.cryptodatabytes.com/p/creating-your-solana-data-pipeline</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/creating-your-solana-data-pipeline</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 23 Sep 2024 15:11:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/398c915a-65fb-429e-8e93-5700be4d2b42_1372x770.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the video below, I cover how to understand Dune Solana tables and also how to take that data through a rigorous data transformation pipeline (systems, feeds, positions, labels, and metrics). I also cover how to leverage some of Dune&#8217;s more powerful features such as materialized views and lineages.</p><div id="youtube2-xxwiIfgsVEw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xxwiIfgsVEw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xxwiIfgsVEw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Resources mentioned in the video:</p><ul><li><p><a href="https://docs.google.com/presentation/d/1p80lhKj_xjVpGvzsQR0B5Yta6kDiqXG168_dzelyKoM/edit#slide=id.g25008dfe446_1_42">Slides</a></p></li><li><p><a href="https://dune.com/ilemi/solana-dex-metrics">Solana Dex Dashboard</a></p></li><li><p><a href="https://dune.com/queries/3130352/5222104">Example ETL Query</a></p></li><li><p><a href="https://docs.dune.com/data-catalog/solana/overview">Solana Table Docs</a></p></li><li><p><a href="https://dune.com/ilemi/solana-program-quickstart">Program Quickstart Dashboard</a></p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to Navigate Contract Code (Solidity) as an Analyst]]></title><description><![CDATA[Navigating contracts across protocols and chains to find that one bit of data you need can be hard - let me make it easier for you.]]></description><link>https://read.cryptodatabytes.com/p/how-to-navigate-contract-code-solidity</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/how-to-navigate-contract-code-solidity</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Thu, 22 Aug 2024 14:38:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Other Beginner Resources:</p><ul><li><p><a href="https://roadmap.sh/r?id=65fee5b66deb533d6e19fb88">Crypto Data Analyst Roadmap</a></p></li><li><p><a href="https://read.cryptodatabytes.com/p/a-basic-wizard-guide-to-dune-sql">Beginners SQL and Ethereum Guide</a></p></li><li><p><a href="https://read.cryptodatabytes.com/p/how-to-understand-transactions-traces">Basics of reading a block explorer</a></p></li></ul><p>It&#8217;s easier and more fun to build with a community, <a href="https://read.cryptodatabytes.com/p/join-the-bytexplorers">come join the Bytexplorers</a> to learn and earn during your data journey.</p></blockquote><p>Oftentimes you start looking into a protocol, and quickly find an example transaction that calls 5+ contracts and evoke 20+ logs. You go to their docs (if they have any) and maybe see something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6G52!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6G52!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 424w, https://substackcdn.com/image/fetch/$s_!6G52!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 848w, https://substackcdn.com/image/fetch/$s_!6G52!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 1272w, https://substackcdn.com/image/fetch/$s_!6G52!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6G52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png" width="525" height="411.2637362637363" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:637,&quot;resizeWidth&quot;:525,&quot;bytes&quot;:42718,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6G52!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 424w, https://substackcdn.com/image/fetch/$s_!6G52!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 848w, https://substackcdn.com/image/fetch/$s_!6G52!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 1272w, https://substackcdn.com/image/fetch/$s_!6G52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa1a0bb-ba53-49fc-a51b-6a2fb7035f62_637x499.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">There are <a href="https://docs.aave.com/developers/deployed-contracts/v3-mainnet/ethereum-mainnet">actually 10 more contracts</a> for Aave v3, but the image would be too long</figcaption></figure></div><p>How can you navigate these solidity contracts to find the answers and data you need for your analysis? I&#8217;ll cover a full example with my tips and tricks in this guide. We&#8217;ll be studying the new <a href="https://dune.com/ilemi/zora-extensions">Zora x Uniswap</a> contracts, deployed in early August 2024.</p><p><em>You should try <a href="https://docs.dune.com/web-app/search#advanced-search">searching on Dune</a> for existing queries/dashboards covering a protocol first, since it is usually easier to read/fork existing SQL than to go straight into reading Solidity.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Starting From Transactions</h2><p>Whenever you start analyzing a protocol, there are two example transactions you want to find:</p><ul><li><p>The main contract deployment transaction (deploying a new nft or uniswap pool)</p></li><li><p>The main action transaction (swap, mint, etc)</p></li></ul><p>I say &#8220;main&#8221; because oftentimes there are many contracts and actions, but they usually all stem from one starter contract/action. Most of the time your actual start comes from a tweet somewhere, and you have to work your way to these two transactions.</p><p>Let&#8217;s take the example of Zora&#8217;s new uniswap extension on their protocol - essentially allows you to create an ERC1155 that can be traded on uniswap as secondary as an ERC20 instead of opensea/blur. They tweeted out this <a href="https://twitter.com/zora/status/1821579634108178546">short overview guide</a> and also <a href="https://twitter.com/zora/status/1821273397760041200">their first mint on this new protocol</a>. In true crypto fashion, the real documentation doesn&#8217;t come till much later (or sometimes never). You should still try searching for documentation first, but this example will rely on purely onchain data for sleuthing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TnJU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TnJU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 424w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 848w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 1272w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TnJU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png" width="461" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:461,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13593,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TnJU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 424w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 848w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 1272w, https://substackcdn.com/image/fetch/$s_!TnJU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d6ec14-8e34-4c68-8701-ae2e8d6779c9_461x274.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://zora.co/collect/zora:0x86af55fc811fef6f9729d32adcf2c253ca5a16c1/2?referrer=0x2Ae8c972fB2E6c00ddED8986E2dc672ED190DA06">link to first mint</a></figcaption></figure></div><p>I normally find the easiest way to get the main contracts and transactions is by just interacting with the product myself. So <a href="https://explorer.zora.energy/tx/0xf8a74dd53ecff823bf3614c7dede6d9f9ce9c31525710cd3fb7ce5d00191720b">I minted some limitless zorbs</a> when it first went live. </p><p>This transaction gives me the main action I can refer back to later for volume calculations, but more importantly it gives me two of the main contracts to refer to:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oc7T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oc7T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 424w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 848w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 1272w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oc7T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png" width="936" height="149" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03235a57-841f-450a-a359-75a4ed158a84_936x149.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:149,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20475,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oc7T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 424w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 848w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 1272w, https://substackcdn.com/image/fetch/$s_!oc7T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03235a57-841f-450a-a359-75a4ed158a84_936x149.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://explorer.zora.energy/tx/0xf8a74dd53ecff823bf3614c7dede6d9f9ce9c31525710cd3fb7ce5d00191720b?tab=index">link to explorer</a></figcaption></figure></div><ol><li><p><strong>ZoraTimedSaleStrategyImpl</strong>: I know this must be central to this new protocol upgrade since its the main &#8220;to&#8221; contract, and likely is where configurations for mints/secondary are set</p></li><li><p><strong>Limitless Zorb</strong>: I know this is the ERC1155 token that somehow gets converted to an ERC20 for uniswap trading.</p></li></ol><p>Contract pages on explorers always have a &#8220;creation tx hash&#8221; link (usually you are first taken the token page, then you have to click on the contract again to get to the contract page).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yt9c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yt9c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 424w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 848w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 1272w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yt9c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png" width="682" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:682,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28826,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yt9c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 424w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 848w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 1272w, https://substackcdn.com/image/fetch/$s_!yt9c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2d83012-aa20-4f5e-8a69-9098fbeb1fa1_682x253.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0x86aF55FC811FEF6f9729D32aDcf2c253CA5A16C1">Limitless Zorb Collection Contract</a></figcaption></figure></div><p>So if we quickly aggregate what we have, we get:</p><ul><li><p><strong><a href="https://explorer.zora.energy/address/0x777777722D078c97c6ad07d9f36801e653E356Ae?tab=contract">ZoraTimedSaleStrategy</a> </strong>(ZTSS) </p><ul><li><p><a href="https://explorer.zora.energy/tx/0x9157f50c80a93ae135267644e6fd4ae9b5b558fce2f86557445fe0aeda535d09">created txn</a> - a quick look tells me this is NOT a factory contract, because it calls a &#8220;Deterministic Caller&#8221; contract which is used to <a href="https://book.getfoundry.sh/tutorials/create2-tutorial">deploy with CREATE2</a> instead of CREATE. This deploys it at an exact address, usually so the same contract can have the same address across multiple chains.</p></li></ul></li><li><p><strong><a href="https://explorer.zora.energy/address/0x86aF55FC811FEF6f9729D32aDcf2c253CA5A16C1">The ERC1155/ERC20 Collection (Limitless Zorb)</a></strong></p><ul><li><p><a href="https://explorer.zora.energy/tx/0x8cd4b29e5ab191d8fa805c829f7a89a3e2fe186acbd934f5b98e8862e54cc9a4?tab=index">creation txn</a> - I see a &#8220;factory&#8221; is called to deploy this, so likely this is a factory created contract where each collection gets its own deploy.</p></li><li><p><a href="https://explorer.zora.energy/tx/0xf8a74dd53ecff823bf3614c7dede6d9f9ce9c31525710cd3fb7ce5d00191720b?tab=index">a mint txn</a> - the one I sent from the product interface</p></li><li><p>we don&#8217;t have a secondary/uniswap transaction yet</p></li></ul></li></ul><p>With this base in mind, we can define a question and dive into the code.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Diving Into the Contracts</h2><p>Alright, once you have a general lay of the land with the main contracts and transactions, you will be ready to start sleuthing around. You should lay out your questions and try and navigate the code to answer each one, for this guide I want to answer the question:</p><blockquote><p><strong>OUESTIONS</strong>:  &#8220;How is the Uniswap pool initiated after the mint period ends, who controls that first LP position, and who gets the swap fees from it?&#8221;</p><p><em>If you think you&#8217;re good at this, try and answer this question using only the links I&#8217;ve given thus far.</em></p></blockquote><p>We can guess that permissions/functions on sales are tied to the ZoraTimedSaleStrategy (ZTSS) contract, and not to the collection contract itself. Funny enough, I don&#8217;t see any events from this contract emitted in the collection creation transaction - that&#8217;s a signal for me that you can create an ERC1155 and likely attach on the ERC20/timed sale component afterwards.</p><p>I go the <a href="https://explorer.zora.energy/address/0x777777722D078c97c6ad07d9f36801e653E356Ae?tab=contract">ZTSS contract code page</a> on the explorer, and first thing I see is that <a href="https://docs.openzeppelin.com/contracts/4.x/api/proxy">it&#8217;s a proxy</a>. This means that the &#8220;proxy&#8221; handles storage of variables but there is an &#8220;implementation&#8221; contract with the actual contract logic. You usually have to go to the &#8220;read proxy&#8221; or &#8220;write proxy&#8221; tabs to then get the implementation address:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HShN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HShN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 424w, https://substackcdn.com/image/fetch/$s_!HShN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 848w, https://substackcdn.com/image/fetch/$s_!HShN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 1272w, https://substackcdn.com/image/fetch/$s_!HShN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HShN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png" width="607" height="180.62374821173105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:699,&quot;resizeWidth&quot;:607,&quot;bytes&quot;:19339,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HShN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 424w, https://substackcdn.com/image/fetch/$s_!HShN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 848w, https://substackcdn.com/image/fetch/$s_!HShN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 1272w, https://substackcdn.com/image/fetch/$s_!HShN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43a92502-cddc-4b21-840e-f01cd7f32d94_699x208.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0xA582f080c36B7551dbC541a0CFFeB6101183C9b3?tab=contract">Implementation here</a></figcaption></figure></div><blockquote><p>&#9888; WARNING: Proxies can be upgraded to point at different implementations to change the logic. The proxy in this example was upgraded on 8/23/2024 to <a href="https://explorer.zora.energy/address/0x9aCA1F8E0472f2Cc66BBE2e1981a2a8Ad2fE5720?tab=contract">this implementation instead</a>, but the rest of the guide references <a href="https://explorer.zora.energy/address/0xA582f080c36B7551dbC541a0CFFeB6101183C9b3?tab=contract">the old implementation</a>. This is to introduce <a href="https://x.com/zora/status/1827088045805621751">a new launchMarket() condition</a>.</p></blockquote><p>Alright, now we&#8217;re getting somewhere&#8230;. kind of. Looking at the code explorer, I can see there are actually dozens of inherited/referenced contracts here. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XiHk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XiHk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 424w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 848w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 1272w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XiHk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png" width="259" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:259,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34451,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XiHk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 424w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 848w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 1272w, https://substackcdn.com/image/fetch/$s_!XiHk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F234286d1-5560-4acd-b95f-9187ab868c9c_259x549.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 lot of this you can straight up ignore - however the most important ones to keep an eye on are the &#8220;interfaces&#8221;. Interfaces are used to <a href="https://www.alchemy.com/overviews/solidity-interface">let one contract call another contract function</a>. I know that Uniswap is actually a different set of contracts, so I want to look for where the uniswap interface for creating/adding liquidity to a pool is. </p><p>This is as simple as ctrl+f &#8220;IUniswapV3Pool&#8221; which I see in the imports at the top of the file. I get 5 hits, 2 of which are the import line and 3 of which sit on lines 285-290. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iZel!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iZel!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 424w, https://substackcdn.com/image/fetch/$s_!iZel!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 848w, https://substackcdn.com/image/fetch/$s_!iZel!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 1272w, https://substackcdn.com/image/fetch/$s_!iZel!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iZel!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png" width="1302" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1302,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68007,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iZel!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 424w, https://substackcdn.com/image/fetch/$s_!iZel!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 848w, https://substackcdn.com/image/fetch/$s_!iZel!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 1272w, https://substackcdn.com/image/fetch/$s_!iZel!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46871b-41b7-4997-b926-85d4b394ce5e_1302x466.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Scrolling up a bit, I can see that it&#8217;s this &#8220;launchMarket()&#8221; function being called. The notes here say that anyone can call it after a primary sale ends to create the uniswap pool. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EQk3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EQk3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 424w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 848w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 1272w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EQk3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png" width="819" height="82" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:82,&quot;width&quot;:819,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11312,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EQk3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 424w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 848w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 1272w, https://substackcdn.com/image/fetch/$s_!EQk3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61337436-fe27-4d55-aeda-4b5ca98720c0_819x82.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">You could also have found this by finding the uniswap pool and the creation tx hash of the pool too, if you already had that address.</figcaption></figure></div><p>Now if I scroll back down, I will notice that I don&#8217;t see the uniswap pool being created or liquidity added actually - just a price being set. Instead, the end of the function has an &#8220;IERC20Z&#8221; interface being called with the &#8220;activate&#8221; function.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3nh-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3nh-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 424w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 848w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 1272w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3nh-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png" width="679" height="193" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:193,&quot;width&quot;:679,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15660,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3nh-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 424w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 848w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 1272w, https://substackcdn.com/image/fetch/$s_!3nh-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e74a3e-f1d8-40e6-b875-dfae0f7c56e5_679x193.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p>Alright - so now we know we have to find an ERC20Z contract somehow and check the &#8220;activate&#8221; function definition. Your mind should hopefully go to finding the ERC20Z related to the limitless zorb collection. There are a few ways to go about this:</p><ul><li><p>Expect a read function on the collection to get the erc20 address</p></li><li><p>Look for some event from the collection creation txn for the erc20 address</p></li><li><p>Look for some event/function on the ZTSS that ties the erc20 contract to the collection contract</p></li></ul><p>The first two are actually dead ends in this case, because the erc20 is an optional component of the collection. If I go to the ZTSS proxy page and the &#8220;logs&#8221; column, I can see a bunch of SaleSet() events that seem to contain a &#8220;erc20zAddress&#8221; and &#8220;poolAddress&#8221; fields. This is not always the most foolproof method, I recommend you plug in the contract into my <a href="https://read.cryptodatabytes.com/p/how-to-start-analyzing-any-web3-protocol">EVM quickstart dashboard</a> and check examples of the most emitted events/functions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iB2c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iB2c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 424w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 848w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 1272w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iB2c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png" width="1160" height="586" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:586,&quot;width&quot;:1160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74691,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iB2c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 424w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 848w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 1272w, https://substackcdn.com/image/fetch/$s_!iB2c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d6043fc-67fe-49ec-b789-7ef7e6d0253c_1160x586.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0x777777722D078c97c6ad07d9f36801e653E356Ae?tab=logs">Logs page on the ZTSS proxy</a></figcaption></figure></div><p>I&#8217;ll click into one of the recent SetSale() transactions to see what is going on. By following the logs, I can see that the ERC20z and uniswap pool are actually already deployed (CREATE2) when the sale extension is activated! It just doesn&#8217;t have any liquidity yet, so no trades can be made. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fofj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fofj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 424w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 848w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 1272w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fofj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png" width="935" height="387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:387,&quot;width&quot;:935,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50268,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fofj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 424w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 848w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 1272w, https://substackcdn.com/image/fetch/$s_!Fofj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ff739f7-d80d-4030-a9ee-ececd02f1abd_935x387.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/tx/0x58a0aef9c1d8993c7fbf0d4078602a01252b4a5f769061ad270ed8d9de1d6695?tab=logs">Logs link</a></figcaption></figure></div><p>The ERC20z is also deployed from the ZTSS contract, so I can be 100% sure there is some read function to search up a collection and gets its ERC20z (and uniswap pool) details. Sure enough, we have a &#8220;sale()&#8221; read function:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TUua!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TUua!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 424w, https://substackcdn.com/image/fetch/$s_!TUua!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 848w, https://substackcdn.com/image/fetch/$s_!TUua!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 1272w, https://substackcdn.com/image/fetch/$s_!TUua!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TUua!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png" width="735" height="387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:387,&quot;width&quot;:735,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42700,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TUua!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 424w, https://substackcdn.com/image/fetch/$s_!TUua!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 848w, https://substackcdn.com/image/fetch/$s_!TUua!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 1272w, https://substackcdn.com/image/fetch/$s_!TUua!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcffb0e0a-deb3-4ede-a05f-7f3aa2888620_735x387.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0x777777722D078c97c6ad07d9f36801e653E356Ae?tab=read_proxy">read &#8220;sale()&#8221; function with the Limitless Zorb details</a></figcaption></figure></div><p>I plug in the <a href="https://zora.co/collect/zora:0x86af55fc811fef6f9729d32adcf2c253ca5a16c1/2">Limitless Zorb collection address and token id</a> (from the URL) and get our erc20zAddress and poolAddress! You could have also found this by ctrl + f &#8220;IERC20Z&#8221; in the ZTSS implementation code if you had noticed it earlier &#128521;. </p><p>Alright now we <a href="https://explorer.zora.energy/address/0xF3cDcA11108780008D04491Ac699E962abEFF151">the erc20z address</a> - so now let&#8217;s get back to looking for the &#8220;activate()&#8221; function. It&#8217;s a proxy, so I again go &#8220;read contract&#8221; &#8594; &#8220;implementation&#8221; to get to the actual code. Then I just ctrl + f for &#8220;function activate(&#8220; since that&#8217;s how functions are defined in solidity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!clTD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!clTD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 424w, https://substackcdn.com/image/fetch/$s_!clTD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 848w, https://substackcdn.com/image/fetch/$s_!clTD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 1272w, https://substackcdn.com/image/fetch/$s_!clTD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!clTD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png" width="1313" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1313,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64089,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!clTD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 424w, https://substackcdn.com/image/fetch/$s_!clTD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 848w, https://substackcdn.com/image/fetch/$s_!clTD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 1272w, https://substackcdn.com/image/fetch/$s_!clTD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5044014b-dad0-4e5f-a85f-91e1eef89981_1313x529.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0xA23bD7012a050166E24a2A67B33Adb63E75eF37c?tab=contract_code">contract code</a></figcaption></figure></div><p>Within that function, I see this key line that calls the Uniswap position manager through an interface to create the first liquidity position:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T3xL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T3xL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 424w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 848w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 1272w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T3xL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png" width="1168" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:1168,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17700,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T3xL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 424w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 848w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 1272w, https://substackcdn.com/image/fetch/$s_!T3xL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05c17d33-cf76-4756-96e6-4bb34fd18d20_1168x127.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>It actually goes to a &#8220;royalties&#8221; address! Alright, one more ctrl + f to find where royalties is defined. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ag1M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ag1M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 424w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 848w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 1272w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ag1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png" width="673" height="213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:213,&quot;width&quot;:673,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23242,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ag1M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 424w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 848w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 1272w, https://substackcdn.com/image/fetch/$s_!ag1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0ac689-fcc1-4ba5-bb41-2f12bb1db184_673x213.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>It&#8217;s a public variable, which means it automatically gets a read function. I go read contract &#8220;royalties()&#8221; to get the royalty contract address:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q6v5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q6v5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 424w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 848w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 1272w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q6v5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png" width="578" height="161" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:161,&quot;width&quot;:578,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13183,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q6v5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 424w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 848w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 1272w, https://substackcdn.com/image/fetch/$s_!q6v5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0561e96-4b84-43a8-85af-4cfd4556ee3f_578x161.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We&#8217;re so close now - let&#8217;s go to the royalties contract code next. This one is simple in terms of there are just two relevant public functions: claim() and claimFor() which passes the fees from the liquidity pool position to the creator of the token. The complexity here lies in reading &#8220;internal&#8221; functions, <a href="https://docs.soliditylang.org/en/latest/contracts.html#function-visibility">which are basically functions that can&#8217;t be called outside the contract</a> and are called within the external functions. </p><p>I usually paste the code into chatgpt and ask it &#8220;Here is a solidity contract. Can you draw a node graph that shows all function call invocation flows? Show public/external functions in orange, internal functions in light blue, and interface functions in grey. Display this as a tree diagram from left to right, where the start of a function call is on the left. Increase figure size to fit all nodes.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qlKl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qlKl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 424w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 848w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 1272w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qlKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1001,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:358029,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qlKl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 424w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 848w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 1272w, https://substackcdn.com/image/fetch/$s_!qlKl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F903ecd9b-1ea1-41d5-b212-379226d3048c_3040x2090.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://chatgpt.com/share/c9f5c1d0-615d-43cb-a8d9-f911f9df24ee">the chat link</a></figcaption></figure></div><p>So the the function invocation flow we&#8217;re interested in looks like this:</p><ul><li><p>claim() &#8594; _claim() &#8594; _collect() / _transfer()</p></li></ul><p>You will only see &#8220;claim()&#8221; called in the transaction traces since in-contract calls don&#8217;t have traces (besides memory traces but we won&#8217;t get into that). _collect() gets the fees from the pool by calling the position manager uniswap interface, and _transfer() passes those fees to the creator. </p><p>Notably, the _transfer() function has a fee that goes to Zora team. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OkjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OkjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 424w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 848w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 1272w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OkjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png" width="789" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:789,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35026,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OkjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 424w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 848w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 1272w, https://substackcdn.com/image/fetch/$s_!OkjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c7b5d8-ef45-4e7d-b96b-09ea36573fc1_789x407.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://explorer.zora.energy/address/0x77777771DF91C56c5468746E80DFA8b880f9719F?tab=contract">Royalties Contract</a></figcaption></figure></div><p>We can find a public variable feeBps in getFee() function, so we read it from the contract &#8220;read&#8221; page:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SijK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SijK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 424w, https://substackcdn.com/image/fetch/$s_!SijK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 848w, https://substackcdn.com/image/fetch/$s_!SijK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 1272w, https://substackcdn.com/image/fetch/$s_!SijK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SijK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png" width="323" height="327.9820051413882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95953eaa-a255-424e-9320-9e91f133ab86_389x395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:389,&quot;resizeWidth&quot;:323,&quot;bytes&quot;:21743,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SijK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 424w, https://substackcdn.com/image/fetch/$s_!SijK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 848w, https://substackcdn.com/image/fetch/$s_!SijK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 1272w, https://substackcdn.com/image/fetch/$s_!SijK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95953eaa-a255-424e-9320-9e91f133ab86_389x395.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Its in &#8220;bps&#8221; which means basis points, where 100 basis points goes into 1 percentage point. 2500/100 is 25, so they take a 25% fee off of the initial LP rewards! If you go to the uniswap pool you&#8217;ll see it takes a 1% fee on all swaps. So effectively, the creator takes a 0.75% fee and Zora takes a 0.25% fee on all swaps.</p><p>Notably, there is no withdraw LP position function anywhere in the contract - so that LP position can NEVER be withdrawn from the pool. The creator (and zora) can never rug the pool, albeit those ERC20/ETH LP tokens are unclaimable now too (unless you buy out the whole curve).</p><p>All in all, we have our answers now:</p><ul><li><p><strong>How is the Uniswap pool initiated after the mint period ends?</strong> The launchMarket() function, and anyone can call it. The pool is already deployed with the erc20z on SetSale() event.</p></li><li><p><strong>Who controls that first LP position?</strong> No one, it goes to the royalty contract and is burned. The royalty contract can still collect fees from the position though.</p></li><li><p><strong>Who gets the swap fees from it?</strong> It&#8217;s split between Zora and the Creator, effectively 0.25% and 0.75% respectively.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Contract Mastery</h2><p>What a journey! If you&#8217;ve follow everything here, then you truly have a grasp of how to navigate across contracts, interfaces, proxies, and transactions. Knowing how to do this by only relying on block explorers and tools like Dune will make you a super analyst. </p><p>Again, all of that was to answer &#8220;How is the Uniswap pool initiated after the mint period ends, who controls that first LP position, and who gets the swap fees from it?&#8221;</p><p>Our list of found resources over this journey:</p><ul><li><p><strong><a href="https://explorer.zora.energy/address/0x777777722D078c97c6ad07d9f36801e653E356Ae?tab=contract">ZoraTimedSaleStrategy</a> </strong>(ZTSS),<strong> (<a href="https://explorer.zora.energy/address/0xA582f080c36B7551dbC541a0CFFeB6101183C9b3?tab=contract">impl</a>)</strong></p><ul><li><p><a href="https://explorer.zora.energy/tx/0x9157f50c80a93ae135267644e6fd4ae9b5b558fce2f86557445fe0aeda535d09">created txn</a> - a quick look tells me this is NOT a factory contract. So it must be shared across all collections.</p></li><li><p><a href="https://explorer.zora.energy/tx/0x79f03b94feae1f4c9463621dfc0288fdc045e88a5a3112b76a34a1fb421dfea5">SaleSet ERC20/Pool creation txn</a></p></li></ul></li><li><p><strong><a href="https://explorer.zora.energy/address/0x86aF55FC811FEF6f9729D32aDcf2c253CA5A16C1">The ERC1155/ERC20 Collection (Limitless Zorb)</a></strong></p><ul><li><p><a href="https://explorer.zora.energy/tx/0x8cd4b29e5ab191d8fa805c829f7a89a3e2fe186acbd934f5b98e8862e54cc9a4?tab=index">creation txn</a> - I see a &#8220;factory&#8221; is called to deploy this, so likely this is a factory created contract where each collection gets its own deploy.</p></li><li><p><a href="https://explorer.zora.energy/tx/0xf8a74dd53ecff823bf3614c7dede6d9f9ce9c31525710cd3fb7ce5d00191720b?tab=index">a mint txn</a> - the one I sent from the product interface</p></li><li><p><a href="https://explorer.zora.energy/address/0xF3cDcA11108780008D04491Ac699E962abEFF151">erc20z address</a> (<a href="https://explorer.zora.energy/address/0xA23bD7012a050166E24a2A67B33Adb63E75eF37c?tab=contract_code">impl</a>)</p></li></ul></li><li><p><a href="https://explorer.zora.energy/address/0x77777771DF91C56c5468746E80DFA8b880f9719F?tab=contract">Royalties Contract</a> (not a proxy)</p></li></ul><p>You&#8217;ll pick up patterns on how functions are structured and stuff like system parameters and deploys are managed the more you dig into the data. Keeping a running list of notes like I have above when doing your research will make your life a lot easier too. </p><p>Happy learning, and good luck with your queries!</p>]]></content:encoded></item><item><title><![CDATA[Building an NFT Mint Recommendation Model (Zora)]]></title><description><![CDATA[We've studied a basic contract recommendation model with eigentrust (openrank) before, let's build a more product specific model now.]]></description><link>https://read.cryptodatabytes.com/p/building-an-nft-mint-recommendation</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/building-an-nft-mint-recommendation</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Sat, 10 Aug 2024 18:28:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/z_mCDf0E8gs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><a href="https://read.cryptodatabytes.com/p/openrank-powering-apps-with-contextual">Learn about OpenRank</a> and the eigentrust algorithm, and <a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">check out the example python notebook</a> (with input graphs from dune queries)</p><p>&#127942; We have a <a href="https://read.cryptodatabytes.com/p/bytexplorers-mission-2-creating-reputation">competition to create the best graph datasets</a> ending next Sunday (August 18th). <a href="https://discord.com/invite/CCAXgJNNAb">Join the discord</a> if you have questions.</p></blockquote><h3>Eigentrust: Hubs and Authorities (HNA)</h3><p>Make sure to <a href="https://read.cryptodatabytes.com/p/openrank-powering-apps-with-contextual">read the original eigentrust overview</a> to understand the algorithm. To review, there are two main inputs:</p><ul><li><p><strong>localtrust</strong>: this is your measurement of interactions between two nodes, as node &#8220;i&#8221; signals some value to node &#8220;j&#8221;. This could be a token transfer, attestation, vote reply/like, etc.</p></li><li><p><strong>pretrust</strong>: this is your "seed" selection of nodes who you think should be more trusted in the network.</p></li></ul><p>Now, this works if all of your nodes are homogenous (i.e. all the same type). But many interaction graphs in crypto are not just wallet to wallet, they often include a mix of different contract interactions instead.</p><p>To capture this nuance, we create an interaction graph of node type 1 to node type 2, i.e. a wallet interaction with an NFT (mint/trade). We then take the matrix dot product of this graph and it&#8217;s transpose, essentially creating a relationship between all minters of the same NFT(s) - think of it like a Wallet to NFT to Wallet matrix. This end matrix is our new localtrust! We refer to it as a &#8220;round trip&#8221; in our examples. It&#8217;s still the same eigentrust algorithm used from here on out.</p><p>Pretrust methodologies stay the same, the notebook shows off many different &#8220;variants&#8221; for selecting a pretrust seed. </p><blockquote><p>You can find the step by step calculation and model creation <a href="https://app.hex.tech/f7590f16-5e23-4925-9e84-6656844ee649/hex/ad547612-3bd5-4a49-9649-caac6ce18403/draft/logic">in this jupyter notebook</a>. This contains a toy example not covered in the video. </p><p>A video walkthrough of the zora NFT recommendation feed can be found below:</p></blockquote><div id="youtube2-z_mCDf0E8gs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;z_mCDf0E8gs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/z_mCDf0E8gs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Bytexplorers Mission #2: Creating Reputation Graphs with OpenRank]]></title><description><![CDATA[Compete to create the best graph datasets that will power feeds such as Optimism Governance Proposals, OnceUpon Recommended Mints, and Degen Tip Casts.]]></description><link>https://read.cryptodatabytes.com/p/bytexplorers-mission-2-creating-reputation</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/bytexplorers-mission-2-creating-reputation</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 01 Jul 2024 16:57:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k9nV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#128249; <a href="https://www.youtube.com/watch?v=BVSPvunA9R0&amp;feature=youtu.be">Watch this OpenRank overview video (with hands-on code walkthrough)</a></p></blockquote><p>Mission quests are partnerships with foundations across the crypto ecosystem to openly discuss and answer high-value research questions. In the <a href="https://read.cryptodatabytes.com/p/bytexplorers-mission-quest-1-optimism">last mission</a>, we spent six weeks helping the Optimism NumbaNerds research all aspects of their 4th airdrop.</p><p><strong>For mission #2, we&#8217;ll be creating reputation graphs that power feeds using OpenRank. The mission will run until August 18th, 2024. </strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k9nV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k9nV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k9nV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png" width="610" height="343.125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:610,&quot;bytes&quot;:509836,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k9nV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!k9nV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb744be9a-12d7-408c-a008-2c07d9febcde_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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>Explorers can discuss their ideas and questions in the <a href="https://discord.com/invite/CCAXgJNNAb">Openrank discord</a> or mission central channel of our telegram. We&#8217;ll also host weekly office hours in the discord on Tuesday evenings (6pm EST) and Saturday afternoons (1pm EST).</p><h2>Building with Graph Algorithms in Crypto</h2><blockquote><p><a href="https://read.cryptodatabytes.com/p/openrank-powering-apps-with-contextual">Learn about OpenRank</a> and the eigentrust algorithm, and <a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">check out the example python notebook</a> (with input graphs from dune queries)</p><p><a href="https://read.cryptodatabytes.com/p/building-an-nft-mint-recommendation">Here&#8217;s an example</a> using &#8220;hubs and authorities&#8221; in a slightly more advanced approach.</p></blockquote><p>Openrank is a platform that computes different kinds of graph algorithms for you, given a set of input graphs. It specializes in peer to peer graphs, and are a perfect fit for crypto due to the nature of addresses in unifying identities and interactions onchain/offchain.</p><p>The eigentrust algorithm takes in an interaction graph and a set of trusted nodes inside that graph, and outputs a ranked score of all nodes. These two inputs are called &#8220;localtrust&#8221; and &#8220;pretrust&#8221; respectively:</p><ul><li><p><strong>localtrust</strong>: this is your measurement of interactions between two nodes, as node &#8220;i&#8221; signals some value to node &#8220;j&#8221;. This could be a token transfer, attestation, vote reply/like, etc.</p></li><li><p><strong>pretrust</strong>: this is your "seed" selection of nodes who you think should be more trusted in the network.</p></li></ul><p>In most interaction graphs, the action &#8220;value&#8221; is exponentially distributed. Think of voting power, transfer USD values, cast likes/recasts. To normalize trust across the graph, nodes that are close to the &#8220;pretrust&#8221; seed set will inherit half their trust value from the seeds.</p><p>These inputs go into an eigentrust model, which gives us a ranked value of all connected nodes. You can then weight the activity of those nodes to curate a feed, such as weighting interactions with contracts in the last seven days to create a &#8220;trending contracts&#8221; feed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cvxX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cvxX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 424w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 848w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png" width="590" height="466.35724331926866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1124,&quot;width&quot;:1422,&quot;resizeWidth&quot;:590,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!cvxX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 424w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 848w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/ilemi/openrank">feed dashboard</a></figcaption></figure></div><p>The easiest way to create these two inputs is by using Dune (if you&#8217;re using onchain data). <a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">In my example notebook</a> that generated the feed above, I created a transfer token graph of all casters in the /base channel on farcaster for my localtrust graph, and then created a pretrust seed by ranking all casters by engagement on their casts. </p><p>There is a lot of creativity and flexibility in curating these two inputs, which we will aim to explore in the competition.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Competing to Create the Best Graph Inputs</h2><blockquote><p>Knowing python is not strictly necessary, you could give us your input graphs and we&#8217;ll help run the eigentrust algorithm for you (and upload the results back into Dune so you can test against feed queries).</p></blockquote><p>Below are our three feeds that we want to power with openrank. We&#8217;ve listed a few ideas for generating pretrust and localtrust graphs that you can start building from. These are just suggestions, you can be as creative as you would like.</p><ul><li><p><strong>(</strong><a href="https://www.jokerace.io/contest/optimism/0x57fc898a2fee57c22ec89c91a5bc74475dfad85f">submission</a>) <strong>Optimism Token House:</strong> Recommend <a href="https://vote.optimism.io/">governance proposals</a> using Agora feeds.</p><ul><li><p><strong>Pretrust Ideas:</strong> Top delegated to (OP only or many tokens), most active voters, top token holders, active token house or grant members in forums.</p></li><li><p><strong>Localtrust Ideas:</strong> Delegate to, voted on proposal creator. Check out <a href="https://www.jokerace.io/contest/optimism/0x6e8601c0e57873139f1da5524eff876f93b22b6e">submissions to mission #1</a> to see example of delegation data. You can also use github repo data, <a href="https://app.hex.tech/00bffd76-9d33-4243-8e7e-9add359f25c7/app/1488806c-cc70-4245-b8f6-78ace4a5a0e7/latest">put together by Open Source Observer</a>.</p></li><li><p><strong>Feed Query:</strong> Use the <strong>governance_optimism.agora_proposals</strong> table in Dune.</p></li></ul></li><li><p><strong>(</strong><a href="https://www.jokerace.io/contest/optimism/0x730f6c3b230ae7335a52893356f2685fac94698a">submission</a>) <strong>Trending Mints:</strong> Recommend top NFT mints by chain.</p><ul><li><p><strong>Pretrust Ideas:</strong> Top NFT traders, top minters, age of wallet, top creators of NFTs, first minters</p></li><li><p><strong>Localtrust Ideas:</strong> You could use nft transfers, token transfers, interactions on zora, interactions on farcaster</p></li><li><p><strong>Feed Query:</strong> Use the <strong>nft.transfers</strong> table in Dune (<a href="https://dune.com/queries/3786988/6367116">example query</a>). <a href="https://read.cryptodatabytes.com/p/building-an-nft-mint-recommendation">See Zora mints example here too</a>.</p></li></ul></li><li><p><strong>(</strong><a href="https://www.jokerace.io/contest/optimism/0x7de40ee8e00c32edb1041e782ec12000ea4b0415">submission</a>) <strong>Degen Cast Tipping:</strong> Recommend <a href="https://www.degen.tips/">top users and casts to tip</a>.</p><ul><li><p><strong>Pretrust Ideas:</strong> Top DEGEN holders, top tippers, top tipped, number of unique tipper (or tipped) accounts, most influence on farcaster, power badge users. Some example user rankings <a href="https://dune.com/ilemi/farcaster-explorer">in this dashboard.</a></p></li><li><p><strong>Localtrust Ideas:</strong> tipping interactions, reply/recast/like interactions (filter for quality of engagement). <a href="https://dune.com/fookin_no_wan/farcaster-degen-tips-stats">Reference queries in this dashboard</a> for DEGEN data.</p></li><li><p><strong>Feed Query:</strong> Use the dune.neynar.dataset_farcaster_casts table to show the feed of recommended casts (group by fid if you want to recommend users).</p></li></ul></li></ul><p>Remember that the point of these graph generated feeds is to such that we can curate different types of feeds that fulfill different purposes. Creating a Zora focused feed based on first-minters seed will give us different recommendations than a generic NFT minting feed using a farcaster frame minter seed or a top NFT trader seed. </p><p>Think about the end feed you want to generate before you tackle the mission. You&#8217;ll likely also want to scope down on your feed at the start, for example I started with just /base casters in my example so that I only needed to compute 50k addresses of graph data.</p><h4> There are four steps to create your own feed:</h4><ol><li><p>Create your localtrust and pretrust queries</p></li><li><p>Input your queries into the eigentrust algorithm using the sdk</p></li><li><p>Fetch your eigentrust results and plug it into a feed query, using the score for some weighted ranking of objects.</p></li></ol><p>Again, you should <a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">reference the example python notebook</a> to see these steps in depth. These are reference links you should be aware of:</p><ul><li><p><a href="https://docs.openrank.com/">OpenRank Docs</a></p></li><li><p><a href="https://github.com/Karma3Labs/openrank-sdk">Python SDK repo</a></p></li><li><p><a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">Python Notebook</a> </p><ul><li><p><a href="https://app.hex.tech/00bffd76-9d33-4243-8e7e-9add359f25c7/app/1488806c-cc70-4245-b8f6-78ace4a5a0e7/latest">Another Python Notebook</a></p></li></ul></li><li><p><a href="https://dune.com/ilemi/openrank">Dune feed dashboard</a></p></li></ul><h2>Mission Participation, Rewards, and Guidelines</h2><p>We&#8217;ve made the process and rewards simpler than the last mission. </p><ul><li><p><strong>Feed Races: </strong>We&#8217;ll be using jokerace, there will be one race to submit into per feed.</p><ul><li><p><a href="https://www.jokerace.io/contest/optimism/0x57fc898a2fee57c22ec89c91a5bc74475dfad85f">Governance feed submission</a></p></li><li><p><a href="https://www.jokerace.io/contest/optimism/0x730f6c3b230ae7335a52893356f2685fac94698a">NFT mint feed submission</a></p></li><li><p><a href="https://www.jokerace.io/contest/optimism/0x7de40ee8e00c32edb1041e782ec12000ea4b0415">Degen cast feed submission</a></p></li></ul></li><li><p><strong>Submissions: </strong>Explorers will get a maximum of two submissions per feed race. Only one reward can be won per race. Your submission should be in the form of a jupyter notebook (github, google colab, hex, etc), and should include your input datasets, output graph, and an output feed example.</p></li><li><p><strong>Rewards: </strong>For each feed category, the top submission by votes will earn $300 USDC. Second will get $200 USDC, and third will get $100 USDC. </p></li><li><p><strong>Voting: </strong>Only the OpenRank team members will get votes, they each get 5000 votes per race. Criteria for voting are expanded on below.</p></li></ul><blockquote><p>You will <a href="https://www.cryptodatabytes.com/passport/mint">need a Bytexplorer pass</a> to earn rewards, you can still submit your work without a pass though. Work must be submitted by August 18th 2024.</p></blockquote><h4><strong>Winning Criteria:</strong></h4><ul><li><p><strong>Novelty of localtrust and pretrust queries: </strong>There are lots of combinations of onchain and offchain interactions between addresses. We&#8217;re looking for the most creative ways you can combine these into an interaction graph.</p></li><li><p><strong>Size/coverage of the output graph:</strong> It&#8217;s important to have well connected graphs, so that our feed is not missing large portions of activity. For example, if there are 10,000 casters in a farcaster channel then having at least 3,000 scores in the output of eigentrust will be ideal.</p></li><li><p><strong>Subjective quality of the feed results:</strong> Different graph inputs will give us different kinds of feeds. You should provide rationale on why this feed is useful and different than just a simple ranked feed based on value/count.</p></li><li><p><strong>Well explained rationale: </strong>Clearly written logic explaining your choice of graph inputs, ranking method in the feed, and use case(s) for the feed. This is the most important part of your submission.</p></li></ul><p>Explorers can discuss their ideas and questions in the <a href="https://discord.com/invite/CCAXgJNNAb">Openrank discord</a> or mission central channel of our telegram. We&#8217;ll also host weekly office hours in the discord on Tuesday evenings (6pm EST) and Saturday afternoons (1pm EST).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[A Guide to Solana Token2022 (Token Extensions)]]></title><description><![CDATA[Solana Token2022 enables transfer hooks, interest bearing tokens, confidential transfers, fees, and more. Let's look at how it all works and the data behind it.]]></description><link>https://read.cryptodatabytes.com/p/a-guide-to-solana-token2022-token</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/a-guide-to-solana-token2022-token</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Fri, 28 Jun 2024 15:19:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z-vC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 424w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 848w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png" width="364" height="165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1456,&quot;resizeWidth&quot;:364,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 424w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 848w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption"><em>Research done in partnership with Archetype, where I am a <a href="https://www.archetype.fund/team">research advisor.</a></em></figcaption></figure></div><blockquote><p><strong>Solana Learning Resources:</strong></p><ul><li><p><a href="https://read.cryptodatabytes.com/p/starter-guide-to-solana-data-analysis">4 part Starter Guide to Solana data</a> </p></li><li><p><a href="https://read.cryptodatabytes.com/p/a-guide-to-solana-for-ethereum-analysts">Ethereum &lt;&gt; Solana Translation</a></p></li><li><p><a href="https://read.cryptodatabytes.com/p/basic-solana-data-analytics-in-one">1 hour video guide to token transfers and balances</a></p></li></ul></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p>The Solana Token program (<a href="https://solana.fm/address/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA/transactions">spl_token</a>) has existed for years, and I&#8217;ve covered before how the token/account structure works <a href="https://read.cryptodatabytes.com/p/starter-guide-to-solana-data-analysis-4dc">with fungible tokens and NFTs</a>. It will be helpful background context, but is not required knowledge to follow this guide.</p><p>Token2022 is the newest iteration of that program and enables much more flexible token mechanics through &#8220;extensions&#8221;. It&#8217;s often referred to now as the &#8220;Token Extension Program&#8221;. The program is already being used by companies like PayPal for their<a href="https://solana.com/news/paypal-pyusd-on-solana"> PyUSD stablecoin</a>. </p><p><strong>I&#8217;ll walk through the following concepts:</strong></p><ul><li><p>Differences between spl_token and token2022</p></li><li><p>Understanding the instruction and enum patterns</p></li><li><p>The new transfer lifecycle</p></li><li><p>Tables to query on Dune</p></li><li><p>ZK and Compressed Tokens</p></li></ul><p><strong>Below are some important links that I will refer to:</strong></p><ul><li><p><a href="https://solana.fm/address/TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb/transactions">Token2022 on Solana.fm (Block Explorer)</a></p></li><li><p><a href="https://dune.com/ilemi/solana-token2022">Token2022 Dune Dashboard Overview</a></p></li><li><p><a href="https://spl.solana.com/token-2022">Solana Token2022 Docs</a></p></li><li><p><a href="https://docs.rs/spl-token-2022/latest/spl_token_2022/">Token2022 Rust Crate Docs</a></p><ul><li><p><a href="https://docs.rs/spl-token/latest/spl_token/">spl_token Rust Crate Docs</a></p></li></ul></li><li><p><a href="https://github.com/solana-labs/solana-program-library/tree/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program-2022">Token2022 Rust Code Github</a></p><ul><li><p><a href="https://github.com/solana-labs/solana-program-library/tree/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program/src">spl_token Rust Github</a></p></li></ul></li></ul><blockquote><p>Big shoutout to <a href="https://twitter.com/jnwng">Jon Wong</a> for answering all my questions, be sure to follow him to keep up with all Solana developments.</p></blockquote><h2>token2022 versus spl_token</h2><p>The overall account structure has not changed with token2022, a single token mint account is still created per token and an associated account is created using the same associated token (atoken) program. Remember that wallets can be assigned as the own of an associated account, and each associated account can hold SOL (for rent) and one token mint balance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oa4t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oa4t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oa4t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg" width="472" height="417.38476011288805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1063,&quot;resizeWidth&quot;:472,&quot;bytes&quot;:73601,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!Oa4t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oa4t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29de88a3-2652-4f4e-bfae-0cda7794e229_1063x940.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">You could replace token2022 with spl_token, and functionally nothing is different.</figcaption></figure></div><p>Token2022 also retains the same transferChecked() instruction and arguments, as to be easily backwards compatible (the &#8220;transfer()&#8221; instruction is gone though). You can also still create metadata and NFT edition accounts using the same old Metaplex token metadata and master edition programs.</p><p>However, a lot of new functionality has been added. Let&#8217;s take a look at all token extensions (<a href="https://spl.solana.com/token-2022/extensions">official docs</a>):</p><p><em>&#9989; = live, &#9202; = in development</em></p><p>Mint token account extensions (these <em>affect ALL created associated accounts)</em>:</p><ul><li><p><strong>&#9989; transfer fees: </strong>set a percentage fee to take on all transfers. You can set a maximum fee to take as well.</p></li><li><p><strong>&#9989; closing mint: </strong>set an owner who can delete the token mint forever.</p></li><li><p><strong>&#9989; interest-bearing tokens: </strong>set an interest rate for ALL tokens to accrue at. Can change the rate at any time.</p></li><li><p><strong>&#9989; transfer hook: </strong>assign a program id, where after every transfer a CPI to that program will call an arbitrary &#8220;execute()&#8221; instruction on the assigned program.</p></li><li><p><strong>&#9989; non-transferable tokens:</strong> tokens cannot be transferred after mint. Can still be burned.</p></li><li><p>&#9989; <strong>permanent delegate:</strong> approve a delegate who can control transfers of any amount forever</p></li><li><p><strong>&#9989; default account state:</strong> sets default account data</p></li><li><p><strong>&#9989; immutable ownership: </strong>account owner cannot be changed (this is different from the program account owner)</p></li><li><p><strong>&#9989; metadata pointer: </strong>pointer to metadata program id</p></li><li><p><strong>&#9989; metadata: </strong>token metadata (basic program contains name, symbol, uri)</p></li><li><p><strong>&#9202; group pointer: </strong>like collection mint id from metaplex standard, which groups tokens together (useful for NFTs).</p></li><li><p><strong>&#9202; group metadata: </strong>metadata of the collection</p></li><li><p><strong>&#9202; member pointer: </strong>id for a set of tokens within a group</p></li><li><p><strong>&#9202; member metadata: </strong>metadata/permissions for the set of tokens</p></li></ul><blockquote><p>&#9888; IMPORTANT NOTE: All of these extensions must be initialized before the mint account is created. You can&#8217;t add or remove extensions after creating the token. </p><p>You can also combine most of these extensions, with obvious caveats around non-transferable tokens.</p></blockquote><p>Associated token account extensions (set per account):</p><ul><li><p><strong>&#9989; approve delegate (same as in spl_token): </strong>set a delegate who can control transfers up to a certain amount</p></li><li><p><strong>&#9989; freeze (same as in spl_token): </strong>set an authority who can freeze and thaw a token at will (make non-transferrable).</p></li><li><p><strong>&#9989; memo: </strong>call the memo program with some text string, after a transfer. requirement is set on a per-account level.</p></li><li><p><strong>&#9202; confidential transfers: </strong>keep transfer values private but source and destination accounts are public, <a href="https://spl.solana.com/confidential-token/quickstart">account owner must opt-in and create an encryption key</a>. Can deposit and withdraw from the private account.</p><ul><li><p><strong>&#9202; confidential transfer fees: </strong>take fees on private transfers, this is set on ALL accounts (no opt out).</p></li></ul></li><li><p><strong>&#9202; CPI guard: </strong>Disable <a href="https://spl.solana.com/token-2022/extensions#cpi-guard">certain cross program invocations (CPIs)</a> to the token2022 program. This intends to allow for wallet to wallet transfers only.</p></li></ul><p>If we look at all the token2022 mints created so far, fee tokens have been the main extension utilized in these new tokens.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TDE0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TDE0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 424w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 848w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 1272w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TDE0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png" width="932" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79b4600b-34c1-401e-91c4-990522514dc8_932x407.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18486,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TDE0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 424w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 848w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 1272w, https://substackcdn.com/image/fetch/$s_!TDE0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b4600b-34c1-401e-91c4-990522514dc8_932x407.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/ilemi/solana-token2022">Go to Dashboard</a></figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Breaking Down Instructions and the Enum Pattern</h2><p>If you&#8217;ve looked into Solana data before, you should be familiar with &#8220;discriminators&#8221; which are the signatures of specific functions on a program. If not, I&#8217;ve created <a href="https://dune.com/ilemi/solana-program-quickstart">this dashboard</a> for quickly breaking down any decoded program in Dune and giving you some data intuition. One of the queries I constantly use for identifying discriminators <a href="https://dune.com/queries/3048989">is this sleuther query</a> (this one works even if the program isn&#8217;t decoded). </p><blockquote><p><a href="https://read.cryptodatabytes.com/p/starter-guide-to-solana-data-analysis-c38">Read this guide</a> if you want to learn more about discriminators and program types</p></blockquote><p>I&#8217;ve hardcoded the token2022 program into that sleuther query, showing the instructions and call stats over the last 365 days:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mzkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mzkt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 424w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 848w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 1272w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mzkt!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png" width="922" height="481.00646352723913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:565,&quot;width&quot;:1083,&quot;resizeWidth&quot;:922,&quot;bytes&quot;:57765,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mzkt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 424w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 848w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 1272w, https://substackcdn.com/image/fetch/$s_!Mzkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e675aee-c0d7-4663-bc77-5e5fdf26c805_1083x565.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3789199/6370879">Link to query</a>, <a href="https://github.com/solana-labs/solana-program-library/blob/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program-2022/src/instruction.rs#L712">Link to Github</a></figcaption></figure></div><p>As it is a native program, the discriminators are 1 byte and follow a nice and orderly number system. There are 41 different instructions - it&#8217;s worth looking at each instruction&#8217;s example tx and then also its respective <a href="https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/instruction.rs">instruction code</a> and logic <a href="https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/processor.rs">in the processor file</a>. </p><p>Most extensions use an extra enum on top of the discriminator to decide which extension instruction to invoke. Let&#8217;s take a look at the transfer extension, which is enum number 26 (0x1a). It contains the following nested enum instructions:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5yAe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5yAe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 424w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 848w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 1272w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5yAe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png" width="278" height="236" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:236,&quot;width&quot;:278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9436,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5yAe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 424w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 848w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 1272w, https://substackcdn.com/image/fetch/$s_!5yAe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ab64d1-ded4-46dc-bdfb-b0e7d4e5b5aa_278x236.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/extension/transfer_fee/instruction.rs">Extension Code</a></figcaption></figure></div><p>You can see there are actually 6 instructions nested within this extension, numbering 0-5 respectively. So if I&#8217;m filtering for the InitializeTransferFeeConfig instruction, I would check that the first 2 bytes of the call data are equal to 0x1a00. Unfortunately, this means you&#8217;ll need to do manual decoding of any call data variables since Dune does not handle this nested function format. You can look at my authority tracker query below for some examples.</p><h3>On Authorities</h3><p>Authorities for who can freeze accounts, change fees and interest rates, add hooks, and more can be changed after initialization. This honestly does not matter much today, but as people build more programmatic ways of changing these variables it will matter more. This can be changed with setAuthority() instruction, where an enum in the call data decides which authority is being changed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tX1N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tX1N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 424w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 848w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 1272w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tX1N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png" width="407" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29264,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tX1N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 424w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 848w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 1272w, https://substackcdn.com/image/fetch/$s_!tX1N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e8927c3-e95c-48d6-84fb-e66b2d61ed47_407x462.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://docs.rs/spl-token-2022/latest/spl_token_2022/instruction/enum.AuthorityType.html">link to docs</a>, <a href="https://github.com/solana-labs/solana-program-library/blob/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program-2022/src/instruction.rs#L1086">link to github</a></figcaption></figure></div><p><a href="https://dune.com/queries/3789045">I&#8217;ve created this query that reconstructs all authorities for a token mint</a>, you could adjust any subquery here to get historical authorities at any given block slot for a given authority type.</p><p>Note that you could set authorities to 0x0000&#8230; (32 bytes of 0x00) to immutably &#8220;turn off changes&#8221; to an extension. The becomes 11111111111111111111111111111111 in base58, which is the system program id.</p><h2>Transfer Lifecycle</h2><p>In the original spl_token, the transfer instruction <a href="https://github.com/solana-labs/solana-program-library/blob/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program/src/processor.rs#L228">is about 100 lines of code</a>. In the token2022 program, the transfer instruction <a href="https://github.com/solana-labs/solana-program-library/blob/8f50c6fabc6ec87ada229e923030381f573e0aed/token/program-2022/src/processor.rs#L285">is about 250 lines of code</a>. The main reason for this is all of the new checks that occur (on both mint and account level), you can ctrl + F for &#8220;get_extension&#8221; to see when each extension is referenced. </p><p><strong>Let&#8217;s go over how transfer fees, interest accrual, and transfer hooks work in this lifecycle.</strong></p><p>If a memo extension is active on the token account, then the memo program <a href="https://solscan.io/tx/ZjaSWkYD9ceQM1eapGCpEh3WKfV2PQ74wRf5MrRkvYVqHNMhkM88JgfZxYsAjQtdL5E6akjhdvNBDr9XZqm7mPe">will be called in an instruction BEFORE the transfer happens</a>.</p><p>Transfer fees are set as a percentage of the amount transferred, and there is a max fee that can be taken (both are set by the transfer fee config authority). What&#8217;s confusing here is that users can call transferChecked() or transferCheckedWithFee() as 0x1a01. The latter clearly defines the fee amount, the former does not. You&#8217;ll soon notice that in a transfer transaction of a fee token, there is no transfer of that fee amount to some treasury (in an instruction or account activity/balances). That&#8217;s because the fee amount is held on the destination account, which can then be withdrawn from at some future date using HarvestWithheldTokensToMint() and then taken out to the treasury with WithdrawWithheldTokensFromMint(). I&#8217;ve captured the correct fee amount in the tokens_solana.transfer table in the &#8220;fee&#8221; column by calculating the set fee percentage at the time of the transfer.</p><p>Interest bearing tokens are a bit harder to intuitively understand. No matter when the tokens were minted, interest accrual on them is counted starting from the time when the token mint was first created. Logically, you can see this in the <a href="https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/extension/interest_bearing_mint/mod.rs#L85">amount_to_ui_amount function</a> that just takes the <a href="https://corporatefinanceinstitute.com/resources/wealth-management/continuously-compounded-interest/">cumulative compounding interest</a> of token amount scaled by total time passed. So if there was a token with a 5% interest rate created 1 year ago, and I minted you 100 tokens today, then in actuality you would have received roughly 105 tokens instead. Onchain in both the transaction and the balances you would only see 100 tokens though. It&#8217;s not intuitive, and the data work to get the right balance is also difficult. The Solana team is working on a few helper functions to correctly give you the interest accrued balance in an RPC call, but that is not ready yet.</p><p>Transfer hooks are called <a href="https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/processor.rs#L523">at the end of the transfer function</a>, and will look for a generic &#8220;execute()&#8221; function on the assigned hook program id. The hook authority can assign any one program id to be hooked onto the token. If no execute function is found, it will continue normally with the transfer. You can revert a transfer by throwing an error in the hook, and you could have a generic hook chaining program if you wanted to string together multiple hooks to a single token. Some interesting applications include <a href="https://github.com/duneanalytics/spellbook/pull/6244">identity hooks by Civic</a>, but it is largely an unexplored feature. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Finding the Data Tables in Dune</h2><p>If you&#8217;ve clicked through <a href="https://dune.com/ilemi/solana-token2022">the linked queries and dashboard</a>, then you have likely already spotted the logic and tables I use for token2022. I&#8217;ll list them below:</p><ul><li><p><strong>tokens_solana.fungible:</strong> get all token ids, symbols, and deciamls. I added a token_version column, <a href="https://github.com/duneanalytics/spellbook/blob/main/solana/models/tokens/solana/tokens_solana_fungible.sql">model logic</a></p></li><li><p><strong>tokens_solana.transfers: </strong>get all token mint, burn, and transfers. I<strong> </strong>added a token_version column and a fee column, <a href="https://github.com/duneanalytics/spellbook/blob/main/solana/models/tokens/solana/tokens_solana_token22_spl_transfers.sql">model logic</a></p></li><li><p><strong>solana_utils.daily_balances (or latest_balances):</strong> you can still use &#8220;address&#8221; as the associated account address and filter for token2022 mint ids, <a href="https://github.com/duneanalytics/spellbook/blob/main/solana/models/solana_utils/solana_utils_daily_balances.sql">model logic</a></p></li><li><p><strong>tokens_solana.fees_history:</strong> reconstructed fee history for tokens, <a href="https://github.com/duneanalytics/spellbook/blob/main/solana/models/tokens/solana/tokens_solana_fees_history.sql">model logic</a></p></li><li><p><strong>all authorities: </strong><a href="https://dune.com/queries/3789045">see this query</a> for latest authorities and how to construct historical authorities</p></li><li><p><strong>interest bearing accruals: </strong>I&#8217;ve calculated current, average, 1 year forward looking return rate, and total effective historical return rate <a href="https://dune.com/queries/3790410/6372750">in this query</a>.</p></li></ul><p><em>Note that I have not included token2022 in tokens_solana.nft yet, because NFT standards on Solana are a hot mess that I&#8217;m not motivated to touch right now.</em></p><p>Overall, you&#8217;ll see that token2022 has not really hit developer adoption yet besides a small blip in Feb 2024. Only 70,000 fungible tokens have been created using this standard as of July 2024.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nnsh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nnsh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 424w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 848w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 1272w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nnsh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png" width="932" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28036,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nnsh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 424w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 848w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 1272w, https://substackcdn.com/image/fetch/$s_!Nnsh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c563d0-c455-43c8-8324-0fc00a613d41_932x407.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/ilemi/solana-token2022">Go to Dashboard</a></figcaption></figure></div><p>This is partially because it&#8217;s not yet supported by most DEXs or defi protocols yet, besides some limited usage in Fluxbeam, Printdex, and Orca. You can see some of the top protocols using token2022 below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hAic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hAic!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 424w, https://substackcdn.com/image/fetch/$s_!hAic!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 848w, https://substackcdn.com/image/fetch/$s_!hAic!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 1272w, https://substackcdn.com/image/fetch/$s_!hAic!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hAic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png" width="1021" height="568" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:568,&quot;width&quot;:1021,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49394,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hAic!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 424w, https://substackcdn.com/image/fetch/$s_!hAic!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 848w, https://substackcdn.com/image/fetch/$s_!hAic!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 1272w, https://substackcdn.com/image/fetch/$s_!hAic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1f824f-85d8-4f0d-a11b-08eface66f15_1021x568.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/ilemi/solana-token2022">Go to Dashboard</a></figcaption></figure></div><h2>ZK and Compressed Tokens</h2><p>If you&#8217;ve been following along for a while, you have likely realized that Solana has many competing token standards - even I don&#8217;t understand all of them. I want to make a quick note to differentiate between confidential tokens, compressed tokens, and ZK tokens; as those are going to potentially be very important but also very confusing.</p><ul><li><p><a href="https://spl.solana.com/confidential-token/quickstart">Confidential transfers</a> with private transfer amounts is an extension on token2022, where you can deposit into and withdraw with a hidden amount. The source and destination of funds are still public. A user can have confidential and non-confidential balances of the same token, at will.</p></li><li><p><a href="https://www.helius.dev/blog/solana-nft-compression">Compressed token accounts</a> are an old concept already seen with encoding accounts into leaves of a merkle tree (because call data is basically free and not stored on the node). You typically have at least three accounts (the mint, the associated, and the metadata accounts) so avoiding creating them saves a lot of SOL. This was created for compressed NFTs, which saw great adoption last year. Metaplex built a program on top called &#8220;Bubblegum&#8221; which allowed you to transfer/mint/burn these leaves of the tree. The NFT version does not have an option to transition between normal accounts and compressed accounts.</p></li><li><p><a href="https://www.zkcompression.com/learn/core-concepts/lifecycle-of-a-transaction">ZK compression tokens</a> goes further to include proofs for token actions like transfers directly in the data, versus using an onchain component like bubblegum. You&#8217;re essentially updating your leaf in the merkle tree each time you transact. All transaction data is still written to the mainnet chain, just in call data. Nothing is saved in the state of the blockchain (i.e. in other accounts or balances), so this is considered stateless transactions. Think of the proof verification into a merkle tree as a Verkle tree, and the fact you can update individual leaves as a Reckle tree (recursive proof). What&#8217;s cool here is you can actually compress and decompress this token into a normal token account at will. Note that these tokens are NOT privacy preserving.</p></li></ul><p>Stateless transactions, compression of data, and privacy preservation are three key parts to the end state of blockchains, so while these are more technically complex they are worth reading about to keep up with. I&#8217;ll come out with more in depth guides for confidential transfers and ZK compression tokens when they are fully live on mainnet.</p><h2>In Conclusion</h2><p>Tokens on Solana are fully in experimentation mode, with different teams opting for varying amounts of data and programmatic flexibility. While the many standards can be confusing at times, it&#8217;s exciting to see most of these theoretical constructs finally live. While usage of the new token2022 extensions is still low right now, I&#8217;m excited to revisit it in half a year to see what exciting applications have been built.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[OpenRank: Building Graph Datasets for Contextual Crypto App Feeds]]></title><description><![CDATA[You've heard of pagerank, the algo that powers Google search. OpenRank supports a similar algo that will power the next wave of crypto applications - I'll explain and show you how to build with it.]]></description><link>https://read.cryptodatabytes.com/p/openrank-powering-apps-with-contextual</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/openrank-powering-apps-with-contextual</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Wed, 19 Jun 2024 20:05:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/BVSPvunA9R0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Disclaimer: I am an investor and advisor to the <a href="https://twitter.com/openranknetwork">OpenRank team</a>.</em></p><div id="youtube2-BVSPvunA9R0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BVSPvunA9R0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BVSPvunA9R0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><blockquote><p><a href="https://read.cryptodatabytes.com/p/bytexplorers-mission-2-creating-reputation">Join our research mission the month of July</a> to build the best graph datasets to power feeds for governance, nft mints, and social discovery.</p></blockquote><p>Crypto frontends today mostly contain simple leaderboards - top tokens by volume, liquidity, mints, points, votes, etc. If we want to move into consumer crypto experiences that beat the behemoths of web2 today, we&#8217;ll need more than leaderboards in our app feeds. </p><p>OpenRank is one of the building blocks that will help get us there, and is already used by Metamask Snaps, Degen tips, and Supercast. OpenRank is a compute layer where <a href="https://docs.openrank.com/openrank-sdk">many reputation graph algorithms</a> can be run. The first of which is the <a href="https://docs.openrank.com/reputation-algorithms/eigentrust">eigentrust algorithm</a>. </p><p>In this article, I&#8217;m going to introduce you to the OpenRank eigentrust algorithm and cover:</p><ul><li><p>The importance of community built graphs, and why you&#8217;ll need them</p></li><li><p>Key concepts of the algorithm and how it works</p></li><li><p>Creating your own graph, referencing one I made myself in a python notebook</p></li></ul><p>Let&#8217;s get into it!</p><blockquote><p><strong>I&#8217;ll be running a Bytexplorers mission within the next month where we&#8217;ll compete to make the best graphs for feeds on top apps in crypto - be sure to subscribe to be notified of when that kicks off!</strong></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Why build recommendation graphs with the community instead of only your own ML team?</h2><p>When building algorithms and feeds in crypto, you&#8217;ll quickly face a few data problems:</p><ul><li><p>Transactions contain many inter-layered actions</p></li><li><p>The relationships between addresses can be infinitely complex, built up over many transactions.</p></li><li><p>An address itself contains partial identities, each of which are relevant in different contexts.</p></li><li><p>All three of the above are ever-evolving at an exponential rate, let&#8217;s call those growing elements our &#8220;context&#8221;. </p></li></ul><h4><strong>Your small ML team isn&#8217;t going to be able to keep up with this never-ending context.</strong></h4><p>You aren&#8217;t going to want to task your backend or data engineering team with this either, they have a product to build. The days of an application owning the user and user data structures is over. You don&#8217;t get a simple link, user id, like/reply/share, and post id anymore. You can have claims, splits, drops, swaps, stakes, delegated, voted, mints&#8230; there&#8217;s a new &#8220;action&#8221; that drops almost every day. And a new chain, new type of wallet, new type of identity&#8230; good luck with all that!</p><h4><strong>I believe we&#8217;ll see a graph data science community evolve in crypto in the next year, built around the OpenRank protocol and product.</strong> </h4><p>I&#8217;ve been part of the wizard community at Dune for years now, and have seen the power that the community has over a small team. And I&#8217;ve seen almost every small team in crypto go from &#8220;yeah we can do this ourselves with a node and RDS database&#8221; to &#8220;we need to tap into community built data tools like the Graph and Dune&#8221;. To me, creating the combinations of queries and graphs tuned for specific kinds of feeds and communities is a similar problem. We&#8217;ll need to start collecting and testing graphs that can power feeds on every app from Farcaster clients to block explorers. </p><h4><strong>The idea of &#8220;one feed&#8221; is skeuomorphic and will be left behind.</strong> The user is the curator.</h4><p>In crypto, users not only want to take their social graphs with them across apps, but the contexts hidden within them too. If I&#8217;m actively following the /degen community on farcaster, I want to see the actions of that community as the base of recommendations if I&#8217;m on Zora, Roam.xyz, or OnceUpon too. And I want to be able to toggle that feed to the context of another community I&#8217;m part of, say the artblocks collectors. The future will be one where users discover and pick their own feeds, out of contexts that are naturally occurring and created - not boxed within some group or channel feature on a single platform.</p><h2>How does OpenRank Eigentrust work?</h2><p>The <a href="https://docs.openrank.com/reputation-algorithms/eigentrust">eigentrust algorithm</a> is similar to pagerank in that it ranks nodes in a graph network. The difference is that it focuses on capturing complex peer-to-peer relationships, as a distribution of trust. It was first built for assigning trust scores in a file sharing network. In crypto, you could imagine using this to proxy high-quality governance delegates or identify trustworthy smart contracts. </p><p>Below is the eigentrust formula you&#8217;ll soon become familiar with:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7045!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7045!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 424w, https://substackcdn.com/image/fetch/$s_!7045!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 848w, https://substackcdn.com/image/fetch/$s_!7045!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 1272w, https://substackcdn.com/image/fetch/$s_!7045!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7045!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png" width="246" height="65" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:65,&quot;width&quot;:246,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!7045!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 424w, https://substackcdn.com/image/fetch/$s_!7045!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 848w, https://substackcdn.com/image/fetch/$s_!7045!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 1272w, https://substackcdn.com/image/fetch/$s_!7045!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa505e7-86d2-4fe6-a581-da1e24408307_246x65.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>There are two key inputs above: pretrust nodes and localtrust graphs. "P" is your pretrust and "S" is your localtrust.</p><ul><li><p><strong>localtrust</strong>: this is your measurement of interactions between two nodes, as node &#8220;i&#8221; signals some value to node &#8220;j&#8221;. This could be a token transfer, attestation, vote reply/like, etc.</p></li><li><p><strong>pretrust</strong>: this is your "seed" selection of nodes who you think should be more trusted in the network. </p></li><li><p><strong>&#8220;c&#8221;: </strong>this constant (between 0 to 1) is a weighting of the trust value between the overall localtrust graph and the pretrust seed. Interaction graphs typically have power law distributions so a higher pretrust weight helps normalize the distribution of final ranked values. </p></li></ul><p>If the math doesn&#8217;t make sense, think of a social graph like Twitter. Influence (followers, likes, replies) is typically concentrated on just a few individuals, leading to a power law dynamic. By setting a diverse set of influential individuals and selecting a constant &#8220;c&#8221; of 0.5 or higher, you&#8217;re essentially saying that the people those trusted individuals interact with shall inherit half the value of that influence. This is what equalizes and distributes the trust score across the network more evenly.</p><blockquote><p>Inputs and outputs <a href="https://stackoverflow.com/questions/62178888/can-someone-explain-to-me-how-minmaxscaler-works">are all normalized</a>, so it doesn&#8217;t matter the scale of the values you use for localtrust/pretrust. Outputs are also always between 0 and 1 from the eigentrust model.</p></blockquote><h4>How is this related to choosing any context and creating any feed?</h4><p>Let&#8217;s say you wanted to create an NFT mint recommendation feed. You could use a localtrust of NFT transfers/sales, and create a pretrust of the top 100 wallets by USD value of transfers/sales. This would be a global feed, and one that likely closely mimics a generic leaderboard. Our goal here is personalization, so it&#8217;s important we actually select a more contextual set of pretrust nodes. So instead, you could create a list of 100 wallets ranked by number of artblocks curated projects minted. This will now affect the output graph in a way that artblocks community wallets (and those wallets within 2-3 degrees of the community) get the highest values of &#8220;trust&#8221; in the network. Now, your feed will be more personalized to the artblocks community. You could also plug in just your own wallet(s) into the pretrust, so that you get an output of what your closest friend wallets (and their friends) are minting onchain.</p><p>From this example, it should hopefully be clear that having a focus on the kind of feed you want to build will determine what input graphs you want to create. I know this may still be too abstract, so I&#8217;ll walk through a concrete code example in the next section. Remember, OpenRank handles the compute and storage of these eigentrust graphs, and recommends feeds you can use outputs in. All you have to do is decide on the pretrust and localtrust inputs.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>How do you build a eigentrust graph with OpenRank?</h2><h4>The end goal</h4><p>In this example, I want to provide a feed of recommended contracts based on the wallets of casters in the <a href="https://warpcast.com/~/channel/base">/base</a> channel <a href="https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster">on Farcaster</a> (it&#8217;s an app like Twitter). The output of eigentrust is just a list of ids and values, in my graph each id is tied to a farcaster user id (fid). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nZ2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nZ2E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 424w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 848w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 1272w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nZ2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png" width="630" height="315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:1420,&quot;resizeWidth&quot;:630,&quot;bytes&quot;:98262,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nZ2E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 424w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 848w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 1272w, https://substackcdn.com/image/fetch/$s_!nZ2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0e2458-9619-44c1-bb05-05f67746d7f2_1420x710.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/ilemi/openrank</figcaption></figure></div><p>Remember that usually there is a <a href="https://web.stanford.edu/class/cs124/lec/socialnetworks21.pdf">power law dynamic</a> in graph networks, so if I just took the top casters in the /base channel by number of casts or followers or engagement and used that to weight onchain actions, then it will be heavily dependent on just the top 10-20 casters. Using eigentrust, I&#8217;m able to more evenly disperse that trust across 12,000 casters instead which will give me a much more diverse weighting of onchain interactions.</p><p>After creating that eigentrust output, I weight their top contract interactions over the last week give us this recommendation feed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cvxX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cvxX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 424w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 848w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png" width="644" height="509.0407876230661" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1124,&quot;width&quot;:1422,&quot;resizeWidth&quot;:644,&quot;bytes&quot;:232678,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cvxX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 424w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 848w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1272w, https://substackcdn.com/image/fetch/$s_!cvxX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd28f32a-b7f2-432b-83b0-b2d5833ec8bf_1422x1124.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/ilemi/openrank</figcaption></figure></div><p>You <a href="https://dune.com/ilemi/openrank">can check out this dashboard</a> to see other feeds created from that graph, such as NFT minting, DEX token trading, and Farcaster channel activity.</p><h4>Into the code of the model</h4><p>Now that you&#8217;ve seen the end goal, let&#8217;s talk about how I created the ranked graph.</p><blockquote><p><em>All code for this example can be found in this <a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">hex.tech notebook</a>, and <a href="https://github.com/Karma3Labs/openrank-sdk/blob/main/openrank_example.ipynb">the jupyter notebook</a> if you prefer to run locally.</em></p></blockquote><p>To start our journey, I created two queries for our pretrust and localtrust respectively:</p><p><a href="https://dune.com/queries/3756241">The first query</a> is for our &#8220;pretrust nodes&#8221;. This query outputs the top casters in the /base channel based on engagement received (likes, recasts, replies), I take the (likes + 3*recasts + 10*replies) as my formula. We&#8217;ll be taking the top 100 ids from this query to use as our trusted nodes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-BAz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-BAz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 424w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 848w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 1272w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-BAz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png" width="1456" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107728,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-BAz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 424w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 848w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 1272w, https://substackcdn.com/image/fetch/$s_!-BAz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29ef0d9f-6b89-4162-b40b-534416e9c3ac_1980x750.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/queries/3756241</figcaption></figure></div><p><a href="https://dune.com/queries/3756692">The second query</a> is for tracking onchain interactions between nodes, using the linked addresses of casters in the /base channel. Because the feed is going to be recommending onchain actions, I want to make sure to choose an interaction graph heavily based off onchain interaction volume. Taking the USD value transferred between nodes is a good general proxy - I tracked stablecoin and ETH transfers on optimism, base, and ethereum mainnet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IaSo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IaSo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 424w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 848w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 1272w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IaSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png" width="1456" height="593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:593,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122013,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IaSo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 424w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 848w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 1272w, https://substackcdn.com/image/fetch/$s_!IaSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbe81489-f883-42fa-863f-addbdd77e09d_1980x806.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/queries/3756692</figcaption></figure></div><h4>Analyzing our input graphs, and testing our output eigentrust graphs</h4><p>Now that we have our pretrust nodes and localtrust graph, let&#8217;s check some summary statistics. There are 65,755 users in the /base channel who have transferred tokens to someone else in that channel, and from our pretrust nodes we are able to traverse 19% of the graph (i.e. connected nodes). This percentage may be much lower or higher depending on how sybiled the localtrust data of the graph is. Token transfers can be high signal, but can also be wash traded so it&#8217;s not surprising that much of the graph is disconnected. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q0RA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q0RA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 424w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 848w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q0RA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png" width="566" height="160.3121387283237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:294,&quot;width&quot;:1038,&quot;resizeWidth&quot;:566,&quot;bytes&quot;:68833,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q0RA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 424w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 848w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0RA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F042531a8-c10e-49cb-8afc-a2ed3136d06f_1038x294.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>After we have checked the input data is sensible in size and connection, we can run and save our eigentrust graph. I&#8217;ve saved mine to the id &#8220;base_transfer_50&#8221; - you can see below it only takes 10 lines to train the graph. Think of openrank sdk as the scikit-learn of crypto graph models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bq5U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bq5U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 424w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 848w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bq5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png" width="1456" height="1018" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1018,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211102,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bq5U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 424w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 848w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 1272w, https://substackcdn.com/image/fetch/$s_!Bq5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ffeb2b-0fbd-4da3-a3a9-543fa15574eb_1496x1046.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Remember the constant &#8220;c&#8221; from the formula earlier? Let&#8217;s do a grid search with different c values (I call it alpha) and different pretrust seed sizes and see which gives us the most log-normal trust scores and highest coverage ratios:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A-vV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A-vV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 424w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 848w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 1272w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A-vV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png" width="1402" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3779cc3f-d801-458f-adfc-34901160880e_1402x364.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170913,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A-vV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 424w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 848w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 1272w, https://substackcdn.com/image/fetch/$s_!A-vV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3779cc3f-d801-458f-adfc-34901160880e_1402x364.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>There are many tradeoffs here, and no optimal value to aim for. High normalization and coverage is a nice behavior if you want a strong diversity of recommendations, but for something high stakes like governance voting you may actually want a higher concentration of trust. Use your own intuition here.</p><p>From here, we can plug in our values into the feed query from the dashboard linked at the start on Dune to get a contracts interaction feed from trusted users in the /base channel. This subjective feed output helps us better connect the generic metrics from earlier to our intuition on the expected quality of recommendation outputs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gfdM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gfdM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 424w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 848w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gfdM!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png" width="902" height="581.7156593406594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:939,&quot;width&quot;:1456,&quot;resizeWidth&quot;:902,&quot;bytes&quot;:463183,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gfdM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 424w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 848w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!gfdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2076fcf3-0b41-4590-ab33-5c5b6ba0ecf4_2086x1346.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>And we&#8217;re done! You could use this Dune API to power any of your apps immediately.</p><h2>Learn to build your own OpenRank eigentrust graphs</h2><p>Are you excited and ready to build on your own? You can fork my notebook and try it yourself, all the links you need are here:</p><ul><li><p><a href="https://docs.openrank.com/">OpenRank Docs</a></p></li><li><p><a href="https://github.com/Karma3Labs/openrank-sdk">Python SDK repo</a></p></li><li><p><a href="https://app.hex.tech/e8198fd2-0779-4dff-a368-06371d3af467/hex/fa721eba-e774-4036-bda1-52323202ef9a/draft/logic?view=notebook">Python Notebook</a></p></li><li><p><a href="https://dune.com/ilemi/openrank">Dune feed dashboard</a></p></li></ul><blockquote><p><a href="https://read.cryptodatabytes.com/p/bytexplorers-mission-2-creating-reputation">Join our research mission the month of July</a> to build the best graph datasets to power feeds for governance, nft mints, and social discovery.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to Read Block Explorers and Understand Transactions, Traces, and Logs on Ethereum (EVM)]]></title><description><![CDATA[Learn read explorers like Etherscan and navigate data across these three key data structures, and how to find the tables you'll need to query.]]></description><link>https://read.cryptodatabytes.com/p/how-to-understand-transactions-traces</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/how-to-understand-transactions-traces</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Sat, 15 Jun 2024 19:36:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Other Beginner Resources:</p><ul><li><p><a href="https://roadmap.sh/r?id=65fee5b66deb533d6e19fb88">Crypto Data Analyst Roadmap</a></p></li><li><p><a href="https://read.cryptodatabytes.com/p/a-basic-wizard-guide-to-dune-sql">Beginners SQL and Ethereum Guide</a></p></li><li><p><a href="https://read.cryptodatabytes.com/p/how-to-navigate-contract-code-solidity">Learn to navigate Solidity Contract Code</a></p></li></ul><p>It&#8217;s easier and more fun to build with a community, <a href="https://read.cryptodatabytes.com/p/join-the-bytexplorers">come join the Bytexplorers</a> to learn and earn during your data journey.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>What&#8217;s in a transaction?</h2><p>If you've ever made a transaction on Ethereum (or any smart contract enabled blockchain), then you've probably looked it up on a block explorer like etherscan.io and seen this heap of information: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yntk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yntk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 424w, https://substackcdn.com/image/fetch/$s_!yntk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 848w, https://substackcdn.com/image/fetch/$s_!yntk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 1272w, https://substackcdn.com/image/fetch/$s_!yntk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yntk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png" width="1057" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1057,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:320389,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yntk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 424w, https://substackcdn.com/image/fetch/$s_!yntk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 848w, https://substackcdn.com/image/fetch/$s_!yntk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 1272w, https://substackcdn.com/image/fetch/$s_!yntk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35abe0be-5ab9-48cc-82a4-29417d78bd36_1057x945.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Transaction Overview Tab</figcaption></figure></div><p>And if you tried looking at logs or traces (internal txs), you might have seen these confusing pages:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g_FK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g_FK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 424w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 848w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 1272w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g_FK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png" width="1456" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:355145,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g_FK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 424w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 848w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 1272w, https://substackcdn.com/image/fetch/$s_!g_FK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c36c6ff-fe23-4829-bc86-915fb225981d_2492x1268.png 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Logs tab (you&#8217;re lucky if they&#8217;re nicely decoded like this)</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TlbF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TlbF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 424w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 848w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TlbF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:512099,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TlbF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 424w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 848w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!TlbF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccb158ac-939c-4d98-a0e9-1c4938c29f78_2732x1432.png 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Traces tab (yeah it looks like a bunch of nonsense)</figcaption></figure></div><p>Learning to read the details of a transaction on block explorers will be the foundation for all your Ethereum data analysis and knowledge, so let's cover all the pieces and how to work with them in SQL. </p><p>I&#8217;m only going over how to understand these concepts at a high level; if you want to learn to decode these by hand, then you&#8217;ll need to get familiar with how <a href="https://docs.soliditylang.org/en/latest/abi-spec.html">data is encoded</a> (it&#8217;s the same for transactions/traces/logs) and how to use <a href="https://docs.dune.com/query-engine/Functions-and-operators/varbinary">Dune&#8217;s bytearray/hex functions</a> to go between different types.</p><p><strong>By the end of this guide, you&#8217;ll be able to understand and navigate the data tables for any contract using this transaction table finder query:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7hl0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7hl0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 424w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 848w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 1272w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7hl0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png" width="972" height="302.41483516483515" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:972,&quot;bytes&quot;:239579,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7hl0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 424w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 848w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 1272w, https://substackcdn.com/image/fetch/$s_!7hl0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F158a8613-4842-43d8-bad7-038e4fb2547e_2762x860.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/2458023/4041368?tx+hash_t6c1ea=0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8&amp;blocknumber_n26d66=20098820">Query Link</a> (Plug in any tx hash, chain, and block number) </figcaption></figure></div><p>After you&#8217;ve learned the concepts in this guide, you should also learn to use my <a href="https://dune.com/ilemi/contract-quickstart">EVM quickstart dashboard</a> to get started on any contract analysis.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f2b15a16-4e68-498a-8a24-a4c086fd9eb3&quot;,&quot;caption&quot;:&quot;The &#8220;cold start&#8221; analysis problem is a big one in web3 - protocol contract structures and flows all vary wildly, and learning solidity patterns isn&#8217;t necessarily easy. Figuring out what functions/events from what contracts to analyze is tough, and finding example transactions of all the different cases can be time consuming.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How To Analyze Any Ethereum Protocol or Product In Five Minutes&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2022-12-29T16:00:22.832Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd592ef48-7a9f-43d2-a883-a9169da9fb65_1549x892.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/how-to-start-analyzing-any-web3-protocol&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:93443077,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:31,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h2>Transactions</h2><p>Transactions are only the tip of data iceberg, all traces and logs are invoked AFTER the initial input data kicks off the top level function. Let&#8217;s first label all the fields you&#8217;ll see in the transaction page of the block explorer:</p><p>These are the same fields you&#8217;ll see when you query &#8220;ethereum.transactions&#8221; on Dune. The key item to learn to identify here is if the &#8220;to&#8221; is a contract or not. Normally, contracts will be clearly labelled. If it&#8217;s a contract, there should be &#8220;input data&#8221; which contain a function call. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2ckb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2ckb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2ckb!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg" width="1044" height="824.064" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:888,&quot;width&quot;:1125,&quot;resizeWidth&quot;:1044,&quot;bytes&quot;:259505,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2ckb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2ckb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ebc4393-1182-4b02-a36c-73422a47562a_1125x888.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://etherscan.io/tx/0x194eb4f97bead172495839e0b3bd4cfd5c70698089ed5504c451a45d0268635f">transaction link</a></figcaption></figure></div><p>Out of all these concepts, the first one to learn well is an EOA versus a contract address. Contracts are deployed by EOAs, and can be called in the &#8220;to&#8221; field of a transaction. If you click on an address, the explorers will show on the top left if it&#8217;s a contract or an account. On dune you can join on the ethereum.creation_traces table to check if it&#8217;s a contract. Note that only EOAs can be the tx &#8220;from&#8221; signer.</p><p>It&#8217;s important to learn what data comes from directly onchain versus what data the explorer/frontends have added on top. Everything in the blockchain is represented as hex (sometimes called binary or bytes), so a 1inch swap call will have this input data string:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!em7I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!em7I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 424w, https://substackcdn.com/image/fetch/$s_!em7I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 848w, https://substackcdn.com/image/fetch/$s_!em7I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 1272w, https://substackcdn.com/image/fetch/$s_!em7I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!em7I!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png" width="902" height="134.43269230769232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c26034af-e072-483a-b633-9adadc715080_2678x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:217,&quot;width&quot;:1456,&quot;resizeWidth&quot;:902,&quot;bytes&quot;:141608,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!em7I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 424w, https://substackcdn.com/image/fetch/$s_!em7I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 848w, https://substackcdn.com/image/fetch/$s_!em7I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 1272w, https://substackcdn.com/image/fetch/$s_!em7I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26034af-e072-483a-b633-9adadc715080_2678x400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><a href="https://etherscan.io/tx/0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8/advanced">example transaction</a></figcaption></figure></div><p>The first 4 bytes (8 characters) is the &#8220;function signature&#8221;, which is the <a href="https://emn178.github.io/online-tools/keccak_256.html">keccak hash</a> of the function name and input types. Etherscan has a nice &#8220;decode&#8221; button for some contracts, giving you this readable form:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E2sL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E2sL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 424w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 848w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 1272w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E2sL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png" width="1336" height="428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:428,&quot;width&quot;:1336,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124129,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E2sL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 424w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 848w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 1272w, https://substackcdn.com/image/fetch/$s_!E2sL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1eb74c4-6e48-4c1d-ba49-713a23eaba33_1336x428.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://etherscan.io/tx/0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8/advanced">example transaction</a></figcaption></figure></div><p>As you can see, there are many variables packed together into that one long hex string from earlier. The way they are encoded follows the application binary interface (ABI) specification of smart contracts.</p><p>ABI&#8217;s are like API documentation for smart contracts (like OpenAPI specs), you can read more on the <a href="https://docs.soliditylang.org/en/latest/abi-spec.html">technical details here</a>. Most developers will verify their ABI matches the contract and upload the ABI for everyone else to reference in decoding. Many contracts may be MEV/trading related, where the developer wants to keep things closed source and private - so we don&#8217;t get any decoding from them.</p><p>In Dune, we have <strong>decoded tables</strong> <a href="https://dune.com/docs/data-tables/decoded/">based on contract ABIs submitted</a> to a contracts table (i.e. <code>ethereum.contracts</code>), functions and events are converted to bytes signatures (<code>ethereum.signatures</code>) which are then matched against <code>traces</code> and <code>logs</code> to give you decoded tables such as <code>uniswap_v2_ethereum.Pair_evt_Swap</code> which stores all swaps for all pair contracts created by the Uniswap v2 pair factory. You can filter for swaps on a specific pair by looking at the <code>contract_address</code> table for events.</p><blockquote><p>On Dune, you would want to query this table for this function call <strong>oneinch_ethereum.AggregationRouterV6_call_swap. </strong>You&#8217;ll see this table name is at the top of the query results in the table finder at the start of the guide.</p></blockquote><p><strong>For the following sections on traces and logs, we&#8217;ll be using <a href="https://etherscan.io/tx/0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8/advanced">the same 1inch aggregator swap transaction</a></strong>. This is a good example because a router will swap tokens across numerous DEX contracts, so we&#8217;ll get a good diversity of traces and logs to investigate. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Logs</h2><p>Let&#8217;s talk about event logs next. Logs can be emitted at any point in a function call. Devs typically will emit a log at the end of a function, after all transfers/logic are completed without errors. Let&#8217;s look at the uniswap v3 swap event emitted from the transaction earlier:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bzKA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bzKA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 424w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 848w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 1272w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bzKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png" width="1456" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:230324,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bzKA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 424w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 848w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 1272w, https://substackcdn.com/image/fetch/$s_!bzKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01876a67-93d3-4c38-829a-4c6bd0f07e1f_2474x754.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://etherscan.io/tx/0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8/advanced">example transaction</a></figcaption></figure></div><p>You&#8217;ll see there is a topic0, topic1, topic2, and data field. topic0 is akin to the function signature, except it&#8217;s 32 bytes instead of just 4 bytes (still hashed the same way). Events can have &#8220;indexed&#8221; fields for faster data filtering, which can appear in topic1, topic2, or topic3. All other fields are encoded together in the &#8220;data&#8221; object. Again, they follow the same encoding rules as transactions and traces. The &#8220;28&#8221; is the index of the event in the whole block. It can sometimes be useful to join on when you want the first swap or transfer in a tx.</p><p>To find the logic behind where and how this event was emitted, I&#8217;ll need to dive into the solidity code. I&#8217;ll click the linked address of the event, go to the contract tab, and search &#8220;emit swap&#8221; because I know that all events have &#8220;emit&#8221; right before they are invoked in the code. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tJXb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tJXb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 424w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 848w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 1272w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tJXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png" width="1456" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:444,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235910,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tJXb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 424w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 848w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 1272w, https://substackcdn.com/image/fetch/$s_!tJXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a6ca893-e660-4db8-b3b8-2f396ed78c96_2474x754.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://etherscan.io/address/0xd0fc8ba7e267f2bc56044a7715a489d851dc6d78#code">This is the uniswapv3pool contract</a> that is factory created for each pair.</figcaption></figure></div><p>I can see that this is emitted in line 786 of the contract, as part of the &#8220;swap&#8221; function.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pXRC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pXRC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 424w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 848w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 1272w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pXRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png" width="1456" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&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_!pXRC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 424w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 848w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 1272w, https://substackcdn.com/image/fetch/$s_!pXRC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff171ef16-d860-414c-bb29-a4c8f9fb6c50_1676x532.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Being able to navigate functions and events lineage across contracts will be a key skill you&#8217;ll need to pick up to accurately understand the lineage of the data you&#8217;re querying. You don&#8217;t need to learn solidity in depth to navigate these files, just know how to understand <a href="https://www.alchemy.com/overviews/solidity-interface">contract interfaces</a> and when functions/events are called (function and emit are your keywords). </p><blockquote><p>For in depth example of sleuthing the code for functions and events,<a href="https://read.cryptodatabytes.com/p/web3-sql-weekly-9-sleuthing-a-sudoswap"> check out this breakdown of Sudoswap contracts and data</a>.</p></blockquote><p>Using the table finder query from earlier, I can see that the table I should query for this swap is <strong>uniswap_v3_ethereum.Pair_evt_Swap</strong> and that it&#8217;s emitted after the swap() function is called.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c8bv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c8bv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 424w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 848w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 1272w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c8bv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png" width="960" height="298.68131868131866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:960,&quot;bytes&quot;:321311,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c8bv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 424w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 848w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 1272w, https://substackcdn.com/image/fetch/$s_!c8bv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8da200d9-de6c-4d2b-a2bc-dfdfe91e11ab_2762x860.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><h2>Traces (ethereum.traces)</h2><p>Traces can quickly become very difficult to navigate, because of how nested calls between different contracts get. Let&#8217;s first understand the types of traces:</p><ul><li><p>CREATE: this is a trace emitted when a new contract is deployed. You can deploy a contract directly at the top of a transaction, this will mean there is no &#8220;to&#8221; address in the transaction data. You can also deploy a contract within a function call, hence the existence of contract factories. Check out the <strong>ethereum.creation_traces</strong> table for a simpler view of these. </p></li><li><p>DELEGATECALL: this goes on your mental &#8220;ignore&#8221; list when looking at a transaction. Think of this as forwarding a request from one server to a next without changing any logic. This is related to proxies and storage, you can <a href="https://medium.com/@bansaltushar014/delegatecall-in-solidity-4138b121cbe">check out more details here</a>.</p></li><li><p>CALL: this is the most common and generic trace. A call can be just a transfer of ETH value without any contracts involved. It can also be any function call on any contract. </p></li><li><p>STATICCALL: this is a function call that does NOT modify any state, and is purely used for calculations. Stuff like oracle price feeds, AMM price calculations, liquidation ratio checks, balance checks, etc all happen in staticcalls. Commonly seen in solidity as &#8220;view&#8221; or &#8220;pure&#8221; function types.</p></li></ul><p>You&#8217;ll also need to understand the <strong>trace_address </strong>column/index. This is the [0,1,1,1,1] pattern you often see. Imagine it&#8217;s like bullet points, where the number of numbers in the array indicates the depth and order of the function calls. </p><pre><code><code>A (null) --the transaction first input has a trace_address of []
  CALLs B (0)
    CALLs C (0,0)
  CALLs D (1)
    CALLs E (1,0)
      CALLs F (1,0,0)
    CALLs G (1,1)
  CALLs H (2)</code></code></pre><p>As you can tell from our earlier internal transactions (traces) screenshot, etherscan is not a friendly place for viewing traces. I prefer to use phalcon blocksec instead, which unwraps the transaction like so:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aNTU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aNTU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 424w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 848w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aNTU!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png" width="1042" height="569.6648351648352" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1042,&quot;bytes&quot;:632387,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aNTU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 424w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 848w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!aNTU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb947556-9851-43bb-b250-9e73887fbeec_2612x1428.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://app.blocksec.com/explorer/tx/eth/0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8">Link to Explorer</a></figcaption></figure></div><p>This might look overwhelming, but it is actually a super easy way to explore all the functions, events, and arguments in the flow of a transaction. Once you&#8217;re able to understand this, then you can safely say you understand all the data in a transaction. Notice that my <a href="https://dune.com/queries/2458023/4041368?tx+hash_t6c1ea=0x9d88a973b5bf82bde66ffc9bdefb7318911868509c7da97a06cd2219081354f8&amp;blocknumber_n26d66=20098820&amp;sidebar=none">table finder query</a> is an almost exact copy of this layout, I was largely inspired by them!</p><p>Note that on Dune, we automatically decode both transaction calls and traces of the same function name to the same table. You may be wondering if you can easily join events and traces/transactions in the nice ordering shown in phalcon. On Dune, you can join on transaction hash to generally tie data together, but you can&#8217;t join on any index to recreate the exact ordering of interactions. It&#8217;s an unfortunate limitation at the moment that requires a custom indexer.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Onwards, deeper into the dark forest of crypto</h2><p>If you understand the concepts I&#8217;ve laid out in this guide, then you&#8217;re ready to dig deeper and write more complex queries. Navigating data across transactions using multiple different tools will be one of the most key skills you&#8217;ll need to excel in this space. </p><p>There are probably 10 different explorers I find myself using every week, and the number of the tools is 10 times that amount. I write an annual guide covering how the data tooling stack continues to evolve, and what you should use each tool for:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YuSF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YuSF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YuSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg" width="1456" height="1136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1136,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!YuSF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YuSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e5a097-5b74-4056-ba60-423bb5f39cd6_7794x6080.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://read.cryptodatabytes.com/p/2024-annual-guide-web3-data-tools">Guide Link</a></figcaption></figure></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;a535bf11-f2bd-4ffd-9197-e653ebf534d4&quot;,&quot;caption&quot;:&quot;Week 2 audio got borked, so I redid the same topic in week 3. This was livestreamed and recorded on twitter at 9AM EST on 1/24/24.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to navigate and learn crypto data tools, as a data nerd&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-01-28T14:50:33.875Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/908d3a34-2a34-4fbe-99fc-8ac06c2c68dd_1485x1485.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/week-3-how-to-navigate-and-learn&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:141099831,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The more data tools you learn to use, the more flexibly you&#8217;ll be able to build and communicate in this giant ecosystem! As always, <a href="https://twitter.com/andrewhong5297">my DMs are open on Twitter</a> if you have feedback or questions. </p>]]></content:encoded></item><item><title><![CDATA[A Social and Financial Study of Memecoins]]></title><description><![CDATA[The memecoin craze is back again. But this time, we can include social data (farcaster) in our analysis.]]></description><link>https://read.cryptodatabytes.com/p/a-social-and-financial-study-of-memecoins</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/a-social-and-financial-study-of-memecoins</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Thu, 25 Apr 2024 16:00:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58abe439-6c3c-420b-9e90-492dc059f6f0_1137x879.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z-vC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 424w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 848w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png" width="398" height="180.4120879120879" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1456,&quot;resizeWidth&quot;:398,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z-vC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 424w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 848w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-vC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2ef7d6-8dcf-4925-b9e3-e85a5b50bc8d_2000x906.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Research done in partnership with Archetype, where I am a <a href="https://www.archetype.fund/team">research advisor.</a></figcaption></figure></div><p><em>None of this is financial advice, please do your own research and be careful before buying any tokens - especially with memecoins.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Every market cycle comes with memecoins. If you&#8217;re not familiar with the concept, think about the craze of <a href="https://www.reddit.com/r/wallstreetbets/new/">r/wallstreetbets</a> driving the <a href="https://www.reuters.com/plus/can-wallstreetbets-spectacular-short-squeeze-be-repeated">rally of AMC in 2021</a>. A bunch of people rally around some meme and bid the price of some asset up for a short while (anywhere from one day to a couple months). It&#8217;s become a <a href="https://www.lisnewsletter.com/p/memecoins-as-the-new-gtm-strategy?utm_source=profile&amp;utm_medium=reader2">popular go to market strategy in crypto</a> for everything from the blockchain layer to the app layer - as you drive up not just prices but attention around an ecosystem. Some like Avalanche go as far as creating <a href="https://cointelegraph.com/news/avalanche-memecoin-push-1-million-reward-liquidity-providers">an actual official fund for memecoins</a>.</p><p>The line between memecoin and any other token can sometimes be blurred, but the general assumption here is that there is nothing backing the token besides the meme. For example, DOGE as a token only really has the <a href="https://knowyourmeme.com/memes/doge">shiba inu doge picture/idea</a> backing it. Unlike a token like ETH that&#8217;s secured by the ethereum blockchain, UNI which has the full Uniswap protocol behind it, or a token like MKR that has a full collateralized stablecoin service behind it.</p><p>Farcaster memecoins (like DEGEN) are the newest flavor, with the primary benefit being that the social is openly accessible. So with that, I wanted to test the waters with some basic analysis combining social and financial data. </p><p>I ended up with this  &#128202; <a href="https://dune.com/ilemi/social-memecoins">dashboard</a>, which I will walk through in this article. </p><h2>Measuring the Meme</h2><p>I started with the hypothesis that we could compare all memecoins with a simple chart that graphs social and financial health:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H82b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H82b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H82b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H82b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H82b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H82b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg" width="596" height="460.7598944591029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:879,&quot;width&quot;:1137,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:64305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!H82b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H82b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H82b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H82b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1f37d5d-3c8b-49df-aabb-eeb13b7b5567_1137x879.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>I&#8217;ve categorized five main areas in this chart:</p><ul><li><p><strong>Extreme Risk:</strong> Memecoins with low liquidity and volume are very risky and subject to rugs (as likely there are only a few liquidity providers)</p></li><li><p><strong>Bot Arena: </strong>Most memecoins will never make it out of the trenches, where thousands of coins (many with the same token name/variation) are competing for social and financial attention</p></li><li><p><strong>Volatile Growth: </strong>Memecoins that do break out of their initial circles now have to sustain their momentum and growth. You&#8217;re likely to see many days of 100-500% swings in price in both directions, and also a bunch of influencers start to latch onto the meme.</p></li><li><p><strong>Well Established: </strong>The leaders will sit at the top socially and financially for a while, and be very clearly separated from the pack. It&#8217;s likely that the week to week numbers are less volatile, and attention is sustained as there is an equilibrium of inflows and outflows of people.</p></li><li><p><strong>Sleeping Giant: </strong>Memecoins that grew a lot socially and financially - and didn&#8217;t get rugged - may die down at sit in this corner for a while. Likely a DAO has formed, they&#8217;ve started shipping random mints or products, and are dealing with the mess of a community. All while hoping to rotating into the spotlight again.</p></li></ul><p>The bulk of memecoins should be stuck in the &#8220;bot arena&#8221;, with a few catchy ones in the &#8220;volatile growth&#8221; segment, and maybe one or two making it &#8220;well established&#8221;. Along the way, some may lose social power and become &#8220;sleeping giants&#8221; and others may lose their financial backing (liquidity) to become &#8220;extreme risks&#8221;. </p><p>I believe that the average successful memecoin goes on a journey like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e-jl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e-jl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e-jl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg" width="596" height="460.7598944591029" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:879,&quot;width&quot;:1137,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:109852,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!e-jl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e-jl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5f3ca2-2013-4268-9fc3-9f57cd7079c0_1137x879.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>And you probably see many memecoins that get botted/influencer pushed to have a high social score, but has low financial score (liquidity) and leads to rugs.</p><p>After much data engineering and cleaning, I was able to produce this chart in Dune focused on Farcaster memecoins:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HNXM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HNXM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 424w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 848w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 1272w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HNXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png" width="931" height="501" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:501,&quot;width&quot;:931,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30467,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HNXM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 424w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 848w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 1272w, https://substackcdn.com/image/fetch/$s_!HNXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc88602e7-b59a-4fbd-9488-7cd07d7877bf_931x501.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/ilemi/social-memecoins</figcaption></figure></div><p>This actually fit my expectations pretty well, you have DEGEN far out in the top right corner and then a few others like ENJOY, HIGHER, TN100X, and EVERY out in the middle. Everyone else is stuck in the left competing for attention and liquidity. </p><p>It&#8217;s worth noting that I have not filtered out sybil/bots here, so social scores for some memecoins may be skewed. An improvement for the future!</p><p>Now, let&#8217;s walk backwards from this end chart to explain how those two scores were created. I&#8217;ll also pose further research questions and detail my query lineage for those who want to dig deeper.</p><p><em>The <a href="https://dune.com/ilemi/social-memecoins">dashboard can be found here</a>, there are a few charts that I have not included in this article.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Social Score</h2><p>Each score is made up of a &#8220;base&#8221; component and a &#8220;growth&#8221; component. For the social score, we start by measuring the casts and engagement of ticker mentions. So &#8220;$DEGEN&#8221; will count but &#8220;DEGEN&#8221; won&#8217;t in this methodology. Related symbols to the token (like the degen hat, higher arrow, tn100x ham) are also included in counts.</p><p>That gives us five main columns:</p><ul><li><p><strong>Casters</strong>: Number of people who have casted a given ticker</p></li><li><p><strong>% Recipients: </strong>Percent of those casters that have recieved the token before</p></li><li><p><strong>Casts: </strong>Number of casts with a given ticker</p></li><li><p><strong>Channels</strong>: Number of channels that had a cast with a given ticker</p></li><li><p><strong>Activity Level</strong>: The engagement (likes + replies) plus the casts times cube root of casters times cube root of channels.</p></li></ul><p>The overall social score is calculated with the &#8220;base&#8221; being the activity level, and &#8220;growth&#8221; multipliers based on week over week change in unique casters and recipient casters. The idea here is that if you&#8217;re seeing large growth in people casting a ticker and those people buying/acquiring the token, that&#8217;s an extremely healthy sign.</p><p>Overall, it looks like this in a table:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LxX1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LxX1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 424w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 848w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 1272w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LxX1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png" width="996" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:996,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53384,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LxX1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 424w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 848w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 1272w, https://substackcdn.com/image/fetch/$s_!LxX1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50e210ad-743c-4aaa-89bf-1c4bda9c63e6_996x489.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/ilemi/social-memecoins</figcaption></figure></div><h2>Financial Score</h2><p>These are your main financial metric columns: </p><ul><li><p><strong>Fully Diluted Value (FDV):</strong> Total supply multiplied by price</p></li><li><p><strong>Price</strong>: Most recent price based on DEX trades</p></li><li><p><strong>% DoD, WoW, MoM Price Change: </strong>Percent changes in price on a daily, weekly, and monthly basis</p></li><li><p><strong>Liquidity</strong>: This is non-token liquidity, meaning for a DEGEN-WETH pool we only count the WETH portion of it. It gives us a more stable sign of how much good liquidity there is for a given token.</p></li><li><p><strong>Trades:</strong> Number of DEX trades in last 30 days</p></li><li><p><strong>Transfers:</strong> Number of erc20 transfers in the last 30 days</p></li><li><p><strong>Total Volume:</strong> USD volume of DEX trades in last 7 days</p></li></ul><p>The &#8220;base&#8221; for the financial score is its non-token liquidity and DEX volume, with a &#8220;growth&#8221; component based on week over week change in liquidity.</p><p>Overall, it looks like this in a table:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ja2M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ja2M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 424w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 848w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 1272w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ja2M!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png" width="936" height="332.4366812227074" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:488,&quot;width&quot;:1374,&quot;resizeWidth&quot;:936,&quot;bytes&quot;:75080,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ja2M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 424w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 848w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 1272w, https://substackcdn.com/image/fetch/$s_!Ja2M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad78c54-86d6-4d58-8319-c4ace18126dd_1374x488.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">https://dune.com/ilemi/social-memecoins</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Follow Up Questions</h2><p>Below are some top of mind questions that I&#8217;d love to see people dig into from here:</p><ul><li><p>How can you do sybil/bot scoring of casters? Weight it by the dollar value of tokens in the wallet? </p></li><li><p>Can you tier casters based on relationship to known clusters and/or communities of people?</p></li><li><p>Categorize the waves of social and financial growth - how are they correlated? Is there a time delay or dependency one way or another?</p></li><li><p>Are the the same circles/types of people driving the initial growth waves? What about the people who are early, on-time, and late to the meme? Are there relationships with <a href="https://dune.com/ilemi/farcaster-explorer">the user tier</a>?</p></li><li><p>What happens when a meme &#8220;rotates&#8221; from one to another? What or who drives this?</p></li><li><p>How &#8220;interested&#8221; is a person based off of their social or financial stake? Do people cast more/less after they buy/sell a given token?</p></li><li><p>What&#8217;s the average lifecycle of a meme? Socially and financially?</p></li></ul><p><a href="https://twitter.com/andrewhong5297">DM me</a> if you want help ideating or figuring out approaches to tackling any of these.</p><blockquote><p>Want to join an onchain data community and learn/build answers to these questions with 200+ others? &#128269; <a href="https://read.cryptodatabytes.com/p/64a41653-deeb-45a1-bfea-d025b866bcab">Learn about the Bytexplorers, then mint your passport and join in</a></p></blockquote><p><strong>You can also further explore Farcaster trends in users and channels here:</strong></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;999aac37-d5ee-49e2-bad7-6baca97e2fa3&quot;,&quot;caption&quot;:&quot;New to Farcaster? Learn the basics first:&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Find and Analyze Trends on Farcaster&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-02-14T14:05:47.969Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/youtube/w_728,c_limit/cy9ezbbh9FY&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/how-to-find-and-analyze-trends-on&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:141639256,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h3>Query Lineage for the Data Nerds</h3><p>While all the output looks like it all came from a single query here, there is actually a bit of data complexity in the background. Below you&#8217;ll find a query lineage map that shows what data came from which data sources:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rSCb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rSCb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rSCb!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg" width="972" height="378.5192307692308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:567,&quot;width&quot;:1456,&quot;resizeWidth&quot;:972,&quot;bytes&quot;:143448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&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-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rSCb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rSCb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55551b0-aa14-4f96-b4be-61c5cf592306_1602x624.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>I&#8217;ll quickly walk through these:</p><ul><li><p>The &#8220;dune.neynar&#8230;&#8221; datasets are uploaded by the Neynar team, who indexes all farcaster data. If you&#8217;re unfamiliar with Farcaster data concepts, then <a href="https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster?utm_source=profile&amp;utm_medium=reader2">start with my beginners guide</a>. In general, if you see &#8220;dataset&#8221; in the tablename that means it was uploaded by whichever team name shows up after the &#8220;dune.&#8221; prefix.</p></li><li><p>Any time you see a &#8220;result&#8221; in the table name, it&#8217;s a <a href="https://docs.dune.com/query-engine/materialized-views">matview</a>. That means there is another Dune query being read from here. I created the &#8220;erc20 token summary&#8221; table to get me all trade, price, liquidity, and transfer data on a given token. This matview is further broken down in child queries such that the final query can run in only 3 minutes. Combined runtime for all the queries here is around 60-70 minutes. </p></li><li><p>Any time you see a table name that doesn&#8217;t follow the above prefixes (and also is not a <a href="https://docs.dune.com/data-catalog/evm/ethereum/raw/transactions">raw</a> or <a href="https://docs.dune.com/data-catalog/evm/ethereum/decoded/overview">decoded</a> table), it&#8217;s likely from <a href="https://github.com/duneanalytics/spellbook">spellbook (abstracted tables)</a>. So tokens.erc20 gives me all tokens with symbols/decimals, dex.trades gives me all DEX swaps across all blockchains, etc. You can find the table logic in the github repo by doing a code search for the table namespace or table name (i.e. &#8220;dex&#8221; or &#8220;trades&#8221;).</p></li></ul><p>If you have questions on any of these queries, then please reach out to me. Check out the memecoin query for links to each matview, they are in the comments next to whenever I utilize a child table.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Roadmap to Becoming a Top Crypto Data Analyst]]></title><description><![CDATA[Everything you need to go from beginner to expert in crypto data.]]></description><link>https://read.cryptodatabytes.com/p/roadmap-to-becoming-a-top-crypto</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/roadmap-to-becoming-a-top-crypto</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Wed, 27 Mar 2024 15:22:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/QdcQQKpTBZs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#128073; <a href="https://roadmap.sh/r?id=65fee5b66deb533d6e19fb88">Interactive roadmap can be found here</a></p></blockquote><div id="youtube2-QdcQQKpTBZs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QdcQQKpTBZs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QdcQQKpTBZs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I&#8217;ve created an interactive roadmap with all the tips and guides you&#8217;ll need to go from a beginner to an expert in crypto data. This is not meant to be completed all at once, you should work your way through the levels and only come back to the next step when you feel like you&#8217;re ready.</p><p>Each section has multiple levels of modules (L1, L2, and L3). Each module has a &#8220;you should be able to&#8230;&#8221; that suggests what you should be capable of doing. </p><h3><strong>Sections:</strong></h3><ul><li><p><strong>Intro to Crypto:</strong> if you know nothing, then these links will be helpful for getting up to speed.</p></li><li><p><strong>Blockchains: </strong>the basics of blockchains come down to transaction structure, common standards, and ecosystem coverage.</p></li><li><p><strong>Exploration Tools:</strong> without learning how to spot trends and explore addresses and transactions, you won&#8217;t be able to go much deeper.</p></li><li><p><strong>Querying Tools:</strong> diving deeper than surface level trends requires writing queries.</p><ul><li><p><strong>Technical Languages:</strong> you can use SQL, Python, or Javacript. You don&#8217;t need to learn them all at once.</p></li><li><p><strong>Navigating Protocols: </strong>the more protocols you dive into, the easier this gets. Learn to build up from functions to feeds to labels and metrics.</p></li></ul></li><li><p><strong>Building in Public: </strong>the steps to follow if you want to get hired full time in the space.</p></li><li><p><strong>Knowledge Domains:</strong> seven of the key domains you&#8217;ll become familiar with the longer you spend time in crypto.</p></li></ul><p>I&#8217;ll add to each section over time, if you have questions or contributions then <a href="https://twitter.com/andrewhong5297">please DM me</a>. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Bytexplorers Mission #1: Optimism Airdrop Research]]></title><description><![CDATA[Partnering with Optimism NumbaNERDs to run a six week research program with the community, there will be OP and reputation tokens that analysts can earn.]]></description><link>https://read.cryptodatabytes.com/p/bytexplorers-mission-quest-1-optimism</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/bytexplorers-mission-quest-1-optimism</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Mon, 11 Mar 2024 17:12:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LxgO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#128265; <em>I explained the mission <a href="https://twitter.com/i/spaces/1lDxLPmBZkPxm">in this Twitter space recording</a>.</em></p></blockquote><p>Now that the <a href="https://read.cryptodatabytes.com/p/64a41653-deeb-45a1-bfea-d025b866bcab">Bytexplorer community</a> is close to 200 members, we&#8217;re kicking off our first mission quest!! Mission quests are partnerships with foundations across the crypto ecosystem to openly discuss and answer high-value research questions.</p><p>The first mission starts today, and it will last for six weeks. We will choose a partner and mission each quarter, and are hoping to collectively tackle some of the biggest questions in the crypto data space.</p><p><strong>Our first mission will be with the <a href="https://community.optimism.io/docs/contribute/contribution-path/numbanerds/">Optimism NumbaNERDs</a>! </strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LxgO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LxgO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 424w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 848w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LxgO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png" width="538" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1280,&quot;width&quot;:1280,&quot;resizeWidth&quot;:538,&quot;bytes&quot;:871406,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LxgO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 424w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 848w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!LxgO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02b99f4-2f49-41d1-ab04-d7a7993caa62_1280x1280.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Thank you <a href="https://twitter.com/ttyl5h">pika</a> for the graphic :)</figcaption></figure></div><p>You will need a Bytexplorer pass to participate, if you&#8217;ve completed an <a href="https://app.dework.xyz/optimism-community/main-space-35638/overview">Optimism NumbaNERD mission</a> before then you can get one dropped to you for free <a href="https://d056bj30axn.typeform.com/to/X5Jiqpn6">by filling out this form</a>. Otherwise, you can <a href="https://www.cryptodatabytes.com/passport/mint">mint a pass here</a>. </p><p><em><strong>NOTE: This mission has concluded, we had 18 explorers submit 30+ discoveries. Thank you to everyone who participated! Distribution of votes and rewards are as follows:</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1UdU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1UdU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 424w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 848w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 1272w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1UdU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png" width="1369" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1369,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57461,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1UdU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 424w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 848w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 1272w, https://substackcdn.com/image/fetch/$s_!1UdU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5729d0ca-8e6f-49c7-ab47-f0c005aa0c7c_1369x563.png 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3726946/6268545">Reward Query</a></figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>Optimism Airdrop Research</h2><p>Optimism announced <a href="https://twitter.com/Optimism/status/1760002821120983200">Airdrop #4</a> recently to allocate over 10M OP to over 22k unique addresses and reward Superchain creators (<a href="https://community.optimism.io/docs/governance/airdrop-4/">docs</a>).</p><p>The focus of this mission will be understanding onchain behaviors of recipients before and after the drop, relating to usage of protocols and governance activity. Questions will be split into three levels:</p><ul><li><p><strong>Large (1500 OP)</strong>: Open-ended questions where we value novelty and creativity of approach the most</p></li><li><p><strong>Medium (400 OP)</strong>: Questions that have definite answers, but have a large surface area (i.e. identifying different sybil groups).</p></li><li><p><strong>Small (120 OP)</strong>: Questions that are bite-sized and have a definite answer</p></li></ul><p>There will be a <strong>novelty reward (400 OP)</strong> split across most novel submissions too. You will also earn Optimism Guild Tokens for your participation and quality of work.</p><p>Below are the list of questions we are interested in answering. The section after this will detail how to participate.</p><h3><strong>Large (&#128073; <a href="https://www.jokerace.io/contest/optimism/0x6e8601c0e57873139f1da5524eff876f93b22b6e">Submit Here</a>, Closed April 28th)</strong>:</h3><p>&#128266; <a href="https://twitter.com/andrewhong5297/status/1780340618612318707">Twitter Space discussing questions</a></p><ul><li><p>LTV analysis on airdropped users i.e. how much did the airdrop contribute to long term usage expected versus actual?&nbsp;</p><ul><li><p>i.e. let's say a user transacts twice a month on an nft marketpace, around 200 USDC. That's annualized to be 12 txs a year or 2400 USDC. Maybe after an airdrop, the annualized goes up is 20 txs a year with higher avg value size so maybe 5000 USDC (subtract your airdrop value amount to reduce noise).</p></li><li><p>LTV can include growth rate as well. It&#8217;s possible that a user&#8217;s pre versus post airdrop growth rate of activity (value) changed - so that&#8217;s important to take into consideration. You could also attribute value from collectors brought in as well, so it&#8217;s not just the creator&#8217;s individual transaction value.</p></li></ul></li><li><p>Compare optimism airdrop to <a href="https://twitter.com/cryptokoryo/status/1762175005931278756?s=46&amp;t=5HZUtpkwvua3hPnZXUkl6g">other protocol airdrops metrics/parameters</a>?</p><ul><li><p>Comparison of tiers and retention - could even do across just optimism airdrops, and <a href="https://dune.com/cryptodatabytes/crypto-grants-analysis">even grant funding</a>. Note that OP airdrop 1 and 4 were claims, 2 and 3 were pushed to wallets.</p></li><li><p>What are good metrics to use to compare against airdrops?</p></li></ul></li><li><p>What other factors make up a quality creator? Are there better onchain metrics?</p><ul><li><p>quality of collectors (fees/value spent)? farcaster activity of creator/collectors? secondary volumes? </p></li></ul></li><li><p>Which delegates have the most &#8220;active&#8221; delegator base? Is it correlated with the most actively voting delegates?</p></li><li><p>In depth analysis of delegate clusters on specific kinds/types of proposals, using proposal metadata. How many delegates do we have per &#8220;topic&#8221;, sometimes can be seen in titles?</p><ul><li><p>https://community.optimism.io/docs/governance/token-house-history/</p></li><li><p>https://github.com/voteagora/governor (proposal rules)</p></li></ul></li></ul><h3><strong>Medium (&#128073; <a href="https://www.jokerace.io/contest/optimism/0x1c5dde828c9fc635e833eeba418278a264cc1a15">Submit Here</a>, Closed April 7th)</strong>:</h3><p>&#128266; <a href="https://twitter.com/andrewhong5297/status/1772731057374175528">Twitter Space discussing questions</a></p><ul><li><p>Segmentation of claimers based on protocols.</p></li><li><p>Did this airdrop help to grow the creator and NFT community on OP Chains?</p></li><li><p>Any noticable sybil aggregations of airdrop claims?</p></li><li><p>Any overall protocol usage changes (i.e. did any specific protocol see changes in volumes/users)?</p></li></ul><h3><strong>Small (&#128073; <a href="https://www.jokerace.io/contest/optimism/0x8b720e12e520d2b448e6b4c0fad55b8e08b64761">Submit Here</a>, Closed March 24th)</strong>:&nbsp;</h3><p>&#128266; <a href="https://twitter.com/andrewhong5297/status/1768021734072926550">Twitter Space discussing questions</a></p><ul><li><p>How many claimers of the airdrop?</p></li><li><p>What are the overall claim rates?&nbsp;</p></li><li><p>What is the claim distribution by amount?</p></li><li><p>Change in delegation totals and percentage of totals by delegate?&nbsp;</p></li><li><p>Did delegatees end up delegating their airdrop to the same delegates they already supported?</p></li><li><p>How many claimers that were already delegated stayed delegated (in addresses terms &amp; OP terms)?</p></li><li><p>How many new delegations remained delegated?</p><ul><li><p>Note: delegation was part of the claim process</p></li></ul></li></ul><p>If you have questions that are related to the ones here that you wish to tackle (or you want clarification), please reach out in the <a href="https://guild.xyz/bytexplorers">Bytexplorer telegram group</a> and we can discuss adding them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Mission Participation and Guidelines</h2><p>Every two weeks, participants will submit their answers to the next level of questions -I&#8217;ll call them &#8220;checkpoints&#8221;. Anyone can submit, and you can choose to submit your work to only one checkpoint level or all of them if you want.</p><p>The checkpoint timeline looks like this: </p><ol><li><p>&#8220;Small&#8221; questions are due after the first two week period <strong>(March 24th) </strong></p></li><li><p>&#8220;Medium&#8221; questions are due after the second two week period <strong>(April 7th)</strong></p></li><li><p>&#8220;Large&#8221; questions are due after the third two week period <strong>(April 28st)</strong></p></li></ol><p>Voting for each checkpoint lasts two weeks. Novelty rewards will be decided at the very end. The NumbaNERD committee will get 50% of voting power, and the rest will go to trailblazers in the Bytexplorer community. It is a requirement to get 100 votes from the NumbaNERD committee for your submission to count towards a given level. </p><p>We will use jokerace for this. The split of reward is based on sum of points of submissions that qualified in category, where points are defined using the quality of submission (valid, great, superb, exceptional). This is the same as the <a href="https://read.cryptodatabytes.com/p/bytexplorers-weekly-quest-1">weekly quest rubric</a>. So if 15 people all score exceptional (64 points) on the large checkpoint, then that&#8217;s a total of 960 points. Each person would earn 100 OP tokens (64/960)*1500.</p><p>Again, you will need a Bytexplorer pass to participate. If you&#8217;ve completed an Optimism NumbaNERD mission before, you&#8217;ll get a pass dropped to your wallet <a href="https://d056bj30axn.typeform.com/to/X5Jiqpn6">by filling out this form</a>. Otherwise, you can <a href="https://groupos.xyz/opt:0x9c46fe757ea200dfba1a77d1300f77289d8314cd/mint">mint a pass here</a>. </p><h2>Learning and Data Resources</h2><p>We will host <a href="https://twitter.com/andrewhong5297">weekly Twitter spaces</a> to dive into questions and topics, and will also be active in the <a href="https://guild.xyz/bytexplorers">Bytexplorer telegram group</a> to help with ideation and queries. </p><p>Here are a list of relevant data resources you can use to jumpstart research from:</p><ul><li><p>Claim Contract: <a href="https://www.onceupon.gg/0xfb4d5a94b516df77fbdbcf3cfeb262baaf7d4db7">0xfb4d5a94b516df77fbdbcf3cfeb262baaf7d4db7</a></p></li><li><p>Address list: <a href="https://github.com/ethereum-optimism/op-analytics/tree/main/reference_data/address_lists">https://github.com/ethereum-optimism/op-analytics/tree/main/reference_data/address_lists</a></p><ul><li><p>dune.oplabspbc.dataset_op_airdrop_4_addresses_detailed_list</p></li><li><p>dune.oplabspbc.dataset_op_airdrop_4_simple_list</p></li></ul></li><li><p>Logic that you can use to map creators to contracts: <a href="https://dune.com/queries/3452893">https://dune.com/queries/3452893</a></p><ul><li><p>Note that this is not perfect as contract creation could be done by a relayed / sponsored transaction or first minter as the deployer. If you have better ways to attribute, please let us know!</p></li></ul></li><li><p>Onchain contract &lt;&gt; project name mappings: `contracts.contract_mapping`</p></li><li><p>Governance delegates and proposals</p><ul><li><p>&#8220;op_governance&#8221; and &#8220;governance&#8221; spell namespaces</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FRtK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FRtK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 424w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 848w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 1272w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FRtK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png" width="360" height="233" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:233,&quot;width&quot;:360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21784,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FRtK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 424w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 848w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 1272w, https://substackcdn.com/image/fetch/$s_!FRtK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25674a33-f16b-40a8-af32-dd4888dd103d_360x233.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></li><li><p>check &#8220;governance_optimism.agora_proposals&#8221; namespaces for more up to date proposals. op_governance has older ones.</p></li><li><p>OP token house delegate and delegatees analysis (<a href="https://dune.com/optimismfnd/optimism-op-token-house">dash</a>)</p></li></ul></li></ul><div><hr></div><p><strong>Best of luck on your mission, explorers</strong> &#128640;</p>]]></content:encoded></item><item><title><![CDATA[How to Find and Analyze Trends on Farcaster]]></title><description><![CDATA[Find and track trending users, channels, and topics with this new dashboard]]></description><link>https://read.cryptodatabytes.com/p/how-to-find-and-analyze-trends-on</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/how-to-find-and-analyze-trends-on</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Wed, 14 Feb 2024 14:05:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/cy9ezbbh9FY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>New to Farcaster? Learn the basics first:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f3c170ff-19ef-410c-96dd-af46b963bee9&quot;,&quot;caption&quot;:&quot;Farcaster is a social app - like Twitter - that&#8217;s been decentralized and uses Ethereum addresses as the basis for accounts. If you&#8217;re curious about why that matters or what use cases that enables, read Packy&#8217;s post. I&#8217;m going to cover the key data structures behind the protocol, and teach you how to query the protocol using&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to Understand and Query Farcaster Data (Casts, Users, Channels, and Frames)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-02-02T17:15:57.091Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:141158556,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><div id="youtube2-cy9ezbbh9FY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cy9ezbbh9FY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cy9ezbbh9FY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#127911; <em>If you prefer a live walkthrough, check out the video above</em></p><h2>What Open Social Data Enables</h2><p>This is the first time in history that three datasets have come together in the open:</p><ul><li><p>High quality user transaction data (blockchain data)</p></li><li><p>High quality social graph data (profiles, followers, and actions)</p></li><li><p>Verified linkage of addresses (user X owns wallets A,B,C)</p></li></ul><p>And on top of that, these datasets have come together in a vertically integrated data stack (Neynar for Farcaster data, and Dune for onchain data) that is open for everyone to use. </p><p>Doing the equivalent with reddit, twitter, plaid, and stripe data would take hundreds of thousands of dollars to scrape and build data infra for. This leads to a concentration of data wealth and product in the hands of a select few companies (those overflowing with money and connections).</p><p>I&#8217;ve built a dashboard that combines the three datasets above and showcases some basic clustering and trends across words, users, and channels.</p><blockquote><p>&#128202; <a href="https://dune.com/ilemi/farcaster-explorer">Farcaster Trends Explorer Dashboard</a></p><p>&#9881;<a href="https://github.com/andrewhong5297/farcaster-explorer">Contribute to the methodology in the dashboard GitHub repo</a></p><p>&#128276;<a href="https://dune.com/queries?templateCategory=Farcaster">Use our Farcaster query templates and set some Slack/Discord alerts</a></p></blockquote><p>Let&#8217;s walk through the kinds of trends and analysis you can kickoff from here.</p><h2>Words and Topics</h2><p>Most people have seen screenshots from <a href="https://trends.google.com/trends/explore?geo=US&amp;q=ethereum,bitcoin&amp;hl=en-US">google trends</a> before. You get to put in any word and see the interest/performance over time:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CyAI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CyAI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 424w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 848w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 1272w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CyAI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png" width="1163" height="689" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1163,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58402,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CyAI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 424w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 848w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 1272w, https://substackcdn.com/image/fetch/$s_!CyAI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f9baa12-4842-4952-a7c7-8e98f6623d3a_1163x689.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Here&#8217;s a simple example of week over week &#8220;word&#8221; trends on Farcaster, week over week:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hTEj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hTEj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 424w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 848w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 1272w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hTEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png" width="932" height="461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:461,&quot;width&quot;:932,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42558,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hTEj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 424w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 848w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 1272w, https://substackcdn.com/image/fetch/$s_!hTEj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997c7892-fe9b-4eb4-a786-b44a26242683_932x461.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://monkeylearn.com/blog/what-is-tf-idf/">TF-IDF explained</a></figcaption></figure></div><p>Some column definitions:</p><ul><li><p><strong>Word</strong>: each word is isolated from every cast in the last 14 days</p></li><li><p><strong>Casters</strong>: number of users who included a given word in their cast</p></li><li><p>TF: term frequency, or number of times this word appeared in casts.</p></li><li><p>IDF: inverse document frequency - basically the higher this is, the more unique the word is. I used each caster as a &#8220;document&#8221;, so in this context a higher IDF means it was cast by less people.</p></li><li><p>TF-IDF: the multiplication between frequency and uniqueness measures</p></li></ul><p>You can immediately get a high quality view of what&#8217;s trending in the Farcaster ecosystem, with a single SQL query. This query is easily extensible to filter for trending words on a subset of users or channels, and for you to apply your own measurements on top.</p><p>Now, you&#8217;ll also notice that I filtered on casts only from &#8220;active badge&#8221; users. Let&#8217;s get into how I labeled users next.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>User Labels and Trends</h2><p>Okay, let&#8217;s take it to the next level now. I want to be able to identify the quality of a user and then rank users based on age, Farcaster activity, and onchain activity. For this dashboard, I came up with the following five tiers:</p><ul><li><p><strong>&#129302; npc:</strong> Less than 400 followers</p></li><li><p><strong>&#129353; active:</strong> 400+ followers, 1+ casts, 100+ engagement score</p></li><li><p><strong>&#129352; star:</strong> 1k+ followers, 5+ casts, 5k+ engagement score</p></li><li><p><strong>&#129351; influencer:</strong> 10k+ followers, 10+ casts, 25k+ engagement score</p></li><li><p><strong>&#128142; vip:</strong> 50k+ followers, 10+ casts, 50k+ engagement score</p></li></ul><p>Where engagement score is <code>[likes + recasts*3 + replies*10] </code>and only &#8220;received (R)&#8221; actions are counted to this score. It&#8217;s likely you could use actions &#8220;given&#8221; as part of user tiering too, but just measuring casts felt good enough to me for a basic model. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LkqA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LkqA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 424w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 848w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 1272w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LkqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png" width="545" height="312.952691680261" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:352,&quot;width&quot;:613,&quot;resizeWidth&quot;:545,&quot;bytes&quot;:17959,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LkqA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 424w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 848w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 1272w, https://substackcdn.com/image/fetch/$s_!LkqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a7bdc5f-42b0-4331-91b3-d1f3b86ca796_613x352.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>Out of 83k users who sent a cast in the last 14 days, about 3k of them are higher quality users. With this in mind, we can create a leaderboard of these users:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sirR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sirR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 424w, https://substackcdn.com/image/fetch/$s_!sirR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 848w, https://substackcdn.com/image/fetch/$s_!sirR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 1272w, https://substackcdn.com/image/fetch/$s_!sirR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sirR!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png" width="1396" height="413.239010989011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:431,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1396,&quot;bytes&quot;:89605,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sirR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 424w, https://substackcdn.com/image/fetch/$s_!sirR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 848w, https://substackcdn.com/image/fetch/$s_!sirR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 1272w, https://substackcdn.com/image/fetch/$s_!sirR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eccd8f5-e762-4be3-bf49-7b2848b8b996_1723x510.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>I can not only see that are Dan (dwr) and Vitalik the top followed users on the platform, but also that Vitalik is active in the &#8220;geopolitics&#8221; channel and mainly shares either his own blogs (vitalik.eth.limo) or github links, and that Dan has been very active in deploying contracts (198 contracts deployed).</p><p>Let me cover some of the more complex column definitions:</p><ul><li><p><strong>Channels</strong>: This is the number of channels that a user casted in (over the last 14 days)</p></li><li><p><strong>Top Channels</strong>: These are the top three channel-ids that a user casted in, ranked by number of user casts in them.</p></li><li><p><strong>Top Domains: </strong>These are the top three domains found in links that a user casted, ranked by number of times the domain appears</p></li><li><p><strong>Txs, Volume, Contract Deploys</strong>: These are the all-time totals across all verified addresses, across all EVM chains that Dune currently covers.</p></li></ul><p>Now, what if I want to add filters to see trending users based on some criteria? For example &#8220;show me the trending users based on engagement that @jessepollak has followed, who are less than 7 days old.&#8221; This will then give me a list of users that I might consider as the &#8220;potential new builders on Base&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VSCs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VSCs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 424w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 848w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 1272w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VSCs!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png" width="1438" height="518.5096153846154" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:525,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1438,&quot;bytes&quot;:105729,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VSCs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 424w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 848w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 1272w, https://substackcdn.com/image/fetch/$s_!VSCs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F143fa5b5-6ec6-4ed5-8b64-91bf7807b829_1869x674.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>You&#8217;ll see there are also &#8220;user channel filter&#8221; and &#8220;held token address&#8221; filters there too. That means that I could filter for trending users in only a given channel, or trending users who have ever held the Nouns token. The possible combinations here are endless, I&#8217;ve only added six parameters that I thought were useful - but you can fork the query and add your own!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h2>Channel Labels and Trends</h2><p>Channels are like &#8220;subreddits&#8221;, where they have followers who cast inside them and hosts who manage the channel. I&#8217;ve created five tiers of channels:</p><ul><li><p><strong>&#128164; quiet:</strong> less than 5 casts and less than 50 engagement score</p></li><li><p><strong>&#127867; friends:</strong> 5+ casts, 50+ engagement score</p></li><li><p><strong>&#128269; niche:</strong> 25+ casts, 5,000+ engagement score, 100+ casters</p></li><li><p><strong>&#127917; subculture:</strong> 100+ casts, 25,000+ engagement score, 50+ rising stars and 2+ influencers/vips</p></li><li><p><strong>&#128081; stadium:</strong> 250+ casts, 100,000+ engagement score, 10+ influencers/vips</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_!ALpv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ALpv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 424w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 848w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 1272w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ALpv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png" width="562" height="329.3841059602649" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:604,&quot;resizeWidth&quot;:562,&quot;bytes&quot;:17682,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ALpv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 424w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 848w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 1272w, https://substackcdn.com/image/fetch/$s_!ALpv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48da1390-1ffc-4333-856a-299bdd2540f7_604x354.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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 idea here is that by combining user tiers and channel tiers, you can get a much better sense of which channels are high signal. Let&#8217;s start off with an all active channels ranking:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hlg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hlg2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 424w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 848w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 1272w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hlg2!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png" width="1406" height="460.6195054945055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:477,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1406,&quot;bytes&quot;:84419,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hlg2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 424w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 848w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 1272w, https://substackcdn.com/image/fetch/$s_!Hlg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4ee7ed-cb4f-4ee2-96e1-3435282c058e_1574x516.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>I&#8217;ve sorted by &#8220;engagement&#8221; here, and you&#8217;ll notice that not all high engagement channels are &#8220;stadiums&#8221;. This is because there are plenty of channels with a large concentration of &#8220;npc&#8221; or &#8220;active&#8221; users, but not many &#8220;star&#8221;, &#8220;influencer&#8221;, or &#8220;vip&#8221; users. I still consider these to be pretty niche. </p><p>Covering some column definitions again:</p><ul><li><p><strong>Top Influential Casters:</strong> These are the top three influencer/vip tier users, ordered by number of casts in channel in the last 14 days</p></li><li><p><strong>&#129302;,&#129353;,&#129352; ,&#129351; ,&#128142;: </strong>The emojis in the table match up with the emojis I used for user tiers. This measures the number of users in a tier who sent a cast in the last week in that channel</p></li><li><p><strong>Avg Txs, Volume, Contract Deploys:</strong> I took the average of these onchain metrics across all users with at least one transaction (columns are on the far right). I think there is still more work to be done here to make this a strong channel signal.</p></li></ul><p>So for the trending view, I might want to see which channels are under 7 days old but have the highest number of &#8220;influencers&#8221; actively casting in 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_!xheS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xheS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 424w, https://substackcdn.com/image/fetch/$s_!xheS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 848w, https://substackcdn.com/image/fetch/$s_!xheS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 1272w, https://substackcdn.com/image/fetch/$s_!xheS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xheS!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png" width="1366" height="449.3914835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:479,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1366,&quot;bytes&quot;:104859,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xheS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 424w, https://substackcdn.com/image/fetch/$s_!xheS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 848w, https://substackcdn.com/image/fetch/$s_!xheS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 1272w, https://substackcdn.com/image/fetch/$s_!xheS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9012bd5-4241-41fd-bb9a-6e3e002a48ee_1879x618.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>I quickly find that there are a bunch of niche channels like &#8220;superbowl&#8221;, &#8220;donothing&#8221;, and &#8220;consumercrypto&#8221; that seem to be popular with influencers but not have that much engagement or other users in there yet. I could use this information to try and join channels early, to grow my own account and relationships. </p><p>You can also filter by trending channels given a &#8220;username filter&#8221;, i.e. what are the trending channels Vitalik is a part of. Or filter based on &#8220;channel held token address&#8221;, which if you put in Nouns would show you channels trending amongst Nouns holders.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><blockquote><p>&#128202; <a href="https://dune.com/ilemi/farcaster-explorer">Farcaster Trends Explorer Dashboard</a></p><p>&#9881;<a href="https://github.com/andrewhong5297/farcaster-explorer">Contribute to the methodology in the dashboard GitHub repo</a></p><p>&#128276;<a href="https://dune.com/queries?templateCategory=Farcaster">Use our Farcaster query templates and set some Slack/Discord alerts</a></p></blockquote><h2>The tip of the social data iceberg</h2><p>This dashboard is fundamentally three different queries that aim to build up a much stronger base for everyone to build social analysis with. Again, you can fork and build off of any of these queries yourself, or use them as endpoints in the Dune API to build your own external applications. </p><p><a href="https://warpcast.com/ilemi">I&#8217;m on Warpcast</a> if you want to follow me for more insights, and my DMs are always open to bounce ideas and answer questions.</p><p>I&#8217;m also building an onchain crypto data community <a href="https://read.cryptodatabytes.com/p/join-the-bytexplorers">called the Bytexplorers</a>. We&#8217;re building out some Farcaster specific initiatives like the <a href="https://read.cryptodatabytes.com/p/the-bytelight-token-spotlight-any">ByteLight token</a>, and would love to have more people participate with us.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c9331591-bc6e-4b08-8fa4-1f7dc91ca306&quot;,&quot;caption&quot;:&quot;Today is the start of season 1 for the Bytexplorers. I&#8217;m creating this onchain community of crypto data people to accomplish three goals: Explore and understand the world of crypto data (all chains). Build tighter relationships between all data analysts, engineers, and scientists.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Join the Bytexplorers &#128269;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-01-09T17:10:51.838Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff51822-1296-4277-aace-57b93c42e1d6_624x619.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/join-the-bytexplorers&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:140008691,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:13,&quot;comment_count&quot;:2,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>]]></content:encoded></item><item><title><![CDATA[How to Understand and Query Farcaster Data (Casts, Users, Channels, and Frames)]]></title><description><![CDATA[Farcaster is the top new web3 decentralized social platform. I'll walk through how the data structures work (onchain, hubs, clients) and how to query it on Dune and Neynar.]]></description><link>https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/how-to-understand-and-query-farcaster</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Fri, 02 Feb 2024 17:15:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HejR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Farcaster is a social app - like Twitter - that&#8217;s been decentralized and uses Ethereum addresses as the basis for accounts. If you&#8217;re curious about why that matters or what use cases that enables, <a href="https://www.notboring.co/p/framing-the-future-of-the-internet">read Packy&#8217;s post</a>. I&#8217;m going to cover the key data structures behind the protocol, and teach you how to query the protocol using <a href="https://dune.com/browse/dashboards?q=farcaster&amp;order=trending&amp;time_range=24h">Dune</a> and <a href="https://docs.neynar.com/">Neynar</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_!HejR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HejR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 424w, https://substackcdn.com/image/fetch/$s_!HejR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 848w, https://substackcdn.com/image/fetch/$s_!HejR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 1272w, https://substackcdn.com/image/fetch/$s_!HejR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HejR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png" width="582" height="373.55898876404495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:1424,&quot;resizeWidth&quot;:582,&quot;bytes&quot;:135446,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HejR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 424w, https://substackcdn.com/image/fetch/$s_!HejR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 848w, https://substackcdn.com/image/fetch/$s_!HejR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 1272w, https://substackcdn.com/image/fetch/$s_!HejR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F334dfc07-3d31-4649-834d-7ce9bf64543f_1424x914.png 1456w" sizes="100vw" fetchpriority="high"></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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/pixelhack/farcaster">Farcaster has crossed 10k daily active users recently</a></figcaption></figure></div><p>In this guide I&#8217;ll walk through:</p><ul><li><p>The difference between onchain contracts, hubs, and clients</p></li><li><p>Querying main interactions (casts, reactions, links, profiles, fids, verifications)</p></li><li><p>A bit about Frames</p></li><li><p>Connecting onchain data to Farcaster data</p></li></ul><p>Dune gets its <a href="https://dune.com/docs/data-tables/community/neynar/farcaster/">Farcaster tables data</a> from Neynar every 12 hours. If you&#8217;re looking to join onchain activity to Farcaster tables, then querying in Dune is the way to go. If you&#8217;re looking to build an app/bot on top of Farcaster, you should be using <a href="https://neynar.com">Neynar</a> (think of them like Alchemy).</p><blockquote><p><em>The easiest way to sign up to Farcaster is to just download Warpcast from the app store and purchase in app. You can use <a href="https://warpcast.com/~/invite-page/16522?id=7a7056c1">my invite link</a>.</em></p><p>&#128202; <a href="https://warpcast.com/ilemi">Follow me on Farcaster</a> and join the <a href="https://warpcast.com/~/channel/data">/data channel</a></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><p>&#127911;<em> Do you prefer audio? I recorded a 20-minute voice overview of this guide:</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f02f9ead-780c-4a21-9d64-330815381922&quot;,&quot;caption&quot;:&quot;This Twitter space was recorded on 2/7/2024. &#128279; The thread that I highlighted/referenced in this recording The longer article detailing Farcaster concepts more in depth:&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Farcaster Structures and Data Explained&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:107547133,&quot;name&quot;:&quot;Andrew Hong&quot;,&quot;bio&quot;:&quot;Headmaster @duneanalytics              \n\nFollow me to start learning, hiring, or contributing in the web3 data ecosystem&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d2e16d7-42aa-4178-bdc1-ef8561b05e88_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-02-10T19:58:51.441Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/056d6afb-b6f1-4476-b4f2-1c72d320d5b6_1485x1485.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://read.cryptodatabytes.com/p/farcaster-structures-and-data-explained&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:141558280,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Crypto Data Bytes&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff21956fb-b525-4686-9a4d-91920a8765b7_735x735.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h1>What data exists where?</h1><h3>Onchain Contracts</h3><p>First, let&#8217;s cover what is onchain, on hubs, and on clients. This will teach you where you need to go to access what type of data.</p><p>Let&#8217;s start with the onchain contracts. Farcaster has three contracts on Optimism, which act as &#8220;registries&#8221; for ids, storage, and keys respectively (shown below). I believe the main reason for having this onchain component is to have payment for both ids and storage - as it would be very expensive to decentralize a social app if any bot could costlessly sign up and spam.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j5vO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j5vO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 424w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 848w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 1272w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j5vO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png" width="684" height="317.10164835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1456,&quot;resizeWidth&quot;:684,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Registry Contracts&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="Registry Contracts" title="Registry Contracts" srcset="https://substackcdn.com/image/fetch/$s_!j5vO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 424w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 848w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 1272w, https://substackcdn.com/image/fetch/$s_!j5vO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85314867-d06d-4429-9f11-18ac2fc20a5b_1808x838.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://docs.farcaster.xyz/learn/architecture/contracts">Farcaster Docs</a></figcaption></figure></div><p>When a user registers, they are given an fid and custody address, as well as some storage units. Here is an example of a <a href="https://optimistic.etherscan.io/tx/0xf2fcd6350bc5a11265a60a2f5898013afb7e461d45bd04dbd04bb16cbba13731#eventlog">registration transaction</a> on Optimism. You can see that transaction broken down in Dune, with the tables to query for this data:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wDV9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wDV9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 424w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 848w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 1272w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wDV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png" width="676" height="290.17857142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1456,&quot;resizeWidth&quot;:676,&quot;bytes&quot;:190691,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wDV9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 424w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 848w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 1272w, https://substackcdn.com/image/fetch/$s_!wDV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543b4002-03ee-4185-8ee6-35c901bf2b12_1690x726.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/2458023/4041368?chain_e15077=optimism&amp;ignore+unknown_e15077=true&amp;tx+hash_t6c1ea=0xf2fcd6350bc5a11265a60a2f5898013afb7e461d45bd04dbd04bb16cbba13731&amp;blocknumber_n26d66=115519448">Query for inputting any tx hash and getting tables</a></figcaption></figure></div><p>You&#8217;ll most likely need to query these tables if you want some raw economic data on protocol revenue and costs. There are <a href="https://dune.com/pixelhack/farcaster">great example queries in this dashboard</a> you can reference (near the bottom).</p><p>Once a user is signed up, they can also rent more storage within an app like Warpcast. Here&#8217;s the purchase screen below in my account:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zxJK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zxJK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 424w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 848w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 1272w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zxJK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png" width="400" height="300.3115264797508" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:642,&quot;resizeWidth&quot;:400,&quot;bytes&quot;:121321,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zxJK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 424w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 848w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 1272w, https://substackcdn.com/image/fetch/$s_!zxJK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0fc0eb0-49a8-4c2c-b170-308e6ff06c93_642x482.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption">Costs about $5 a unit to purchase in-app. That covers the storage and gas fee.</figcaption></figure></div><h3>Hubs</h3><p>Once a user is registered, hubs take care of the rest. the bulk of actual Farcaster data is stored on hubs. Anyone can run a hub using <a href="https://www.thehubble.xyz/">Hubble</a>, and they hash <a href="https://docs.farcaster.xyz/learn/what-is-farcaster/messages">messages</a> that are then streamed to each other and validated. </p><p>There are currently 560 hubs being run (<a href="https://farcaster.spindl.xyz/">see here</a>). You can sync a hub in 2 hours, and it takes 8GB ram with 20GB storage to run the hub (<a href="https://www.thehubble.xyz/intro/install.html">requirements here</a>).</p><p>Hubs store all the actual interaction data - profiles, casts, channels, reactions, links (follows), and verifications. You can see an overview with the<a href="https://dune.com/docs/data-tables/community/neynar/farcaster/#fids"> data documentation on Dune</a>. We&#8217;ll go through all these data tables soon.</p><p>This is where Neynar gets their data (they actively run a hub), and Dune gets their hub data from Neynar which syncs once a data. </p><h3>Clients</h3><p>Clients are unrelated to hubs, so don&#8217;t make the &#8220;oh geth is a client to run ethereum&#8221; mental connection here. </p><p>Clients mean apps in the Farcaster context. The biggest client is Warpcast, a mobile/web app built on top of Farcaster. Warpcast stores data from custom interactions that don&#8217;t get published to hubs. There are three examples here:</p><ul><li><p>private direct and group messages. Note that these are not to be confused with the &#8220;<a href="https://docs.farcaster.xyz/learn/what-is-farcaster/messages">hashed messages</a>&#8221; sent between hubs.</p></li><li><p>frame actions (clicking on a frame). Note that frames as a concept can be implemented on any client, but the data will always only be passed between the client and the frame server.</p></li><li><p>warps (in-app currency native to Warpcast)</p></li><li><p>channel follows. You can get channels using parent_url (explained later below) but the best proxy for &#8220;following&#8221; is looking at if a user has casted, recasted, or liked a cast in a given channel.</p></li></ul><p>There is also sometimes a delay between when a cast appears on a client like Warpcast and when it gets published. Warpcast publishes in small batches, so sometimes you may cast on Warpcast and not see the cast available on Neynar for a couple seconds/minutes.</p><p>You can&#8217;t query data off of clients unless they open up an API for it. An example here could be using Warpcast to &#8220;login with Farcaster&#8221; on another application. Warpcast is considered a &#8220;<a href="https://docs.farcaster.xyz/learn/what-is-farcaster/apps#wallet-apps">wallet app</a>&#8221; within the category of clients.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h1>Explaining Interaction Data (from Hubs)</h1><p>Whew - that&#8217;s a lot of background knowledge, we&#8217;re finally ready to get into the real data.</p><h3>Profiles, FIDs, Addresses, and Followers</h3><p>Each fid has a custody address (the one that was added in the registration process). This is found in the <em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/fids/">dune.neynar.dataset_farcaster_fids</a></em> table<strong>. </strong>If you wanted to get their profile data, you would JOIN the <em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/user_data/">dune.neynar.dataset_farcaster_user_data</a></em><strong> </strong>on &#8220;fid&#8221; and do a WHERE on &#8220;type&#8221; to get their fname (username), profile, display name, avatar URL, or bio. </p><p>A user can choose to link other addresses if they want through <a href="https://info.etherscan.com/verify-signature-tool">offchain signatures</a> in a wallet app (i.e. Warpcast &#8594; settings &#8594; connected addresses). These go in the <em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/verifications/">dune.neynar.dataset_farcaster_verifications</a></em> table<strong> (</strong>JOIN again on &#8220;fid&#8221;). </p><p>To make it simple, you can just join the fids table to the aggregated table <em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/profile_with_addresses/">dune.neynar.dataset_farcaster_profile_with_addresses</a> </em>to get fid, profile data, custody address, and verified addresses. To query followers, you&#8217;ll want to use the <em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/links/">dune.neynar.dataset_farcaster_links</a> </em>table, where &#8220;fid&#8221; is the follower and &#8220;target_fid&#8221; is the user being followed. </p><p>Here&#8217;s a query putting this all together:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!obie!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!obie!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 424w, https://substackcdn.com/image/fetch/$s_!obie!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 848w, https://substackcdn.com/image/fetch/$s_!obie!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 1272w, https://substackcdn.com/image/fetch/$s_!obie!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!obie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png" width="1456" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229187,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!obie!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 424w, https://substackcdn.com/image/fetch/$s_!obie!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 848w, https://substackcdn.com/image/fetch/$s_!obie!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 1272w, https://substackcdn.com/image/fetch/$s_!obie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc4c1ab-6114-4ffd-a6e1-6155a568457c_1966x834.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3399514?category=third_party_data&amp;catalog=dune&amp;schema=neynar">link to query</a></figcaption></figure></div><blockquote><p>On Neynar, you can use the <a href="https://docs.neynar.com/reference/user-search">users endpoints</a> to get this data.</p></blockquote><h3>Casts, Replies, Channels, and Reactions</h3><p>There are only two tables for you to work with here.</p><ul><li><p><em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/casts/">dune.neynar.dataset_farcaster_casts</a></em></p></li><li><p><em><a href="https://dune.com/docs/data-tables/community/neynar/farcaster/reactions/">dune.neynar.dataset_farcaster_reactions</a></em></p></li></ul><p>Keep in mind that many tables have a &#8220;hash&#8221; column, which represents the id of an action on that table. Only the &#8220;hash&#8221; on the casts table represents a cast hash.</p><p>The reactions table is easy to work with, just JOIN on &#8220;fid&#8221; or &#8220;target_fid&#8221; as needed and JOIN &#8220;target_hash&#8221; to the &#8220;hash&#8221; column on the casts table. Let&#8217;s walk through some of the key columns of the casts table:</p><ul><li><p><strong>hash:</strong> the hash of the actual cast. This is truncated to just the first 4 bytes (8 characters) in the Warpcast URLs.</p></li><li><p><strong>parent_hash</strong>:<strong> </strong>the hash of the cast being replied to (if any)</p></li><li><p><strong>root_parent_hash</strong>: the hash of the cast at the top of the reply thread (if any)</p></li><li><p><strong>parent_url: </strong>the channel id of the cast (if any, none means &#8220;home&#8221;)</p></li></ul><p>As for the cast text, it&#8217;s broken up into three parts:</p><ul><li><p><strong>text: </strong>any raw text from the cast, with links and mentions removed</p></li><li><p><strong>mentions: </strong>the fids of any users @ mentioned in the cast. The position of the mention is in the &#8220;mention_positions&#8221; column. The arrays are 1:1 in terms of index.</p></li><li><p><strong>embeds:</strong> any attachments to the cast, like an image</p></li></ul><p>Here&#8217;s an example query that puts some of these cast concepts together:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pkGr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pkGr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 424w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 848w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 1272w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pkGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png" width="1456" height="577" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:149607,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pkGr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 424w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 848w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 1272w, https://substackcdn.com/image/fetch/$s_!pkGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22451231-f6fb-4ebd-90ae-e3145dabce72_2100x832.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3023113/5022265">link to query</a></figcaption></figure></div><p>For casts analysis, you&#8217;ll need to just get used to doing self joins (joining the casts table on itself to get replies). This can get pretty complex, if you want to see some more difficult queries then check out how I&#8217;ve broken down Bountycaster in <a href="https://dune.com/ilemi/bountycaster">this Dune dashboard</a>. <a href="https://www.bountycaster.xyz/">Bountycaster</a> relies on a user to cast with certain words like &#8220;complete&#8221; or &#8220;cancel&#8221; or &#8220;add&#8221; while tagging the bountybot. </p><p>You&#8217;ll see that in the &#8220;bounties&#8221; CTE of <a href="https://dune.com/queries/3249406/5437357">this query</a>, I look for any cast that&#8217;s a top level cast (no parent_hash that it&#8217;s tied to) and then look for any replies with keywords that indicate the status of the bounty. I then use some regex to pull out information like bounty value.</p><blockquote><p>On Neynar, you can <a href="https://docs.neynar.com/reference/feed">get casts from a feed</a> and then unroll a cast using <a href="https://docs.neynar.com/reference/all-casts-in-thread-v1">retrieve all casts from thread</a>. Check out <a href="https://github.com/andrewhong5297/farpoll/blob/main/helpers/neynar.js">my code here</a> for calling and parsing a cast, and also validating some frame data. </p></blockquote><h3>About Frames</h3><p>Frames are really simple right now, involving an image and a few buttons. The interaction in the app then asks a server (API backend of the frame developer) what to show next. It uses the <a href="https://ogp.me/">OpenGraph (OG) standard</a>, which is what is used to power those link previews you see on any site when you paste a link. Here&#8217;s an example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q0CV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q0CV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 424w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 848w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 1272w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q0CV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png" width="590" height="464.448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:984,&quot;width&quot;:1250,&quot;resizeWidth&quot;:590,&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_!q0CV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 424w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 848w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 1272w, https://substackcdn.com/image/fetch/$s_!q0CV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e7e667-fc75-4e55-b08a-eb87c0f7f166_1250x984.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://warpcast.com/seangeng/0x1abbb9aa">Frame built by Sean</a></figcaption></figure></div><p>Frames are the newest feature on the Warpcast client. Because it&#8217;s a client concept,  you can&#8217;t query frame actions data off of Neynar or Dune. But if you build a frame, you will get the &#8220;frame action&#8221; passed to your frame server: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XaqL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XaqL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 424w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 848w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 1272w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XaqL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png" width="612" height="379.59493670886076" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1422,&quot;resizeWidth&quot;:612,&quot;bytes&quot;:140854,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XaqL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 424w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 848w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 1272w, https://substackcdn.com/image/fetch/$s_!XaqL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4078e9-326c-468f-acad-4166d14b8fa0_1422x882.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://warpcast.notion.site/Farcaster-Frames-4bd47fe97dc74a42a48d3a234636d8c5">frames docs</a></figcaption></figure></div><p>Note that frames as a concept can be implemented on any client (i.e. Supercast supports them), but the data will always be only passed between the client and the frame server.</p><p>There are some workarounds to getting frame action data. I&#8217;ve built a <a href="https://github.com/andrewhong5297/farpoll">frame system that pushes actions to Ethereum Attestation Service (EAS)</a> to act as an onchain logs framework. I <a href="https://twitter.com/andrewhong5297/status/1751973477530149040">tweeted an example query</a> - we&#8217;ll go more in depth in the next section.</p><blockquote><p>&#128680; Frames are still rapidly changing, and this guide will likely fall out of date quickly. I&#8217;ll update this when I can, but will likely do a full frames guide in another article in the future.</p></blockquote><h3>Connecting Farcaster data to other onchain data</h3><p>The real unlock of having a web3 native social graph is that you can now join a Farcaster user&#8217;s onchain activity to their hub activity. I took the voters from my EAS frame poll, and joined the user custody_address and verified wallets together onchain summary data <a href="https://dune.com/ilemi/farpoll">in this dashboard</a>. Here&#8217;s a nice little summary query:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gbu-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gbu-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 424w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 848w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gbu-!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png" width="1200" height="468.95604395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:569,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:303151,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gbu-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 424w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 848w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!gbu-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7722804-71b9-4825-80a8-fd80031c92f2_2900x1134.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3393439/5694435">link to query</a></figcaption></figure></div><blockquote><p>Again, &#8220;verified wallets&#8221; are pulled from the verifications table. They are added by the user through <a href="https://info.etherscan.com/verify-signature-tool">offchain signatures</a> done in a wallet app (i.e. Warpcast &#8594; settings &#8594; connected addresses).</p></blockquote><p>The complexity of the onchain data here has been abstracted in a <a href="https://dune.com/docs/query/materialized-views/">materialized view</a> named &#8220;dune.dune.result_wallet_all_chain_activity_summary&#8221; that is defined <a href="https://dune.com/queries/2858381">in this query</a>. In the matview query, you will find how I calculate statistics like age, transactions, volumes, and contract deployments.</p><p>Here&#8217;s another example, of me pulling in Farcaster fids and usernames onto a list of token holders (bytepass NFTs). These are all top data experts in the ecosystem, so you should follow everyone here &#128513; </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9LME!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9LME!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 424w, https://substackcdn.com/image/fetch/$s_!9LME!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 848w, https://substackcdn.com/image/fetch/$s_!9LME!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 1272w, https://substackcdn.com/image/fetch/$s_!9LME!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9LME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png" width="1432" height="1228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1228,&quot;width&quot;:1432,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:259549,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9LME!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 424w, https://substackcdn.com/image/fetch/$s_!9LME!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 848w, https://substackcdn.com/image/fetch/$s_!9LME!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 1272w, https://substackcdn.com/image/fetch/$s_!9LME!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3dad206-66e7-4d90-97e9-aa6ac2241cbd_1432x1228.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3307412/5539047">link to query</a></figcaption></figure></div><blockquote><p>All Dune queries can be accessed from the API as well. Here&#8217;s <a href="https://github.com/andrewhong5297/farpoll/blob/main/helpers/dune.js">some code in javascript</a> that I used to calculate poll totals from EAS data. Dune also has a <a href="https://github.com/duneanalytics/dune-client">python SDK</a>. <br><br>Dune API documentation can be <a href="https://dune.mintlify.app/api-reference/overview/introduction">found here</a>.</p></blockquote><h1>Continue Learning Data with the Bytexplorers</h1><p>That&#8217;s all for this Farcaster data guide! If you enjoyed it, be sure to like and subscribe. If you have questions or work you want to share, then DM me on Twitter or Farcaster.</p><p>I&#8217;m also building an onchain crypto data community <a href="https://read.cryptodatabytes.com/p/join-the-bytexplorers">called the Bytexplorers</a>. We&#8217;re building out some Farcaster specific initiatives like the <a href="https://read.cryptodatabytes.com/p/the-bytelight-token-spotlight-any">ByteLight token</a>, and would love to have more people participate with us.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The ByteLight Token: Spotlight Any Crypto Data Question]]></title><description><![CDATA[Get any of your questions in front of top data builders (details on how to earn or purchase the token are in this article).]]></description><link>https://read.cryptodatabytes.com/p/the-bytelight-token-spotlight-any</link><guid isPermaLink="false">https://read.cryptodatabytes.com/p/the-bytelight-token-spotlight-any</guid><dc:creator><![CDATA[Andrew Hong]]></dc:creator><pubDate>Tue, 30 Jan 2024 16:32:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8fce10f6-dd2c-4b0c-bfeb-3fad3c204aa4_485x426.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><blockquote><p><strong><sup>&#128680; </sup>this quest has been paused for now</strong></p><p>Read on to learn more about the token usage and mechanics.</p></blockquote><p>ByteLight is an ERC1155 token where any holder can ask a crypto question in the Farcaster /data channel, and then the post will be spotlighted into the Bytexplorer community (100+ data analysts, engineers, and scientists).</p><p>Collectively we have knowledge on everything from user behaviors, dozens of chain ecosystems, protocol patterns, domain trends, and complex data structures. The breadth and depth of topics we can help discuss or answer is massive.</p><p>This is meant to bring the crypto community together with fun new incentives that don&#8217;t add much friction.</p><p><em>Thanks to <a href="https://twitter.com/visavishesh">Vishesh</a> for ideating on the token mechanics with me.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><h3><strong>What kind of questions can I ask?</strong></h3><p>Data community question/answering already happens every day on Twitter, but there are still tons of good questions that get missed. I answer questions like this one from Binji almost daily:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C4SB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C4SB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 424w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 848w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 1272w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C4SB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png" width="452" height="251.61333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1200,&quot;resizeWidth&quot;:452,&quot;bytes&quot;:123414,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C4SB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 424w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 848w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 1272w, https://substackcdn.com/image/fetch/$s_!C4SB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf1701cd-a5b4-4173-b437-46b1d1f0cc9f_1200x668.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://twitter.com/binji_x/status/1679501511661944834">tweet</a></figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Isqo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Isqo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 424w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 848w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Isqo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png" width="448" height="397.38279932546374" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1052,&quot;width&quot;:1186,&quot;resizeWidth&quot;:448,&quot;bytes&quot;:231060,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Isqo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 424w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 848w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!Isqo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129784d2-7373-4d4f-8e18-82f4709d7035_1186x1052.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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>This kind of question is too simple for a paid bounty process, but still very valuable for making key decisions. The ByteLight token is for spotlighting such questions from those who are either non-technical or don&#8217;t have time to dig into the data. </p><h4>Some other example questions you might ask:</h4><ul><li><p><em><strong>Trend Diving:</strong></em><strong> </strong>I don&#8217;t understand how Solana DEX volumes have increased this significantly, can someone help me figure out what tokens are driving this? </p></li><li><p><em><strong>Ecosystem Context:</strong></em><strong> </strong>I&#8217;m trying to understand the trend of why Arbitrum TVL has been increasing the last few weeks, does anyone have an idea?</p></li><li><p><em><strong>Tweaking Charts:</strong></em><strong> </strong>This chart shows active users of Uniswap, can someone help me show retention instead?</p></li><li><p><em><strong>Protocol Releases:</strong></em><strong> </strong>We&#8217;re releasing our new protocol contracts soon (or a new EIP/standard), and would love to have some data nerds let us know what events we should add or edit</p></li><li><p><em><strong>Data Tooling Questions:</strong></em><strong> </strong>We&#8217;re considering using this data product to build ABC and would love to <a href="https://twitter.com/andrewhong5297/status/1732230186966413484">get some honest thoughts on the pros and cons of XYZ features</a> </p></li></ul><p>&#128680; This is NOT for requesting for full dashboards or data models - that kind of work should go through <a href="https://www.bountycaster.xyz/">Bountycaster</a>. That said, asking smaller data questions in public will help you find the right data person to hire.</p><h3>How ByteLight tokens work, and how to get them</h3><h4><strong>The lifecycle of a question:</strong></h4><ol><li><p>Send a cast with your question into the <a href="https://warpcast.com/~/channel/data">/data channel</a> on <a href="https://warpcast.com/~/invite-page/16522?id=7a7056c1">Farcaster</a>. It must be a completely new cast, not a reply to another cast. It must also contain at least one question mark &#8220;?&#8221;.</p></li><li><p>The cast will get pushed to the private Bytexplorer telegram group, and ranked in a feed <a href="https://dune.com/cryptodatabytes/bytexplorers">on this Dune dashboard</a>.</p></li><li><p>The question gets answered through replies to the original cast. It stays open for 14 days.</p></li><li><p>If an answer is satisfactory, reply with &#8220;@bytecast answered&#8221;</p></li><li><p>You keep your ByteLight token(s) until you decide to sell them. You can ask as many questions as you want while you hold them - within reason, if you ask ten times a day then you won&#8217;t get a response to all of them.</p></li></ol><p>There is no promise that you&#8217;ll get the question answered perfectly, but if it is a reasonable ask I am sure the Bytexplorer community will try and help you out. </p><h4>Buy ByteLight tokens on Sudoswap</h4><blockquote><p>&#128073;&#128181; <a href="https://sudoswap.xyz/#/item/base/0x4Fc7be21c4437f6D56DF01B1BA38f8B361AeE9e4/1">Buy or Sell from this SudoSwap pool</a>, with a starting price of 0.03 ETH that goes up 0.001 ETH with each purchase. </p><p>It&#8217;s non-transferrable, and I will increase the supply of tokens over time, based on demand. I will also set the price lower or higher manually over time. It can be sold back at roughly half the current purchase price. </p></blockquote><p><em><strong>Legal Disclaimer:</strong> The ByteLight token is a utility token for use within the Bytexplorer ecosystem and does not represent a financial instrument, security, or commodity. It is not intended for speculation or investment. Ownership of ByteLight tokens does not guarantee any rights to services, profits, or dividends. The value and utility of ByteLight tokens may fluctuate and are not assured by Crypto Data Bytes. The token is designed to facilitate engagement and is not a promise or obligation to deliver any product, service, or performance. We encourage all users to approach ByteLight token ownership with caution and to seek independent advice. Crypto Data Bytes disclaims any responsibility for the token's value or the fulfillment of any services or benefits.</em></p><h3><strong>Rewards and Participation for Bytexplorers:</strong></h3><blockquote><p>&#128269; <a href="https://read.cryptodatabytes.com/p/join-the-bytexplorers">Learn about the Bytexplorers and join us</a></p></blockquote><p>This is our second reputation token! It will be the counter in the top left of your Bytepass, with the red/white face icon. This is meant to signal to people how generally &#8220;helpful&#8221; you have been both inside and outside the data community. I personally think this is a great way to better understand what&#8217;s on other peoples minds, and to also build relationships that turn into bounty work or jobs.</p><p>Explorers who answer questions from ByteLight holders will earn ByteInsight tokens, for helping casters get insights. If you respond with a valid answer to a cast, you will earn 1 ByteInsight token for each ByteLight token held by the caster.</p><p>You can use this query to see open questions and top three answers:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RNN0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RNN0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 424w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 848w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 1272w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RNN0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png" width="960" height="341.53846153846155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:518,&quot;width&quot;:1456,&quot;resizeWidth&quot;:960,&quot;bytes&quot;:128183,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RNN0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 424w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 848w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 1272w, https://substackcdn.com/image/fetch/$s_!RNN0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F047e6289-a93e-4c1c-a18f-3717745dcff1_1972x702.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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><figcaption class="image-caption"><a href="https://dune.com/queries/3448941/5795160">link to query</a></figcaption></figure></div><p><strong>Point System: </strong>For an answer to count as valid, it must either get marked as &#8220;@bytecast answered&#8221; in a reply by question author or get a like from someone of trailblazer tier or higher. If a like comes from a bytexplorer, it&#8217;s weighted based on the tier. If the question author liked the answer cast, that like is worth 10.</p><p><strong>Keep in mind that:</strong></p><ul><li><p>You must own a Bytepass to get rewards.</p></li><li><p>The top three answers after 14 days will be rewarded. Answers will be ranked based on likes from the Bytexplorer community, and likes will be weighted based on guild token balance.</p></li><li><p>If a question is completely unanswerable, I will reply &#8220;unanswerable&#8221; and it will not be eligible for rewards.</p></li><li><p>If you wrote queries for your answer, you can submit those <a href="https://read.cryptodatabytes.com/p/bytexplorers-weekly-quest-1">to the weekly quest</a> to earn guild tokens on them.</p></li></ul><p><strong>The plan is 75% of revenue from ByteLight mint sales and trading fees will be split amongst the community, based on explorer tokens earned.</strong> 25% will be taken by me for now to cover time/cost of admin and operations - this percentage will decrease over time as the community grows in size. It will likely be distributed through quarterly <a href="https://docs.splits.org/">Splits</a> or <a href="https://blog.sablier.com/introducing-airstreams/">Sablier airstreams</a>. </p><p>The method and weight of reward distribution is still to be finalized, More details will come over the next couple of months.</p><p><em><strong>Legal Disclaimer: </strong>The information provided regarding the distribution of revenue from ByteLight sales and trading fees represents our current intentions and is shared to outline our preliminary vision. Please be aware that these plans are not final and are subject to change as we continue to refine our strategy and respond to regulatory, technical, and community feedback. No statement in this communication is intended to be, nor should it be construed as, a promise or commitment. The actual implementation of revenue distribution may differ, and we reserve the right to modify any of the mentioned mechanisms. We recommend our community members stay informed through our official channels for the latest updates and developments. Depending on jurisdiction, KYC (Know Your Customer) procedures may be required, and the specifics of revenue distribution may be adjusted to comply with legal and regulatory standards.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://read.cryptodatabytes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://read.cryptodatabytes.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong>Technical Notes:</strong></p><ul><li><p>The ByteLight token will be an erc1155 token, distributed through airdrops or bought/sold through a single sudoswap pool. Transferability otherwise will be turned off. A 15% fee will apply to all trades.</p></li><li><p>The ByteInsight token will be an erc1155 token that is nontransferable. The count of an explorer&#8217;s balance will show up under the top left of the Bytexplorer pass.</p></li></ul>]]></content:encoded></item></channel></rss>