<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Vanes</title>
        <link>https://paragraph.com/@finessevanes</link>
        <description>undefined</description>
        <lastBuildDate>Sun, 12 Apr 2026 17:02:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Vanes</title>
            <url>https://storage.googleapis.com/papyrus_images/3b1ee79874cbab7bd1df5856184447377da75d589727fa265afcce0ec5d35108.png</url>
            <link>https://paragraph.com/@finessevanes</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Token Vaults in the USB-C Era]]></title>
            <link>https://paragraph.com/@finessevanes/token-vaults-in-the-usb-c-era</link>
            <guid>U8FmAxZvEChVwHLAzzo5</guid>
            <pubDate>Sat, 13 Jan 2024 05:48:47 GMT</pubDate>
            <description><![CDATA[It’s hard to ignore the fact that DeFi continues to be a significant use case for blockchain. As of this writing, DeFi protocols have over $58 billion in value locked, known as TVL (total value locked). This value comes in the way of digital assets, such as tokens. This continued demand in DeFi protocols highlights the need for standards like ERC-4626, crucial for ensuring consistency. In this article, I share my learnings and thoughts around ERC-4626, a standardization for tokenized vaults. ...]]></description>
            <content:encoded><![CDATA[<p>It’s hard to ignore the fact that DeFi continues to be a significant use case for blockchain. As of this writing, DeFi protocols have over <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://defillama.com/">$58 billion in value locked</a>, known as TVL (total value locked). This value comes in the way of digital assets, such as tokens.</p><p>This continued demand in DeFi protocols highlights the need for standards like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4626">ERC-4626</a>, crucial for ensuring consistency.</p><p>In this article, I share my learnings and thoughts around ERC-4626, a standardization for tokenized vaults.</p><p><strong>Here’s what we’ll cover.</strong></p><ul><li><p>The Composability Nightmare Problem</p></li><li><p>Why the USB-C Era for Token Vaults is Needed</p></li><li><p>The 18 Methods of ERC-4626 (And two of the most important ones)</p></li></ul><p>Before we dive into ERC-4626, here are some important terms that are helpful to understand:</p><h3 id="h-definitions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Definitions</strong></h3><p><strong>Interface</strong>: an &quot;interface&quot; acts as a control panel for a program, listing available functions, their required inputs (parameters), and the resulting outputs (return values).</p><p><strong>Behavior</strong>: refers to how a system or component consistently manages its actions and status, responding to inputs and events.</p><p><strong>Adapter Code</strong>: is customarily created to transform or adjust one interface or protocol into another, enabling systems or components originally designed to work separately to interact smoothly.</p><p><strong>Connectors</strong>: serve as universal connection points between systems, enabling communication and data exchange. They act as bridges that link different systems or components.</p><p><strong>Composability</strong>: represents the ability of various components or systems to seamlessly integrate and operate together, resulting in a harmonious and functional whole.</p><h2 id="h-the-composability-nightmare-problem" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The Composability Nightmare Problem</strong></h2><p>Token vaults are used in DeFi to earn rewards on your crypto. They are smart contracts that accept deposits and earn yield (interest). Vaults implement complex strategies, like leveraging, auto-compounding, and diversifying across various protocols in order to get the best return.</p><p>This variance in strategy and implementations causes a few problems, putting you right in the middle of what I call a &apos;composability nightmare’.</p><p>In blockchain, composability is important because it allows different protocols and applications to interact seamlessly, creating a more interconnected and functional ecosystem. The way token vaults are currently implemented, with their varied requirements and behaviors, doesn&apos;t exactly help in enhancing this composability.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/310dfc2f2188478da0ee0b4bf6dbd64afb9e1765b94a3d3a31a925ad4508815e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This is like having to buy a new charger every time you upgrade your phone because the old one is obsolete. Can you  imagine how filled your drawers would be? This situation was not only inconvenient but also both time-consuming and costly.</p><p>This is how vault tokens work today. Vaults are cell phones- and chargers represent the connectors.</p><p>Just as each new phone model often required a different charger back in 2008, DeFi protocols integrating token vaults must continually develop and update specialized ‘chargers’ (adapters and connectors) to accommodate the unique requirements of each vault</p><p>This current way has a few drawbacks:</p><ul><li><p><strong>Increases the likelihood of errors in code</strong>. Protocol engineers must understand various implementations, adding complexity and risk of security costs due to buggy code.</p></li><li><p><strong>Requires increased resources.</strong> Time spent learning and implementing the code is an expense to the organization.</p></li></ul><h2 id="h-why-the-usb-c-era-for-token-vaults-is-needed" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why the USB-C Era for Token Vaults is Needed</h2><p>ERC-4626 aims to provide a standardized interface and behavior for token vaults.</p><p>Let’s first start with illustrating a basic token vault. These are the basic functionalities we’d like to have:</p><ol><li><p>Allow user to deposit</p></li><li><p>Allow user to withdraw</p></li><li><p>Read vault balance</p></li><li><p>Vault manage asset to share amount</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0601828231e3a23709c3fe172df4339a2f1d7b764e5866e0dd89dc97009a4106.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-token-vaults-enter-their-usb-c-era" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Token vaults enter their USB-C era</strong></h3><p>ERC-4626 is a way to universally implement token vaults, so protocol engineers can easily integrate them with other dapps and tools.</p><p>As we&apos;ve discussed, even basic functionalities in token vaults can be implemented in various ways, leading to complexities. For instance, when considering any standard function within these vaults, questions arise about its structure and parameters. What data should it accept? How should it handle different user scenarios?</p><p>You can appreciate how such nuances can quickly escalate into larger composability problems, especially as the vaults grow in complexity.</p><h2 id="h-the-18-methods-of-erc-4626-and-two-of-the-most-important-ones" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The 18 Methods of ERC-4626 (And two of the most important ones)</h2><p>ERC-4626 offers <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/standards/tokens/erc-4626#methods">18 methods</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/standards/tokens/erc-4626#events">2 events</a> for developers to easily inherit in their vaults. This standard provides developers a ‘feature ready’ concept. While not primarily focused on security, an increase in security emerged as a beneficial byproduct.</p><p>Developed through community proposals and votes, ERC-4626 adheres to good conventions and essential safeguards. It ensures functions have standardized meanings and behaviors. Safeguards, such as the checks and effects pattern, are implemented to prevent malicious actors from exploiting the contract logic before transactions are finalized.</p><p>We won’t be reviewing all 18 methods, but we will evaluate the deposit and withdraw methods.</p><h3 id="h-deposit" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Deposit</h3><p>Let’s begin with a diagram illustrating the basic user flow of depositing assets into a vault.</p><p>I want to deposit $100 USDC. In exchange I will be issued vUSDC (vault tokens) that represent the shares I own in the vault.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/70003ac654af86aa91c089b719f817870968e356fbd2f4550f696e5fd21314d7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p>Transfer assets to vault</p></li><li><p>Issue vault tokens</p></li></ol><p>Sounds pretty basic, but let’s dive deeper and see what the code is actually doing. You can find the code to this method <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/transmissions11/solmate/blob/c892309933b25c03d32b1b0d674df7ae292ba925/src/tokens/ERC4626.sol#L46">here</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/41d947b8ca174ab91d08dda65260bb8dd1f88e26caf19ad9ae0f7b48239b7682.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p><strong>Parameters</strong></p><p>The deposit function is called with two <code>parameters</code>, <code>assets</code> and <code>receiver</code>. assets are expected to be a number representing the amount of the token that the depositor wants to deposit. The receiver is the address that will receive the vault tokens.</p></li><li><p><strong>Calculate and Validate Shares</strong></p><p>This check ensures that the amount of assets about to be deposited will result in the issuance of vault tokens. If the number is greater than 0, it moves onto the next line. If the number is 0, then the transaction will be reverted. Gas will still be paid up to this point.</p></li><li><p><strong>Transfer Assets to Vault</strong></p><p>In order to securely transfer the assets from the user to the vault, the contract calls the <code>safeTransferFrom</code> method, which is inherited from the ERC-20 standard. Because it facilitates the transfer of assets from the user&apos;s control to the contract, the user must first call the approve method on the token contract to grant the vault contract an allowance to use their assets.</p></li><li><p><strong>Issue Vault Tokens</strong></p><p>This involves another ERC-20 method, where <code>_mint</code> generates a new supply of vault tokens. The new supply, also known as shares, are then sent to the receiver.</p></li><li><p><strong>Deposit Event</strong></p><p>The contract records the deposit details in an event, capturing the initiator, receiver, and the amounts of assets and shares. Frontend applications can listen to these events to trigger UI updates.</p></li><li><p><strong>Optional Hook</strong></p><p>Is intended to execute some additional code after the deposit process (including asset transfer and share minting) has been completed.</p></li></ol><p>This method&apos;s construction was no accident. It follows best practices by using secure asset transfer methods, implementing checks for share calculation, and utilizing event logging for transparency.</p><h3 id="h-withdraw" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Withdraw</h3><p>Let&apos;s start by visualizing the basic process of withdrawing assets from a vault.</p><p>I want to withdraw $50 USDC. When I initiate the transaction, the vault will then burn the corresponding vault tokens in comparison to the value of my request withdraw.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0d48ed02939c3751c0e68f0b56e1ab3f0de1dcf1c4c4cccea4bc3981e975c652.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Here’s what happens on a high level.</p><ol><li><p>Burn Vault Tokens</p></li><li><p>Transfer Assets</p></li></ol><p>Let’s take a deep dive into the code. You can find the code to this method <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/transmissions11/solmate/blob/c892309933b25c03d32b1b0d674df7ae292ba925/src/tokens/ERC4626.sol#L73">here</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/73fa6f4f8044fd686e26ec130a7d2f2c04134a6e13bb77690c02b6d7c7515196.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p><strong>Parameters</strong></p><p>The <code>withdraw</code> function takes three parameters: <code>assets</code>, <code>receiver</code>, and <code>owner</code>. <code>Assets</code> is the amount of USDC I wish to withdraw. The <code>receiver</code> is the address that will receive the assets, and <code>owner</code> is the address that owns the vault tokens to be burned</p></li><li><p><strong>Calculate Shares for Assets</strong></p><p>First, the contract calculates the number of shares equivalent to the assets I want to withdraw using <code>previewWithdraw(assets)</code>. This determines how many of my vault tokens (vUSDC) are needed for the withdrawal.</p></li><li><p><strong>Ownership Verification</strong></p><p>The contract checks if I am the owner of the vault tokens. If not, it proceeds to the next step.</p></li><li><p><strong>Authorized Withdrawal Check</strong></p><p>If I&apos;m not the owner, the contract calculates how many shares I am authorized to withdraw on behalf of the owner. This step involves checking the allowance set by the owner for my address.</p></li><li><p><strong>Permission Validation</strong></p><p>The contract ensures I have the owner&apos;s permission to withdraw the specified amount. If the allowance is sufficient, it&apos;s reduced by the number of shares being withdrawn.</p></li><li><p><strong>Optional Hook</strong></p><p>Before the actual withdrawal, an optional hook can execute additional logic.</p></li><li><p><strong>Burn Vault Tokens</strong></p><p>Next, the contract burns the calculated number of vault tokens (vUSDC) from the owner&apos;s balance. This step reduces the total supply of vault tokens in circulation.</p></li><li><p><strong>Withdraw Event</strong></p><p>The contract records the withdrawal details in an event, noting who initiated the withdrawal, who is receiving the assets, and the amounts involved. Frontend applications can listen to these events to trigger UI updates.</p></li><li><p><strong>Transfer Assets</strong></p><p>Finally, the assets (USDC) are transferred from the vault to the receiver&apos;s address using the <code>safeTransfer</code> method. Unlike the <code>deposit</code> function, where <code>safeTransferFrom</code> is used to pull assets from the user&apos;s account with their permission, <code>safeTransfer</code> is employed here because the assets are being pushed from the <em>vault&apos;s own balance</em> to the receiver. This method simplifies the process, as it doesn&apos;t require the prior approval step that <code>safeTransferFrom</code> requires.</p></li></ol><p>The withdraw method&apos;s design is intentional, ensuring security with strict checks and clear event logging, embodying best practices for efficient and transparent transactions.</p><h3 id="h-real-use-case" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Real Use Case</h3><p>Now that we have looked at each part of the process, let&apos;s explore a real-world implementation of an ERC-4626 vault. We&apos;ll be reviewing the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygonscan.com/address/0xbb7Fa27f0F6C9667951059cd8173936A93d67124#code">AaveV3ERC4626Reinvestment</a> contract, which is deployed on the Polygon network. Aave is a well-known DeFi lending platform.</p><p>Aave&apos;s implementation in this contract demonstrates the process of earning additional rewards through Aave&apos;s liquidity mining programs.</p><p>We&apos;ll highlight the differences in these implementations.</p><p><em>In Solidity, when a function inherited from a parent contract is customized, it uses the &apos;override&apos; keyword to indicate that the function in the child contract is intended to override a function from the parent contract. While the</em> <code>deposit</code> <em>function remains unchanged in this contract, the</em> <code>afterDeposit</code> <em>method – the optional hook we briefly discussed earlier – is overridden.</em></p><p><strong>afterDeposit</strong></p><p>Let’s begin by reviewing how <code>afterDeposit</code> receives custom logic to enhance the functionality of this vault.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b8d729eccf436d71f6dc951dbd9bd17b86f1c08d2b7d0f14de0d2f2f343ce1c7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p><strong>Approval and Asset Transfer</strong>: Before depositing assets into Aave, the function first ensures that the vault contract has permission to use the user&apos;s assets. It does this by calling the <code>safeApprove</code> method on the token contract (<code>asset</code>). This step is essential because it allows the vault contract to move the user&apos;s assets.</p></li><li><p><strong>Deposit into Aave</strong>: Once the approval is in place, the function calls the <code>supply</code> method on the <code>lendingPool</code> contract. This action deposits the specified <code>assets</code> into Aave, making them available for lending and yield generation within the Aave protocol. The <code>address(this)</code> parameter designates the vault contract as the depositor, and <code>0</code> indicates no additional specific instruction for this deposit.</p></li></ol><p><strong>Withdraw</strong></p><p>Alright, now let&apos;s review the <code>withdraw</code> function; this function is also overridden, and you can see it&apos;s implementing custom functionality.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/33f7edebf5fce95c21adb922e10550c9d3931b36fa20c674929857742623e47b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p><strong>Approval and Asset Transfer:</strong> In this step, the <code>afterDeposit</code> function begins by ensuring that the vault contract has the necessary permission to use the user&apos;s assets. This is achieved by invoking the safeApprove method on the token contract (referred to as asset). The purpose of this step is to authorize the vault contract to manage the user&apos;s assets securely.</p></li><li><p><strong>Asset Redemption</strong>: Following the approval, the function proceeds to deposit the specified assets into the Aave protocol. This is accomplished by calling the <code>supply</code> method on the <code>lendingPool</code> contract. This action effectively moves the assets into Aave, where they can be utilized for lending and yield generation within the Aave ecosystem.</p></li></ol><h2 id="h-thoughts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Thoughts</h2><p>I’m extremely bullish on this standard. It represents a significant step forward in addressing the complexities and fragmentation we currently see in DeFi.</p><p>Here is why:</p><ol><li><p><strong>L2 Adoption:</strong> ERC-4626 simplifies integration with L2 networks, enhancing the DeFi experience for users.</p></li><li><p><strong>Trust and Innovation:</strong> It fosters trust and encourages innovation within the DeFi community by establishing common standards for security and functionality.</p></li><li><p><strong>Streamlined Development:</strong> ERC-4626 simplifies the development process, enhances security, and allows developers to focus on refining strategies and building better DeFi applications.</p></li></ol><p>Now we have gained a clear understanding of what token vaults are, recognized the importance of <strong>standardization</strong>, and grasped how ERC-4626 significantly contributes to <strong>enhancing consistency and efficiency</strong> within the DeFi ecosystem.</p><p>If you&apos;re curious about the adoption of this standard, currently, there are over<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://erc4626.info/vaults/"> 100 vaults</a> that are ERC-4626 compliant.</p>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/b3845919e8c9f6c4aa3bae082ba32229d053c0e2afd8f531a4c85cd78e23d1f0.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[An Unfinished Guide to ZK Rollups pt 1]]></title>
            <link>https://paragraph.com/@finessevanes/an-unfinished-guide-to-zk-rollups-pt-1</link>
            <guid>cQesf7YNHtPRb1XC2gK5</guid>
            <pubDate>Fri, 03 Nov 2023 14:19:05 GMT</pubDate>
            <description><![CDATA[Huge thanks to Cat McGee for serving as my sounding board while I navigated through these intricate ideas. You&apos;ve been an incredible support. And Raza, you&apos;re awesome. Your readiness to assist and your generosity with resources are deeply appreciated. This week, I wanted to build a token transfer dapp to demonstrate how to send assets from a Layer 2 (L2) to a Layer 1 (L1). I would compare an optimistic rollup with a zero knowledge (ZK) rollup but, as I was thinking about it more, it...]]></description>
            <content:encoded><![CDATA[<p><em>Huge thanks to </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/CatMcGeeCode"><em>Cat McGee</em></a><em> for serving as my sounding board while I navigated through these intricate ideas. You&apos;ve been an incredible support. And </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/razacodes"><em>Raza</em></a><em>, you&apos;re awesome. Your readiness to assist and your generosity with resources are deeply appreciated.</em></p><p>This week, I wanted to build a token transfer dapp to demonstrate how to send assets from a Layer 2 (L2) to a Layer 1 (L1). I would compare an optimistic rollup with a zero knowledge (ZK) rollup but, as I was thinking about it more, it dawned on me that I didn’t actually know how I would go about doing that.</p><p>Was it as simple as changing the RPC endpoints as when working with an optimistic rollup? Could I still write a contract in Solidity? And wtf is the zkEVM?</p><p>Twenty minutes later, I found myself in the ZK rabbit hole. I&apos;m still in it, so this is going to be the first installment in a series on ZK rollup articles.</p><p>This guide is unfinished, so you might finish reading and think that we missed a lot of principles and concepts, and you would be right. The goal of this guide is not to be an encyclopedia of ZK rollups, but rather to serve as a stepping stone, capturing the essentials as I traverse the learning curve alongside you.</p><p>This series could include three articles, or possibly ten.</p><p>We’ll see how deep I dig.</p><p>In this first piece, we&apos;ll be getting our feet wet with ZK terminology, exploring ZK rollups, and delving into ZK proofs.</p><h3 id="h-terminology" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Terminology</strong></h3><p>Before getting into the weeds, let’s cover some basic ZK terms.</p><p><strong>Zero Knowledge (ZK)</strong>: In cryptography, it&apos;s a concept where one party can prove to another party that they know a specific piece of information without revealing what that information is.</p><p><strong>Zero Knowledge Proof (ZK Proof):</strong> This is the actual output by which zero knowledge is conveyed—you might think of zero knowledge as the concept and the zero knowledge proof as the outcome of that concept.</p><p><strong>Prover</strong>: This entity attempts to convince another entity that a particular statement is true. The prover can be an individual or a system.</p><p><strong>Commitment</strong>: A cryptographic technique to securely &apos;seal&apos; a secret, which, when &apos;unsealed&apos;, allows verification of the original secret without prior disclosure.</p><p><strong>Witness:</strong> This is the confidential information that enables the prover to generate a proof about a statement without revealing the witness itself.</p><h3 id="h-real-world-example" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Real-World Example</h3><p>Imagine Alex needs to apply for a loan. The bank must verify that Alex has a good credit score without actually seeing it. Here’s how it goes:</p><p><strong>Prover (Alex):</strong> Alex needs to convince the bank that her credit score is good without disclosing the exact figure.</p><p><strong>Witness</strong>: This is Alex&apos;s actual credit score—the secret information she doesn&apos;t want to disclose.</p><p><strong>Zero Knowledge Proof</strong>: Alex uses the witness to create a ZK proof, essentially asserting, &quot;I can confirm my credit score meets the required level, but I won&apos;t reveal the exact score.&quot; The ZK proof is reliable enough for the bank to trust without seeing the actual score.</p><p><strong>Commitment</strong>: Alex applies a cryptographic method to &quot;seal&quot; her credit score, much like placing it in a tamper-proof envelope. The bank can&apos;t see the score but can use this &apos;envelope&apos; to verify its validity later, if necessary.</p><p><strong>Verifier (Bank)</strong>: The bank needs to be sure Alex&apos;s score surpasses a specific threshold without knowing the precise score, just that it is above the minimum.</p><p>Alex provides the bank with a commitment, which the bank can check to confirm whether his score meets their standards. The bank doesn&apos;t need to see the score itself—just that it satisfies their criteria.</p><p>Congratulations, you&apos;ve just grasped the basics of how ZK proofs function.</p><h2 id="h-introduction-to-zk-rollups" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Introduction to ZK Rollups</h2><h3 id="h-definition-of-a-zk-rollup" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Definition of a ZK Rollup</h3><p>A ZK rollup is a kind of L2 scaling solution that builds upon a L1 blockchain, such as Ethereum. Its purpose is to reduce the computational workload on the L1, thereby lowering gas fees and making transactions cheaper by eliminating the processing step involved in executing smart contracts and ultimately posting them onto Mainnet (Ethereum).</p><h3 id="h-how-zk-rollups-work" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">How ZK Rollups Work</h3><p>When a smart contract is deployed on a L2, it operates on a network that acts like a L1. This is where transactions are processed and the current state of the system is updated, all taking place off-chain.</p><p>After the transactions have been processed by the sequencer, the sequencer generates the blocks. Multiple blocks are consolidated and committed on L1.</p><p>Different L2s have slightly different capacities, so the volume of transactions will slightly vary.</p><p>Next, a <strong>prover</strong> is responsible for taking this collective data structure (the batch), and generates what&apos;s known as a validity proof, a type of ZK proof. A validity proof confirms that all the transactions within the batch have been computed accurately and are in agreement with the L1 blockchain&apos;s rules and consensus mechanism. This is often referred to as proving the behavior, ie that the code behaves exactly on the L2 as it would on L1.</p><p>You might be curious about the identity of the prover. Typically, the prover is a network of nodes that run ZK circuits. These circuits are tasked with generating the proof.</p><p>A couple of disclaimers about L2s:</p><ul><li><p>The granularity of proving can vary, meaning proofs might be generated per transaction or in batches.</p></li><li><p>I&apos;m outlining the overarching concept here.</p></li><li><p>The prover network for each L2 solution may function differently.</p></li></ul><p>The prover submits this proof to the L1. The L1, relying on the validity proof, doesn&apos;t have to check each transaction individually to confirm their integrity. It can promptly affirm and record the batch of transactions. This leads to what&apos;s known as immediate finality, where the transactions are considered finalized right away. Every L2 has a verifier smart contract deployed on L1. This smart contract verifies the validity proof. If the contract can verify the proof, the L1 can assume that the transaction are valid.</p><p>The main difference between ZK rollups and optimistic rollups lies in when the transactions are verified to be published on the L1. ZK rollups immediately include the transactions on the L1 upon submission because the L1 accepts the validity proof as assurance that the L2&apos;s ZK rollup can be trusted.</p><p>Optimistic rollups operate differently from ZK rollups; they don&apos;t offer a pre-verification proof. Instead, there&apos;s a waiting period—usually seven days—where trusted entities on the network can review the transaction. If they detect anything malicious, they have the opportunity to create and submit a fraud proof.</p><h2 id="h-zk-proofs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>ZK Proofs</strong></h2><h3 id="h-circuits" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Circuits</strong></h3><p>Circuits are the foundational elements of ZK proofs. Essentially, ZK proofs are results from mathematical expressions that execute a computation. Inputs are used to feed data into these expressions, which then process the information according to a set of predefined rules or logic gates within the circuit, ultimately yielding an output that validates the correctness of the assertion without revealing the underlying data itself.</p><p>ZK proofs can be written as arithmetic or polynomial.</p><h3 id="h-zk-proof-with-circuits-example" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">ZK Proof with Circuits Example</h3><p><strong>Situation</strong>: You wish to access the ski lift at a resort, but you want to prove you own a valid ski ticket without displaying the ticket or any personal information.</p><p><strong>Inputs</strong>:</p><ul><li><p>A unique identifier for each ski ticket, like a digital barcode.</p></li><li><p>A secure, cryptographic representation of the ticket holder&apos;s identity.</p></li></ul><p><strong>Circuit Functionality:</strong></p><ul><li><p>The system verifies against a secure database that the unique identifier corresponds to a legitimate, unexpired ski ticket.</p></li><li><p>It then confirms that the cryptographic representation matches the stored identity associated with that ski ticket.</p></li><li><p>If both conditions are met, the system outputs a verification token indicating a valid ticket without revealing any identity details.</p></li></ul><p><strong>Proof Process:</strong></p><p><strong>Prover</strong> (Ski Ticket Holder):</p><ul><li><p>Generates a ZK Proof using their ticket&apos;s unique identifier and their cryptographic identity representation.</p></li><li><p>Submits this proof to the verifier via a secure, anonymous verification system.</p></li></ul><p><strong>Verifier</strong> (Ski Lift Operator&apos;s System):</p><ul><li><p>Checks the proof without learning the ticket&apos;s details or the holder&apos;s identity.</p></li><li><p>If the proof checks out, the lift system activates, allowing the holder to board the ski lift.</p></li></ul><p>This mechanism ensures that the skier can access the ski lift with a valid ticket without ever revealing the ticket itself or any personal information, thus maintaining privacy and security.</p><h3 id="h-validity-proofs" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Validity Proofs</strong></h3><p>To ensure a ZK rollup can successfully submit its batched transactions to L1, it must communicate that these transactions are legitimate. ZK rollups achieve this through the use of validity proofs, which are a form of ZK proofs.</p><p>Validity proofs are available in two flavors: zk-SNARKs and zk-STARKs.</p><p><strong>SNARKs (Succinct Non-interactive Arguments of Knowledge):</strong> SNARKs are a type of ZK proof that is succinct (the proof size is small), non-interactive (it doesn&apos;t require active communication between the prover and verifier), and allows the prover to demonstrate knowledge of a secret without revealing it. SNARKs often rely on a setup phase that generates a common reference string (CRS) used by both the prover and the verifier. SNARKs can use both arithmetic and polynomial circuits.</p><p><strong>STARKs</strong> <strong>(Scalable Transparent Arguments of Knowledge):</strong> STARKs are similar to SNARKs in that they provide ZK proofs without requiring interaction. However, they do not require a trusted setup (no CRS is needed) and are based on hash functions, making them post-quantum secure. STARKs utilize polynomial commitments and are transparent because they don&apos;t rely on any secret parameters.</p><h2 id="h-compatibility" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Compatibility</h2><h3 id="h-evm" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">EVM</h3><p><strong>The Ethereum Virtual Machine (EVM)</strong> is essentially the platform where smart contracts are executed on the Ethereum blockchain. Smart contracts are compiled into bytecode for the EVM to process, using basic instructions known as opcodes.</p><p>ZK proofs were not initially designed for compatibility with Ethereum. They originate in the field of cryptography, whereas Ethereum is part of the blockchain realm. Consequently, compatibility between ZK proofs and the EVM presents a significant challenge due to their complexities.</p><h3 id="h-zero-knowledge-ethereum-virtual-machine-zkevm" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Zero Knowledge Ethereum Virtual Machine (zkEVM)</h3><p>Ethereum, in its original form, doesn&apos;t inherently understand or validate ZK proofs. This incompatibility led to the development of the zkEVM . The zkEVM is an adapted virtual machine that&apos;s designed to interpret both the standard EVM opcodes and the specific requirements of ZK proofs.</p><p>The compatibility between the zkEVM and the standard EVM varies, and it can be considered a spectrum.</p><p>Beginning from the most compatible to the least, we will explore the current landscape, including the benefits and drawbacks of various approaches to integrating zkEVM with the standard EVM.</p><ol><li><p><strong>Full EVM Equivalence</strong> aims to recreate the entire Ethereum system, ensuring that everything from the high-level code to the low-level operations and the very structure of the machine is preserved.</p></li><li><p><strong>Bytecode Equivalence</strong> focuses on the individual operations (opcodes) of the EVM but might allow some structural changes to the machine itself for efficiency</p></li><li><p><strong>Language Equivalence</strong> aims to support Ethereum’s high-level language, Solidity or Vyper but recompiles contracts in the native VM language. The native VM language depends on the L2.</p></li></ol><p>These levels of equivalence can be further broken down to highlight the specific ways they achieve compatibility with the EVM&apos;s operational framework.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e0f224afc99e8c7181e4f8790c487ef60866c5103afa3fa3bb9a3edd151d3b28.png" alt="The different types of ZK-EVMs by Vitalik Buterin" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The different types of ZK-EVMs by Vitalik Buterin</figcaption></figure><ul><li><p><strong>Type 1 (fully Ethereum-equivalent)</strong></p><ul><li><p><strong>Benefit</strong>:</p><ul><li><p>Perfect compatibility with Ethereum blocks</p></li><li><p>Ideal for rollups due to the ability to reuse a lot of Ethereum&apos;s infrastructure</p></li></ul></li><li><p><strong>Drawback</strong>:</p><ul><li><p>Very long prover times since it replicates Ethereum exactly, which wasn&apos;t designed for ZK</p></li></ul></li></ul></li><li><p><strong>Type 2 (fully EVM-equivalent)</strong></p><ul><li><p><strong>Benefit</strong>:</p><ul><li><p>Perfect equivalence at the VM level allows existing applications to work seamlessly</p></li><li><p>Changes to data structures improve prover times compared to Type 1</p></li></ul></li><li><p><strong>Drawback</strong>:</p><ul><li><p>Still has slower prover times due to inefficiencies inherent in the EVM that remain unaddressed</p></li></ul></li></ul></li><li><p><strong>Type 2.5 (EVM-equivalent, except for gas costs)</strong></p><ul><li><p><strong>Benefit</strong>:</p><ul><li><p>Improved prover times</p></li><li><p>Almost fully equivalent to EVM with slightly faster approval times</p></li></ul></li><li><p><strong>Drawback</strong>:</p><ul><li><p>Potential reduction in developer tooling compatibility and the need to adjust some applications due to changed gas costs</p></li><li><p>Some precompiles are not supported</p></li></ul></li></ul></li><li><p><strong>Type 3 (almost EVM-equivalent)</strong></p><ul><li><p><strong>Benefit</strong>:</p><ul><li><p>Easier to build and faster prover times by removing features difficult to implement.</p></li></ul></li><li><p><strong>Drawback</strong>:</p><ul><li><p>More incompatibility with existing applications, which may require re-writing to adjust to the removed features</p></li></ul></li></ul></li><li><p><strong>Type 4 (high-level-language equivalent)</strong></p><ul><li><p><strong>Benefit</strong>:</p><ul><li><p>High efficiency and faster prover times by redesigning from scratch with ZK proof friendliness in mind</p></li><li><p>Potential for greater scaling and lower costs due to optimized design</p></li></ul></li><li><p><strong>Drawback</strong></p><ul><li><p>Lower compatibility with the existing EVM infrastructure, requiring significant changes to existing applications</p></li><li><p>Developer experience may be impacted due to differences from the familiar EVM environment</p></li></ul></li></ul></li></ul><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>We made it. By now, you&apos;ve learned basic ZK terminology, the mechanics of ZK rollups, the different types of ZK proofs and the nuances of zkEVM with its compatibility quirks.</p><p>Hopefully by now you can explain what a ZK proof to someone like they’re 5.</p><p>If there’s something I didn’t cover that you’d like me to, or perhaps you’d like me to dig a little deeper, my <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_finessevanes">DMs</a> are always open.</p><p>Until next time!</p><h3 id="h-sources" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sources</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2022/08/04/zkevm.html">https://vitalik.ca/general/2022/08/04/zkevm.html</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/scaling/zk-rollups/#validity-proofs">https://ethereum.org/en/developers/docs/scaling/zk-rollups/#validity-proofs</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now">https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now</a></p>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/315f0c2b8cedd2fdd756e1c50623cd8c57541b3b5108d64eccf792130bfa37df.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Everything I learned about L2s in 27 Hours]]></title>
            <link>https://paragraph.com/@finessevanes/everything-i-learned-about-l2s-in-27-hours</link>
            <guid>Nz55qazwVNee38mzaRrq</guid>
            <pubDate>Fri, 27 Oct 2023 11:46:51 GMT</pubDate>
            <description><![CDATA[I want to express my gratitude to Cat McGee for her insightful review and to Tony Olendo for clarifying the more complex aspects. A few months ago, Vitalik published "The Three Transitions", which can be seen as a survival guide for Ethereum, focusing on scaling, security, privacy, and user experience. The crux of the narrative is that if Ethereum doesn&apos;t address its issues while enhancing user experience, its ngmi. In this article, we delve into Layer 2 solutions (L2s) which aim to reme...]]></description>
            <content:encoded><![CDATA[<p><em>I want to express my gratitude to</em> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/CatMcGeeCode">Cat McGee</a> <em>for her insightful review and to</em> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/tonyolendo">Tony Olendo</a> <em>for clarifying the more complex aspects.</em></p><p>A few months ago, Vitalik published &quot;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2023/06/09/three_transitions.html">The Three Transitions</a>&quot;, which can be seen as a survival guide for Ethereum, focusing on scaling, security, privacy, and user experience. The crux of the narrative is that if Ethereum doesn&apos;t address its issues while enhancing user experience, its <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.urbandictionary.com/define.php?term=ngmi">ngmi</a>. In this article, we delve into Layer 2 solutions (L2s) which aim to remedy Ethereum&apos;s scaling dilemma, explaining not only how they work but also how they differ in terms of data availability, especially when contrasting Optimistic and Zero Knowledge Rollups. Additionally, we&apos;ll clarify why sidechains, although a type of scaling solution, are not categorized as L2s.</p><h3 id="h-whats-the-problem" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">What’s the problem?</h3><p>In 2021, Ethereum&apos;s scalability challenge hit the spotlight. With Ethereum’s price peaking at $4,864.06, the average gas fee soared to 173.89 gwei. Such high fees meant using the network became a luxury for many. Sometimes, the gas even exceeded the cost of the jpeg being minted—clearly unsustainable.</p><p>As Ethereum&apos;s popularity surged, so did its issues. Meeting the growing demands led to slower transactions and exorbitant gas fees. While Ethereum&apos;s decentralized foundation is its hallmark, it came at the expense of speed, leading to a traffic-jammed network. This puzzle, known as the blockchain trilemma, asserts a tricky proposition: a blockchain can&apos;t excel at scalability, decentralization, and security all at once.</p><p>Yet, there&apos;s a silver lining for Ethereum. On September 15, 2022, Ethereum made a significant shift to a more energy-efficient, proof-of-stake consensus—famously termed &quot;the merge.&quot; This transition was monumental. Departing from the earlier proof-of-work mechanism, Ethereum slashed its energy use by a staggering 99%. A win not just for the platform, but for our planet. Fast forward to October 25, 2023, and the average gas fee stood at a much more reasonable 29.65 gwei.</p><p>Still, while it&apos;s a commendable leap forward, there&apos;s more ground to cover.</p><h3 id="h-what-are-l2s" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>What are L2s?</strong></h3><p>An L2, or Layer 2, operates atop its foundational Layer 1 (L1) blockchain. It derives its security and data availability from this L1. The main mission of L2 is simple: ease the load on L1 during block creation.</p><p>By processing transactions off-chain, L2s help cut down the gas fees needed for operations on L1, all the while ensuring the data&apos;s integrity remains intact on L1.</p><p>Now, let’s talk about bridges. They&apos;re essential for enabling communication between different blockchains. Here&apos;s are a couple of bridges you should know:</p><ol><li><p><strong>Lock and mint</strong>: This method involves securing or freezing assets on the original chain, and then minting new, equivalent assets on the target chain. Think of it like wETH. These bridges transfer the <em>value</em> of the asset, not the asset itself.</p></li><li><p><strong>Burn and mint</strong>: Here, assets from the starting chain are destroyed, and in their place, new, matching assets are created on the destination chain.</p></li></ol><p>L2s rely on these bridges to shuffle data and assets between them.</p><h3 id="h-how-l2s-work" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">How L2s work</h3><p>Let’s break down the usual lifecycle of producing a block:</p><ol><li><p>The transaction needs to be executed</p></li><li><p>The transaction needs to be processed</p></li><li><p>The transaction needs to be verified</p></li><li><p>The transaction needs to be published on-chain</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c016821c9fef682e968c946ee4566565f445e16958868b3b435a8eb6d3d75d3b.png" alt="Lifecycle block creation" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Lifecycle block creation</figcaption></figure><p>The transaction is sent to the node operator, also known as a sequencer. This sequencer then executes, processes, and verifies the contract.</p><p>Upon verification, a rollup that bundles all transactions is created and published to the blockchain. This publication includes the new state root and calldata. Even though they aren&apos;t stored as part of Ethereum’s state, they remain on-chain in Ethereum’s historical logs.</p><p>However, not all rollups are created equal.</p><h3 id="h-rollups" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Rollups</strong></h3><p>Rollups are a crucial component of Layer 2 solutions. The two primary types are Optimistic and Zero Knowledge (zk) Rollups, each having unique approaches to data availability.</p><p>Rollups essentially bundle the transactions received by the sequencer. After verifying them, they batch everything into one transaction for submission to the L1.</p><p><strong>Data availability</strong> pertains to the ease of accessing data. The trust placed in the Ethereum network’s decentralized ledger exceeds that in traditional banking systems. We have confidence that our data remains online, being permissionless and censorship-resistant. This foundational idea of data availability is adopted by L2s. It&apos;s an essential aspect of how L2s function.</p><p>For a new block to be created on the L1, Ethereum needs a way to ensure that the rollup it receives—this batch of bundled transactions—hasn&apos;t been maliciously altered.</p><p>There are two methods to achieve this.</p><p><strong>Optimistic</strong> (trusted) rollups operate on a &quot;trust, but verify&quot; principle, echoing the sentiment of &quot;innocent until proven guilty.&quot; Operators post data related to state updates on Ethereum, accompanied by the calldata and a fraud proof.</p><p>The exit strategy is such: a seven-day lock period follows before a block is finalized on the mainnet. This allows network participants the time to review and challenge any potential malicious activities by assessing the fraud proof. To put it in perspective, if you&apos;re transferring wETH from an L2 to a friend on the ETH network, your friend would need to wait 7 days for the transaction to settle.</p><p>One advantage of machines over humans is that we can program computers to be economically motivated to act correctly. Let me explain.</p><p>To manage transactions on an optimistic L2 network, nodes must post a bond. This financial commitment serves as a deterrent against any foul play, ensuring data reliability. For example, nodes can raise fault challenges if they believe the state root might be erroneous.</p><p>In such scenarios, transactions undergo partial execution on the L1 to compare state roots and calculate the fraud proof. If the proof holds, it indicates that the sequencer tried to introduce an inaccurate block.</p><p>Once this is established, the rollup re-executes. The sequencer or node found guilty of submitting the flawed block faces a penalty.</p><p>While optimistic rollups necessitate both data transaction and a fraud proof to be recorded on-chain.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.optimism.io/">Optimism</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://base.org/">Base</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbitrum.io/">Arbitrum</a> are notable examples of optimistic rollups.</p><p><strong>ZK</strong> (trustless) rollups, in contrast, adhere to a &quot;distrust until confirmed&quot; principle, mirroring the notion of &quot;guilty until proven innocent.&quot; These rollups enhance block publication speeds by conducting verifications prior to posting on Ethereum, making use of validity proofs.</p><p>Validity proofs function like a digital handshake. Their core purpose is to guarantee that only legitimate state changes occur on the network. Simply put, when a transaction is submitted, the network leverages cryptography to generate a proof confirming the transaction&apos;s validity without fully executing it.</p><p>By employing data compression techniques, zk-Rollups optimize on-chain data publication costs, thereby reducing fees for users. Transactions are batch-processed. A proving circuit runs through the batch, ensuring the sequence of updates and culminating in a definitive state root. Once verified, the L2 operator presents the calculated validity proof to the verifier contract on L1. If the pre-existing state root matches the root saved in the rollup contract and the proof is valid, the contract revises its state tree to reflect the rollup&apos;s modified state.</p><p>In practice, this means if you&apos;re transferring a confidential token between two participants, the legitimacy of the transaction can be confirmed without revealing specifics about the token.</p><p>To uphold the integrity of this cryptographic wonder, nodes engage in crafting these proofs, vouching for the authenticity of each transaction. If an anomaly arises, or if a rogue player tries any mischief, the proof will falter, and the transaction will be rejected.</p><p>As with optimistic rollups, incentives play a pivotal role here. To guarantee nodes act ethically and furnish accurate proofs, they&apos;re financially motivated. Any node producing an erroneous validity proof would incur penalties, ensuring they adhere to exemplary cryptographic standards.</p><p>While ZK rollups require these validity proofs, they bestow an additional perk of preserving data secrecy, truly embodying the &quot;Zero-Knowledge&quot; essence.</p><p>Some notable projects include <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zksync.io/">zkSync</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://aztec.network/">Aztec</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://scroll.io/ecosystem">Scroll</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygon.technology/polygon-zkevm">zkEVM Polygon</a>.</p><p><strong>Tradeoffs</strong></p><p>ZK-rollups deliver quicker transaction finality and trustless cryptographic security, but they necessitate specialized hardware for validity proofs. This could promote centralization and elevate expenses. Conversely, Optimistic rollups offer a smoother shift for Ethereum developers due to EVM compatibility and lean on fraud proofs for their security. This comes with the trade-off of postponed finality and potentially higher on-chain data expenses. The decision between the two might depend on a project&apos;s specific needs, like the urgency for instant finality, trustless security, or the simplicity of development and migration from Ethereum.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/71c92074555de76a319dae2d35ed57f16b48486b6fd1d74830fa82b0b0470898.png" alt="A comparison between zk and optimistic rollups" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">A comparison between zk and optimistic rollups</figcaption></figure><h3 id="h-sidechains" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sidechains</h3><p>Sidechains operate independently alongside an L1, equipped with their distinct data availability and consensus mechanisms.</p><p>When a user executes a transaction on a sidechain, the transaction data remains on that sidechain. This contrasts with L2s, where the data is housed on the L1. As a result, the security level offered by Ethereum&apos;s network surpasses that of a sidechain.</p><p>Being entirely independent and parallel to an L1 means a sidechain has its unique consensus mechanisms, like Proof-of-authority and Delegated proof-of-stake. This autonomy provides sidechains a competitive edge over L2s. They can produce blocks at their chosen rate, uninfluenced by Ethereum&apos;s guidelines. Their flexibility in block size has contributed to their rising popularity.</p><p>However, this advantage carries a decentralization trade-off. To produce larger blocks more swiftly, greater computational power is essential. This translates to a need for pricier hardware to serve as a node operator, potentially limiting the pool of individuals who can operate a node.</p><p>Like other L2s, sidechains also interface with a layer 1 using a bridge, facilitating the transfer of asset values.</p><h3 id="h-conclusion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h3><p>Ethereum&apos;s journey from grappling with scalability challenges to embracing energy-efficient consensus mechanisms underscores its evolving narrative. As we stand on the precipice of what many consider the &apos;broadband moment&apos; for blockchain, Layer 2 solutions emerge as vital catalysts.</p><p>Through Optimistic rollups, Zero Knowledge rollups, or sidechains, we see glimpses of a future where transactional efficiency, decentralization, and user experience converge seamlessly. Each solution, with its distinct advantages and trade-offs, paints a vision of an optimized Ethereum ecosystem. Guided by cryptographic incentives, faster transaction times, and the quest for balance, these innovations collectively herald a transformative era for Ethereum, ensuring its continued relevance in the ever-evolving blockchain universe.</p><p><strong>Resources</strong>:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/scaling/zk-rollups/">https://ethereum.org/en/developers/docs/scaling/zk-rollups/</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/">https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/scaling/sidechains/">https://ethereum.org/en/developers/docs/scaling/sidechains/</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/chart/gasprice?output=csv">https://etherscan.io/chart/gasprice?output=csv</a></p></li></ul><p><strong>Know your memes</strong>:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://coinchapter.com/top-five-crypto-memes-of-2021/">Gas Bad</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.investing.com/news/cryptocurrency-news/the-merge-is-coming-ethereum-foundation-announces-date-for-the-mainnet-upgrade-2879994">58750000000000000000000</a></p></li></ul>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a9d71002b42e3c2174ce10b11585eee348227682c83cd9583240997e2ad37593.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[An incomplete guide to The Three Transitions]]></title>
            <link>https://paragraph.com/@finessevanes/an-incomplete-guide-to-the-three-transitions</link>
            <guid>sCVI6MLpKzGpJmQbuDh7</guid>
            <pubDate>Mon, 21 Aug 2023 10:06:00 GMT</pubDate>
            <description><![CDATA[Here is my attempt to distill Vitalik’s Three Transitions. I’d like to begin by thanking Raza for pushing me to finish this post. I had decided to not post this due to my lack of understanding of some of the complex topics discussed in the original paper, so thank you for giving me the push I needed. This had been written to the best of my understanding, so if anything is incorrect, kindly comment to not just educate me, but anyone who decides to read this. If you haven’t already read the blo...]]></description>
            <content:encoded><![CDATA[<p>Here is my attempt to distill Vitalik’s Three Transitions.</p><p>I’d like to begin by thanking <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/razacodes">Raza</a> for pushing me to finish this post. I had decided to not post this due to my lack of understanding of some of the complex topics discussed in the original paper, so thank you for giving me the push I needed.</p><p><em>This had been written to the best of my understanding, so if anything is incorrect, kindly comment to not just educate me, but anyone who decides to read this.</em></p><p>If you haven’t already read the blog, you can reference it <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2023/06/09/three_transitions.html">here</a>.</p><h2 id="h-introduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Introduction</h2><p>Father of Ethereum, Vitalik Buterin shared an inevitable roadmap for what Ethereum will need to undergo in order for it to be adopted by the masses. The Three Transitions, are references to the three technological changes that will need to be done in order for Ethereum to become scalable, secure, and private.</p><h2 id="h-why-we-need-scalability-security-and-privacy" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why we need scalability, security, and privacy</h2><h3 id="h-scalability" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Scalability</h3><p>Scalability seems like a no-brainer, but if you’re new to Ethereum, let me explain wtf is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/gas/#what-is-gas">gas</a> and why scalability matters so much. If you were around during the last bull market when NFTs were all the rage, you could find yourself paying hundreds of dollars in gas just to mint a free NFT.</p><p>Por que?</p><p>Well, the way Ethereum works is like this: When you transact, ie, mint an NFT, transfer tokens, (think anything on-chain where a signature is required), work has to be done to be posted on the network. This work is paid in the way of gas. The higher demand on the network, the more gas will be required to complete the work.</p><p>The problem with this is that it&apos;s not scalable (lol). If we get our wish, and Ethereum is widely adopted, it won’t be accessible to everyone due to the cost <em>just to interact</em> with the network. Right now, Ethereum&apos;s mpg is like a 1990 Ford Bronco and we need mpg closer to a Toyota Prius. Regardless of what the cost of gas is, the amount of gas to take you to point A to point B (think transactions) will be too expensive for the typical user.</p><h3 id="h-security" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Security</h3><p>For us, web3 natives, one of the major principles of blockchain is the sovereignty of having control over our assets. We understand the responsibility of having good key management practices and the differences between CeFi (Centralized Finance) and DeFi (decentralized finance) applications.</p><p>For the non-web3 native, they don’t, and those are the people we need to onboard for Ethereum’s success. Most people don’t trust themselves to hold and save a 24-word-seed phrase.</p><p>Hell, I even don’t trust myself to do that. I recently <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_finessevanes/status/1692378811873251674?s=20">forgot the pin (because I never used it) to one of my wallets</a>. Fortunately, I had imported accounts into it, so besides it being a major nuisance of digging up old private keys to re-do the whole process, it’s a shitty UX and I wouldn’t want to rely on tech like this to hold my life’s savings.</p><p>At this point in time, we still trust banks more than crypto wallets to secure our assets because, at the end of the day, there’s a safe proof way of accessing our funds. If I lose my seed phrase or private key, I am <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.urbandictionary.com/define.php?term=shit%20out%20of%20luck">SOL</a>. Unlike if I lose my bank cards, or forget passwords, worst case, I can always show up to a bank with a valid ID to prove I am who I am and get access to my accounts.</p><p>We need to be able to provide this level of security if we really want to replace our dependence on central banking.</p><h3 id="h-privacy" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Privacy</strong></h3><p>By default everything that is onchain is public for anyone to see. Sure you could whip up multiple anon addresses to transact with, but at the end of the day, you’re leaving a paper trail on the blockchain and with tools like AI, it probably wouldn’t take too long to connect the dots to find your transactions and link them to you.</p><p>Just as people prefer to make payments privately on Venmo, people want the same features onchain. However, this doesn’t just stop at payments.</p><p>One of the fun things about working in the web3 space is that at first glance, your identity is hidden. Between having a PFP that is a faux-crypto punk and a name like Vanes, most people don’t assume I’m a woman, and personally, I like it that way. I don’t correct those when they’re referencing me to bro, or man. I go with it (I have my own personal reasons, but we can save that for another post).</p><p>Having all your information on-chain is akin to driving with bumper stickers that publicly display everything you value, believe in, and support. Whether it&apos;s your NFTs, POAPs, or community affiliations, these identifying factors are like bumper stickers for everyone to see, reflecting aspects of who you are.</p><p>Maybe I don&apos;t want the world to instantly categorize me based on my personal choices or beliefs or identifying traits such as gender, race, and age. We&apos;re all prone to snap judgments when we see bumper stickers or symbols representing opinions we don&apos;t align with. It&apos;s human nature, and I&apos;ve been guilty of it too.</p><p>Ethereum needs to take the default opt-in approach, or else it’s just <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.urbandictionary.com/define.php?term=ngmi">ngmi</a>.</p><h2 id="h-the-domino-effect" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Domino Effect</h2><p>These transitions come with three type of possible solutions that come with their own set of unique challenges:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/da01500af9b127a731455ed00b512157cff1600d3f6772297bd0c8df80fbd37b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Rollups solve the scaling problem.</p><p>Smart contract wallets solve the security problem.</p><p>Privacy-preserving fund transfers (partially) solve the privacy problem.</p><p>Let’s look at the proposed solutions and their challenges on a high level.</p><h3 id="h-rollups-and-scalability" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Rollups and Scalability</h3><p>Rollups, also known as L2s, are the future. Let me try to explain what a rollup is. Earlier I explained how every time you interact with Ethereum (transaction), it needs to be posted to the blockchain. Now imagine that instead of each and every transaction getting posted right away to the network, you could put all these transactions into <em>one</em> notepad and once that notepad is full, it then gets posted to the network. That’s kind of how rollups work. Transactions get <em>rolled</em> into one and get posted once.</p><p>Back to our car and driving example, instead of having 5 cars on the road, you decide to carpool and now you have 5 people in each car, helping reduce traffic.</p><p>This is great, but because there are tons of different L2s, (Optimism, Arbitrum, zkSync, Scroll, etc) we now introduce a new problem: <strong>multiple addresses per user</strong>.</p><p>This leads us to our next problem, how do you figure out <strong>how to pay someone</strong>? With multiple accounts, the sender or receiver will need to be able to share what forms of payment they accept. It’s like going from using Visa everywhere (Ethereum), to now needing to have specific cards per merchant.</p><p>This is what a typical <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">transaction object</a> currently looks like:</p><pre data-type="codeBlock" text="{
  from: &quot;0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8&quot;,
  to: &quot;0xac03bb73b6a9e108530aff4df5077c2b3d481e5a&quot;,
  gasLimit: &quot;21000&quot;,
  maxFeePerGas: &quot;300&quot;,
  maxPriorityFeePerGas: &quot;10&quot;,
  nonce: &quot;0&quot;,
  value: &quot;10000000000&quot;
}
"><code>{
  <span class="hljs-selector-tag">from</span>: <span class="hljs-string">"0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8"</span>,
  to: <span class="hljs-string">"0xac03bb73b6a9e108530aff4df5077c2b3d481e5a"</span>,
  gasLimit: <span class="hljs-string">"21000"</span>,
  maxFeePerGas: <span class="hljs-string">"300"</span>,
  maxPriorityFeePerGas: <span class="hljs-string">"10"</span>,
  nonce: <span class="hljs-string">"0"</span>,
  value: <span class="hljs-string">"10000000000"</span>
}
</code></pre><p>Users will need more information than just <code>to</code> when completing transactions.</p><p>Key recovery will also get expensive because <em>each account</em> a user has will need to run a recovery process. Even though transacting on rollups will be less expensive than Ethereum, no one wants to pay fees for essentially resetting your password.</p><h3 id="h-smart-contract-wallets-and-security" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Smart Contract Wallets and Security</h3><p>The TLDR about current wallet security really comes down to the fact that we, as humans, are prone to making mistakes and that includes forgetting our seed phrases and losing our private keys. There are two types of wallets, EOA (externally owned accounts), think MetaMask and Rainbow, and then there are smart contract wallets (Safe, Ambire).</p><p>The problem with smart contract wallets is that they also make it more difficult for <strong>users to have the same address</strong> for a few reasons:</p><ol><li><p>Smart contract wallets, unlike externally owned accounts (EOAs) tied to a public key hash, introduce complexity due to varying code across networks, making consistent addresses harder to maintain</p></li><li><p>Smart contract wallets can have ownership changes through key modifications, which might lead to different addresses</p></li><li><p>Some Layer 2 technologies, like &apos;type 4 ZK-EVMs,&apos; differ from Ethereum&apos;s main system (EVM). They may use unique languages, causing the same code to create different &apos;addresses&apos; on various layers</p></li></ol><p>This leads us to our next problem, <strong>onchain payments</strong>. Generally, transactions are sent with a gas limit of 21000 because <em>generally</em> there’s only so much data that comes with each transaction from an EOA. Smart contract wallets break this rule, so it will require wallets to adjust this limit. A referenced use case, such as NFT royalties, will also require that the receiver track when payments have been made from EOA and smart contract accounts because as it is, these types of marketplaces ban smart contract wallet owners.</p><p><strong>Recovering keys from counterfactual addresses</strong> becomes even more complex! Counterfactual addressing refers to a concept where an address can be determined and known before the contract is actually deployed.</p><p><em>Wut</em>?</p><p>Counterfactual addresses become useful in making transactions more efficient, flexible, and private, or in preparing for future actions without having to fully commit to them on the blockchain right away.</p><p>So, imagine, trying to recover a key from a contract address you don’t even have yet.</p><h3 id="h-internal-transfers-and-privacy" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Internal Transfers and Privacy</h3><p>We’ve touched on how L2s and smart contract wallets just make everything more complicated, well, now let’s add privacy to that mix, and let’s make it 100x more complicated.</p><p>Although having <strong>multiple accounts per user</strong> has been talked about as a bug (problem) for scaling and security, it’s actually a feature when it comes to privacy. The more accounts a user has, the higher likelihood that your <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.urbandictionary.com/define.php?term=Degen">degen</a> transactions are likely to stay private (sort of).</p><p>Stealth addresses only make the multiple-address-per-user problem even worse because it’s a feature that allows a sender to create a unique, one-time address for every transaction on behalf of the recipient.</p><p>As it stands, there is no way to <strong>privately send someone funds</strong> in Ethereum. Contrary to popular belief (including mine), Tornado Cash doesn&apos;t allow users to send direct payments to each other; instead, a user sends and withdraws funds to and from a smart contract. Not exactly the same thing.</p><p>Lastly, <strong>key recovery</strong> is a complete nightmare. The perfect UX would be that with one click, you will be able to recover all of your accounts, but how can this be done in a way to preserve your identity? All the accounts would need to be linked, and this is exactly what we don’t want in a privacy-first world.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>At the moment, Ethereum is a ship in the middle of the ocean carrying thousands and thousands of passengers and has to patch three parts of the ship, simultaneously, while trying to sail uninterrupted or else it will sink.</p><p>Needless to say, I’m skeptical whether or not Ethereum will actually be able to be successful in this. Not only will infrastructure need to change, but so will how applications interact with Ethereum.</p><p>However, considering how many developers and researchers are working in Ethereum, and the success of the merge, I lean in favor of the Ethereum community to “<em>rise to the challenge</em>” to solve these problems.</p><h3 id="h-final-thoughts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Final Thoughts</h3><p>This article got me thinking: Why aren&apos;t we paying more attention to privacy-first L1s? Adding privacy to a network is complex, so why not build on networks like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://namada.net/">Namada</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.aleo.org/">Aleo</a> where privacy is treated as a first-class citizen?</p>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
        </item>
        <item>
            <title><![CDATA[Confessions of a DevRel #002]]></title>
            <link>https://paragraph.com/@finessevanes/confessions-of-a-devrel-002</link>
            <guid>0Cki3PikJ9x5Gbxo0dGW</guid>
            <pubDate>Mon, 10 Apr 2023 01:59:51 GMT</pubDate>
            <description><![CDATA[Why are you here?Update: two weeks ago This week started off rough. I had taken Friday off, and Monday was spent catching up on all the Slack threads, Discord, and Telegram messages. I was stressed out because it felt like the stack of requests was just increasing faster than I was finishing tasks. I decided to go for a walk, and while on the walk, I read that one of the engineers on the team had put together a really nice tech guide. My stomach started turning with slight panic. Why did it t...]]></description>
            <content:encoded><![CDATA[<h2 id="h-why-are-you-here" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why are you here?</h2><p><strong>Update: two weeks ago</strong></p><p>This week started off rough. I had taken Friday off, and Monday was spent catching up on all the Slack threads, Discord, and Telegram messages. I was stressed out because it felt like the stack of requests was just increasing faster than I was finishing tasks. I decided to go for a walk, and while on the walk, I read that one of the engineers on the team had put together a really nice tech guide. My stomach started turning with slight panic.</p><p><em>Why did it take me so long to put together guides?</em></p><p>It took him just a couple of days. I paused. Let me give you some backstory.</p><p>When I was hired, I was the entire DevRel team. In the first six months, my responsibilities have included a variety of tasks like updating docs, creating technical guides, developing workshops, producing and editing YouTube tutorials, setting bounties, managing Discord, triaging GitHub issues, etc.</p><p>You get the idea. It probably goes without saying that it hasn&apos;t been easy. In fact, it&apos;s been a struggle. I&apos;m doing it, but I&apos;m not excelling at anything, and that&apos;s a disheartening feeling, especially when you&apos;re on a team with a bunch of rockstars.</p><p>Fast forward to the present day. There have been some team movements, some coming and some going, so since ETH Denver, the DevRel team is not just me. I have help. Two of our engineers, who I like to call Hybrid DevRels, officially hold engineering titles, but they&apos;re both DevRels at heart.</p><p>They&apos;re exceptional—almost too exceptional.</p><p>Here I am, overwhelmed (what&apos;s new), and my brain just goes into an autopilot self-destructive mode. I started thinking about how these guys have been on the team for a short time but have contributed more value than I felt like I had in the last six months. This went on for about five minutes before the tricks I have picked up from all the habit books I&apos;ve read in my life helped me pull myself out of the mental grave I was digging.</p><p>I gave myself a mental slap across the face and shook myself a little bit.</p><p>I started thinking about how I shouldn&apos;t be trying to compete with them. There was no point in competing for a few reasons. One, they are already strong engineers. I knew I was capable of creating the technical guides they were, but it would just take me 2-3 times longer, and that was okay. Two, I needed to remember that I lead DevRel. I needed to think of the Hybrid DevRels as pieces of the overall DevRel puzzle to make it even stronger. Now that I had part of DevRel getting covered, I could focus my efforts on what I was good at, but what was that?</p><p>I sat on this question. While thinking about this, an ETHDenver memory came to mind. My team and I were wrapping up after a day at the conference. I mentioned going out after, and most of the team looked at me as if I were crazy to even suggest the idea of socializing with people after socializing with people all day.</p><p>I&apos;m really good with people. I put this idea on a mental sticky note.</p><p>I looked at Telegram and the number of unread messages. I had messages dating back from October that I hadn&apos;t reviewed. If I&apos;m going to lean into this people-person persona, then I probably should be better about getting back to people. One of the DevRels in the space who I look up to was so good about getting back. I remember thinking about how important that made me feel, and I wanted to make others feel important too.</p><p>I went through all my messages and left my inbox at zero. Something I learned about recently while taking some time off is—if you&apos;re in a conversation where the other party is waiting for your response, do one of two things. One, update my Telegram status to OOO so that people upfront know I&apos;m not ignoring them, just offline. Two, if I&apos;m in a scenario like the one above, I&apos;m going to let people know I&apos;ll be OOO for a specific time just to set that expectation. After all, I would appreciate the same heads up.</p><p>This felt like I was moving in a positive direction. With my new DevRel Leader hat on, I decided I needed a plan. I needed goals, but not just goals; I also needed ways to measure those goals and determine whether I&apos;m on track or not. Having absolutely no idea where to start, I headed to ChatGPT for some consulting. I got a pretty good outline of how to break up DevRel and examples of what would fall into these different categories.</p><p>I felt excited. I recalled a conversation I had with a team member in the first few months of joining. I was sharing my struggle of not knowing how or what to prioritize, and they told me to focus on where I could make the most impact. I realized how I had misunderstood this statement. Instead of focusing on what I could impact more, I thought of how DevRel could have the highest impact.</p><p>Let me explain how those are different. When I thought about how DevRel could have the biggest impact, my efforts went straight to the docs. I figured your dev experience really begins at the docs. Knowing from firsthand experience that our docs weren&apos;t exactly at the level of Vercel, I decided to pour myself into the docs. Writing good docs is hard. Weekly release updates on multiple products and platforms were daunting. While I was getting by with the docs, I wasn&apos;t excelling at this.</p><p>Thinking back at that question, I should have thought about where I could make the most impact. This question led me to dig deeper. Why did I want to work in web3? Why did I want to be a developer advocate? I wanted to be in the space for several reasons, including the passion I saw in others. This wasn&apos;t your typical Monday to Friday 9-5 schedule. People worked all the time because they genuinely loved what they were doing. Secondly, I loved how international web3 is. Unlike web2, where FAANG companies focused on where you went to college or leetcode, in web3, the barrier to entry isn&apos;t based on geography or accessibility to an expensive school; instead, it&apos;s all about the value you contribute to your community. It&apos;s beautiful.</p><p>Pinning those ideas, I started thinking about why I wanted to be a DevRel. I wanted to be a DevRel because I enjoy teaching and helping developers.</p><p>I decided to have an ad hoc meeting with one of the Hybrid engineers to see how I could be a better teammate. While explaining my recent epiphany about where I fit in the DevRel puzzle, I shared how I was feeling that he had done such a great job with content, I felt like I had no place there. He listened and apologized because he felt like he was overstepping. The day before, we had a DevRel meeting where he basically ran the show. He did it so well. I asked him how and where he learned to drive so well, and he shared his experience in marketing, community, and engineering over the span of six years. I&apos;ve been engineering for two and doing DevRel for six months.</p><p>I often forget to keep my eyes on my own mat.</p><p>After we chatted, he suggested we meet later that week to brainstorm and talk through the new outline I had created. Leaving the huddle, I felt so lucky to work with such a kind human. I felt really fortunate to have a colleague with whom I could be vulnerable.</p><p><strong>Update: It&apos;s Easter Sunday.</strong></p><p>This past week felt like a lot of building blocks. I had to give hard feedback to a potential partner, create work boundaries, and explain to our founder and project manager why I no longer thought attending feature product meetings was a valuable way to spend my time.</p><p>I didn&apos;t exactly end the week strong. It was a short week (woohoo Easter), and towards the second half of the week, I woke up with a migraine. I hate those fuckers. My head feels like I mixed wine, beer, and gin together the night before, without any of the fun.</p><p>Love/Hate: my team works hard. Most of us are OOO for the holidays, but it&apos;s like Slack is still going crazy with updates. I get it. There is so much to do, so taking a day off feels crazy. I hate this because it feels like there is no turning off, but I love it because it&apos;s addicting to set challenging goals and accomplish them.</p><p>In that spirit, signing off here for some werk.</p>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
        </item>
        <item>
            <title><![CDATA[Confessions of a DevRel #001]]></title>
            <link>https://paragraph.com/@finessevanes/confessions-of-a-devrel-001</link>
            <guid>yrtZ3eWl7J5Rh6PPAVxm</guid>
            <pubDate>Sat, 25 Mar 2023 08:57:21 GMT</pubDate>
            <description><![CDATA[Genesisgm Anyone who’s been on Twitter long enough has come across those influencer-type people shilling a protocol. They’re hosting Twitter spaces, leading workshops, and attending hackathons all over the world. Indeed, an extrovert&apos;s dream job. It was mine. My name is Vanes. It’s pronounced ‘vuh-ness’ but if you prefer to call me veins, that’s cool too. Like most millennials, I have an unused undergraduate degree. I worked in corporate finance before attending a coding bootcamp which w...]]></description>
            <content:encoded><![CDATA[<h2 id="h-genesis" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Genesis</h2><p>gm</p><p>Anyone who’s been on Twitter long enough has come across those influencer-type people shilling a protocol. They’re hosting Twitter spaces, leading workshops, and attending hackathons all over the world. Indeed, an extrovert&apos;s dream job. It was mine.</p><p>My name is Vanes. It’s pronounced ‘vuh-ness’ but if you prefer to call me <em>veins,</em> that’s cool too. Like most millennials, I have an unused undergraduate degree. I worked in corporate finance before attending a coding bootcamp which was how I got started in tech.</p><p>June 2021- I was about 9 months into my first dev job when I came across a JD for a developer advocate. The summary included things like, lead marketing campaigns, attend technical events, speak at events, and interact with developers. It seemed like the perfect job for someone with my skillset and interests.</p><p>May 2022 - I’m fully crypto-pilled and I’m starting to flirt with the idea of actually getting a job in web3. I thought about working as a front-end dev but didn’t think I had the technical skills to land a job. I figured I could try DevRel, after all, it seemed like it would be less technical than being a dev. Spoiler alert - it’s really not <em>that</em> much less technical.</p><p>ETH Global New York - June 2022 - I go to my first IRL web3 hackathon. It was crazy to observe how easily approachable and accessible everyone was. You had founders of these protocols sitting at their teams&apos; booth handing out stickers and t-shirts. You really had no idea who you could be rubbing shoulders with. It also struck me just how international this industry was. Yeah, we were in New York, but hackers had come from all around the world to this event.</p><p>As the event was coming to its final days, I had absolutely made up my mind I no longer could stay at my web2 job. It’s impossible to go back to your web2 job after you experience an IRL web3 hackathon.</p><p>Some of my favorite people I met while in New York were either DevRels or aspiring DevRels. One of them being <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0ceans404">Steph</a>. If you don’t know who she is, you should. She basically told me what I needed to do if I wanted to get a DevRel job in the space. <strong>TLDR</strong>: write a tutorial on the hackathon project you just built,  dm them, remind them about how you met at the hackathon, and let them know you’re interested in becoming their DevRel and share your blog. I loved the directness of this approach.</p><p>The recipe was well received. With that tutorial, and a few other pieces of content I had created, I dm’d the protocol I wanted to work at and after a few back and forths, I had an interview. Long story short, I didn’t pass the tech assessment. Lolz. I interviewed at a few more places but, truthfully I wasn’t excited about them. My web2 job had also become much more manageable because I was now working out of the Venice Beach office living in my van. I wasn’t in a rush to give up that setup unless a really cool opportunity came up.</p><p>ETH Mexico City - August 2022 - You could say going to hackathons can become a bit addictive. I spent my 20’s going to music festivals and taking drugs to stay up all night to dance with friends, and now, in my 30’s I was taking drugs to stay up all night and code with friends. One of my tasks in our hackathon team was to use WalletConenct for the wallet/dapp integration. I probably spent half an afternoon at their booth with questions because I just couldn’t seem to get their API to work. I felt so dumb that I couldn’t figure it out.</p><p>It’s finally Sunday and the hacking is over. We submit our projects and go on to demoing. Sleep-deprived and hungry, I’m kinda just nodding and smiling when I get asked if I was looking for a job. I thought he was just messing so, fucking around back, I nonchalantly say I’m looking for a DevRel job. We exchanged telegrams and I let jesus take the wheel.</p><p>Two weeks later, I accepted a position as a Senior Developer Advocate at WalletConnect. Lol - I know, I’m not a senior and they knew that too. It felt weird to have that be my official title, but they didn’t seem to care. It was just a title.</p><p>Today is March 24, 2023, and I’ve been working as a Developer Advocate for 6 months. Tbh, I thought by now I’d be killing it, but I’m not. Far from it actually.</p><p>Let me share my mental model with you. You’re either drowning, surviving, or thriving. I’ve mostly been drowning, but since ETH Denver, the mood has been shifting to surviving. I mean, it’s a good sign that I’ve finally made time to write this blog, am I right?</p><p>I’m also turning 31 today. Like most birthdays, the questions you receive are generally reflective ones like, <em>What’s a goal you hope to accomplish this year</em>? Normally I would answer with something like, “<em>I want to actually be a morning person</em>” or “<em>I want to read 20 minutes every day</em>” but it hit me. I need to iterate on these goals because every year I set them, but fail to actually do them.</p><p>I have a tendency to like to do hard things. Things that I may not even finish because I just like to see where “it” can take me. “It” can be anything, a course, a book, a workout plan, or a job. I’ve grown to enjoy the feeling of feeling uncomfortable (can you tell I listen to David Goggins), but even though these growing pains are familiar, it’s left me feeling like a huge impostor. I credit good timing and luck to a lot of my life’s accomplishments. Even getting this job, I was lucky to have won a scholarship to be at ETH Mexico City.</p><p>Working as a DevRel has provided me with some of the most remarkable experiences in my life. However, as with any aspect of life, there are also moments of balance, and while this career has given me some of the best experiences, it has also had its share of challenges, leaving me with some of my lowest moments. Negative self-talk can sometimes be the soundtrack to my day.</p><p>So for this year, I’m letting go of my self-doubt. How am I going to do this? I’m not totally sure, but for starters, I’m going to use this blog to share the wins and struggles of working as a web3 Developer Advocate.</p><p>I do have one ask of you. If you hear me shit-talking my tech skills, pls just tell me to stfu.</p><p>gn</p>]]></content:encoded>
            <author>finessevanes@newsletter.paragraph.com (Vanes)</author>
        </item>
    </channel>
</rss>