<?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: Kurt</title>
    <description>The latest articles on DEV Community by Kurt (@kurt0x).</description>
    <link>https://dev.to/kurt0x</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%2F3674185%2F31a4b0cd-c2b7-430b-86f3-62a64561a124.jpeg</url>
      <title>DEV Community: Kurt</title>
      <link>https://dev.to/kurt0x</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kurt0x"/>
    <language>en</language>
    <item>
      <title>Ethereum Account Abstraction (ERC-4337), Part 2: Implementation</title>
      <dc:creator>Kurt</dc:creator>
      <pubDate>Tue, 30 Dec 2025 16:56:06 +0000</pubDate>
      <link>https://dev.to/kurt0x/ethereum-account-abstraction-erc-4337-part-2-implementation-167</link>
      <guid>https://dev.to/kurt0x/ethereum-account-abstraction-erc-4337-part-2-implementation-167</guid>
      <description>&lt;p&gt;If you’re building on Ethereum, ERC-4337 lets you move beyond standard EOAs. In Part 2 of my series, I walk through implementing a smart account and connecting it to a frontend.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Build
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A smart account that validates owner signatures&lt;/li&gt;
&lt;li&gt;Executes arbitrary contract calls&lt;/li&gt;
&lt;li&gt;Handles gas via UserOperations&lt;/li&gt;
&lt;li&gt;Connects seamlessly to a frontend and bundler&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Encode your target contract call and wrap it in the account’s &lt;code&gt;execute()&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;Estimate gas using a bundler with a special estimation signature.&lt;/li&gt;
&lt;li&gt;Sign the UserOperation and submit it to the bundler.&lt;/li&gt;
&lt;li&gt;EntryPoint validates and executes the operation, reimbursing the bundler from the account’s deposit.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full on-chain validation without trusting the bundler&lt;/li&gt;
&lt;li&gt;Deterministic execution for arbitrary calls&lt;/li&gt;
&lt;li&gt;Minimal, complete ERC-4337 workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the full walkthrough with code snippets, check out my Medium article: &lt;a href="https://medium.com/p/account-abstraction-erc-4337-part-2-implementation-d377f1cf0d97" rel="noopener noreferrer"&gt;Part 2: Implementation&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ethereum</category>
      <category>web3</category>
      <category>solidity</category>
    </item>
    <item>
      <title>Ethereum Account Abstraction (ERC-4337) Explained – Part 1</title>
      <dc:creator>Kurt</dc:creator>
      <pubDate>Sun, 28 Dec 2025 17:30:07 +0000</pubDate>
      <link>https://dev.to/kurt0x/ethereum-account-abstraction-erc-4337-explained-part-1-4fg1</link>
      <guid>https://dev.to/kurt0x/ethereum-account-abstraction-erc-4337-explained-part-1-4fg1</guid>
      <description>&lt;p&gt;Ethereum developers, if you’ve been curious about account abstraction, this post is for you. I’ve just published &lt;strong&gt;Part 1 of my Medium series&lt;/strong&gt; on ERC-4337, and here’s a developer-friendly breakdown of the basics.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why ERC-4337 Matters
&lt;/h3&gt;

&lt;p&gt;Ethereum EOAs are rigid by design: nonces, gas payments, and validation are protocol-defined. Account abstraction lets the account itself define its behavior. ERC-4337 achieves most of this without changing Ethereum consensus.&lt;/p&gt;




&lt;h3&gt;
  
  
  Intent vs Transaction
&lt;/h3&gt;

&lt;p&gt;Instead of sending a transaction, ERC-4337 uses &lt;strong&gt;UserOperations&lt;/strong&gt;, essentially “intents”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sender&lt;/code&gt;: the account address&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nonce&lt;/code&gt;: account-specific nonce&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;callData&lt;/code&gt;: function call data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;signature&lt;/code&gt;: proof of authorization&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;paymaster&lt;/code&gt;: optional gas sponsor&lt;/li&gt;
&lt;li&gt;gas limits and metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These UserOperations stay off-chain until included by a bundler.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bundlers:&lt;/strong&gt; Collect, simulate, and submit UserOperations as single transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EntryPoint:&lt;/strong&gt; A shared contract that executes UserOperations on accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paymasters:&lt;/strong&gt; Optional contracts to sponsor gas for users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All ERC-4337 logic flows through these components, but Ethereum itself only sees normal transactions calling the EntryPoint.&lt;/p&gt;




&lt;h3&gt;
  
  
  Related Standards
&lt;/h3&gt;

&lt;p&gt;ERC-4337 builds on existing standards: EIP-1271 (contract signatures), ERC-165 (interface detection), ERC-7579 (modular accounts), and EIP-7702 (future directions).&lt;/p&gt;




&lt;p&gt;For the full breakdown with architecture diagrams, sequence flows, and examples, check out the &lt;strong&gt;original Medium article&lt;/strong&gt; here: &lt;br&gt;
&lt;a href="https://medium.com/@Kurt0x/account-abstraction-erc-4337-part-1-the-basics-da3dee805a24" rel="noopener noreferrer"&gt;https://medium.com/@Kurt0x/account-abstraction-erc-4337-part-1-the-basics-da3dee805a24&lt;/a&gt;&lt;/p&gt;

</description>
      <category>accountabstraction</category>
      <category>ethereum</category>
      <category>web3</category>
      <category>solidity</category>
    </item>
    <item>
      <title>How I Found Jobs I Might Have Missed</title>
      <dc:creator>Kurt</dc:creator>
      <pubDate>Fri, 26 Dec 2025 16:49:50 +0000</pubDate>
      <link>https://dev.to/kurt0x/how-i-found-jobs-i-might-have-missed-415h</link>
      <guid>https://dev.to/kurt0x/how-i-found-jobs-i-might-have-missed-415h</guid>
      <description>&lt;p&gt;I discovered &lt;strong&gt;over 6,000 job openings&lt;/strong&gt;, filtered them to &lt;strong&gt;100 Solidity-related positions&lt;/strong&gt;, and applied to &lt;strong&gt;20 jobs&lt;/strong&gt; I hadn’t seen on any regular job boards.&lt;/p&gt;

&lt;p&gt;I realized I might be missing opportunities, so I built a small web scraper to search multiple platforms like Greenhouse, Breezy, and Lever. The goal was simple: find jobs that weren’t easy to see and get a full view of the market.&lt;/p&gt;

&lt;p&gt;I’m not sharing the code because it was for my personal use, and some sites might restrict automated scraping in their Terms of Service. The point of this article is to show what I achieved, not provide a ready-to-run tool.&lt;/p&gt;

&lt;p&gt;Running this project taught me a lot about automation, handling inconsistent data, and overcoming web scraping challenges. A small technical tool made a real difference in my job search.&lt;/p&gt;

&lt;p&gt;For a full breakdown of &lt;strong&gt;how I built the scraper, the challenges I faced, and the lessons I learned&lt;/strong&gt;, check out my Medium article here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@Kurt0x/i-built-a-script-to-find-jobs-i-might-have-missed-053106fde7df" rel="noopener noreferrer"&gt;https://medium.com/@Kurt0x/i-built-a-script-to-find-jobs-i-might-have-missed-053106fde7df&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>solidity</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Sending EIP-4844 Blob Transactions with ethers.js and kzg-wasm</title>
      <dc:creator>Kurt</dc:creator>
      <pubDate>Mon, 22 Dec 2025 21:19:43 +0000</pubDate>
      <link>https://dev.to/kurt0x/sending-eip-4844-blob-transactions-with-ethersjs-and-kzg-wasm-306a</link>
      <guid>https://dev.to/kurt0x/sending-eip-4844-blob-transactions-with-ethersjs-and-kzg-wasm-306a</guid>
      <description>&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%2Fwkb1umvy0hci4jl35xdh.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%2Fwkb1umvy0hci4jl35xdh.png" alt="BlobBytes" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EIP-4844 introduces &lt;strong&gt;blob transactions (Type 3)&lt;/strong&gt; as part of Proto-Danksharding. Sending blob transactions in practice comes with constraints around tooling, RPC support, and transaction preparation.&lt;/p&gt;

&lt;p&gt;This article summarizes hands-on experimentation with &lt;strong&gt;ethers.js v6&lt;/strong&gt; and &lt;strong&gt;kzg-wasm&lt;/strong&gt;, focusing on what works, what does not, and how to get a minimal setup running.&lt;/p&gt;




&lt;p&gt;If you just want to create a blob without diving into code, &lt;strong&gt;&lt;a href="https://blobsender.xyz" rel="noopener noreferrer"&gt;https://blobsender.xyz&lt;/a&gt;&lt;/strong&gt; lets anyone write a message and submit it as a blob on Ethereum.&lt;/p&gt;




&lt;h3&gt;
  
  
  Current limitations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Browser wallets and connectors do not support blob transactions yet.&lt;/strong&gt;&lt;br&gt;
They must be sent from a backend or script controlling a private key directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RPC support is inconsistent.&lt;/strong&gt;&lt;br&gt;
Even on Sepolia, many public RPC endpoints reject blob transactions or do not support EIP-4844.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  RPC support on Sepolia
&lt;/h3&gt;

&lt;p&gt;RPC support was one of the main friction points. About &lt;strong&gt;20 Sepolia RPC providers&lt;/strong&gt; were tested. Many rejected blob transactions or lacked EIP-4844 support.&lt;/p&gt;

&lt;p&gt;The following public RPC endpoints worked reliably:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sepolia.infura.io/v3/YOUR_API_KEY" rel="noopener noreferrer"&gt;https://sepolia.infura.io/v3/YOUR_API_KEY&lt;/a&gt;&lt;br&gt;
&lt;a href="https://ethereum-sepolia-rpc.publicnode.com" rel="noopener noreferrer"&gt;https://ethereum-sepolia-rpc.publicnode.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://eth-sepolia.api.onfinality.io/public" rel="noopener noreferrer"&gt;https://eth-sepolia.api.onfinality.io/public&lt;/a&gt;&lt;br&gt;
&lt;a href="https://0xrpc.io/sep" rel="noopener noreferrer"&gt;https://0xrpc.io/sep&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sepolia.drpc.org" rel="noopener noreferrer"&gt;https://sepolia.drpc.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This list is included in the repository to save others testing time.&lt;/p&gt;




&lt;h3&gt;
  
  
  Repository and code
&lt;/h3&gt;

&lt;p&gt;All working examples live here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/0xKurt/eip-4844-ethers-examples" rel="noopener noreferrer"&gt;https://github.com/0xKurt/eip-4844-ethers-examples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains &lt;strong&gt;two scripts&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;send-blob.ts&lt;/strong&gt; – a simple blob transaction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;send-blob-contract.ts&lt;/strong&gt; – a blob transaction combined with a contract call&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both use &lt;strong&gt;ethers.js v6&lt;/strong&gt; and &lt;strong&gt;kzg-wasm&lt;/strong&gt;, and send &lt;strong&gt;Type 3 transactions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At a high level, sending a blob transaction requires preparing a fixed-size blob, generating a &lt;strong&gt;KZG commitment&lt;/strong&gt; and &lt;strong&gt;proof&lt;/strong&gt;, and sending a transaction with &lt;code&gt;type: 3&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Blobscan
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Blobscan&lt;/strong&gt; allows inspection of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;blob versioned hashes&lt;/li&gt;
&lt;li&gt;blob gas prices&lt;/li&gt;
&lt;li&gt;other blob-related metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The scripts print direct links to Blobscan using the blob versioned hash returned by ethers, making verification and inspection easy.&lt;/p&gt;




&lt;h3&gt;
  
  
  Full walkthrough
&lt;/h3&gt;

&lt;p&gt;This post is a condensed summary. A complete step-by-step walkthrough of setup, code, and transaction flow is available in the original Medium article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@Kurt0x/sending-eip-4844-blob-transactions-using-ethers-js-and-kzg-wasm-d84224be6b81" rel="noopener noreferrer"&gt;https://medium.com/@Kurt0x/sending-eip-4844-blob-transactions-using-ethers-js-and-kzg-wasm-d84224be6b81&lt;/a&gt;&lt;/p&gt;

</description>
      <category>eip4844</category>
      <category>protodarksharding</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
