<?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>secoalba</title>
        <link>https://paragraph.com/@secoalba</link>
        <description>undefined</description>
        <lastBuildDate>Tue, 07 Apr 2026 17:25:29 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>secoalba</title>
            <url>https://storage.googleapis.com/papyrus_images/b538e9f375d9214e86f769ef92c5e3e20ca99d0e5bd6c61499f3f6093f2a4fb6.jpg</url>
            <link>https://paragraph.com/@secoalba</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Practical examples with ityfuzz]]></title>
            <link>https://paragraph.com/@secoalba/practical-examples-with-ityfuzz</link>
            <guid>ytk9WMnRMvGXIyAq70yl</guid>
            <pubDate>Wed, 13 Mar 2024 17:25:48 GMT</pubDate>
            <description><![CDATA[In this article, I have compiled the latest videos shared on the usage of ityfuzz with practical examples. https://x.com/Seecoalba/status/1760426413142761600?s=20 https://x.com/Seecoalba/status/1760649899975069774?s=20 https://x.com/Seecoalba/status/1766147963628159141?s=20 https://x.com/Seecoalba/status/1767485484912054617?s=20 https://x.com/Seecoalba/status/1767963227671990411?s=20]]></description>
            <content:encoded><![CDATA[<p>In this article, I have compiled the latest videos shared on the usage of ityfuzz with practical examples.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Seecoalba/status/1760426413142761600?s=20">https://x.com/Seecoalba/status/1760426413142761600?s=20</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Seecoalba/status/1760649899975069774?s=20">https://x.com/Seecoalba/status/1760649899975069774?s=20</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Seecoalba/status/1766147963628159141?s=20">https://x.com/Seecoalba/status/1766147963628159141?s=20</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Seecoalba/status/1767485484912054617?s=20">https://x.com/Seecoalba/status/1767485484912054617?s=20</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Seecoalba/status/1767963227671990411?s=20">https://x.com/Seecoalba/status/1767963227671990411?s=20</a></p>]]></content:encoded>
            <author>secoalba@newsletter.paragraph.com (secoalba)</author>
        </item>
        <item>
            <title><![CDATA[Guide to using ItyFuzz]]></title>
            <link>https://paragraph.com/@secoalba/guide-to-using-ityfuzz</link>
            <guid>bG03iKlpA702EGFpLp6I</guid>
            <pubDate>Fri, 16 Feb 2024 12:21:16 GMT</pubDate>
            <description><![CDATA[This guide serves as the inaugural article in a series dedicated to ityfuzz. Here, I&apos;ll walk you through the process of getting started with this powerful tool. We&apos;ll adopt a straightforward, step-by-step approach to ensure a seamless initiation. You&apos;ll gain insights into the essential installations necessary to kickstart your journey with ityfuzz Additionally, I&apos;ll offer detailed instructions on how to utilize it across different project types, ensuring flexibility and st...]]></description>
            <content:encoded><![CDATA[<p>This guide serves as the inaugural article in a series dedicated to <strong>ityfuzz</strong>.</p><p>Here, I&apos;ll walk you through the process of getting started with this powerful tool. We&apos;ll adopt a straightforward, step-by-step approach to ensure a seamless initiation.</p><p>You&apos;ll gain insights into the essential installations necessary to kickstart your journey with ityfuzz</p><p>Additionally, I&apos;ll offer detailed instructions on how to utilize it across different project types, ensuring flexibility and straightforward integration.</p><h2 id="h-short-introduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Short introduction</h2><p>ItyFuzz is a hybrid fuzzer for smart contracts that combines symbolic execution and fuzzing to find errors in smart contracts.</p><p>Technically, it uses formal verification (concolic execution) assisted by fuzzing algorithms guided by data flow patterns and comparisons.</p><h2 id="h-installation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Installation</h2><p>The first thing you need to have installed is:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/fuzzland/ityfuzz/tree/master">ityfuzz</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/fuzzland/blazo/tree/main">blazo</a></p></li></ul><h2 id="h-init" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Init</h2><p>Once you have both <strong>ityfuzz</strong> and <strong>blazo</strong> installed, we&apos;ll begin by creating a new Foundry project.</p><p>We copy the contract we want to test and make the following modifications:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0065a9461ce8d9e507f2595e69076f7454e06c31b448871a03776aa6d7e77a56.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Manually imported the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/fuzzland/ityfuzz/tree/master/solidity_utils">solidity_utils/lib.sol</a> library into the &quot;lib&quot; folder.</p></li><li><p>Imported the lib/solidity_utils/lib.sol library into our contract.</p></li><li><p>Introduced the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ityfuzz.rs/docs-evm-contract/writing-invariants">&quot;bug()&quot;</a> keyword where we believe it could break the invariant.</p><ul><li><p><em>ItyFuzz also supports</em> <code>bug()</code><em>, which indicates the current code shall not be reached.</em></p></li></ul></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3eeb75faf9e0fea26c411dc1c41f7e8e6e96c5a53e6e269fddd966b9758d2d25.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Once we have all this available, let&apos;s move on to the second part.</p><p>We need to create a <strong>.json</strong> file, for which we&apos;ll need to identify the address of our contract along with its constructor if it&apos;s in bytes32 format.</p><p>To do this, we&apos;ll write a small <strong>script</strong> to obtain the necessary data.</p><h2 id="h-script" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Script</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3eb8eecf05741efae2458a1bab8fa3fc08d330427a86f3b9cf7aec6366e704b5.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><code>forge script “contract name” -vvvvvv</code></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/524b915f9bfe047f20ae2a98e99c7ea88a3f9d052036cdf2b49861f40208085a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-we-create-the-1st-file-called-ttjson-that-we-need" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">We create the 1st file called tt.json that we need:</h2><ul><li><p>We copy the address obtained from the <strong>script</strong> into our <strong>tt.json</strong> file.</p></li></ul><pre data-type="codeBlock" text="{
    &quot;src/PostExample.sol&quot;: {
      &quot;PostExample&quot;: {
        &quot;address&quot;: &quot;0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f&quot;,
        &quot;constructor_args&quot;: &quot;&quot;
      }
    }
}
"><code>{
    "<span class="hljs-attribute">src</span>/PostExample<span class="hljs-selector-class">.sol</span>": {
      "PostExample": {
        "<span class="hljs-selector-tag">address</span>": <span class="hljs-string">"0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f"</span>,
        <span class="hljs-string">"constructor_args"</span>: <span class="hljs-string">""</span>
      }
    }
}
</code></pre><p>It would look something like this:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c671f269b40eef03d7f9b8636bd1b1e18b314580b9f2cc09b446d50484bbdff2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-blazo" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Blazo</h2><p>Once we have all this, we&apos;ll start using the <strong>Blazo</strong> tool.</p><p>We&apos;ll navigate out of our main repository using cd .. as we need to run it from outside the main repository.</p><p>Then, we&apos;ll use the command:</p><ul><li><p><code>blazo “project name”</code></p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bb82cb5d0c522fd55d2c7db8474649881ef9ba96849ca66d275e56e7ecd389a1.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Once we&apos;ve obtained the result, another JSON file named <strong>results.json</strong> should have been created.</p><p>It would look like this:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9fd808573c739aef31a687fba0bf196997677b36d0e928de9882de6713c53190.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-ityfuzz" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ityfuzz</h2><p>Once we&apos;ve confirmed that we have the two files created correctly, we&apos;ll proceed with running <strong>ityfuzz</strong> to see if we can find any results within the code.</p><ul><li><p><code>ityfuzz evm --builder-artifacts-file &apos;./results.json&apos; --offchain-config-file &apos;./tt.json&apos; -t &quot;a&quot; -f</code></p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0bb82d11a598b6a3b73db06aa62df84d9b02f9b9ade80fc5a99a9a67994bb1d0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>And as we can see, <strong>ityfuzz</strong> has managed to find a code violation for this contract.</p>]]></content:encoded>
            <author>secoalba@newsletter.paragraph.com (secoalba)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/412b34d9733160142f5cb4f3e8b471cca778e2c68759b7752627f4a40710f242.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[A Guide to Formal Verification and Practical Tools]]></title>
            <link>https://paragraph.com/@secoalba/a-guide-to-formal-verification-and-practical-tools</link>
            <guid>61YBM7iYVolbNH3UudLE</guid>
            <pubDate>Sat, 27 Jan 2024 12:52:33 GMT</pubDate>
            <description><![CDATA[Introduction: A Guide to Formal Verification and Practical Tools delves into the world of Formal Verification in blockchain development. Here, we explore fundamental concepts, techniques, and essential tools instrumental in ensuring the security and accuracy of blockchain applications. Formal Verification and Symbolic Execution: Formal Verification (FV) uses mathematical modeling and logical analysis to ensure program security and correctness. A key aspect of FV is symbolic execution, which a...]]></description>
            <content:encoded><![CDATA[<p><strong>Introduction:</strong></p><p><strong>A Guide to Formal Verification and Practical Tools</strong> delves into the world of Formal Verification in blockchain development. Here, we explore fundamental concepts, techniques, and essential tools instrumental in ensuring the security and accuracy of blockchain applications.</p><p><strong>Formal Verification and Symbolic Execution:</strong></p><p>Formal Verification (FV) uses mathematical modeling and logical analysis to ensure program security and correctness. A key aspect of FV is symbolic execution, which assigns symbolic values to inputs, allowing the exploration of various program paths in a single analysis. This technique helps verify if a program can violate certain conditions or reach risky states, using tools like SMT solvers for feasibility assessment. Symbolic execution thus enhances testing, offering a more comprehensive way to establish a program’s safety and correctness.</p><p><strong>Theoretical Resources to Get Started:</strong></p><p>Before diving into practical tools, it&apos;s important to have a solid theoretical foundation. The following resources are excellent starting points:</p><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@SaferMaker/EVM-Sym-Exec">EVM Symbolic Execution</a>: An introduction to symbolic execution in the EVM.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/leonardoalt/ethereum_formal_verification_overview">Ethereum Formal Verification Overview</a>: A detailed overview of formal verification in Ethereum.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/formal-methods-curriculum/tree/master">Formal Methods for DeFi Developers</a>: This repository contains a course sequence for training developers in the use &amp; development of formal methods and formal tools.</p></li></ol><p>Let&apos;s explore some key <strong>tools</strong> in the formal verification of smart contracts:</p><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/a16z/halmos/tree/main"><strong>Halmos</strong></a><strong>:</strong></p><p>An open-source tool that allows developers to reuse unit test properties in formal specifications for the verification of Ethereum smart contract bytecode.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Certora"><strong>Certora</strong></a><strong>:</strong></p><p>Certora Prover is a powerful tool that compares your smart contract bytecode against a rule detailing how you expect your code to behave.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/runtimeverification/kontrol">Kontrol</a>:</p></li></ol><p>Provides a formal representation of the EVM and facilitates symbolic execution of smart contract bytecode, combining KEVM and Foundry.</p><ol start="4"><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/hevm"><strong>hevm</strong></a><strong>:</strong></p><p>An EVM implementation for symbolic execution, unit testing, and debugging of smart contracts.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/fuzzland/ityfuzz/tree/master"><strong>Ityfuzz</strong></a><strong>:</strong></p><p>ItyFuzz is a hybrid fuzzer for smart contracts that combines symbolic execution and fuzzing to find errors in smart contracts. Technically, it uses formal verification (concolic execution) assisted by fuzzing algorithms guided by data flow patterns and comparisons.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Jon-Becker/heimdall-rs/tree/main"><strong>Heimdall</strong></a><strong>:</strong></p><p>An advanced tool for smart contract bytecode analysis, specializing in disassembly, control flow graph generation, and decompilation.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/nascentxyz/pyrometer"><strong>Pyrometer</strong></a><strong>:</strong></p><p>Combines symbolic execution, abstract interpretation, and static analysis, focused on Solidity but with the potential to be language-agnostic.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/ser/tree/storage"><strong>Ser</strong></a><strong>:</strong></p><p>Ser is a Symbolic EVM implemented in Rust, designed with the notion that each instruction is a granular state transition. Ser treats instructions as functions over machine states. Each instruction has an <code>exec</code> method that takes a complete machine as an argument and produces a lightweight description of how the instruction would change the machine. Ser is intended to be used primarily as a library or backend for smart contract testing tools.</p></li></ol><p><strong>Resources for Developers:</strong> These resources are essential for developers interested in symbolic execution and formal verification:</p><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/williamberman/evm-symbolic-execution/blob/master/EVM%20Symbolic%20Execution.ipynb">EVM Symbolic Execution Notebook</a>: An interactive guide to understanding EVM symbolic execution.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/formal-methods-curriculum/blob/master/courses/2_Approaches_Modeling_Verification/exercises/1_Symbolic_Execution/exercise_2.ipynb">Formal Methods Curriculum - Symbolic Execution Exercises</a>: Practical exercises for a hands-on experience in symbolic execution.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://colab.research.google.com/github/philzook58/z3_tutorial/blob/master/Z3%20Tutorial.ipynb#scrollTo=oAjN6NFTxcNq">Z3 Tutorial</a>: An extensive tutorial on using the Z3 solver for smart contract verification.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://colab.research.google.com/github/williamberman/evm-symbolic-execution/blob/master/EVM%20Symbolic%20Execution.ipynb?hl=es#scrollTo=43bc62c2">EVM Symbolic Execution Notebook (Spanish Version)</a>: A version of the EVM Symbolic Execution Notebook for Spanish-speaking developers.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://athena-lang.org/learn">Athena Language Learning Resources</a>: A platform offering learning materials for Athena, a language designed for writing formal proofs.</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://theory.stanford.edu/~nikolaj/programmingz3.html">Programming Z3</a>: An online resource providing insights into programming with the Z3 Theorem Prover, authored by an expert in the field.</p></li></ol><p><strong>Conclusion:</strong> Formal Verification provides an in-depth and rigorous approach to ensuring the reliability and security of smart contracts, offering developers a way to confidently affirm the integrity and correctness of their code.</p>]]></content:encoded>
            <author>secoalba@newsletter.paragraph.com (secoalba)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c344256c7440a3c2634df913b7b5f19f87ba233870cca0224fed8b8a9a659528.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Introduction to My Blog]]></title>
            <link>https://paragraph.com/@secoalba/introduction-to-my-blog</link>
            <guid>UixZ8nX4AtXye3zQIprS</guid>
            <pubDate>Sun, 14 Jan 2024 15:04:59 GMT</pubDate>
            <description><![CDATA[Welcome to my blog! I would like to start by introducing myself and sharing with you what we will explore together in this space. I am Sergio, also known as secoalba. My passion for blockchain technology has driven me to develop a deep interest in the security of smart contracts, focusing especially on areas such as formal verification and fuzz testing. Through this blog, my goal is to immerse ourselves together in the fascinating world of blockchain security tools. We will approach this topi...]]></description>
            <content:encoded><![CDATA[<p>Welcome to my blog! I would like to start by introducing myself and sharing with you what we will explore together in this space.</p><p>I am Sergio, also known as <code>secoalba</code>. My passion for blockchain technology has driven me to develop a deep interest in the security of smart contracts, focusing especially on areas such as <strong>formal verification</strong> and <strong>fuzz testing</strong>.</p><p>Through this blog, my goal is to immerse ourselves together in the fascinating world of blockchain <strong>security tools</strong>. We will approach this topic from both a theoretical and practical perspective, offering a balance between conceptual understanding and real application.</p><p>We will start with the basics, introducing each tool and its fundamentals. Gradually, we will delve into more complex examples and applications, in order to develop a deep and practical understanding.</p><p>Additionally, I plan to integrate the development of these tools into our discussions. This will not only allow us to understand how they work but also how they can be improved and adapted to our specific needs.</p><p>For now, I will focus on the following tools:</p><ul><li><p><strong>Ityfuzz</strong></p></li><li><p><strong>Halmos</strong></p></li><li><p><strong>Kontrol</strong></p></li><li><p><strong>Pyrometer</strong></p></li><li><p><strong>Heimdall</strong></p></li></ul><p>As for the topics we will cover, they include:</p><ol><li><p><strong>Practical Uses:</strong> From simple applications to advanced techniques for each tool.</p></li><li><p><strong>Theoretical Fundamentals:</strong> We will explore the internal workings of each tool, providing a more technical and developmental perspective.</p></li><li><p><strong>Formal Verification:</strong> Theory and practice related to formal verification, a crucial aspect of smart contract security.</p></li></ol>]]></content:encoded>
            <author>secoalba@newsletter.paragraph.com (secoalba)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a90dd6b885ce54f3d13aa8d491d3aeb386cb89e2a8d3da08aaa172f3bf81d273.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>