<?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: Hayley Schamberger</title>
    <description>The latest articles on DEV Community by Hayley Schamberger (@hayley_schamberger).</description>
    <link>https://dev.to/hayley_schamberger</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4098905%2F82df0527-2336-4cf5-940a-12cc579b37ed.png</url>
      <title>DEV Community: Hayley Schamberger</title>
      <link>https://dev.to/hayley_schamberger</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hayley_schamberger"/>
    <language>en</language>
    <item>
      <title>How Does Peer-to-Peer Gossip Distribute Pending Transactions?</title>
      <dc:creator>Hayley Schamberger</dc:creator>
      <pubDate>Wed, 09 Sep 2026 21:46:43 +0000</pubDate>
      <link>https://dev.to/hayley_schamberger/how-does-peer-to-peer-gossip-distribute-pending-transactions-ehk</link>
      <guid>https://dev.to/hayley_schamberger/how-does-peer-to-peer-gossip-distribute-pending-transactions-ehk</guid>
      <description>&lt;p&gt;Peer-to-peer gossip distributes a pending transaction by having one node validate it, announce its identifier to selected peers, serve the full transaction on request, and let those peers repeat the process. A pending transaction is a signed instruction accepted by a node but not yet included in a confirmed block. “Gossip” means this peer-to-peer forwarding pattern, not a single broadcast to every computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The path from wallet to mempool
&lt;/h2&gt;

&lt;p&gt;The path starts when a wallet signs the transaction and sends it to a blockchain node, which is a computer running the network’s client software.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Validation comes first.&lt;/strong&gt; The node checks the signature, account balance, transaction format, fee rules, and whether the transaction can execute under the chain’s current state. It also checks ordering rules such as the sender’s nonce, the number that sequences that account’s transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The node stores an accepted transaction locally.&lt;/strong&gt; This local collection is the mempool, or transaction pool. It contains transactions eligible for a future block, not transactions that the whole network has agreed to include.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The node announces the transaction.&lt;/strong&gt; Bitcoin commonly sends an &lt;strong&gt;inv&lt;/strong&gt; message containing the transaction ID. The receiving peer can ask for the full bytes with &lt;strong&gt;getdata&lt;/strong&gt;, after which the sender returns the transaction in a &lt;strong&gt;tx&lt;/strong&gt; message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peers repeat the exchange.&lt;/strong&gt; Ethereum uses a similar two-stage design. A node can send &lt;strong&gt;NewPooledTransactionHashes&lt;/strong&gt;, the hashes of transactions in its pool; a peer that does not already know one can request it with &lt;strong&gt;GetPooledTransactions&lt;/strong&gt;. The transaction then arrives in a &lt;strong&gt;PooledTransactions&lt;/strong&gt; response.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicates are suppressed.&lt;/strong&gt; Nodes remember which transaction hashes each peer has already seen, so they do not endlessly send the same transaction around the network. Each node validates the transaction again before accepting or relaying it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This design saves bandwidth. A short hash announcement travels cheaply to several peers, while the larger transaction body is fetched only by peers that need it. The network is therefore a web of overlapping paths, not a central queue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why “pending” does not mean “everywhere”
&lt;/h2&gt;

&lt;p&gt;Every node has its own view of pending transactions, and those views can differ substantially. A node may reject a transaction because its fee policy is stricter, discard it when its pool is full, or remove it after a restart. A transaction can also be valid but temporarily invisible to the block producer you care about.&lt;/p&gt;

&lt;p&gt;On Ethereum, the execution client gives its local pool to the validator that is preparing a block. The validator chooses transactions from that local view, while the completed block travels through a separate block-gossip network. Gossiping a transaction therefore makes inclusion possible; it does not reserve a place in the next block.&lt;/p&gt;

&lt;p&gt;If a transaction remains stuck, the practical checks are its nonce, fee, and replacement status. A replacement transaction normally uses the same nonce with a more attractive fee. Sending another transaction with a later nonce can simply create a second problem behind the first one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What gossip costs, and when to use something else
&lt;/h2&gt;

&lt;p&gt;Gossip itself normally adds no separate charge to the user. The monetary cost is the network fee attached to the transaction, while node operators pay in bandwidth, storage, processing, and maintenance. Running your own node gives you a direct view of its pool but costs time and attention; using an RPC provider is easier but gives that provider visibility into your submission.&lt;/p&gt;

&lt;p&gt;Public gossip is the normal choice when you want a transaction included on one chain. A private submission route can reduce public mempool exposure, but it depends on the operator receiving and forwarding the transaction. Directly submitting to several RPC endpoints can improve reach, yet it does not guarantee that their peers or block producers will accept the transaction.&lt;/p&gt;

&lt;p&gt;Gossip also stops at the chain boundary. It can distribute the source-chain transaction for a cross-chain action, but it does not carry the resulting message or asset to another chain. That second job belongs to an interoperability system: Circle CCTP uses a burn-and-mint flow for supported USDC transfers, while LayerZero Protocol and Axelar Network carry cross-chain messages through their own verification and delivery systems.&lt;/p&gt;

&lt;p&gt;When the choice is between submitting to one chain and carrying out a cross-chain transfer, &lt;a href="https://aboutcrypto.mataroa.blog/blog/universal-bridge-and-fragmented-liquidity/" rel="noopener noreferrer"&gt;Universal Bridge&lt;/a&gt; is where the latter operation is carried out.&lt;/p&gt;

&lt;p&gt;The useful mental model is simple: gossip spreads a candidate transaction, each node decides whether to keep relaying it, and a block producer later decides whether to include it. For a first transaction, submit through a reliable node, save the transaction hash, and treat “pending” as a network-distribution status—not proof that the transfer has completed.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>crypto</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>What Account Abstraction Unlocks for Wallet Users</title>
      <dc:creator>Hayley Schamberger</dc:creator>
      <pubDate>Wed, 09 Sep 2026 17:54:35 +0000</pubDate>
      <link>https://dev.to/hayley_schamberger/what-account-abstraction-unlocks-for-wallet-users-54n1</link>
      <guid>https://dev.to/hayley_schamberger/what-account-abstraction-unlocks-for-wallet-users-54n1</guid>
      <description>&lt;p&gt;Account abstraction lets a wallet bundle calls, use programmable authorization, and arrange gas payment through a sponsor or, where supported, a token instead of requiring ETH for every action.&lt;/p&gt;

&lt;h2&gt;
  
  
  The transaction stops being the unit of intent
&lt;/h2&gt;

&lt;p&gt;An ordinary externally owned account signs one transaction at a time. If a DEX needs an ERC-20 approval before a swap, the user normally signs twice, pays gas twice, and may leave an approval behind if the second transaction fails.&lt;/p&gt;

&lt;p&gt;ERC-4337 changes the path. The wallet creates a &lt;em&gt;UserOperation&lt;/em&gt; containing the intended calls. A bundler takes it from the separate UserOperation mempool, simulates validation, and submits it through the shared &lt;em&gt;EntryPoint&lt;/em&gt; contract. The account checks its own signature and rules through &lt;em&gt;validateUserOp&lt;/em&gt;; an optional paymaster checks whether it will cover the fee. Only then does the account execute the calls.&lt;/p&gt;

&lt;p&gt;This separation is the important mechanical change: authorization, payment, and execution no longer have to follow the rigid rules of an EOA transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What becomes practical
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Atomic multi-call actions.&lt;/strong&gt; An ERC-20 approval followed by a swap can be one operation. If the swap reverts, the approval reverts with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gas paid elsewhere.&lt;/strong&gt; A paymaster can sponsor a user, charge an ERC-20, or apply a policy such as covering the first transaction in an application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited signing power.&lt;/strong&gt; A session key can be restricted to one application, a token, a contract, a spending limit, or a time window instead of controlling the entire account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery rules.&lt;/strong&gt; Smart-account code can require backup keys, multiple approvals, or a recovery delay when the main key is lost or compromised.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EIP-5792 gives applications a wallet-facing way to request batches with defined capabilities through &lt;em&gt;wallet_sendCalls&lt;/em&gt;. EIP-7702, live on Ethereum mainnet since the Pectra upgrade, lets an existing EOA delegate execution to smart-account code. That keeps the familiar address and its assets, so users do not necessarily need to migrate into a newly deployed contract wallet before using these features.&lt;/p&gt;

&lt;h2&gt;
  
  
  The useful test is a two-call swap
&lt;/h2&gt;

&lt;p&gt;Suppose a user holds USDC but no ETH. The wallet can sign one operation that first approves the router and then swaps the USDC. A paymaster covers the gas, perhaps in exchange for a token charge or under an application policy. The bundler submits the operation, and the account executes both calls in order.&lt;/p&gt;

&lt;p&gt;That flow is practical only when the wallet, chain, application, account implementation, bundler, and paymaster support the same route. Matter Labs can provide the network environment on zkSync, for example, but that alone does not make every wallet or DEX compatible with account abstraction. A SyncSwap trade still depends on the particular wallet and gas-abstraction support in use.&lt;/p&gt;

&lt;p&gt;The DEX-specific leg is the SyncSwap trade itself: &lt;a href="https://qiita.com/brugmanmandie/items/9d123b339712faaa6345" rel="noopener noreferrer"&gt;syncswap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The trade-off is that account abstraction adds software and trust surface. Paymasters can reject operations, bundlers can impose policies, and delegated code can control the assets in an EOA. EIP-7702 does not make arbitrary delegation safe; wallets should restrict users to known, audited account implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does EIP-7702 automatically make a wallet a multisig?
&lt;/h3&gt;

&lt;p&gt;No. EIP-7702 supplies a delegated execution mechanism, not a recovery or multisignature policy. The delegated code decides how signatures and permissions work, while the original private key may still retain broad control. The security benefit comes from the specific account implementation and its rules, not from the EIP-7702 authorization alone.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
