<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roman Horishkov</title>
    <description>The latest articles on DEV Community by Roman Horishkov (@roman_horishkov_e8d6e30c3).</description>
    <link>https://dev.to/roman_horishkov_e8d6e30c3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3033862%2F5c61eea0-9cb0-43f2-87e6-ada8159126fd.png</url>
      <title>DEV Community: Roman Horishkov</title>
      <link>https://dev.to/roman_horishkov_e8d6e30c3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roman_horishkov_e8d6e30c3"/>
    <language>en</language>
    <item>
      <title>How to deploy a smart contract on NEAR using Windows: A step-by-step guide</title>
      <dc:creator>Roman Horishkov</dc:creator>
      <pubDate>Tue, 22 Apr 2025 11:06:34 +0000</pubDate>
      <link>https://dev.to/roman_horishkov_e8d6e30c3/how-to-deploy-a-smart-contract-on-near-using-windows-a-step-by-step-guide-4deo</link>
      <guid>https://dev.to/roman_horishkov_e8d6e30c3/how-to-deploy-a-smart-contract-on-near-using-windows-a-step-by-step-guide-4deo</guid>
      <description>&lt;p&gt;&lt;strong&gt;How to deploy a smart contract on NEAR using Windows: A step-by-step guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;No Linux expertise required — just WSL, coffee, and patience! ☕&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;🚨 &lt;em&gt;Troubleshooting common issues&lt;/em&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Permission errors:

&lt;ol&gt;
&lt;li&gt;Add &lt;strong&gt;sudo&lt;/strong&gt; to commands (e.g., &lt;strong&gt;sudo apt-get update&lt;/strong&gt;).&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Node.js/NPM installation fails:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reinstall Ubuntu:
&lt;code&gt;wsl --unregister Ubuntu  
wsl --install --d Ubuntu&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Transaction failures:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check gas limits: Use gas: &lt;strong&gt;"300000000000000"&lt;/strong&gt; in &lt;strong&gt;functionCall&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Validate account ID formatting (e.g., &lt;strong&gt;alex_work.testnet&lt;/strong&gt;).&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;🛠️ &lt;em&gt;Step 1: Set up Windows Subsystem for Linux (WSL)&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;NEAR’s tooling works best on Linux, but Windows users can bypass this with WSL (a lightweight Linux VM).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run these commands in PowerShell (Admin):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wsl --set-default-version 2  # Use WSL2 for better performance  &lt;br&gt;
wsl --install --d Ubuntu     # Install Ubuntu&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch Ubuntu from the Start Menu.&lt;/li&gt;
&lt;li&gt;Create a UNIX username/password (store it somewhere safe).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;💻 &lt;em&gt;Step 2: Install dependencies in Ubuntu&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Copy-paste these commands into your Ubuntu terminal:&lt;/p&gt;

&lt;p&gt;Update packages, install dev tools, Rust &amp;amp; WASM target, NEAR CLI, and cargo-near&lt;br&gt;
&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt upgrade -y  &lt;br&gt;
sudo apt-get install gcc make libudev-dev openssl pkg-config unzip -y  &lt;br&gt;
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  &lt;br&gt;
source $HOME/.cargo/env  &lt;br&gt;
rustup target add wasm32-unknown-unknown  &lt;br&gt;
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/near-cli-rs/releases/latest/download/near-cli-rs-installer.sh | sh  &lt;br&gt;
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/latest/download/cargo-near-installer.sh | sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the end, you should get this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn12t0dxx3p7hpdmaz8kk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn12t0dxx3p7hpdmaz8kk.png" alt="Image description" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;📦 &lt;em&gt;Step 3: Create &amp;amp; build a smart contract&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;NEAR’s "hello-near" template is perfect for testing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generate a project, compile to WASM &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cargo near new hello-near  &lt;br&gt;
cd hello-near  &lt;br&gt;
cargo near build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Looking for this success message: ✅ Contract successfully built!&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flq9su9n06fyfdav1wzru.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flq9su9n06fyfdav1wzru.png" alt="Image description" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;🔑 &lt;em&gt;Step 4: Deploy to NEAR testnet&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Replace &lt;strong&gt;your-account-id.testnet&lt;/strong&gt; with a unique name (e.g., &lt;strong&gt;alex_work.testnet, which I was using ).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a testnet account (auto-funded via faucet) and Deploy the contract &lt;/p&gt;

&lt;p&gt;&lt;code&gt;near create-account &amp;lt;your-account-id.testnet&amp;gt; --useFaucet  &lt;br&gt;
near deploy &amp;lt;your-account-id.testnet&amp;gt; ./target/near/hello\_near.wasm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is a contract code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Find all our documentation at https://docs.near.org&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;near_sdk&lt;/span&gt;&lt;span class="p"&gt;::{&lt;/span&gt;&lt;span class="k"&gt;log&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;near&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Define the contract structure&lt;/span&gt;
&lt;span class="nd"&gt;#[near(contract_state)]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Contract&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Define the default, which automatically initializes the contract&lt;/span&gt;
&lt;span class="k"&gt;impl&lt;/span&gt; &lt;span class="nb"&gt;Default&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;Contract&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;Self&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;Self&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Implement the contract structure&lt;/span&gt;
&lt;span class="nd"&gt;#[near]&lt;/span&gt;
&lt;span class="k"&gt;impl&lt;/span&gt; &lt;span class="n"&gt;Contract&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Public method - returns the greeting saved, defaulting to DEFAULT_GREETING&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;get_greeting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="py"&gt;.greeting&lt;/span&gt;&lt;span class="nf"&gt;.clone&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Public method - accepts a greeting, such as "howdy", and records it&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;set_greeting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;log&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Saving greeting: {greeting}"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="py"&gt;.greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*
 * The rest of this file holds the inline tests for the code above
 * Learn more about Rust tests: https://doc.rust-lang.org/book/ch11-01-writing-tests.html
 */&lt;/span&gt;
&lt;span class="nd"&gt;#[cfg(test)]&lt;/span&gt;
&lt;span class="k"&gt;mod&lt;/span&gt; &lt;span class="n"&gt;tests&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;#[test]&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;get_default_greeting&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;contract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Contract&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="c1"&gt;// this test did not call set_greeting so should return the default "Hello" greeting&lt;/span&gt;
        &lt;span class="nd"&gt;assert_eq!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contract&lt;/span&gt;&lt;span class="nf"&gt;.get_greeting&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;#[test]&lt;/span&gt;
    &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;set_then_get_greeting&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="n"&gt;contract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Contract&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;default&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;contract&lt;/span&gt;&lt;span class="nf"&gt;.set_greeting&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"howdy"&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
        &lt;span class="nd"&gt;assert_eq!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contract&lt;/span&gt;&lt;span class="nf"&gt;.get_greeting&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;"howdy"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My deployment stats (&lt;a href="https://testnet.nearblocks.io/address/alex_work.testnet" rel="noopener noreferrer"&gt;View on NearBlocks&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; 0.000757 Ⓝ (~$0.0015 USD).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; Less than 1 second.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;📝 &lt;em&gt;Step 5: Interact with Your Contract&lt;/em&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Set a Greeting (Cost: 0.000168 Ⓝ):&lt;br&gt;
&lt;code&gt;near call &amp;lt;your-account-id.testnet&amp;gt; set\_greeting '{"greeting": "Hola NEAR!"}' --accountId &amp;lt;your-account-id.testnet&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Read the Greeting (Free):&lt;br&gt;
&lt;code&gt;near view &amp;lt;your-account-id.testnet&amp;gt; get\_greeting&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Output: &lt;strong&gt;"Hola NEAR!"&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Total spent: 0.000925 Ⓝ&lt;/strong&gt; (~$0.002 USD) for deployment + interaction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn7j2lj7krpb1e2d5eb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvn7j2lj7krpb1e2d5eb7.png" alt="Image description" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;🎉 &lt;em&gt;Why NEAR dominates&lt;/em&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt;: 1000x cheaper than Ethereum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt;: Transactions finalize faster than typing a tweet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt;: No MetaMask popups or gas anxiety.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Guides for Further Learning&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.near.org/blog/getting-started-on-windows" rel="noopener noreferrer"&gt;NEAR Windows Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.near.org/smart-contracts/quickstart?code-tabs=rust" rel="noopener noreferrer"&gt;Smart Contract Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Now go build something awesome — and let Ethereum devs wonder how you did it for pennies!&lt;/em&gt; 🚀&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>rust</category>
    </item>
    <item>
      <title>My First Week on NEAR Protocol as a Developer: From Skeptic to Advocate</title>
      <dc:creator>Roman Horishkov</dc:creator>
      <pubDate>Thu, 17 Apr 2025 17:18:56 +0000</pubDate>
      <link>https://dev.to/roman_horishkov_e8d6e30c3/my-first-week-on-near-protocol-as-a-developer-from-skeptic-to-advocate-3g0c</link>
      <guid>https://dev.to/roman_horishkov_e8d6e30c3/my-first-week-on-near-protocol-as-a-developer-from-skeptic-to-advocate-3g0c</guid>
      <description>&lt;p&gt;Hey builders 👋,&lt;/p&gt;

&lt;p&gt;I’ve spent years tinkering with Ethereum, Solidity, and the usual L2 suspects. But last week, I decided to dive into &lt;strong&gt;NEAR Protocol&lt;/strong&gt;—and holy cow, it felt like swapping a rusty bike for a Tesla. Here’s my journey, complete with code, aha moments, and a &lt;em&gt;very&lt;/em&gt; happy wallet.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_w4y1qwjkufdd"&gt;&lt;/a&gt;🌅 &lt;em&gt;Day 1: Setting up (Faucets, wallets, and Zero gas panic)&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why NEAR?&lt;/strong&gt;Ethereum’s gas fees had turned my hobby projects into a financial burden. NEAR’s promise of &lt;strong&gt;sub-cent transactions&lt;/strong&gt; and &lt;strong&gt;Rust/Wasm support&lt;/strong&gt; hooked me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.    &lt;strong&gt;Created a NEAR wallet&lt;/strong&gt; in 30 seconds: &lt;a href="https://wallet.near.org/" rel="noopener noreferrer"&gt;wallet.near.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2.    &lt;strong&gt;Grabbed testnet tokens&lt;/strong&gt; from the faucet: No KYC, no drama.&lt;/p&gt;

&lt;p&gt;3.    &lt;strong&gt;Installed NEAR CLI&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g near-cli-rs&lt;br&gt;
near login&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Immediate win:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Gas Costs&lt;/strong&gt;: Sent 10 test transactions for less than $0.01 total. Ethereum could never.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_u59zsekmt60w"&gt;&lt;/a&gt;📝 _Day 2: Deploying my first smart contract (Rust FTW)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The project:&lt;/strong&gt; A simple DAO voting contract.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code snippet (Rust):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n45i879p3tq241e9o6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n45i879p3tq241e9o6d.png" alt="Image description" width="687" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69dw2meoupid1aaeq14p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69dw2meoupid1aaeq14p.png" alt="Image description" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why NEAR won me over:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;No Solidity: &lt;/strong&gt;Rust’s safety + WASM’s speed = fewer runtime errors.&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Instant finality: &lt;/strong&gt;Transactions are confirmed in 2 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_jbnj3c3jm4wr"&gt;&lt;/a&gt;🖥️ _Day 3: Building a Web3 frontend
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task: &lt;/strong&gt;Connect a React app using NEAR’s recommended workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Snippet (JavaScript):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftazpbzubp35so47o2jg6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftazpbzubp35so47o2jg6.png" alt="Image description" width="714" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;●      Users could vote &lt;strong&gt;without gas prompts&lt;/strong&gt; (sponsored transactions FTW).&lt;/p&gt;

&lt;p&gt;●      Frontend updates were seamless—no waiting for 12 block confirmations.&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Seamless Reads/Writes&lt;/strong&gt; of viewFunction and functionCall mirror NEAR’s official examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_9hvqz0tn3yrb"&gt;&lt;/a&gt;🌐 _Day 4: Exploring the NEAR Ecosystem (BOS + Aurora)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Discoveries:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.    &lt;strong&gt;Aurora EVM&lt;/strong&gt;: Deployed my old Solidity contracts with &lt;strong&gt;2-second finality&lt;/strong&gt; and &lt;strong&gt;$0.001 fees&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;○      Tutorial: &lt;a href="https://doc.aurora.dev/" rel="noopener noreferrer"&gt;Aurora + NEAR Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.    &lt;strong&gt;BOS (Blockchain Operating System)&lt;/strong&gt;: Glued together components from different chains into one UI.&lt;/p&gt;

&lt;p&gt;○      Example: &lt;a href="https://banyan-collective.notion.site/Building-on-bOS-c27163e5c01f4780bde50da89f8ebf4b" rel="noopener noreferrer"&gt;BOS Component Gallery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mind blown:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Rainbow Bridge&lt;/strong&gt;: Moved ETH to NEAR in 5 minutes.&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;NEAR Social&lt;/strong&gt;: Built a profile like a Web3 LinkedIn.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_43u966tb71hn"&gt;&lt;/a&gt;🚧 _Day 5: Debugging (Yes, even NEAR has quirks)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Debugging snippet:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf5jwqjtjiyv5wuqs5k5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf5jwqjtjiyv5wuqs5k5.png" alt="Image description" width="536" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges faced:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.    &lt;strong&gt;Rust learning curve&lt;/strong&gt;: Borrow checker fights 😤.&lt;/p&gt;

&lt;p&gt;○      Fix: Used &lt;a href="https://www.near-sdk.io/" rel="noopener noreferrer"&gt;NEAR Rust Docs&lt;/a&gt; for reference.&lt;/p&gt;

&lt;p&gt;2.    &lt;strong&gt;Sparse SDK examples&lt;/strong&gt;: Some advanced features lacked tutorials.&lt;/p&gt;

&lt;p&gt;○      Fix: Joined &lt;a href="https://near.chat/" rel="noopener noreferrer"&gt;NEAR Discord&lt;/a&gt;—community helped instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson learned:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      NEAR’s tooling is young but growing fast. The tradeoff? Less boilerplate, more flexibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a id="_kvo2c5554m4x"&gt;&lt;/a&gt;🏁 _Final takeaways
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why NEAR?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Cost&lt;/strong&gt;: 1000x cheaper than Ethereum.&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;Speed&lt;/strong&gt;: Sub-3-second transactions.&lt;/p&gt;

&lt;p&gt;●      &lt;strong&gt;UX&lt;/strong&gt;: Wallet integrations feel &lt;em&gt;magical&lt;/em&gt; for end-users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to Choose NEAR:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;●      You’re building &lt;strong&gt;user-first dApps&lt;/strong&gt; (no gas popups!).&lt;/p&gt;

&lt;p&gt;●      You want &lt;strong&gt;Rust’s safety&lt;/strong&gt; without Solidity’s quirks.&lt;/p&gt;

&lt;p&gt;●      Your app needs &lt;strong&gt;cross-chain features&lt;/strong&gt; (Aurora + BOS = cheat code).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Started Now:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.    &lt;a href="https://docs.near.org/" rel="noopener noreferrer"&gt;NEAR Docs&lt;/a&gt;: Best place to start.&lt;/p&gt;

&lt;p&gt;2.    &lt;a href="https://github.com/near-examples" rel="noopener noreferrer"&gt;NEAR Examples&lt;/a&gt;: Code templates for everything.&lt;/p&gt;

&lt;p&gt;3.    &lt;a href="https://aurora.dev/" rel="noopener noreferrer"&gt;Aurora&lt;/a&gt;: For Ethereum refugees.&lt;/p&gt;

&lt;p&gt;Peace,\&lt;br&gt;
— A dev who finally built something without crying over gas fees. 🚀&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>Why I changed Uniswap to Rhea Finance for my dApp (Spoiler: Dev life just got easier)</title>
      <dc:creator>Roman Horishkov</dc:creator>
      <pubDate>Wed, 09 Apr 2025 12:08:04 +0000</pubDate>
      <link>https://dev.to/roman_horishkov_e8d6e30c3/why-i-changed-uniswap-to-rhea-finance-for-my-dapp-spoiler-dev-life-just-got-easier-cbk</link>
      <guid>https://dev.to/roman_horishkov_e8d6e30c3/why-i-changed-uniswap-to-rhea-finance-for-my-dapp-spoiler-dev-life-just-got-easier-cbk</guid>
      <description>&lt;h1&gt;
  
  
  &lt;em&gt;Why I changed Uniswap to Rhea Finance for my dApp (Spoiler: Dev life just got easier)&lt;/em&gt;
&lt;/h1&gt;

&lt;p&gt;Hey fellow devs 👋,  &lt;/p&gt;

&lt;p&gt;I wanted to share a recent shift in my stack that's saved me time, gas, and headaches. For years, I built on Uniswap — solid protocol, great liquidity, no complaints. But when I started developing a high-frequency trading dApp, Ethereum's gas fees and Uniswap's integration complexity became a wall. Enter Rhea Finance on NEAR Protocol. Here's why I made the switch—and why you might consider it too.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;😤 The Uniswap struggle&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Uniswap's SDK is powerful, but integrating even basic features felt like running a marathon. For example, &lt;strong&gt;adding liquidity&lt;/strong&gt; required:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ERC-20 approvals (hello, gas waste!).
&lt;/li&gt;
&lt;li&gt;Complex slippage calculations.
&lt;/li&gt;
&lt;li&gt;Praying for no reverts mid-flow.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s what that looked like in code:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3uegy6093tiszdc6lx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3uegy6093tiszdc6lx3.png" alt="Image description" width="800" height="474"&gt;&lt;/a&gt;&lt;br&gt;
And don't get me started on debugging failed txns costing $50 a pop.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;🚀 Rhea Finance: "The simplicity you needed"&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Ref's NEAR-based contracts cut steps (and costs) dramatically. Here’s the same liquidity addition on Ref:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3jjaobzj6q12rocqojk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3jjaobzj6q12rocqojk.png" alt="Image description" width="518" height="147"&gt;&lt;/a&gt;&lt;br&gt;
Why this won me over:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No approvals&lt;/strong&gt;: NEAR's account model handles permissions natively.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic transactions&lt;/strong&gt;: Bundle swaps, deposits, and stakes in one tx.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gas costs under 0.01&lt;/strong&gt;: &lt;em&gt;Itested100iterationsforlessthan1cent&lt;/em&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;🔄 Uniswap vs Ref. Code comparison (swaps)&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Uniswap (Ethereum):&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou3uzaqvqmkn0hx73dxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou3uzaqvqmkn0hx73dxu.png" alt="Image description" width="605" height="384"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Rhea Finance (NEAR):&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmltfee90x5atrqccuqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmltfee90x5atrqccuqy.png" alt="Image description" width="639" height="346"&gt;&lt;/a&gt;&lt;br&gt;
No dependency on external routers. Less code = fewer bugs.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Rhea is the winner🏆&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;🛠️ Fetching Pool Data&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Uniswap (The Graph Subgraph)&lt;/strong&gt;&lt;br&gt;
Requires querying a subgraph:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgskc9qe64e9yowq2nosc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgskc9qe64e9yowq2nosc.png" alt="Image description" width="681" height="409"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Rhea Finance (Direct Contract Call)&lt;/strong&gt;&lt;br&gt;
Query the contract directly via NEAR’s RPC:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadhodydajfhduf2dmycu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadhodydajfhduf2dmycu.png" alt="Image description" width="427" height="132"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Why the Rhea wins here:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No reliance on third-party indexers like The Graph.
&lt;/li&gt;
&lt;li&gt;Direct contract reads simplify data fetching.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;⚠️ Caveats to Know&lt;/em&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Rhea SDK is still evolving (official docs say it's "coming soon"), so compared to Uniswap's battle-tested SDK, it is less complete. But you can use NEAR's core SDK (near-api-js) today for all critical operations.&lt;br&gt;&lt;br&gt;
a. Uniswap's SDK is like IKEA furniture: pre-packaged but rigid.&lt;br&gt;&lt;br&gt;
b. Rhea + NEAR SDK is like a toolbox: fewer pre-built solutions, but you can craft exactly what you need.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smaller liquidity pools. Unfortunately, Uniswap's depth is unmatched, but NEAR's Rainbow Bridge lets you port Ethereum assets over.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;🛠 When to Choose Ref&lt;/em&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You're building cost-sensitive apps (e.g., microtransactions, social tokens).
&lt;/li&gt;
&lt;li&gt;You want atomic multi-action flows (e.g., swap + stake + mint NFT in one click).
&lt;/li&gt;
&lt;li&gt;You prefer Rust/Wasm's performance over Solidity.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;📅 What You Can Do Today&lt;/em&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a NEAR wallet&lt;/strong&gt; in 30 seconds: &lt;a href="https://wallet.near.org/" rel="noopener noreferrer"&gt;wallet.near.org&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bridge assets via Rainbow Bridge&lt;/strong&gt;: Move ETH or USDC to NEAR in 5 minutes: &lt;a href="https://rainbowbridge.app/" rel="noopener noreferrer"&gt;rainbowbridge.app&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute your first sub-cent swap&lt;/strong&gt;: Trade NEAR for USDT here: &lt;a href="https://ref.finance/" rel="noopener noreferrer"&gt;ref.finance&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;🏁 Final Takeaway&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Uniswap is still king for Ethereum-native apps, but Rhea Finance saved me weeks of dev time (and my users from gas frustration and anxiety). If you're tired of Metamask popups and want to ship faster, give Rhea a shot—just double-check the contracts if the docs are behind.  &lt;/p&gt;

&lt;p&gt;Peace,&lt;br&gt;&lt;br&gt;
—A dev who's finally enjoying his coffee without Metamask popups. ☕  &lt;/p&gt;

</description>
      <category>web3</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
