<?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>Fabriziogianni7</title>
        <link>https://paragraph.com/@fabriziogianni7</link>
        <description>I’m Fabrizio, proud member of @urbe.eth.
I love doing Developer Engagement, and that's also my  role in Urbe. 
I love kite surfing and I build side projects to have fun - but I'm pretty serious about it.</description>
        <lastBuildDate>Tue, 01 Sep 2026 19:36:14 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Fabriziogianni7</title>
            <url>https://storage.googleapis.com/papyrus_images/580f293a5913466bf333b9d845d45ce9691dc6ebd7080372023fa5930a70dd9d.png</url>
            <link>https://paragraph.com/@fabriziogianni7</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Solidity Opcodes,these strangers.]]></title>
            <link>https://paragraph.com/@fabriziogianni7/solidity-opcodes</link>
            <guid>4x6mikWv9lsijp4hM8vS</guid>
            <pubDate>Mon, 26 Jan 2026 15:09:13 GMT</pubDate>
            <description><![CDATA[Understanding opcodes gives you deeper insight into gas costs, optimization opportunities, security considerations, and how contracts truly behave on-chain. ]]></description>
            <content:encoded><![CDATA[<p>Solidity is the most widely used language for writing Ethereum smart contracts, offering high-level abstractions that make development accessible. However, every Solidity contracts ultimately compiles down to <strong>EVM bytecode</strong>, a sequence of low-level instructions called <strong>opcodes</strong> that the Ethereum Virtual Machine executes.</p><p><strong>Understanding opcodes gives you deeper insight into gas costs, optimization opportunities, security considerations, and how contracts truly behave on-chain</strong>. This article breaks down what opcodes are, why they exist, how they are used, examples of inline assembly in Solidity, and touches on formal verification.</p><h2 id="h-what-are-opcodes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Are Opcodes?</h2><p>Opcodes are the primitive instructions of the Ethereum Virtual Machine. Each opcode is a single byte (0x00 to 0xff), defining a specific operation the EVM can perform.</p><p>The EVM is a stack-based virtual machine: most opcodes pop operands from a 1024-item stack, perform an operation, and push results back. <br>Opcodes interact with memory, storage, the program counter, and the outside world (calls, blockchain data, etc.).</p><p>The full opcode reference is available at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://evm.codes/">evm.codes</a>, an interactive playground where you can explore every opcode, its gas cost, and stack effects. I strongly recommend to have a look at that.</p><h2 id="h-why-does-the-evm-need-opcodes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why Does the EVM Need Opcodes?</h2><p>The EVM must run deterministically on thousands of nodes worldwide, without relying on any operating system or external dependencies. <br>A simple, well-defined instruction set (the opcodes indeed) achieves this.</p><p>Opcodes enable:</p><ul><li><p><strong>Deterministic execution</strong> → Every node reaches the same result.</p></li><li><p><strong>Gas metering</strong> → Each opcode has a precise gas cost, preventing <em>infinite loops</em> and <em>DoS attacks</em>.</p></li><li><p><strong>Turing completeness</strong> → Combined with jumps and stack operations, the instruction set can compute anything computable.</p></li><li><p><strong>Security and auditability</strong> → Low-level operations are easier to <em>formally reason</em> about than high-level code.</p></li></ul><p>Thus, High-level languages like Solidity compile to bytecode (an encoded list of opcodes essentially!) to ensure compatibility across the entire network.</p><h2 id="h-but-wait-whats-the-stack-on-the-evm" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">But Wait, What's the Stack on the EVM?</h2><p>The <strong>stack</strong> refers to the EVM primary data structure. It's a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=I__TYJlagvs"><em>last-in-first-out (LIFO) array</em></a> limited to 1024 slots, each holding a 256-bit (32-byte) word.<br>Almost every EVM opcode operates directly on this stack, instructions do:<br><br><em>pop the required number of items from the top --&gt; <br>perform the operation --&gt; <br>push the result back. </em><br><br>Solidity's high-level code abstracts this away, so developers rarely interact with the stack directly, but the compiler translates all expressions, function calls, and variable operations into stack manipulations. <br>Understanding the stack is crucial for gas optimization and for writing efficient inline assembly, where you explicitly manage stack items to achieve lower-level control or tighter gas usage. </p><h2 id="h-contract-deployment-example" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Contract Deployment Example</h2><p>When you deploy a contract, the transaction sends <strong>init code</strong> (constructor + deployment logic). This init code typically ends by returning the <strong>runtime bytecode</strong> (the permanent contract code).</p><p>A classic pattern uses these opcodes:</p><ol><li><p>Set up free memory pointer (<code>PUSH1 0x80</code>, <code>PUSH1 0x40</code>, <code>MSTORE</code>).</p></li><li><p>Compute runtime code offset and size.</p></li><li><p><code>CODECOPY</code>: copy the runtime bytecode (appended after the init code) to memory starting at offset 0.</p></li><li><p><code>RETURN</code>: return the copied bytes as the deployed code.</p></li></ol><p>A minimal deployment bytecode often looks like (in hex):</p><pre data-type="codeBlock" text="6080604052...6000803e610xxx56fe
"><code><span class="hljs-number">6080604052.</span>..6000803e610xxx56fe
</code></pre><p>Breaking it down:</p><ul><li><p><code>PUSH1 0x80</code> / <code>PUSH1 0x40</code> / <code>MSTORE</code> --&gt; standard memory setup.</p></li><li><p>Later: <code>CODECOPY</code> (0x39) copies runtime code.</p></li><li><p><code>RETURN</code> (0xf3) finalizes deployment.</p></li></ul><p>This pattern is generated automatically by the Solidity compiler for most contracts.</p><h2 id="h-example-of-assembly-in-solidity" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Example of Assembly in Solidity</h2><p>Solidity allows <strong>inline assembly</strong> for fine-grained control, gas savings, or operations not available in high-level syntax.</p><p>Here’s a simple function that adds two numbers entirely in assembly:</p><pre data-type="codeBlock" text="// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

contract AssemblyExample {
    function add(uint256 a, uint256 b) public pure returns (uint256 result) {
        assembly {
            // Load free memory pointer
            let freeMem := mload(0x40)
            
            // Perform addition
            result := add(a, b)
            
            // Store result in memory
            mstore(freeMem, result)
            
            // Return 32 bytes from freeMem
            return(freeMem, 0x20)
        }
    }
}
"><code><span class="hljs-comment">// SPDX-License-Identifier: MIT</span>
<span class="hljs-meta"><span class="hljs-keyword">pragma</span> <span class="hljs-keyword">solidity</span> ^0.8.26;</span>

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">AssemblyExample</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> a, <span class="hljs-keyword">uint256</span> b</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span> result</span>) </span>{
        <span class="hljs-keyword">assembly</span> {
            <span class="hljs-comment">// Load free memory pointer</span>
            <span class="hljs-keyword">let</span> freeMem <span class="hljs-operator">:=</span> <span class="hljs-built_in">mload</span>(<span class="hljs-number">0x40</span>)
            
            <span class="hljs-comment">// Perform addition</span>
            result <span class="hljs-operator">:=</span> <span class="hljs-built_in">add</span>(a, b)
            
            <span class="hljs-comment">// Store result in memory</span>
            <span class="hljs-built_in">mstore</span>(freeMem, result)
            
            <span class="hljs-comment">// Return 32 bytes from freeMem</span>
            <span class="hljs-keyword">return</span>(freeMem, <span class="hljs-number">0x20</span>)
        }
    }
}
</code></pre><p>Another common use: efficient hashing of dynamic data:</p><pre data-type="codeBlock" text="function keccak256Hash(bytes memory data) public pure returns (bytes32) {
    bytes32 hash;
    assembly {
        hash := keccak256(add(data, 0x20), mload(data))
    }
    return hash;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">keccak256Hash</span>(<span class="hljs-params"><span class="hljs-keyword">bytes</span> <span class="hljs-keyword">memory</span> data</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">bytes32</span></span>) </span>{
    <span class="hljs-keyword">bytes32</span> hash;
    <span class="hljs-keyword">assembly</span> {
        hash <span class="hljs-operator">:=</span> <span class="hljs-built_in">keccak256</span>(<span class="hljs-built_in">add</span>(data, <span class="hljs-number">0x20</span>), <span class="hljs-built_in">mload</span>(data))
    }
    <span class="hljs-keyword">return</span> hash;
}
</code></pre><p>Assembly bypasses some Solidity safety checks, so use it carefully! </p><h2 id="h-huff-writing-evm-bytecode-at-the-edge-of-optimization" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Huff: Writing EVM Bytecode at the Edge of Optimization</h2><p>Huff is an extremely low-level programming language for the Ethereum Virtual Machine that allows developers to write smart contracts almost directly in opcodes, with only minimal syntactic sugar in the form of macros. <br>Unlike Solidity, which compiles to bytecode through layers of abstraction, or even Solidity’s inline assembly, which still operates within Yul’s structured constraints, <strong>Huff gives near-total control over the stack, memory, and opcode sequence</strong>. <br><br>It has no built-in types, no safety checks, and no high-level constructs; everything is explicit. <br>This makes it possible to produce the most gas-efficient contracts on Ethereum, often beating hand-optimized Yul assembly by a few percent. <br>Huff is particularly popular in the Foundry ecosystem and has been used to implement highly optimized libraries, minimal proxies, and even entire DeFi primitives. <br><br>However, the trade-off is important: the language is notoriously difficult to read, audit, and debug, and a single misplaced opcode can create catastrophic bugs. <br>Huff is therefore reserved for extreme optimization scenarios or educational purposes rather than general-purpose contract development.</p><h2 id="h-reference-formal-verification" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Reference: Formal Verification</h2><p>Formal verification is the process of using mathematical proofs to guarantee that a smart contract behaves correctly under all possible conditions, rather than merely testing specific cases. <br>Because Solidity code ultimately compiles to EVM bytecode, the most rigorous verification approaches target the opcodes directly; where the exact semantics of each instruction are defined without the abstractions or optimizations introduced by the high-level compiler.<br><br>I strongly recommend following the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://updraft.cyfrin.io/courses/formal-verification">Solidity Assembly &amp; Formal Verification Course</a> from Cyfrin Updraft.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>Opcodes are the DNA of every Ethereum smart contract. While most developers work comfortably in high-level Solidity, understanding opcodes unlocks advanced optimization, deeper security audits, and appreciation for the elegant simplicity of the EVM. </p><p>Be careful tho! Using assembly or huff can lead to unexpected errors. be sure to use these way to write code very carefully, and balance your needs. Always ask yourself if you really need to use that to ship mainnet contracts. <br><em>Personally</em> I prefer readability vs efficiency if the marginal improvement of contract efficiency is low. But hey, there are crazy and skilled solidity dev out there. </p><p>Whether you're minimizing gas, writing libraries, or diving into formal verification, spending time with opcodes pays off. <br>Start exploring at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://evm.codes/">evm.codes</a>, try disassembling your own contracts and see the magic underneath.</p><p>Never Stop Building please, comment and subscribe. Thanks! <span data-name="folded_hands" class="emoji" data-type="emoji">🙏</span> </p>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <category>solidity</category>
            <category>opcodes</category>
            <category>assembly</category>
            <category>huff</category>
            <category>cyfrin</category>
            <category>joma</category>
            <category>lifo</category>
            <category>stack</category>
            <category>evm</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c12339ce2aee758fdac94460917d502a93bff6ab7ead9052a29d9a1537dad9ad.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Understanding Precision Loss in Solidity]]></title>
            <link>https://paragraph.com/@fabriziogianni7/understanding-precision-loss-in-solidity</link>
            <guid>7mnlGeB1erGBFSYwXGdL</guid>
            <pubDate>Fri, 23 Jan 2026 10:15:09 GMT</pubDate>
            <description><![CDATA[Solidity is designed for secure and deterministic computations on the blockchain. However, one common pitfall developers encounter is precision loss during arithmetic operations. This can lead to unexpected behaviors, financial inaccuracies, or even vulnerabilities. In this article, we'll explore what precision loss is, why it occurs, common scenarios where it happens, strategies to avoid it.]]></description>
            <content:encoded><![CDATA[<p>Solidity is designed for secure and deterministic computations on the blockchain. However, one common pitfall developers encounter is precision loss during arithmetic operations. This can lead to unexpected behaviors, financial inaccuracies, or even vulnerabilities. <br>In this article, we'll explore what precision loss is, why it occurs, common scenarios where it happens, strategies to avoid it, methods to ensure it doesn't affect your code.</p><h2 id="h-what-is-precision-loss" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Is Precision Loss?</h2><p>Precision loss in Solidity refers to the inaccuracy or truncation of numerical values during computations, particularly when dealing with division or representations of fractional numbers. <br>Unlike languages with built-in floating-point support, Solidity uses integers for all arithmetic. This means any operation that would produce a fractional result gets rounded down to the nearest whole number, discarding the decimal part.</p><p>For example, consider a simple division:</p><pre data-type="codeBlock" language="solidity" text="uint256 a = 5;
uint256 b = 2;
uint256 result = a / b;  // result = 2 (solidity truncates 2.5 to 2)"><code><span class="hljs-keyword">uint256</span> a <span class="hljs-operator">=</span> <span class="hljs-number">5</span>;
<span class="hljs-keyword">uint256</span> b <span class="hljs-operator">=</span> <span class="hljs-number">2</span>;
<span class="hljs-keyword">uint256</span> result <span class="hljs-operator">=</span> a <span class="hljs-operator">/</span> b;  <span class="hljs-comment">// result = 2 (solidity truncates 2.5 to 2)</span></code></pre><p>Here, the expected mathematical result is 2.5, but Solidity outputs 2, losing 0.5 in precision. This isn't a bug. It's how integer arithmetic works. It can accumulate errors in financial calculations, such as token distributions or interest accruals.</p><p>Precision loss isn't limited to division; it can also occur in overflows, underflows, or when scaling numbers to simulate decimals (like using 18 decimal places for ERC-20 tokens).</p><h2 id="h-why-does-it-happen" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why Does It Happen?</h2><p>Solidity's design prioritizes security and predictability over flexibility. Floating-point numbers are avoided because they can introduce non-determinism (due to hardware variations in IEEE 754 implementations) and potential exploits in consensus-based systems. Instead, all operations are performed with fixed-size integers, where:</p><ul><li><p><strong>Division is floor division</strong>: Any remainder is discarded. For instance, <code>7 / 3 = 2 </code>(remainder 1 is lost).</p></li><li><p><strong>No native decimals</strong>: To represent fractions, developers must use scaling factors (multiply by 10^decimals), but improper handling leads to truncation.</p></li><li><p><strong>Overflow/Underflow risks</strong>: In versions before Solidity 0.8.0, unchecked arithmetic could wrap around  <code>uint8(255) + 1 = 0</code>, exacerbating precision issues. Post version 0.8.0, operations revert on overflow by default.</p></li></ul><p>The root cause is the absence of fractional representation. Numbers are treated as whole units, so operations like averaging or percentage calculations inherently lose detail unless mitigated.</p><p>Numerical example: Suppose you're calculating 10% of 123 tokens. Naively:</p><pre data-type="codeBlock" language="solidity" text="uint256 amount = 123;
uint256 percentage = 10;
uint256 result = (amount * percentage) / 100;  // (1230) / 100 = 12 (loses 0.3, actual 12.3)"><code><span class="hljs-keyword">uint256</span> amount <span class="hljs-operator">=</span> <span class="hljs-number">123</span>;
<span class="hljs-keyword">uint256</span> percentage <span class="hljs-operator">=</span> <span class="hljs-number">10</span>;
<span class="hljs-keyword">uint256</span> result <span class="hljs-operator">=</span> (amount <span class="hljs-operator">*</span> percentage) <span class="hljs-operator">/</span> <span class="hljs-number">100</span>;  <span class="hljs-comment">// (1230) / 100 = 12 (loses 0.3, actual 12.3)</span></code></pre><p>The true value is <code>12.3</code>, but you get <code>12</code>, a 2.4% error relative to the expected amount.</p><h2 id="h-common-scenarios-and-ways-to-avoid-them" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Common Scenarios and Ways to Avoid Them</h2><p>Precision loss often surfaces any contract handling value distributions. Below are typical cases with code examples, followed by avoidance strategies.</p><h3 id="h-scenario-1-token-distribution-or-airdrops" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Scenario 1: Token Distribution or Airdrops</h3><p>In an airdrop, you might divide a total supply among users. Truncation can leave tokens undistributed.</p><p><strong>Example Code (with Loss):</strong></p><pre data-type="codeBlock" language="solidity" text="contract Airdrop {
    function distribute(uint256 totalTokens, uint256 numUsers) public pure returns (uint256 tokensPerUser) {
        return totalTokens / numUsers;  // E.g., 1000 / 3 = 333 (loses 1 token, actual ~333.333 each)
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">Airdrop</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">distribute</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> totalTokens, <span class="hljs-keyword">uint256</span> numUsers</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span> tokensPerUser</span>) </span>{
        <span class="hljs-keyword">return</span> totalTokens <span class="hljs-operator">/</span> numUsers;  <span class="hljs-comment">// E.g., 1000 / 3 = 333 (loses 1 token, actual ~333.333 each)</span>
    }
}</code></pre><p>For <code>1000</code> tokens and <code>3</code> users: Each gets <code>333</code>, totaling <code>999</code>, 1 token lost forever.</p><p><strong>Avoidance: Use Remainder Handling or Scaling:</strong> Distribute the base amount and handle remainders separately (like send to a treasury). Or scale up before dividing:</p><pre data-type="codeBlock" language="solidity" text="contract SafeAirdrop {
    function distribute(uint256 totalTokens, uint256 numUsers) public pure returns (uint256 tokensPerUser, uint256 remainder) {
        tokensPerUser = totalTokens / numUsers;
        remainder = totalTokens % numUsers;  // Capture lost part (e.g., 1000 % 3 = 1)
        // In practice, add logic to distribute remainder
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">SafeAirdrop</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">distribute</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> totalTokens, <span class="hljs-keyword">uint256</span> numUsers</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span> tokensPerUser, <span class="hljs-keyword">uint256</span> remainder</span>) </span>{
        tokensPerUser <span class="hljs-operator">=</span> totalTokens <span class="hljs-operator">/</span> numUsers;
        remainder <span class="hljs-operator">=</span> totalTokens <span class="hljs-operator">%</span> numUsers;  <span class="hljs-comment">// Capture lost part (e.g., 1000 % 3 = 1)</span>
        <span class="hljs-comment">// In practice, add logic to distribute remainder</span>
    }
}</code></pre><p>This ensures accountability for every token.</p><h3 id="h-scenario-2-interest-calculations-in-lending-protocols" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Scenario 2: Interest Calculations in Lending Protocols</h3><p>Calculating compound interest or yields often involves fractions.</p><p><strong>Example Code (with Loss):</strong></p><pre data-type="codeBlock" language="solidity" text="contract Lending {
    function calculateInterest(uint256 principal, uint256 rate) public pure returns (uint256) {
        return (principal * rate) / 100;  // E.g., 1000 * 5 / 100 = 50 (fine), but 1000 * 4 / 100 = 40 (actual 40)
        // Issue amplifies with smaller rates: 1000 * 1 / 100 = 10 (fine), but uneven principals like 999 * 1 / 100 = 9 (loses 0.99)
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">Lending</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">calculateInterest</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> principal, <span class="hljs-keyword">uint256</span> rate</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span></span>) </span>{
        <span class="hljs-keyword">return</span> (principal <span class="hljs-operator">*</span> rate) <span class="hljs-operator">/</span> <span class="hljs-number">100</span>;  <span class="hljs-comment">// E.g., 1000 * 5 / 100 = 50 (fine), but 1000 * 4 / 100 = 40 (actual 40)</span>
        <span class="hljs-comment">// Issue amplifies with smaller rates: 1000 * 1 / 100 = 10 (fine), but uneven principals like 999 * 1 / 100 = 9 (loses 0.99)</span>
    }
}</code></pre><p>For <code>999</code> principal at 1%: Expected ~9.99, but gets 9.</p><p><strong>Avoidance: Multiply by Scaling Factor First</strong> Use a higher precision denominator (e.g., basis points: 10000 for 0.01% granularity).</p><pre data-type="codeBlock" language="solidity" text="contract SafeLending {
    uint256 constant BASIS_POINTS = 10000;
    
    function calculateInterest(uint256 principal, uint256 rateInBasis) public pure returns (uint256) {
        return (principal * rateInBasis) / BASIS_POINTS;  // E.g., 999 * 100 / 10000 = 9 (for 1%), but for finer: 999 * 99 / 10000 ≈ 9 (still truncates, but closer)
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">SafeLending</span> </span>{
    <span class="hljs-keyword">uint256</span> <span class="hljs-keyword">constant</span> BASIS_POINTS <span class="hljs-operator">=</span> <span class="hljs-number">10000</span>;
    
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">calculateInterest</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> principal, <span class="hljs-keyword">uint256</span> rateInBasis</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span></span>) </span>{
        <span class="hljs-keyword">return</span> (principal <span class="hljs-operator">*</span> rateInBasis) <span class="hljs-operator">/</span> BASIS_POINTS;  <span class="hljs-comment">// E.g., 999 * 100 / 10000 = 9 (for 1%), but for finer: 999 * 99 / 10000 ≈ 9 (still truncates, but closer)</span>
    }
}</code></pre><p>For even better precision, use libraries like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol">ABDKMath64x64</a> for fixed-point arithmetic, which simulates floats with 64-bit integers.</p><h3 id="h-scenario-3-exchange-rate-conversions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Scenario 3: Exchange Rate Conversions</h3><p>Swapping assets (e.g., ETH to tokens) using oracles can truncate values.</p><p><strong>Example Code (with Loss):</strong></p><pre data-type="codeBlock" language="solidity" text="contract Exchange {
    function convert(uint256 ethAmount, uint256 rate) public pure returns (uint256 tokenAmount) {
        return ethAmount * rate / 1e18;  // Assuming rate is scaled; e.g., 1 ETH = 2000 tokens, but if rate=2000e18, division truncates fractions
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">Exchange</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">convert</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> ethAmount, <span class="hljs-keyword">uint256</span> rate</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span> tokenAmount</span>) </span>{
        <span class="hljs-keyword">return</span> ethAmount <span class="hljs-operator">*</span> rate <span class="hljs-operator">/</span> <span class="hljs-number">1e18</span>;  <span class="hljs-comment">// Assuming rate is scaled; e.g., 1 ETH = 2000 tokens, but if rate=2000e18, division truncates fractions</span>
    }
}</code></pre><p>If <code>ethAmount=1</code> (1 wei), small fractions vanish.</p><p><strong>Avoidance: Order Operations Carefully</strong> Always multiply before dividing to minimize loss:</p><pre data-type="codeBlock" language="solidity" text="contract SafeExchange {
    function convert(uint256 ethAmount, uint256 rateNumerator, uint256 rateDenominator) public pure returns (uint256) {
        return (ethAmount * rateNumerator) / rateDenominator;  // Multiply first to preserve scale
    }
}"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">SafeExchange</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">convert</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> ethAmount, <span class="hljs-keyword">uint256</span> rateNumerator, <span class="hljs-keyword">uint256</span> rateDenominator</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span></span>) </span>{
        <span class="hljs-keyword">return</span> (ethAmount <span class="hljs-operator">*</span> rateNumerator) <span class="hljs-operator">/</span> rateDenominator;  <span class="hljs-comment">// Multiply first to preserve scale</span>
    }
}</code></pre><p>Check for overflow using SafeMath (from OpenZeppelin) in pre 0.8.0 Solidity:</p><pre data-type="codeBlock" language="solidity" text="import &quot;@openzeppelin/contracts/math/SafeMath.sol&quot;;

contract WithSafeMath {
    using SafeMath for uint256;
    
    function safeOp(uint256 a, uint256 b) public pure returns (uint256) {
        return a.mul(b).div(100);  // Safe mul/div
    }
}"><code><span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/math/SafeMath.sol"</span>;

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">WithSafeMath</span> </span>{
    <span class="hljs-keyword">using</span> <span class="hljs-title">SafeMath</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title"><span class="hljs-keyword">uint256</span></span>;
    
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">safeOp</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> a, <span class="hljs-keyword">uint256</span> b</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span></span>) </span>{
        <span class="hljs-keyword">return</span> a.mul(b).div(<span class="hljs-number">100</span>);  <span class="hljs-comment">// Safe mul/div</span>
    }
}</code></pre><h2 id="h-how-to-make-sure-its-not-happening" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How to Make Sure It's Not Happening</h2><p>To prevent precision loss from slipping into production:</p><ul><li><p><strong>Unit Testing</strong>: Write tests asserting expected outputs, including edge cases (e.g., small/large numbers). Fuzz testing is much needed here!</p><pre data-type="codeBlock" language="solidity" text="// In a test file
function testDivision() public {
    uint256 result = 5 / 2;
    assertEq(result, 2);  // Expected truncation
    // But for safe version: assertEq(safeDivide(5, 2), 2); // Add custom checks
}"><code><span class="hljs-comment">// In a test file</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">testDivision</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> </span>{
    <span class="hljs-keyword">uint256</span> result <span class="hljs-operator">=</span> <span class="hljs-number">5</span> <span class="hljs-operator">/</span> <span class="hljs-number">2</span>;
    assertEq(result, <span class="hljs-number">2</span>);  <span class="hljs-comment">// Expected truncation</span>
    <span class="hljs-comment">// But for safe version: assertEq(safeDivide(5, 2), 2); // Add custom checks</span>
}</code></pre></li><li><p><strong>Static Analysis</strong>: Tools like Slither or MythX can flag potential integer overflows or truncations.</p></li><li><p><strong>Fuzz Testing</strong>: Use <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/crytic/echidna">Echidna</a> to input random values and check invariants (like total distributed == total supply).</p></li><li><p><strong>Audits and Simulations</strong>: Run simulations with real numbers. For example, simulate 1000 iterations of interest accrual and verify cumulative loss &lt; threshold.</p></li><li><p><strong>Libraries and Best Practices</strong>: Always use OpenZeppelin's SafeMath or Math utilities. Monitor for reverts on overflow in Solidity &gt;=0.8.0.</p></li><li><p><strong>Monitoring</strong>: In deployed contracts, emit events for calculations and monitor off-chain for discrepancies.</p></li><li><p><strong>Ask AI bro</strong>: Asking AI is a first approach to quickly scope if there are integer and precision loss issues</p></li><li><p><strong>Check Solodit</strong>: Go to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://solodit.cyfrin.io/checklist">checklist</a> and filter by "precision" keyword. It will give you all the know common bugs (and ways to fix) when working with numbers.</p></li></ul><p>By integrating these into your CI/CD pipeline, you can catch issues early.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>Precision loss in Solidity is a subtle yet critical issue stemming from its integer-only arithmetic, which prioritizes blockchain safety but demands careful handling from developers. <br>It commonly arises in distributions, financial computations, and conversions, but can be mitigated through operation ordering, scaling factors, remainder management, and robust libraries. Proactively testing and auditing your code ensures reliability, preventing costly errors in immutable smart contracts. <br>As DeFi and Web3 evolve, mastering these nuances is essential for building trustless, accurate systems. <br>Remember, on the blockchain, every wei counts. If you're developing a contract, start with <strong>thorough math proofs</strong> and end with comprehensive tests to safeguard against precision pitfalls.</p>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <category>solidity</category>
            <category>precision</category>
            <category>evm</category>
            <category>math</category>
            <category>integers</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/38b69bbefd61727d444a97306937af0b25a6823cea4c63892278858943e2a9c2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Neynar Acquired Farcaster]]></title>
            <link>https://paragraph.com/@fabriziogianni7/neynar-acquired-farcaster</link>
            <guid>0fBqnxesU9RemFnCd0Zk</guid>
            <pubDate>Thu, 22 Jan 2026 10:51:49 GMT</pubDate>
            <description><![CDATA[The recent acquisition of Farcaster by Neynar marks another dramatic chapter in the saga of this decentralized social protocol. Just like the pivot to wallet-first that shook the community a few months back, this move feels like yet another breakpoint. ]]></description>
            <content:encoded><![CDATA[<p>The recent acquisition of <strong>Farcaster</strong> by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://neynar.com/"><strong>Neynar</strong></a><strong> (No it's not Neymar, the football player)</strong> marks another dramatic chapter in the saga of this decentralized social protocol. <br>Just like the pivot to wallet-first that shook the community a few months back (read this if you don't know what happened <a target="_blank" rel="noopener noreferrer nofollow" class="dont-break-out" href="https://paragraph.com/@fabriziogianni7/whats-happening-to-farcaster">"What's Happening to Farcaster?"</a>), this move feels like yet another breakpoint.</p><p>Farcaster co-founder Dan Romero <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0x72aab3a5">Announced on January 21, 2026:</a></p><blockquote><p><em>Neynar is acquiring Farcaster. Over the next few weeks, we’ll transfer ownership of the protocol contracts and code repositories, the Farcaster app, and Clanker to Neynar. They will run and maintain everything going forward.The Merkle team, including founders Dan Romero and Varun Srinivasan, are stepping back from day-to-day ops to chase new adventures. Neynar steps in as the new steward, promising to maintain the protocol, run the client, and keep pushing the ecosystem forward.</em></p></blockquote><h2 id="h-why-this-acquisition-makes-sense-but-still-stings" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Why this acquisition makes sense (but still stings)</strong> </h2><p>Neynar has been deeply embedded in Farcaster for years. They're the fastest way to build miniapps, clients, AI agents, and more. Hundreds of projects, like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rodeo.club/">Rodeo</a> or all the miniapps built by <span data-type="mention" class="mention" data-address="0xF416fffcF021d2d95eb777dC3424ee18a06beC26" data-label="Builders Garden">@Builders Garden</span> ,  rely on their tools. </p><p>Acquiring the protocol isn't just a buyout; it's vertical integration. Neynar was already the plumbing; now they're owning the house too.</p><p><em>Farcaster hit a $1B valuation peak after raising big from Paradigm, a16z, and others</em>, but growth stalled. The social-first dream didn't deliver sustainable traction. The wallet pivot tried to flip it to "come for the tool (trading/wallet), stay for the network," blending SocialFi with speculation. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://clanker.world/">Clanker</a> added fuel by making token launches dead simple via casts.</p><p>But drama ensued: builders felt sidelined, key people like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/cassie">Cassie</a> proposed radical decentralizations (multi-chain IDs, open consensus, shared curation), and the trader focus alienated some OGs. Now, with founders exiting and Neynar in charge, it signals a reset.</p><h2 id="h-what-changes-for-builders-vs-traders" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>What changes for builders vs. traders?</strong> </h2><p>Neynar's DNA is builder-first. They've built their entire business around making Farcaster easy to build on like APIs, analytics, push notifications, quick-launch tools for mini-apps. Unlike the recent <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://merklemanufactory.com/">Merkle</a> era's heavy trader push.<br><br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/rish/0xc8891ea6">@rish</a> says that the vision is to "<em>Enable builders to go from idea to recurring revenue, supported by a builder-first network.</em>" and that's for sure good news for builders.</p><p>This could be the swing back toward empowering creators, devs, and independent clients. The protocol stays open and permissionless, but with Neynar running the show, expect more focus on infra improvements, easier onboarding for builders, and less emphasis on turning the app into Base App 2.0.</p><p>Of course, Clanker stays. Token launches aren't going anywhere. SocialFi isn't dead. But the tone might shift from speculation-first to innovation-first.</p><h2 id="h-the-big-question-now" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The big question now</strong></h2><p>After the wallet pivot chased traders and sparked builder exodus... will Farcaster switch back to support builders instead of traders?</p><p>What do you think? reply below or cast your take. <br>Is this the revival Farcaster needs, or just another chapter in the drama? </p>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <category>farcaster</category>
            <category>neynar</category>
            <category>neymar</category>
            <category>socialfi</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/581f5ce3541b86df62cd7bcedbbcef8255aee2e313affe32d4e761748d7db0c8.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[How To Actually Learn Things Now That Cursor Writes Code For Us]]></title>
            <link>https://paragraph.com/@fabriziogianni7/how-to-actually-learn-things-now-that-cursor-writes-code-for-us</link>
            <guid>xZ1ASBPHhiDaMPLZ0BXc</guid>
            <pubDate>Mon, 19 Jan 2026 08:35:22 GMT</pubDate>
            <description><![CDATA[If you don't like rants this article is not for you.
]]></description>
            <content:encoded><![CDATA[<p><strong>Open cursor -&gt; preferences -&gt; Tab -&gt; switch Cursor Tab off</strong><br><br><em>That's it.</em><br><br>If you don't know something, ask in the cursor chat or even better, look into google.<br><br>Using Tab (<em>code completions</em>) when you are in hurry or you're working on a big project or you're looking to ship an MVP is ok.<br><br>But using tab suggestions when you're trying to learn something new is literally killing your brain cells. <br><br>If you keep using it when learning anything new, you no longer will be a programmer, but just a monkey pressing random buttons on a weird instrument.<br><br>Disable completely tabs, make your mistakes, learn from them. You're in doubt? ask the agent in the chat. You're not sure if your reasoning works? Ask the agent or even better: a friend!! Programming can also be social. Have you ever heard of "pair programming"? It is the way the best programmers became <em><u>the best</u></em>. <br><br>Of course, now with AI everyone can build amazing stuff! There's no doubt on it and I mention this <strong>FACT </strong>in the bootcamps I lead with Urbe. But You need to be able to use this tool with your brain. You need to own the code, otherwise the code will be your owner.<br><br>When it comes to learning, AI can help but it can also be an invisible barrier, because it makes it hard for your brain to actually learn how to do things.<br><br>Thank me later and Comment if you disagree.</p>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <category>ai</category>
            <category>cursor</category>
            <category>development</category>
            <category>programming</category>
            <category>learning</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/0220463a7672e56eea27e0fb79e77d90826880a9f1660bd7156f9bcec6ccdb09.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[What's happening to Farcaster?]]></title>
            <link>https://paragraph.com/@fabriziogianni7/whats-happening-to-farcaster</link>
            <guid>HPoKqOmZy5Sxweais6V7</guid>
            <pubDate>Thu, 11 Dec 2025 15:44:47 GMT</pubDate>
            <description><![CDATA[During the last week, a huge mess happened on Farcaster, so huge that someone decided to dismiss all his 40+ Farcaster miniapps.
Why?
Discover it reading the article.]]></description>
            <content:encoded><![CDATA[<p>Last week, shocking news was released by Farcaster team.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr">Dan Romero</a>, Farcaster founder, made headlines with a bold strategic pivot, announcing a substantial change in the Farcaster client: it will become a <em>wallet first social app</em>. </p><p>From a Twitter-like social network, Farcaster's app is set to evolve into a wallet and trading platform, leveraging its existing social features.</p><p>He and co-founder <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v">Varun Srinivasan</a>, after over five years of development and a $1 billion valuation, announced that the social-first approach hadn't achieved sustainable product-market fit.</p><p>Coupled with the October acquisition of Clanker, an AI token launchpad, this has positioned Farcaster as a contender in the SocialFi space, blending social elements with finance.</p><p>This move has sparked mixed reactions: excitement over potential growth and revenue, but concerns about abandoning its decentralized social roots.</p><p>This article dives into Farcaster's journey, the pivot's details, controversies, and what it means for users and the ecosystem.</p><h2 id="h-what-is-farcaster" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What is Farcaster?</h2><p>Farcaster, launched in 2020, aims to create an at-scale decentralized social networking protocol used by 1 billion people daily. </p><p>Unlike other centralized platforms like X, Farcaster emphasizes "<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks">sufficient decentralization</a>" a pragmatic approach that balances decentralization with usability. </p><p>The protocol includes core elements like casts (posts), follows, reactions, identities, and now <strong>wallets</strong>, all permissionless for developers to build upon.</p><p>Farcaster is the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Communication_protocol">protocol</a>, allowing anyone to build clients (apps) on top of it. Originally, it was just the protocol, with Warpcast as the official client developed by the team. Now, 'Farcaster' refers to both the protocol and the official client, built by the company <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://merklemanufactory.com/">Merkle Manufactory</a>.</p><h2 id="h-a-farcaster-historical-breakpoint" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A Farcaster Historical Breakpoint</h2><p>During the last week, a huge mess happened on Farcaster, so huge that<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/jc4p/0x409f13c5"> someone decided to dismiss all his 40+ Farcaster miniapps</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/50654f9e13f10657972251307aaf21950ded8949877f42a44cd7651a329126ed.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAGCAIAAAAt7QuIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABcUlEQVR4nK3RMUvDQBQH8FAIBAMHUmnPGFBrpQ7aodh+h0LHgnsgw8ENBxUDAWMzBN6QwS3DDYEOhaJgh9uq3HBDt0KHgqPfoOCqopBTFxEXf8ODe+/g7v5nOI5jGEapVMIYI4TK5S3HcfF/qFQqGGMDY3xze7Nfq7XbnZfX56fHd3X3dto52d3dc/7iuu5vI4xxo9FwXddACG07TrVaRQg1m8eHh0fuzoFtb9i2jRDSVdv8ovuWZZmmaX8xTVNv00vLsvQxRrfbBYDh1ZBzDgBRdBlcnAshxuNxGIZ5nkcFzjljDACCIIiiaDQapWmqlMoLACCljOP4upDnOedcB2V4nrder5VSi8VCSjmbze7vH6SUy+VS9+fz+Wq1EkIopSaTyXQ6FUIwxgghAHBW8H0/SZJ+v9/r9Silvu8TQj7/oNVqZVmWJAmlNAzDOI4BgFLqeV6apoyxIAgIIfrig8GAUpplWb1eNwvfmfyMSL/gA0qIpyKNSKPiAAAAAElFTkSuQmCC" nextheight="126" nextwidth="675" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">A disappointed builder announce he won't build anymore on Farcaster</figcaption></figure><p><strong>Why? </strong></p><p>Dan Romero posted <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0xd29fe760">this cast</a> which probably will mark a decisive breakpoint in history of Farcaster: </p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a73177122a81ae081a981e8ddba39df36d9929362794b11727598e285a82c261.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAOCAIAAADBvonlAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMklEQVR4nHWUP4QzTxjHlxTHFSFChCWECCmOFGmPK666bgkplhRhuyVcsWwxDBeGLVIsWwwhxRTLsMUyxTJFmGKLYYslxZLiipAidYorf3Yfl9+993o/1TPzzMzzff7sGqZpTqfTwWAwHo9Ho9GkAWxgOByOx+OnpyfTNOHYdDqdTCamaY4b+v0+XLnfGgwGnW+Ml5eXoiiyLLtcLrvdrigKznmappxzWAohkiQpyzIMQ8651loIoZRKkkRrfbvdlFKMsSzL8jz/+vo6Ho+UUtM02+12HWA2m8VxnKapECKKIsYY53yz+YiiCHaEELvdjhCSZdl+vxdCEEKklEoprTVjTAiRNkgpj8cj5zxJEoxxq9Xqdrt1BlVVSSnhUFVVIIExdrlchBCHw0FKyTkXQsRxHIZhkiQgSCl1OByUUrxBSrnZfKRpyhjr9Xr/l0hKWZbl4XAA4WVZMsaSJGGMKaWKoojjGF6nlN5utyzL4jiWUmZZprWGk3EcQ1UhacuyDMOoAzw/P4MWSMJ1XUopZB1FUZIkeZ4zxiilRVFst1shRJZlCKH9fi+lzPNcCEEbpJT35OI4tm273W4br6+vSql7BauqCsMwTVPoMKUUXPBuEAQYY4ittQZZZVlqrT8/Pwkhtm1jjH3fJ4S4rlsHmM1mnuchhFzXDYJASun7/m63wxhHUUQpBbH7/d513cVi4TjOdrslhHDOPc/zfR/ywxj3+33jT+oSdTqdwWDw0NBqtQzDAOPXstXsPDb8dN1teK77J3WAyWQSRdFoNOp0Or1vut1u7x90G/7evLt+B3h8fIT4Dw8PhmH8VH1fGt/eX6rB/un9Rd2D6XQaBEEYho7jIITW67XnefP53HEcz/Pe398RQpvNx9vbGyGEUmrbtmVZq9UqCIL5fL5cLjHGlmURQhBC0N7N5sNxHErpcDisx7SqqtPpBF9m1cAYO51O1+tVSqm1zvNcKXW9XrXWMJ1FUZzPZ/hzXC6Xsizhota6LMvz+ez7vm3bpmnWPQDJGOP5fA5zYts2QghjvFwuwYsaLMuCkfM8b7FYrFarMAxd17VtG+6u12vf9zHGtfZmiv4DryJBu4JBe4EAAAAASUVORK5CYII=" nextheight="293" nextwidth="679" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">A piece of the announcement from Dan - Farcaster co-founder</figcaption></figure><p>TLDR: no sustainable growth with the social-network-first client so they are switching to build a wallet.</p><p>They realized that the wallet is the ultimate mean of traction for the protocol.</p><p>He mentions that Merkle will adopt a "come for the tool, stay for the network" strategy to acquire more users.<br><br>Dan and Varun aim to develop a compelling tool, likely marketed as a wallet, to encourage downloads of the Farcaster app. They will rely on its built-in social features to drive long-term user retention.</p><p>In the same direction of this shift from decentralized social to wallet first app, a few posts by Varun and team during the last month outline the trend of Merkle to go in that direction:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0x27680551">end of creators rewards</a> - no change to dev rewards for miniapps yet</p></li><li><p>other <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0xf255ea87">new features</a> already in current version of wallet, like the possibility to comment a swap you made </p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0x42eb94ac">some possible native functionalities on the roadmap</a> of the farcaster wallet: limit orders, HL perps, private wallet copytrading and... an appcoin launcher?</p></li></ul><p>And Farcaster team also pushing other clients, as shown in<strong> </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0xfb01991c">this<em> </em>cast</a><strong>:</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e2e9c3e8870a5917789f3bd58a84295b169687d21aea54827a5ae66771e67eb5.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAJCAIAAADcu7ldAAAACXBIWXMAAAsTAAALEwEAmpwYAAACIUlEQVR4nK2TwYqbUBSGI+IgYq3WqhOkiFxRgoiEYMgioQyMEIILCRoRCYoN4SIREsRFJoWkeYTuQhad5dC3yNt00023XUyZ3GnIvv0Wl8vPf7icc/7bkCTxeDx+e3yUJJF58054f8uyb9n/AcMwLMs2JtHk549fz7+ft1/WE+/zp+gr0GRBELl/g2VZWZY5jmuIovj09P10Okm3EsPwLCsQN8TNGRzHiTMkSeI4jkTiiotCkiQ6URUyo2caPM9HUZRlmed59+793d3H2WwWx7Hv+xDCNE3zPB8MBvP5PAzDIAiyLEvTNMuyJEl83w+CIE1T13Wn06nneXEcQwiLonBdl6Kolw4AAA/rBwhhVVXL5bKq6tFoZJqmbduu6zqO0+/3TdPsdrvtdtuyrE6n0z3T6XTMM47j2LbdbrdRVa/XQwaapl86UBTF8zzLsvr9/nA4HI1GHMeh4WB/uXRNEASO40hB9+tJXgaIdLTqBsdxzWZTURSe5yVJkmUZAKCqqq7rAABN0wzDsG3bMAxkAwC0Wi1VVQEAhmEgv67rqqoqivLhjKZpgiC8psiyrM1mU1VVHMfr9Xq73ZZlOR6PV6sVhLCu6yAIqqoqiiJJEghhGIaHwyHP8yiKdrud7/ur1Wq/3+d5HsdxEAS+79d1rWna6w50XZ9Op1mWLRaLsiwZhsEwjKKo6whhGEbTNMMwFEWh5JBnkPMSpItOEMTlN/wBFRWRuRUCPQEAAAAASUVORK5CYII=" nextheight="200" nextwidth="680" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">A list of Farcaster Clients</figcaption></figure><p>As I'll talk about in the article, Farcaster shift is aimed to point more in the direction of giving the users a mean to trade &amp; speculate, built for traders. Dan published, some months ago, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://danromero.org/crypto-barbell-speculation-stablecoins.html">some words</a> on his personal website about that, quoting:</p><blockquote><p> <em>in crypto you need speculation, in order to make revenues</em>.</p></blockquote><h2 id="h-farcaster-dramas" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Farcaster Dramas</h2><h3 id="h-cassiegeddon" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Cassiegeddon</h3><p>Community looks very disappointed from this pivot.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/cassie">Cassie</a>, previously a member of Farcaster team, expressed her <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/cassie/0xc65c4f9c">dissent</a> on the new shift:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ca8ac1ef53ce6148afd40fb44b5bddf9bb3e43ae6490c3a94a0fb875d74f56e1.png" blurdataurl="data:image/png;base64,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" nextheight="998" nextwidth="1362" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Already <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/cassie/0x936300d0">against the incentive model</a> of crypto+social networks, she publicly express dissent regarding the pivot, emphasizing that the issue isn't the wallet's quality but the broader cultural shift away from Farcaster's original decentralized social focus and the lack of clarity of the team. </p><p>What did she do? 3 proposals (I love the pragmatism of this girl):</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8f933663acf751b9aadd9a6e11e5dba811df564c60edd696d92cf7f890697e09.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAOCAIAAADBvonlAAAACXBIWXMAABYlAAAWJQFJUiTwAAAC5klEQVR4nKWT3XKTQBSAkwysUAolNFMTCpSSTQMpEEwpRAIChZKk5AfTKdYZ64Xe+RheONMn8x2899pH0AGcOvVvxvrNDnN29zAfezhbIynqzbHtM1wdoPVavdFooADB8UcEQZD/B0EQFEXVErH39cunz+8/9PcP8+vrdJHk6e14lO22SJKkfuLXpd8kldA0zTAMTdM12Hr88d3b22S6Q+6Ih4c8z4r7o1aTwzCAIAiGYSiKAlDECIJUQaPRQBAELQEA3AXVYqMEAEDTdHGCDs9rkmw/MaUuNIYGhFDVFF1XDcOwbVuWFc/zFEVxXTcMQ13XHcfxfX88Hpumadu2pmmTyWRUEgSBYRhBELiuaxgGhmHFCRRZni/meX6VJOc3r1/N5tPFIr283KTpfLVeLhaL9Xo9mUzCMPQ876TEdV3HcXRdN0ts2zZNU1VVy7J0XY+iyPd9VVVxHC8EXamXLV9Ok6UzfhYGc/s0iM/SOLrI1i/G9rMwSKIoMk0TAFCv11EUrUpU9EJJVbqqOHdxtVv9nhrX0QbdVe8gPOjYRwdnA7joHYR9Me6L530xZtsqhuEYhlH/zneBwOqGspG7IRSfDuB00Jsr8FyB58e92fHRlN8fUtROlf0ACsEhf2rpN+pRqnTPtP5qpFxq/eVQXg2V50N5BUWHomiS3H64gCQZYouhtncJoklsMcRW8SS3d4uxtUuRzIM//7sAQhgEvqYfa4Zqno4s2zRPR6PRcDy2JxNHEHgcx/708l+mPwSCIGiaJsvyYDA4OTlRVVUrUdWBZVmCIKAoiuM4AAD7HQAAHC+64C4Bx/F7AoZh2u12q9Vqt9udTmdvb48kSZ7nRVFsNpuCIPA8z7KsJEmiKHIcJ9xHkiSWZTmOgxBWuyzL3hMoipLn+Ww2S5Lk6uoqSRLLspYlcRzneR5FkeM4cRxvNpvZbJamaZZl0+n04uJiuSxuou/7juNkWZamaZ7nnudVbV0JvgEGCZ/9D5DrjQAAAABJRU5ErkJggg==" nextheight="584" nextwidth="1362" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">the 5th option refers to the post of Dan (1)</figcaption></figure><p>These three proposals from Cassie aren't just technical tweaks. They're screaming a clear message about Farcaster's current state.</p><p><strong>Proposal </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/farcasterxyz/protocol/discussions/256"><strong>#256</strong></a><strong>: Opportunity For Another Chain</strong></p><p>Snapchain (the blockchain layer behind Farcaster identities) is too dependent on Base. If one corporate-backed chain dominates, it threatens the "sufficiently decentralized" promise, one company could potentially censor or control parts of the protocol. </p><p>Solution: Let Farcaster support multiple chains for storing and resolving FIDs (user IDs) and fnames (usernames), making identities truly pluggable and resistant to single-point control.</p><p><strong>Proposal </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/farcasterxyz/protocol/discussions/257"><strong>#257</strong></a><strong>: Opportunity For Another Consensus</strong></p><p>This proposal is around the governance &amp; consensus model. Currently Farcaster relies on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://affidaty.io/blog/en/2019/08/blockchain-proof-of-authority-poa/">Proof of Authority (PoA)</a> which is a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.kraken.com/it/learn/what-is-blockchain-consensus-mechanism">consensus mechanism</a> where trusted, pre-approved validators validate transactions and essentially govern the protocol.<br><br>Farcaster has five consensus set member owned by the same company, and the proposal aims to decentralize that. </p><p>Solution: Open up validator spots to the community or switch to a more open consensus model (modern PoW or PoS) so no single entity holds the keys.</p><p><strong>Proposal </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/farcasterxyz/protocol/discussions/258"><strong>#258</strong></a><strong>: Opportunity For Another Curator</strong></p><p>This is proposal address a hidden challenge in growing decentralized social platforms: <strong>creating good feeds</strong> (the "For You" or following feed that keeps people scrolling).</p><p>Building a good feed is expensive and complex. Right now, every client team has to build their own from scratch, which slows innovation and hurts client diversity. </p><p>Solution: Make curation a core protocol feature, let anyone create and share public feeds (algorithmic, manual, personalized) that any client can use. This lowers barriers for new clients and turns curation into a shared strength.</p><p><strong>What are these proposal are really saying?</strong><br>Farcaster protocol is not "sufficiently decentralized" yet; there's still too much trust placed in Merkle and Base, and building a real alternative client remains hard and costly.</p><p>Cassie - many others agree with her - says:<em> You're pivoting the official client to a wallet, that's your call, and fine. But at least give the rest of us the tools to build meaningfully on the protocol without being completely dependent on your decisions, Base, or Merkle's infrastructure.</em></p><h3 id="h-zingergeddon" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Zingergeddon</h3><p>In the same period, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/zinger">@zinger</a> joined the Merkle team to drive trader outreach and growth.</p><p>From what I've gathered from Zinger's social media, he has a background in startups and product growth, and he's clearly passionate about trading, particularly memecoins. His Farcaster profile is filled with discussions on tokens and market trends.</p><p>As Farcaster pivots from a social network aimed at attracting builders to a wallet-centric app, the team now needs to onboard traders, and Merkle requires someone fluent in their language to facilitate that process.</p><p>Zinger's hiring was not without controversy. If you're like an old Italian nonna from a small village, craving gossip and pointless arguments, grab your popcorn and read  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/jc4p/0x1a453056">here</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0xfcba31f6">here</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/linda/0x3b7a4ab9">here</a> . I won't dive deep into it, as it's not crucial for understanding Farcaster's future, but it highlights community reactions to the strategy shift.</p><h2 id="h-what-happens-to-my-miniapps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Happens To My Miniapps???</h2><p><em>In my opinion</em>,<em> </em>they very likely will stay: they will maintain the infra to have miniapps on farcaster but it won't be the main focus of Farcaster client from now on.</p><p>Builder rewards were already dismissed, and now you get some incentive if your miniapp is between the first 100. </p><p>Will they remove these kind of incentives? Will they remove support for miniapps? comment and tell what you think about that. </p><p>If you ask me to imagine the new Farcaster wallet, I would just get the Base App, with a miniapp section, change colors and font, then add some features like <strong>integrated Clanker</strong> and here you have the new Farcaster Wallet.</p><h2 id="h-what-clanker-acquisition-means-in-this-context" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Clanker Acquisition means in this context?</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.leadsontrees.com/ma/news/clanker-acquired-by-farcaster-acquisition">Farcaster acquired Clanker</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/829899a0d770718312f9184547c09b9814372acdf2c11de7be8c67cc8b3459b7.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAJCAIAAADcu7ldAAAACXBIWXMAAAsTAAALEwEAmpwYAAACJUlEQVR4nKWRUWvTUBTHI6VdDGlIl7GkZF2IlNZS0hiKIXalEqZrKK5mM12RWhfDtV7jrTaMEGoe9EmKlNL3KXsc+CX6fQSffPRhkqWW+dwfh8s55x7O/9x7MJbdPj//9v3igt9hG1qvodqbDMlsMvTaUBRF0zR20j359fP31Z+rT58/Wi309vTLo/393ZyQptJrCvA8n8lkMIbZurz8sVgsWDZbuVtpPKjr9eYOL1BrC2QymegFgiA4joMQMk2z3X4KwGuEXI7j4oprIvd/W16tGi2LbrCSwVh2W1GUarVaKBRkWa7Vaqqq0jSdSCRSEUkcJwjidprCSTKyNBXFqVQKx/GbZwxBEHGGJMmlQC6XUxRFFEVZlkVRzOfzpVKpUCgYhqFpmq7rilIp5qsCr+zy5bxwX8xV74h5RbknSVK9XpckSdO08jWrKVVV5TiOIIhIoFgsjsdj3/fDMIQQzmazIAgsy5pMJkEQIIRcFx62Xhw8PDX0l6YxPD4cPu/2p9OvZ2e+bdsQwn6/H4YhQigMw/l87nnedDptNpvZbDYSKJfLQRAMh0Pf9weDgWVZEELHcQAACCEAwF5tD4BXb6Dz/sO7xwf60bMn5pHpeR6EsNvtjkajXq/nuq5lWYZhQAgNw2i327ZtdzodgiAwWZbjjoPBoNVqmabpui4AwHXdeDrf9wEADLOFYbdIktzYiP46kUiQ1/xb1XINyWQyduIkTdN/ARUWoOHuKhlIAAAAAElFTkSuQmCC" nextheight="200" nextwidth="680" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">Buyback of $Clanker tokens after its acquisition by Farcaster (2)</figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://clanker.world/">Clanker</a> is a platform to make <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://members.delphidigital.io/learn/fair-launch">tokens fair launch</a>. You can do so using the app, by tagging @clanker on a farcaster cast, through the API or the SDK. It makes it very easy to launch a token.</p><p>This move puts Farcaster on the same playing field as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/baseapp">Base App </a>+ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zora.co/">Zora</a>.<br>Base App relies on Farcaster protocol for the social feed and on Zora to "coin content".  Every post on Base App is mintable on Zora and others can buy it as a form of support.</p><p>If Farcaster wants to compete in the same SocialFi space, what was missing? A seamless way to tokenize <em>everything</em>. With Clanker, they've filled that gap decisively, diving much deeper into SocialFi and positioning themselves as a direct Base App rival.</p><p>As Base App uses Zora to make content coins, Farcaster uses Clanker to make appcoins. Here an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0x995d9548">example of appcoin, the presale of $HOUSE</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/365ecbafdd97a125d144f92edbba452ffe5d6ca03c88480785987a2698e00e98.png" blurdataurl="data:image/png;base64,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" nextheight="626" nextwidth="681" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">$HOUSE presale</figcaption></figure><h2 id="h-what-farcaster-users-fears" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Farcaster users fears?</h2><p>Some users are disappointed, after the pivot announcement. Why?</p><ul><li><p>Why build yet another wallet when dozens already exist, with far more experience and users?</p></li><li><p>People worry Farcaster will turn into a "casino," with most volume from low-cap memecoins that inevitably rug or go to zero.</p></li></ul><ul><li><p>Sure, data shows the wallet driving recent traction, but if it's mostly speculative trading of low-value tokens destined to crash, is that really sustainable growth?</p></li><li><p>How can we build a new client on Farcaster protocol if this is yet very tied to Base and Merkle and the stack to build on top of it is still not-mature?</p></li></ul><p>In my opinion, Farcaster users have historically been builders. The work builders did on farcaster is amazing, and the success of miniapps is defined expecially by the social-first nature of Farcaster. If the platform changes focus, then building on farcaster won't feel as rewarding as before.</p><h2 id="h-alternatives-for-users-clients-and-ecosystem-options" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Alternatives for Users: Clients and Ecosystem Options</h2><p>Dan Romero said it clearly. If you don't like the direction Farcaster client is going,</p><p>change - the f**ing - client </p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/228d84c64d985d78e05bdf2dbeb61b89ca08475e7184bbf7eaa40db50287c05f.png" blurdataurl="data:image/png;base64,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" nextheight="604" nextwidth="858" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Which are other clients? </p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0b9da480950153eb8f08ac52e0e559ddb664093e1a65fc061468b47c1e2aea1a.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAIAAAD4YuoOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD6UlEQVR4nK2UUW/aSBCATTF2jR2MibGNNxjHBmO50FxSkgAhuQAFBMExJPbWJVhGuJFCEVGf8tOTl5x0Ave4Vmqle7jvYbUzu7OzMzuzCIqi1Wq12WxGIhEURdEYEoshOzuJ/wukddl6eXl+fX2dTO5Oq0etxvTseMLxDE0nf2dD0/R/OTrchpxfXLz+9fr88mzbTqXy/vTw5kNpvJPACSJObMBxPBxDtnOCIDAMI0nydw4EQaBpGqFp2rZt0zTBHgBgT5JFIcMeHPyhbpBlWdd1WZYNwygWi5qmSZJULpc1TQuVgiBQFPVLB6EeyWazEELXdZ+eniCEtm13u935fO77/ng89jzP933TNGezme/7EML+BsdxIITL5bJSqeA4zjDM7/KGJBIJkiRRFI3+A4ZhyIbw2aPRaCQSCcWtBkGQcERRlKbpMGMEQfzCAc/zpmmG17csazKZmKa5XC4Xi0UYB4RwNpt5ngehu1wub25uIXQfV4/D4fXXxdcgCNxPnz3PW61Wg8GAJEl6HQv9UwSJtUxTFLUJkyZJit1lWTadYlKhQSJBsxzDckkhkxYBl0olJGmP4xiOT2UlgUlRHM8IAs+kdnAiSsRR/O0bkop/dwCAeHxyaJpXQ/OqfnZSrx83W+ejkXlxUa+fnZjm1cd2s9/vFPZPlWwtBw4LuYYEyqKg5XM1XbmUxaqUOSkqzRwoH+jXRr5V1nrvtJ7A5yhqXWAIEJVaZdDr2L3O6OPlp3bTNgd+v3c77Pvd5sS8mjTPR73O7eXpl5ODz5Xybe3Qe1foHJWGx2WneuC3Gnf93p2u/pnfP8xLpxIo5eWaUWgCUfnugOf2dbUj7BpAMAq5lrLXUMBFhteUvfOcWE8ni1KmJoGyrrTzuVohd7a+rHhUkBv72Q9AKJVKxmWzEVv3f5SIx4g4TsRj+Ns31DZFCXqHZWkRCBlRYFmaZZMsm+T5NMclWS4pggwv7PJ8mhd2OY5h2STHMQAILJdkWUYQ0ptuSooiyGazTJJZ9+/mRf99ZFmWTfP62+O3YB6YGx5Xj0EQDAZXELpB8GU2m1nWyJt6ju1Y1mg+n69Wq4eHBwjd6dRbLBbD4XAymQRBoCgKRVEMw/xUphRF4TiOYRiKouGEIIiw2HEcX39/KIphWCiGRKNRkiS3q1tCDYZhP/b2upM7nY5t277v9/v98Xjs+/79/b3ruoPBAEI4nU4ty3Icp91ud7td13Xn83m323UcJ1wKt1mWFdpCCAEA2z8KYVlW3mAYRj6f1zTNMIxKpRKKxWJR13VVVX8US6WSoii6rheLRVVVNU0rlUr5fF5V1VDJcdw2iL8BD9Lp9mihGXEAAAAASUVORK5CYII=" nextheight="330" nextwidth="680" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">how to influence the farcaster direction according to Dan Romero</figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/baseapp">Base App</a>: The biggest client so far. Run by the Base team, it's projected to have a lot of success on the wallet scene. It integrates miniapps, content coins and it is probably the inspiration Merkle team got,  when reasoning on the change of shift.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/gh/app/cura-by-openrank/id6741865443">Cura</a>: Mobile first Farcaster client. It is focused on channels and you have a rank in each channel (I rank 3rd in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/~/channel/ethrome">/ETHRome channel</a>). The more you post the more you climb the leaderboard of the channel. If you are the channel owner, you can airdrop any ERC20 to channel contributors.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zapper.xyz/">Zapper</a>: Client focused on tokens. The feed also displays what users are buying or selling.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://uno.fun/signin">Uno</a>: It's in closed beta - ngl, I couldn't get a lot of info on what it is. I asked in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/fabriziogianni7/0x7a6d28d5">this cast</a>.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://recaster.org/">Recaster</a>: Simple client to post and schedule casts on Farcaster. </p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.herocast.xyz/">Herocast</a>: Twitter-like client. You can do pretty much everything you do on farcaster, schedule posts and analyze your engagement. It's early stage and it costs $1 to get in. </p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://firefly.social/">Firefly</a>: A Farcaster client which embeds miniapps, prediction markets and a sections where users can post articles.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.degen.tips/">Degen</a>: Client built by $DEGEN team. It has a channel based feed and it's focused on the "tipping" use case. Currenly launched as a Farcaster miniapp.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tunecaster.xyz/">Tunecaster</a>: Client focused on music. The feed contains songs you can listen from the client itself. You have a section with trending music, a section with users playlists. To cast on this client you need to go to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/~/channel/music">/music</a> channel on Farcaster and post there a music video/song/playlist.</p><p>other clients in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0x3bd3c0ea">this post</a> from Dan.</p><h2 id="h-conclusion-balancing-growth-and-decentralization" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion: Balancing Growth and Decentralization</h2><p>Farcaster is pivoting!</p><p>Let's tell It clearly: Farcaster will be a wallet with a social network integrated. It will be focused to make traders and speculators happy, there will be more technical trading features as Varun prophetizes on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0x42eb94ac">this post</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/eba1cdc8fd0165173fc3b3473ae312ed80ec476b41dad7a293dec670191f2192.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKCAIAAABaL8vzAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiElEQVR4nKWRX2vTUBjGU2pidpqGE0Jra85FrY0dpaSx1maxY9RsdGYhpYvpmZViHKGjdOlFO2aLIJPtTpkbfouB32J+GS+8886LSXJqGd7643B43j+8D7wvJYri5/PzL5eXqVSK53kIIfn/Hz6aQ7mu+/PHr5vfNx9OZt2d9/6rr/mHKJu9L0SIokjE7VCMuB3+00AM0um0IAhUJpO5uvp2ff1dQhKfTPGJNM3coWk6FovF4/FYLMYwDB1BMjRNx+NxiqKIWFZJM0VRDMMQj4WBLMu+7+9YVqvV8t6+6fd77kuMMfY8z3GcXq9nmqbrup1O5/j4uNfr2bbdbrc9zzNNE2NsWZZt24ZhOI4zGAx839/Y2AAACIKwWBGSpMdqpaIoxWKxXC5r2pqqlqpPlEZjXdf1RqOhKEqtVqvX64ZhaJpWC3lqGJukqqpqvV5X1Yqu681ms9VqVatVAMDyEhQAoPH8hVqtKYpSLldWVwu1ivXowbMkDzguybIsx3EgJMGGrBDNMCwAIAoTAACO41h2JWoI+5dHClcEQOLdyafheDqdTEajw8n0sL/7sVF7LaF7EEKWZRmGiWYtAADczkR+gGXvkk6SIRpCGBoIgrBpbFqWtb297TiOvqY3m+vd7m673ca4izEOgsA0Tc/zDg4O+v0+xng8Htu2HQTBcDh0XXdraysIAozxYDAYjUa2bbuuu7e3J4oihAIliuL+/v75xcVsNjs9PT06OppMprPZfD6fn52daZomyzJCqFAoFCOIyOVyRCOE8vl8sViUZVlV1WWpVCotVgQFIZvN5nK5QkGOXiGTyUgSQghJEoIQApDgeZ7jktyC5N9MCCkBkIj+8DzLEjH4A750m7M2uuu1AAAAAElFTkSuQmCC" nextheight="219" nextwidth="680" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">A possible set of features for the new Farcaster</figcaption></figure><p>Dismissing your miniapps feels like a bit of an overreaction. With the wallet pivot potentially bringing in more users, your miniapp could actually get a more exposure… or maybe not!<br><br>If you're a miniapp developer who loves DeFi, you're actually in a great position now. The new target users aren't just builders anymore, but also  traders and speculators.</p><p>If DeFi isn't your thing yet but you're a miniapp builder, now's probably the time to dive in, if you want to keep building successfully on Farcaster.<br><br>If you don't like this shift you can go to another client or build a new one yourself: While the Farcaster client will change, the protocol will remain untouched, or even improved. <br>I know, this last point is controversial. Currently there are no clients at the same level of Farcaster, so Dan says "go to another client if you don't like this" but man,  others clients are too early. Where do I go? Where do I have fun? <br>I think you'll still be able to have fun on Farcaster, in a different way.</p><p>You'll likely still be able to have fun on Farcaster. just in a different way. The feed will lean more toward trading, token launches, and DeFi energy, but the core social tools aren't disappearing. It'll evolve with a new crowd.</p><p>Additionally, if you're a builder, it may be just about time to fill the gap left by Farcaster and build a new super cool sufficiently decentralized social network on top of Farcaster protocol.</p><p>And for last: Base team said there is an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/i/events/1989118834905673728">important announcement</a> on 17th December for the Base app. Do you think it's something somehow related to this Farcaster Pivot?<br></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7373ca6dc59651a3c4838597df98a62e2185a9a13416646e1c485a6b352f2c8c.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAIAAAAUMWhjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEB0lEQVR4nGPw8vKvrj2dktKgr6+prq6hqalpaGhkZ8hkbxuvpGzAzcPFy8vHz8/PwcnJxwdiMDMzMxABhEREOTg4QIqzcio0Pf8XFJ0wNVUzNDI1NDSytrY21eGzsfFTUdWRk5eXV1BQVFIRFxfn4uLi5ORiZGQkxgJOLi5mZmaQYlNjs7SMTm/vcEkJcQUFRS0tbXV1dUVlDVVVJVlZGV1dXU1NLQ1NLV1dXSYmJgZKACMjEyMzKwOGAxnBAMJgYmKCcJnAACrEzIyJmCEMsBomJiYWBgZGfkH+uvpoK1trYxMzXX19IyMjDS1tOwtzJiNvI79aLXUnPn5eAQEhfn4BQSERPj4+Xl4+ISERdnYOPI5mQo4wbh5ueztTbV1tSLDo6+tramppa2mIqRtpm7qpqepJSEnKgWNESlpGWlqGh4eXi4uLhYWFWAvY2NkVlVSUlZUVFRXV1EFAQUFBU1vbUF9HTVVJXV1NSUlRSUlRWUVFSlJCQ12Nh4cbFG54gx1hASgwcac/Tk4ubW09aTk1DQ09WwtzZ68g19BUn7CkzIxkczNzPOkKiwWMqIAJnHLExCSamjtD44rqGydsWrxo/4Wnx9//v/3l/88vL+uq69nY2CAayfEBI1gbGxt7ckphRHxRY2P/llXL9l98dO7j//uf/u/evK4sv5CLk4NSCwQEBNKSsqKSy1paJ61asqi/e8qqVTtuv/ywb8ua2rIyDg52KliQl1OUlFnT3DVzWl39romTTi1fdWrb7oNbVtZWlLOzUxxEAgL8lRUV+YW1rW3982oqjkyfemDajO2Tp6ya2V9eUsBOeRzw8fG1d3Vu2LF/ct/ExsTYWfm529raNrU2bZk9pby0iAo+4OHiqm9o2Lp1/ba1i3f0du1prj0/e+7dxUuPLp9fVJDFxsoKVslAvgX8/Py+bh7FhYXrN21c1t06OytlQUbe+QUzlk3uiI2J4WCnOJIFBQUjfVzSU5LjUgvDfAPnl2bt7ek5sXju/P6O5qJUdsotEBUT9/YNt3IIMbMO9XL1a0mMnFdVeGDWxLyMsvCwWG4eHkotkJCQTM+t8QtJzcxrLMstKu1dajftXMz6x5kti2QVjBlx1xNEJ1NBsaCEqtqGttikfGfP+JmzF584cOTcxRtVLbPsvZKYmVkotYCXT9AzNG/uonUpmaVmtqG19b3//3x/cPdOclajnUcMRRYwgC3g4uGz84xfvmZfZn6TvqGttUNIZ9fU/OIG79BcU7tAJiacxTDxPhDwCstNzWxKSG4Ijik2cwh1dgvLzK1KyGyMCEtnYwVlNAIWgDg4alcGRkZuHj51A2shMRVDEycNQzstYwcdfUsbBw87Ry93WwdWVjZcNTMjExMAqEcYlYr/gysAAAAASUVORK5CYII=" nextheight="442" nextwidth="583" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>What do you think about this pivot? Are you optimistic, skeptical, feeling a bit betrayed… or something else entirely?</p><br><br><hr><h3 id="h-referenced-casts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">referenced casts</h3><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/dwr/0x408cdcfd">https://farcaster.xyz/dwr/0x408cdcfd</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/v/0xf48818f9">https://farcaster.xyz/v/0xf48818f9</a></p></li></ol><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><br></h3><hr><h3 id="h-about-the-author" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">About the Author</h3><p>My name is Fabrizio and I do developer engagement at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://urbe.build">@urbe.eth</a>. I am a softer engineer with passion and experience in Blockchain. <br>I'm loving writing articles about more disparate topics. If you like it, comment and spread the voice. </p><p>More on me on my website:<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fabri-dev.vercel.app"> fabri-dev.vercel.app</a></p><blockquote><p><em>Stolen arms from smart contract development </em></p></blockquote><br>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <category>farcaster</category>
            <category>socialfi</category>
            <category>creatorcoins</category>
            <category>appcoins</category>
            <category>clanker</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/35d3801436d97194150c8b3a8f3b55228c8f69f736616123dddde3ddda36006e.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Please Stop Making The Audience Fall Asleep At Your IRL Workshop]]></title>
            <link>https://paragraph.com/@fabriziogianni7/please-stop-making-the-audience-fall-asleep-at-your-irl-workshop</link>
            <guid>j4l0ZfjXIzPd10l1290M</guid>
            <pubDate>Mon, 01 Dec 2025 20:25:30 GMT</pubDate>
            <description><![CDATA[I'm Fed Upwith going to crypto conferences, talks and workshops and getting bored after 5 minutes because the speaker doesn't know how to speak in public. The speaker is usually great at what he/she does but probably not great at explaining it. YES! You're probably thinking (and you're right, baby) that maybe I'm too dumb to understand what the speaker is saying or, most likely, I have the attention span of a goldfish. I'm confident that part of the audience is having the same experience as m...]]></description>
            <content:encoded><![CDATA[<h2 id="h-im-fed-up" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">I'm Fed Up</h2><p>with going to crypto conferences, talks and workshops and getting bored after 5 minutes because the speaker doesn't know how to speak in public. The speaker is usually great at what he/she does but probably not great at explaining it.</p><p>YES! You're probably thinking (and you're right, baby) that maybe I'm too dumb to understand what the speaker is saying or, most likely, I have the attention span of a goldfish.</p><p>I'm confident that part of the audience is having the same experience as me, and I'm sure that there are people with an even lower attention span than mine.</p><p>I'm writing this post to give some tips to make your talk or workshop engaging, so people actually like it and understand the complex concepts you're talking about.</p><p>If you think you suck at giving workshops or public speaking, then this article can be helpful. If you think you're already a god, <em>please</em> read this post and comment: give me your advice and tips, as I'm here to learn as well.</p><h2 id="h-a-bit-on-my-experience" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A Bit on My Experience</h2><p>I am a software engineer specialized in blockchain with a strong passion for explaining what I'm passionate about to others. <br>With <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://urbe.build">Urbe</a> I do <em>Developer Engagement</em>; I lead IRL Bootcamps on Ethereum since 2022. I've led 14 editions of the bootcamp and mentored more than 500 builders in more than 3 continents.</p><h2 id="h-sharing-what-i-know" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Sharing what I know</h2><p>If you're leading workshops or presentations, <strong>the key is to prioritize fun. </strong><br>People learn best when they're engaged, so here are some practical tips to make your sessions stick - drawn from real-world experience in blockchain education.</p><h3 id="h-voice-and-clarity-matter" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Voice &amp; Clarity Matter</h3><p>Too often, I've attended a talk where the speaker talked without breathing, eating his own words, with a very-hard-to-understand English pronunciation. Your voice is your primary tool: treat it like one.</p><ul><li><p><strong>Use a microphone</strong> even for small groups. It ensures everyone hears clearly and you don't need to scream.</p></li><li><p><strong>Speak with enthusiasm</strong>. The tone, pace, and rhythm are important to keep the audience listening. Keep a high volume! Make the audience feel you're excited about the topic you're talking about.</p></li><li><p><strong>Try to keep a simple vocabulary</strong>, if possible. It makes it easy for you and the message lands more directly.</p></li><li><p><strong>One thing at a time</strong>. Start a thought → finish it → Pause → Move on to the next concept → repeat. Maintain order and follow a mental map. This will contribute to improving the clarity of the speech.</p></li><li><p><strong>Do not ramble</strong>. Think about what you're going to say and then say it. Don't think about it while you're saying it. The message will be much clearer and more direct.</p></li><li><p><strong>Breathe!</strong> When we are nervous, we forget to breathe and we skip words or letters. We end up in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Apnea">apnea</a>. We talk too fast and no one understands. It's okay, sometimes it can happen. If you realize you mispronounced a word or you said a sentence that does not make sense, rephrase, re-say the words you meant to say. Take your time. Pause more.</p></li><li><p><strong>Work on your strong accent</strong> if you have one. I'm Italian and I'm not interested in sounding like an English gentleman. I just want my accent to not make the discussion impossible to follow. <br>Think about a strong <em>French or Indian</em> accent. I understand zero when hearing people with that kind of accent. I have a lot of <em>French and Indian</em> friends and I love them, and that's why I constantly tell them to repeat what they said. <br>I can do it with them but I cannot during a workshop. If you're French, Indian, Chinese, or any other non-native English-speaking nationality, <strong>don't take it personally</strong>. <br>I probably love you, it's just advice! <br>I know, that point is a big pain. The only way to solve it is to make conversations with people who have a better accent than yours or, if you want to be a pro, get some English classes.</p></li></ul><p>More guidance on how to speak clearly by Vinh Giang:</p><div data-type="youtube" videoid="PiNN-HmHu7A">
      <div class="youtube-player" data-id="PiNN-HmHu7A" style="background-image: url('https://i.ytimg.com/vi/PiNN-HmHu7A/hqdefault.jpg'); background-size: cover; background-position: center">
        <a href="https://www.youtube.com/watch?v=PiNN-HmHu7A">
          <img src="https://paragraph.com/editor/youtube/play.png" class="play">
        </a>
      </div></div><h3 id="h-set-the-stage-before-diving-in" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Set the Stage before Diving In</h3><p>Before launching into content, build rapport. Ask questions to learn about your audience: "Who's new to Solidity? Why did you sign up today, what excites you about blockchain?" This reveals their levels (beginner vs. intermediate) and motivations, letting you tailor the session.</p><p>For instance, once I thought I was going to have a blockchain session with software engineering students - the organizer said so - just to discover that people were studying business and data science. <br>If I didn't ask "What are you guys studying?" I could have talked about complex programming patterns or even the EVM, causing the people to say "WTF is he even talking about?" and probably leave after 1 hour. Knowing that, I could drive the workshop toward a more interesting line for them, explain blockchain use cases, and make them build an app using AI tools (shootout to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://0.app">v0</a>).</p><p>Another time, I asked the attendants questions to get their general level and they were so advanced we ended up working on complex DeFi protocols. Imagine giving them a workshop on conditional statements in Solidity or loops, it would have been pretty boring. </p><p>This is the beauty of doing this job. It doesn't matter if the topic will always be the same. <em>The workshop will always be different depending on the attendants.</em></p><h3 id="h-ask-questions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Ask Questions</h3><p>It's very important that if you're doing a talk or a workshop, you interact with attendants before, while, and after you are doing the workshop. </p><p>Example - asking questions: Asking before the lab starts:</p><ul><li><p>"What's your name? Where are you from? What's your background?"</p></li><li><p>"What brings you here? What are you interested in?"</p></li></ul><p>Asking while talking:</p><ul><li><p>"Raise your hands if you never heard about xyz"</p></li><li><p>"Who likes abc? Who ever tried to do efg?"</p></li><li><p>Even a simple "Does what I just said make sense?"</p></li></ul><p>Asking after the workshop is done:</p><ul><li><p>"Did you like the talk?" is the question I always ask. I also ask if there was something specific they didn't like. Criticism is the only way I can improve.</p></li></ul><p>Try to engage as much as possible. I try to ask a question every 5 minutes I'm talking. If they don't answer the question I asked, I don't go on. I need them to answer. If they don't, it means they are not following.</p><h3 id="h-do-is-better-than-just-listen" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Do Is Better Than Just Listen</h3><p>The more interactive → the more fun → the more attendants retain. Try to think about something they need to do. For workshops like the ones I do (on blockchain) it's easy: Just let them build something. Prepare a small project idea with some milestones. <br>Generally, I make them do a mini-app on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://farcaster.xyz/">Farcaster</a> that uses a smart contract deployed on chain.</p><p>To prepare this, you need to have enough hours or you need to prepare a starter template so the attendants can do the task in a few minutes. <br><br>A good idea is to divide them into small teams. This will foster collaboration and will make the attendants become friends (or hopefully lovers).<br><br>You need to be willing to help them, unblock them if they get stuck (very often installing dependencies on different OSs) and pair program with them. Personally, it is the most exciting part of the job.</p><p>What if you don't have enough time? Be creative. Maybe prepare a game. Maybe use an app like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hoot-quiz.com">Hoot</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://oot-quiz.com">!</a>, where you can create a quiz on the topic you're talking about and let the attendants play at the end of the workshop. You can even put a prize on the quiz, so people are actually incentivized to follow.</p><h3 id="h-dont-overload-these-slide" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Don't Overload These Slide</h3><p>Keep slides simple and readable. Use big, bold text and limit words per slide to key phrases. Visuals over walls of text. </p><p>Remember: If you go there and you just read the slides, you could have just sent the slides and they could read without coming to your talk.</p><p>Pro tip: Add memes to your presentation. I show this when my attendees create their first wallet:<br></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7333c40a4b94ffe624392a1ae3f514f540d16bfb1015ca734f25a22a431e576f.gif" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAIw0lEQVR4nNVSWVDbdR7/tOquR6nalkOgLduDq+E+S0IO0oSQ+w4JuUhCSEKChEBCOFJIgHK0CBZbFSVCpLVSukohkGDU4cGtxzp9cRynu+sM+yjrOKPrvqzjzh/d7qy7Pu34sDOfh9/3+nyP3webt1/5RYHY2kJsbeEH4/7jJ2bsf/DjB/uXA35R9tj/fYPN+5/8c+FNAuH7X/dPZzi6Or+5Svh/pvDHkp82+HfGcJTAK7G1xT38Ky0ev/5WYjkWv74X/S/ssbXF+zyEiqIEwkQ4GiFqohEiKRrZil/fWltYW5nbeHM+ukokbN5+Zf2N+aWZvsst3OVR11vrC9H/ED5B8tu5zdVwPBqJRyPEBlsbkbffuh5ffWn9xmxiPXz72szWxtJKeDLALQ2x8wZZZ/prjk5LSzZvvRCPXYu9OTfckG0AhrOxNmaORV/dG3lv9tVwPHbt1gtDPWWpIXLmmIb5xvKLWFt56frisy+HZwN6YWsqBmtPeEsPdWhknaxSG2AF7EkQAANpWBk2r9ycf/nq+Mx4wFaW6XsCEcVv4kvjGxuvRolrhGMbS2uLE5P0VMev4ACsj2O0uxU2k8mg1WqkSnP+ERtgAByPg33siLf4Cet+cAE1UAfIgRdEJ92tBqVMoTGYLIxi/xFMleOGuTT6+uV4NBJdW9h446Wr2ipvKs7tlSz1m7bWFqBVqpo0OruE150FDaADFIB4P0IkmEDM7s0g/AZgNBujGqrJbLZYLS2MQu8h9GdgkoRpl+zmzfnERuSykRrMgS+NIGkG1uaGt7ZuwGa1ttpdHk6V8zFQgLMADQgVYug0ug+jJwUj+fCkwn0Y3QcwxT7ubO80dYV0tRVP74cnGaHjuCCrDARDz/ea+3IwdBLeQ0SV5wBeG3MTDbq6vF6bzVf4WOeTUIGABZisxFgBvMkYyELgONHAl4a2BzBe/oBrcI49fYdNk5oO4ulfo/8gBmT0Dl/AVpXpTcP5LAQyMEJC9xNYnvLuNej2+wQUfzoxb8ej6DyAniMYycFECcYL4EuHfR9xNBYgBEJFmAyMmYZv1/DaafvheRCu2mLR5A3l1OuGnMfbn4Q3Fa6HcKnuKd8x3LoyFI9fh7c72EUr6EuHOwk2EAsOZhE9xknoSiau2QQwgFKgCnAmw8aVcqnN5Aph9oF0GeC2+co8s6WeWRMpxQqI9pIN+6Dfh/Co++13l0GRBZuL8nqSiQ160xA6SYzvS8NABiQAG+ABlUBhdt1hHGYCzRU18npTq8xhELY6hIZem1+hdRdLWnWZD4qBc8dOCEoKREAt8EzAv7p6DXm8IfmpY54D8KcR47c/DFcSek8SsmEfTKrMKKoASMCph08+hfQ8QFNW02kLXPDOTA3OXQyGL/RecWl76EWsSqACEDJ0MmEL/VAmFQ+P+qenxl5GPqtXlJVpA5xJkO3pUrwnVhZw7pFHyjLKT+/LKD9yhnGCzM5nSmtEWpZW12BokdkH7MFgx7iB2yKuUmjJTbTUAmp6FS29QkKqZ5+mmxpMw57JkGcCqfl6dkpy855+aAAZKMOPeq0CKBnFDYVsGVmqoClUdJWSrmxkKJuY6iamplVoNbL1rHwGv4CtqFLoGGZNrU5RpeTmMgVn6gdaAsH2kUFXCCk5anZKChfg7AfzaDElszxr/9HjSMoBCgBeSb2SpjA0GERkkYqm0rONZn6LVWRrk7rswjZu3jlJMU9RKdJUK/WUJgNNr6MZmmn6oG1ktPPisOtCyDGK9DwNJekQEyjCowUZdaceOnUMKZVPVXBI9bxiLrekgZ5N55YLBOVSNV2vrNU2MUwGVouWaWqs1dUdo9CPUvgkLj+P15DbUJ9Tz8nltAldQfvohOfSWOfUWOcUqBXG3L2zaFj1Io5AwRfrFFpW2TnqSQabxBPXyC1GS3tru8fRpeCrHBanQWEUcyRuu6dN11ZytEDFV+ikWpPS0G51+d09Hken3Whv1bQOWM5PeKbH3RfBL9eXHsxPBlbfXP37d9+9//77W4mtugqWiq/xuLprSNToZnR9fX13dzcSicy9+OKdO3e2t99+553ExbHJvKPZ9/54b2dn586d383Pz0cikdBQ6PPP/xSeCzskbZc8MyPOMdBON0hqzJRc3q2Vla+//vrdd95dj66TC2hqsdbf7aeWMJ+7+twzFy/t/Hln5ebrk5OT77333kcffTgzM33347sZj6Z8+eWXX331VSy24fP5hkPDRr3xs88+C8+FnZK2SffkqH0YokpDY62VerpBzJE2SjQKgdKst5BJ9LpcPvkEsy6PTa+m1xSSnS2uRrHKZrTJ+XI5V+60OJ0meyYOGuVaJU8iqRcwymtlTCGPxjM2GqUcabvYNeEYG7EGoSBbhOU6AVVuarKQSylKoZJRw+xydtGLWAaJwW52MGvYTouTdZalFqnlfLm92cauYVfnVzJr6EqOhFpKlnFEZacKKflVnGoWl1xvb7Z5XB6ryupv8o/ZhqGiWhi5goDv/Mcf/z6RSHzwwQc3Xrvx/fff088yLo5MJBKJyzOXd3d3Nzc3t7e3fV7f4uJis8Lotnfs/mX3008/XV6+ee8P96ampuw2+1BgsLfHP3t5dn5+3m1y9zb6Rs2DUNVaaDm8877zH370YSKRuHv37rWlpW/++g2tmj4+PB4KhmZmnt3Z2YksRhYXFp6/erWvv6+xXm3X2r/927dffPFFLBb/5JNPtre3+/v6r8xemZmeabO2ebu9Hn3HkD4Qah6ArNrIK1YJGbILofEGumB8eELCkQ54B8gFFI1QSymlqMVqn9tnVpt7O3sdBoecL1dQ5Eq6zNXqbLe6Ou0dTpMt2HPeY+/o6+ge6PRb1KYmicYptY8YBkKGfkirdVKKjlMirz7B4BTIzmbWsfJE1BNsSbmKVySVljfyzghZOQ0CkpCTwxEXidUVSlOtvpmsFZP40kK+KKdekM2W5DXws+hnf5UnzeG4+U433zmg9oUMA0F9/z8ASlJROGn6U2IAAAAASUVORK5CYII=" nextheight="360" nextwidth="360" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-minor-tips" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Minor Tips</h3><ul><li><p>Build your style. For instance, my style is relaxed, usually informal, and very funny. I like making jokes all the time. I sometimes put music (good music) as a background to build up the atmosphere.</p></li><li><p>Dress in a way that makes you feel comfortable and good looking. This will boost your confidence.</p></li><li><p>Time your session: Practice to fit within limits, leaving buffer for Q&amp;A.</p></li><li><p>Tech check: If you do practical/technical sessions, do it yourself first to see what potential blockers the attendants can encounter.</p></li></ul><h3 id="h-wrapping-it-up-turn-boring-into-addictive" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Wrapping It Up: Turn Boring into Addictive</h3><p>There you have it, simple, battle-tested tips to transform your workshops from yawn-fests into can't-miss events. <br>Whether it's nailing your delivery, getting to know your crowd, keeping things interactive with builds or quizzes (shoutout to Hoot! for making that easy), or sprinkling in memes and music, the secret sauce is making learning feel like play. People won't just remember the tech; they'll crave more sessions like yours.</p><p>Next time you're prepping a talk, pick one or two of these to try. Start small, iterate based on feedback, and watch your audience light up. If you're in the blockchain world, dive into urbe.eth's bootcamps for real-world inspo; we've seen hundreds of builders get hooked. What's your favorite hack for keeping things engaging? <br>Drop it in the comments. <br><br>Let's level up together and make every workshop unforgettable! <span data-name="rocket" class="emoji" data-type="emoji">🚀</span></p><br>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabrizio)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/cfda969601152777d1b9542e8a6a2a7b989ab2ee65c54b485d01fa6cce31ca8c.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Hacking at Hackathons: A Jaded Dev POV]]></title>
            <link>https://paragraph.com/@fabriziogianni7/hacking-at-hackathons-a-jaded-dev-pov</link>
            <guid>SK3ufDkLVKu7bVaM1rQr</guid>
            <pubDate>Mon, 03 Mar 2025 07:56:42 GMT</pubDate>
            <description><![CDATA[This is a tribute to hackathons. It’s a cynical and exaggerated view of a hackathon experience. I’ve participated in tons of hackathons and had the chance to build memories and make a lot of friends. I think hackathons are a core part of web3 and innovation.That’s the story of a developer trying to build a project in a 3-day hackathon with crazy, often unheard-of tech. It’s the story of a chill guy trying to build something that makes sense while winning some money and not losing his mental h...]]></description>
            <content:encoded><![CDATA[<p><em>This is a tribute to hackathons. It’s a cynical and exaggerated view of a hackathon experience. I’ve participated in tons of hackathons and had the chance to build memories and make a lot of friends. I think hackathons are a core part of web3 and innovation.</em></p><hr><p>That’s the story of a developer trying to build a project in a 3-day hackathon with crazy, often unheard-of tech. It’s the story of a chill guy trying to build something that makes sense while winning some money and not losing his mental health. I want to describe the different phases of a hackathon and the moods I’m sure every dev’s felt at least once.</p><h3 id="h-before-the-hackathon" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Before The Hackathon</strong></h3><p>This phase happens usually 1 month to 1 week before the hackathon. It starts when you’re scrolling your Crypto X timeline and see a big number representing the prize. And you think, “Bro, that will be easy. Few people will participate, like maybe one, two hundreds?” - 1.2k people will take part in the event- “I’m gonna win the first prize”.<br>Spoiler, you won’t.</p><p>In this article, I’ll describe a typical IRL (in-person) hackathon.</p><h3 id="h-signing-up-for-the-hackathon-hype" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Signing Up for the Hackathon <strong>- Hype</strong></h3><p>“OMG!” you think. “Finally, I’ve got the perfect excuse to visit city X. I’ll low-key complete the project early before the submission deadline. I’ll prep early, submit by dinner, and then roam the city the next day!”</p><p>While you underestimate the workload needed to submit the project (it’s your 20th hackathon and you keep doing it!), you start asking your dev friends if they want to join your team.</p><p>Usually, you make a team with the first people saying yes because you need people that don’t lose time thinking. You need self-confident and efficient developers. Personally, I like a team of 3, but usually you can have a team of up to 5 people.</p><p>Here’s 7 web3 Web3 Gremlins you might team up with::</p><ul><li><p><em>Burned 10x dev:</em> <br>Very good with many languages, backend, and frontend. Able to make the project alone but they would never do it; they are extremely lazy. These coders have lost faith in tech and blockchain. They say the majority of things in the space are scams. They cry every night before sleeping.</p></li><li><p><em>Stoned backend</em>: <br>To be able to perform, these rare devs need a fat joint. They are very skilled in smart contracts, low-level Linux, Kubernetes, and system admin. Very well-versed in managing keys across different machines, but if they lack a joint, they probably can’t do anything. These programmers can’t create a proper system design because they start tripping on crazy innovative tech only they know.</p></li><li><p><em>Ninja frontend</em>: <br>They are the worst enemies of UI designers because they’re really the ones who need to put UI guys’ crazy designs in place. Very skilled and focused on details, probably they don’t lift much at the gym and usually eat vegan food.</p></li><li><p><em>Jolly dev</em>: <br>They’re a 10x dev with zero self-confidence. They think they’re not too good at writing code, but in reality, they can solve any problem you have. Somehow, they always have the correct answer about why something isn’t working. They always make stupid jokes to mask their inner indecision and suffer from deep impostor syndrome. They follow the team in any decision because, after all, everything is feasible (maybe).</p></li><li><p><em>The Labrador devrel</em>:<br>Angry when they’re hungry. They love blockchain and live in a magic world. They have a “Labrador” attitude, transmitting very positive vibes. They are good at programming but better at having fun ideas. Genuinely confident in the future, they talk a lot and help you until the last hour of the hackathon. They will rock the project pitch.</p></li><li><p><em>Narcisist UX/UI designer</em>: <br>Artists. No one cares what they do but they’re probably a good friend to a team member. They want to have a voice in every design system choice. They want to prevail over devs and would do anything to show they’re artists and devs are just stupid workers, replaceable by AI.</p></li><li><p>Playboy project manager: <br>They just talk the talk and never walk. More useless than the UI/UX designer. They pitch the project in a way devs don’t really like because they’re not able to get the real point of the project. They drive an expensive car, and their intimate life is very active.</p></li></ul><p>You team up with some of these characters. Now things are getting serious! You look for hacker houses to crash at; you hardly find one. Then you book a house near the venue. If it’s a rich country, you nearly die over the prices. Since you know you’ll spend a ton - and you split it with teammates - you think, “Yeah, I’ll grab the house with the pool to chill after hacking” - you won’t have time - “I’ll win cash, so it’s basically free.” You feel like a genius - no idea yet, but it’ll be crazy, innovative, and fully on-chain.</p><p>Can’t wait to hop on the plane to City X. You’re a bit stressed about your body shape - hackathons mean fatty food, endless snacks, and no time to move, just sitting 2-3 days straight. But you’re like, “This time it’s different. I’ll bring my girlfriend’s pink portable yoga mat, work out early before the venue. No junk food or booze.” Man, these plans sound perfect! You’re sure - even after failing this a million times - that you’re mature now, ready for an epic hackathon, coming back chill and in shape - spoiler, nope, not happening.</p><h3 id="h-brainstorming-for-ideas" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Brainstorming for ideas</strong></h3><p>In this phase, you alternate between creative feelings and absolute dumbness. This phase usually starts 3 days before the hackathon and can last until the hackathon begins. Sometimes, you don’t have a clear idea until the end of the hackathon, when you realize you didn’t understand anything about your own project and probably misunderstood the scope of the hackathon - no one will ever know what these Frankenstein projects are; good luck deciphering that mess.</p><p>You feel a bit anxious, and you start thinking about what you can build, trying to integrate and combine sponsors’ tech. There are a wide blend of sponsors you can use, each promising the easiest developer experience and shilling the solution to world hunger with their decentralized tech, but in reality, the docs page returns a 404, and most of the protocols are in test mode.</p><p>You lack a good idea. If you’re a new dev, you don’t know what to build because you lack experience and don’t really get what web3 is for. If you’re more experienced, you’ve probably built tons of things and have a vague feeling that web3 is for nothing really - you’re still not sure about that. It feels like web3 could have a use case, but nothing really makes sense as of today, and all the stuff you see others building is kinda lame. You feel the need to build something you’ve never built.</p><p>Anxiety about not knowing what to build grows, and you start asking your teammates until you have a call to analyze sponsors and brainstorm ideas:</p><ol><li><p>Memecoin launcher - Buy one, hate yourself: <br>Built on a new crazy L2 (no different from the hundreds of others), you can launch a new kind of memecoin: “insult-coin.” The name needs to be some sort of insult to remind you that you made a big mistake buying that shitcoin.</p></li><li><p>Token bridge - For the ones who like strong emotions: <br>You can’t select the destination chain, and it uses verifiable randomness to pick a chain ID. Good luck, go get your tokens on a random chain.</p></li><li><p>Wallet idea - Fit and broke: <br>A wallet where you need to do 5 push-ups every $10 transaction you make. Uses an off-chain verifiable agent to check the push-ups.</p></li><li><p>AI agent battles - AI chicken fight: <br>You make an arena where AI agents fight each other and other people can bet. You need to actually train the model “Matrix” style. No idea how to do it, but a sponsor has this functionality. Docs will surely be easy to follow (that’s sarcasm).</p></li><li><p>Verifiable web3 cakes - Edible and blockchain-approved: <br>Basically, you can give people a cake and verify it through a TLS signature. OK - not sure if I’m understanding this right or if there’s a hidden meaning here.</p></li></ol><p>You realize those ideas are absurd and none make any sense at all.<br>You slam your laptop shut. “We’ll go to the venue and talk to devrels. They’ll suggest something for us to build.” Hopefully not that garbage.</p><h3 id="h-hackathon-start" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Hackathon start</strong></h3><p>You get to the giant venue in City X - probably an ancient church or the first-ever stock exchange - and the funny thing is, all this grandeur and art is about to host some of the most brutal tech and innovation disasters. Teenagers mixed with 45+ year-olds are ready to build the next worthless crypto project no one will use.</p><p>You skip packing - swag’s free but you arrive late, and now they’ve only got S and M t-shirts. You grab a few, but you’re 1.85 meters tall and 95 kg - these things are tiny, like the calldata space in a smart contract call. You’ve got no choice but to wear one the next day and feel like a “sausage”.</p><p>We ask devrels for suggestions and try to tie in 2 or more sponsors for a shot at cash, until finally we get the Idea! We’ll build a simple, privacy-first portfolio manager with an intuitive UI and Account Abstraction!</p><h3 id="h-day-1-chill" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Day 1 - Chill</strong></h3><p>During the first day of the hackathon, you’re definitely in chill mode. You enjoy the venue and the food! They have all sorts of things: chocolate-based snacks, buttered cookies, bags of chips. Free coffee at all hours and energy drinks. Lunch and dinner usually offer the same stuff throughout the event - usually some attempt at local food, but with over a thousand hackathon participants, making good food for that many is tough! Result: toilets are super busy sometimes, and you seriously consider sneaking into the women’s restroom since those are probably kinda empty and clean (sorry-not-sorry).</p><p>You start working and go with the project design to align everyone on what needs doing. You split the workload with your mates, and it’s usually never really fair. The problem is one of your teammates is a visionary. He’s locked in with a new kind of zk. Except for the core engineers at the labs creating this tech, no one understands what the hell it is. Your teammate decides to force it into the project, and you agree because, hey, you’re a team of pros here to innovate.</p><p>Your task is to write the smart contracts, a strategic gig since you’ve done it tons of times (it’s your actual job), and when you’re done, you can help others with more stuff, maybe integrating extra sponsor tech. Night rolls in, and you realize nothing’s really done so far because you and the team wasted time eating and chatting with randoms, like, “Hey man, what are you building?” Maybe you need to rethink the strategy and ditch some sponsor tech to actually deliver. It’s late. After a free midnight snack, hamburgers and fries, you decide it’s time to sleep. The next day, you want to wake up early, do some sports, and get back to the venue early ‘cause morning’s the most productive time of day.</p><h3 id="h-day-2-increasing-panic" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Day 2 - Increasing Panic</strong></h3><p>11:00 in the morning. You overslept. You actually woke up at 9:00, but you didn’t care and shut off the alarm. No time for quick yoga or proper breakfast. You wake your mates, still dreaming about zk-powered AI agents. You throw on one of the tiny t-shirts from the venue and head out “like a sausage.” Breakfast is a cappuccino and a banana, more small talk with randoms, then back to work. Nothing works. You talk to the devrel for the sponsor tech you’re using, and he basically tells you the whole idea doesn’t really make sense. You and the team crash hard. The same devrel yesterday said, “Aw, that’s really cool, guys, definitely something we’d like on our stack,” and today he’s like, “I don’t know, guys, our stack doesn’t really support that zk thingy you’re trying, plus it won’t really make any sense.” Thanks for the bait-and-switch, bro.</p><p>Time for a new strategy. Strategy meeting outside the venue - maybe grab a beer. The plan’s literally: “Let’s go inside, find a sponsor that probably no one’s touching, and build some random thing.” <br>It’s 20:00, and you pick a tech - some crazy protocol with a weird programming language no one really knows. First bounty’s $5k. The example page has some use cases; we decide to fork one of those example repos and build on it. </p><h3 id="h-demo-and-submission" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Demo and Submission</strong></h3><p>You’re wasted. None of your positive predictions came true. You feel fat - mostly ate and yapped with fellow weirdos. <br>The crazy ideas you had in mind couldn’t be pulled off. Deadline’s 4 hours away, and you haven’t slept at all. Your teammate’s still wrestling with the frontend. He’s stuck ‘cause he’s used to ethers.js, but the template repo got viem, and he doesn’t get React hooks. He decides to rip everything out and use ethers.js anyway.</p><p>After a while, you and the team duck into a service toilet - the only quiet spot to record - and with your last ounce of energy, you make a 5-minute video. When you stumble out, anyone seeing you’d swear you’re on drugs. You laugh, play along, sniffle a bit. <br>Submission window’s got one hour left, and you need a readme. You carefully skip the “how to run locally” part because the project doesn’t actually run - it walks, maybe crawls sometimes.</p><h3 id="h-day-3-pitching" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Day 3 - Pitching</strong></h3><p>Pitching’s actually your favorite part. After 3 days of effort, you’ve built something that looks pretty good to your eyes. Like when your mom thinks you’re handsome, but you’re more of a sweet crocodile. You’re pitching to the main hackathon jury and the sponsors you applied for. The main hackathon jury judges your project as a whole, comparing it to all the others; the sponsors judge it based on how you used their tech.</p><p>For the main judging, you’ve got 5 minutes to connect your laptop to the screen and showcase the project. The first time you did it, you wasted time because you were so hyped you forgot how to duplicate your Mac’s screen instead of extending it. Mouth got dry, words barely came out. <br>But this time’s different; you’ve done it many times and gotten good. The pitch goes smooth, and the judges seem blown away. Well, they always are. Even if it’s just a Canva slide, they still go, “Wow, that’s veeeery cool! Thanks for the amazing project!”</p><p>Pitching to sponsors is easier because they already know the team and project - you’ve hounded them with questions nonstop. You keep the sponsor pitch more fun and less formal than the main judging, so the devrels factor in the “fun” vibe too.</p><h3 id="h-hackathon-ends" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Hackathon Ends</strong></h3><p>It’s been a hell of a ride, and at 14:00, the speaker will announce the 10 winners. You’ve got a tiny hope your project’s picked, but you also don’t want it to win because, let’s be real, it doesn’t work. Luckily, you’re not one of the winners. You watch their pitches with your mates, muttering stuff like, “Oh, that’s lame,” or “Those people are geniuses.”</p><p>Finally, the sponsor prizes announcement! Tension ramps up - you don’t wanna feel like you blew another weekend coding for nothing. But at the end, your project wins:</p><ul><li><p>$50 for deploying the contracts on some L2 chain</p></li><li><p>$2000 as 2nd place for the sponsors you applied for!</p></li></ul><p>That’s great - you feel like a genius and It wasn’t a waste of time. Sure, you dropped $4k on travel and accommodation, and the $2050 gets split three ways with your team, but you’re still stoked. <br>Most importantly, you had fun, made memories, and locked in new friendships. Exhausted but happy, with a bag of undersized t-shirts, it’s time to grab drinks in the City X center you still haven’t seen!</p><hr><p>Some pictures of the teams I had the incredible pleasure to work with at hackathons:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/17c1a6a51caa0f710ee28ea409c787f937b141ab0422562d55fab92beb8ccb45.jpg" alt="ETHGlobal London 24. @deca12x, anon teammate, 0xfante and me." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">ETHGlobal London 24. @deca12x, anon teammate, 0xfante and me.</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6a21e037ac1b9192bffd2f6c53da1ca43835a89b5e26481348f7ed3170784f9a.jpg" alt="5am during ETHLisbon &apos;22, I and @rickkdev" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">5am during ETHLisbon &apos;22, I and @rickkdev</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8e9839ecf1f9376b1dadb57a9757b341f2fd0c3894998512ff82afb238a17aa8.jpg" alt="I, @limone_eth and @Frankc_eth at ETHGlobal Lisbon 23" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">I, @limone_eth and @Frankc_eth at ETHGlobal Lisbon 23</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/731003c1d5b93c20b3019fe5319d6f297b15855569b711be687ce99e2f832bb7.jpg" alt="@edatweets\_ and me at ETHGlobal Bruxelles &apos;24" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">@edatweets\_ and me at ETHGlobal Bruxelles &apos;24</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/10a53b705c9b2092b50632a1be03aa401753de4a49a6556f7f2e10089319a32f.jpg" alt="First Hackathon ever: ETHGlobal Amsterdam 2022. anon teammate, me and @IAlberquilla" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">First Hackathon ever: ETHGlobal Amsterdam 2022. anon teammate, me and @IAlberquilla</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b529902dbc34baa7abb4021d2abc116b90e3cf9e1e07323d947c33ffb8fb876c.png" alt="From left: @mrpsyc0x, @0xfante and me at ETHGlobal Istanbul &apos;23" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">From left: @mrpsyc0x, @0xfante and me at ETHGlobal Istanbul &apos;23</figcaption></figure><blockquote><p>I’m <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/crypto_lippo_49">Fabrizio</a>, proud member of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/urbeEth">@urbe.eth</a> and smart contract guy at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/BuildOnBeam">@beam</a>. Sometimes I like writing articles, both technical and non-technical. I got a tiny <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/@fabriziogianni7">Youtube channel</a> where I enjoy interviewing people in web3 space.</p></blockquote>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabriziogianni7)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/01f9c1668daf79d2fe6e0bf08511994e809f1efa4b701505e7b2ffab171cf1f3.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Why you'll have a one night stand with Lens Network – and maybe fall madly in love with it]]></title>
            <link>https://paragraph.com/@fabriziogianni7/why-you-ll-have-a-one-night-stand-with-lens-network-and-maybe-fall-madly-in-love-with-it</link>
            <guid>UF0xMVatQbWoOS5cBLXo</guid>
            <pubDate>Mon, 27 Jan 2025 13:19:06 GMT</pubDate>
            <description><![CDATA[https://www.youtube.com/shorts/RcodWzdb_0M During the last weeks, everyone&apos;s attention was so focused on speculation and shitcoins that the things I really like about the blockchain - tech and innovation - were totally overshadowed. Today I want to try to reverse this trend and explain why you are likely to have a “one night stand” with Lens Network and probably fall in love with it. This is my very first article, so before starting, click on the button below to subscribe to my mirror pr...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/shorts/RcodWzdb_0M">https://www.youtube.com/shorts/RcodWzdb_0M</a></p><p><strong>During the last weeks</strong>, everyone&apos;s attention was so focused on speculation and <em>shitcoins</em> that the things I really like about the blockchain - <em>tech and innovation</em> - were totally <em>overshadowed</em>.</p><p>Today I want to try to reverse this trend and explain why you are likely to have a <em>“one night stand”</em> with Lens Network and probably fall in love with it.</p><p>This is my very first article, so before starting, click on the button below to subscribe to my mirror profile and get notified when I’ll write the second, the third, fourth…. 🤝</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div><hr><h2 id="h-is-lens-network-intriguing" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Is Lens Network Intriguing?</h2><p><strong>At the end of 2024</strong>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.lens.xyz/news/lens-closes-31-million-strategic-raise">Lens closed an investment round for $31M to scale Lens Network</a>, the new L2 layer aimed at revolutionizing <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cointelegraph.com/learn/articles/what-is-socialfi-a-beginners-guide-to-the-social-network-of-the-future">SocialFi</a>. Lens is set to be the fastest, cheapest, and safest Ethereum layer 2 to bring mainstream adoption to Web3.</p><p>Lens will adopt GHO as its native gas token, users will be able to onboard using social authentication and data will live in the ecosystem, not just locked in a single app.</p><blockquote><p><em>“Ok bro, but why shouldn’t I use any other very good L2 like Base, Polygon, Optimism… Or even Farcaster!?”</em></p></blockquote><p>The new Lens Network teases you with a <em>sexy modular architecture,</em> by importing the Lens Social Protocol natively and through a new concept: <em>Lens Storage Nodes</em>.</p><h3 id="h-a-sexy-modular-architecture" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">A Sexy Modular Architecture</h3><p><strong>Every</strong> <strong>blockchain</strong> needs to have an execution layer where transactions are processed and validated, a Data Availability (aka DA) layer to ensure all nodes can access the data necessary to validate transactions, and a consensus + settlement layer to finalize and record new blocks in the blockchain.</p><p>L1 networks are usually monolithic blockchains, meaning the nodes participating in the blockchain run all these functionalities. This represents a significant scalability limit: as the number of transactions increases, blockchain nodes must scale horizontally or vertically, which can be very expensive.</p><p>All layers are important for scalability in blockchains. Blockchains require a fast execution layer and an economical, scalable method to ensure that transaction data is always accessible for validation. The consensus mechanism (like PoS or PoW) and the settlement layer are critical as they dictate the level of security within a blockchain.</p><p>What most Ethereum Layer 2 solutions share in common is typically the consensus and settlement layer, which is Ethereum itself - pretty obvious, but it&apos;s worth pointing out!</p><p>Lens&apos;s execution layer is built using the ZkSync stack, with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.availproject.org/da">AvailDA</a> serving as its data availability layer. This contrasts with other L2s like Arbitrum or Base, where data availability is managed through <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://oakresearch.io/en/analyses/fundamentals/what-happening-blobs-since-eip-4844">blobs</a>, temporary and limited space within L1 blocks where L2 transaction data can be posted.</p><p>Using DA layers like Avail, means that as transactions number increase, the DA layer can handle it without increasing the transaction cost because it scales indefinitely.</p><p>Avail - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.availproject.org/docs/build-with-avail/deploy-rollup-on-avail/Validium/zksync/zksync">optimized for zk stacks like ZkSync</a> - allows Lens to have transaction costs near zero.</p><p>For this reason, <em>Lens will be a super-sexy socialFi platform</em> where transactions are nearly free and the network is fast and secure at the same time. If you see Lens at a party, <em>maybe after a couple of Gin-Ts,</em> you may have something together…</p><h3 id="h-comfort-zone-v3-lens-social-protocol" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Comfort Zone: V3 Lens Social Protocol</strong></h3><p><strong>A one night stand</strong> becomes “dating” when you have some sort of “comfort zone“ in the relationship.</p><p>The comfort zone created by Lens is defined by its built-in modules, known as Social Features, which developers can access and utilize through the Lens SDK.</p><p>Lens v3 has features - smart contracts - like <strong>Account, App, Group, Feed, Graph, </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dev-preview.lens.xyz/docs/protocol/concepts/account"><strong>and more</strong></a>, which are deployed on the network. Developers can use these features with a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dev-preview.lens.xyz/docs/protocol/getting-started">React SDK</a>, so they don&apos;t need to learn Solidity.</p><p>Let’s make an example: To create a post, developers should just create the post metadata:</p><p>javascript</p><pre data-type="codeBlock" text="const metadata = textOnly({
  content: `Subscribe to Fabriziogianni7 Mirror folks!`,
});
"><code>const <span class="hljs-attr">metadata</span> = textOnly({
  content: `Subscribe to Fabriziogianni7 Mirror folks!`,
})<span class="hljs-comment">;</span>
</code></pre><p>And then post it on-chain with just two lines of code:</p><p>javascript</p><pre data-type="codeBlock" text="import { uri } from &quot;@lens-protocol/client&quot;;

const result = await post(sessionClient, { contentUri: uri(&quot;lens://4f91ca…&quot;) }); // contentUri is the posted metadata uri
"><code><span class="hljs-keyword">import</span> { uri } <span class="hljs-keyword">from</span> <span class="hljs-string">"@lens-protocol/client"</span>;

<span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> <span class="hljs-title function_">post</span>(sessionClient, { <span class="hljs-attr">contentUri</span>: <span class="hljs-title function_">uri</span>(<span class="hljs-string">"lens://4f91ca…"</span>) }); <span class="hljs-comment">// contentUri is the posted metadata uri</span>
</code></pre><p>I think that’s the kind of comfort zone I’m looking for after a long day of coding and troublesh**ting bugs.</p><p>To avoid getting bored, developers can build custom Social Features on top of the existing ones and create unique use cases (I already got something in my mind 🤪).</p><h3 id="h-storage-nodes" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Storage Nodes</strong></h3><p><strong>Well, you began with a casual approach</strong> but now you are in a cozy relationship (you didn’t expect that right?!), and the next thing will make you able to <em>build and have memories</em> with your new L2 fiancee (well hopefully you’ll understand why, if not, reach out - I will explain).</p><p>A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.lens.xyz/news/lens-storage-nodes-a-deep-dive">Lens Storage Node</a> is designed to provide user-controlled, decentralized, yet efficient storage for digital content.</p><p>So far in Web3, we&apos;ve seen storage solutions like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ipfs.tech/">IPFS</a>, which is decentralized but does not guarantee data persistence; centralized solutions, which can be subject to censorship and unauthorized modifications; and decentralized permanent storage, which can be too expensive and not flexible or user-friendly.</p><p>Lens Storage Nodes indeed provide decentralized storage at a cost similar to that of centralized service providers, with good performance and Amazon-S3-like developer experience.</p><p>These nodes are built on top of a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ipfs/kubo"><strong>kubo</strong></a>-based IPFS cluster, exposing data interfaces via a REST-like JSON API and validating actions like update, delete, and edit using an Access Control Layer (aka ACL) based on smart contracts.</p><p>When uploading data, users can add rules (ACL) to validate future attempts to modify or delete data. All actions that edit or delete data on the storage nodes need to be signed with the user&apos;s private key, ensuring that only the data owner can modify or delete it.</p><p>Uploading a file to a storage node is easy as doing something like that:</p><pre data-type="codeBlock" text="const { uri } = await storageClient.uploadFile(input.files[0]);
"><code>const { uri } <span class="hljs-operator">=</span> await storageClient.uploadFile(input.files[<span class="hljs-number">0</span>]);
</code></pre><p>Are you interested looking into Lens Storage Nodes? Your friendly neighborhood Fabrizio - <em>that’s me, writing the article</em> 🥷🏻- suggests you check out the docs: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dev-preview.lens.xyz/docs/storage/usage/getting-started.">Lens Storage Nodes Docs</a>.</p><h3 id="h-conclusion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Conclusion</strong></h3><p><strong>There you have it</strong> - Lens Network is serious about competing with Farcaster on an infrastructure and tooling level - and it’s ready to make you fall in love.</p><p><em>If you have some “passion” with socialFi ecosystems like Farcaster, Len’s will be a super-sexy-bomb alternative you want to flirt with.</em></p><p>As Stani claims <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.lens.xyz/news/introducing-the-new-lens">in his article</a>: “<em>costs on Lens are minimal enough, similar to cloud server costs, for developers to easily absorb them.</em>”</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/8fcSviC7cRM?si=4rjSZwvkadfr7xDI&amp;t=28">Developers</a> will have powerful infra and tools necessary to develop in the socialFi ecosystem and the costs will be so low that the dev itself can take care of it (bro like shipping some backend on a cloud provider; don’t you ask Jo Mama the money to do it?), finally abstracting blockchain usage from end user and creating new business models than the simple “Let’s do that in exchange of a small fee” approach.</p><p>Haven&apos;t you tried the Lens testnet yet? Here&apos;s your chance -→ ** <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dev-preview.lens.xyz/docs/network/using-lens-network">Using Lens Network</a>.**</p>]]></content:encoded>
            <author>fabriziogianni7@newsletter.paragraph.com (Fabriziogianni7)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/2596bfae67e34151383296fb99f9842de077e82557fb2f5492448ce21247ec8f.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>