<?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: Limonata</title>
    <description>The latest articles on DEV Community by Limonata (@limonata-blockchain).</description>
    <link>https://dev.to/limonata-blockchain</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%2F4003084%2F2fbab9cb-f1d6-46ee-88ec-f93590fe066b.png</url>
      <title>DEV Community: Limonata</title>
      <link>https://dev.to/limonata-blockchain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/limonata-blockchain"/>
    <language>en</language>
    <item>
      <title>Gas paid by the protocol, in consensus not a relayer, not a paymaster</title>
      <dc:creator>Limonata</dc:creator>
      <pubDate>Wed, 01 Jul 2026 23:29:47 +0000</pubDate>
      <link>https://dev.to/limonata-blockchain/gas-paid-by-the-protocol-in-consensus-not-a-relayer-not-a-paymaster-1jc7</link>
      <guid>https://dev.to/limonata-blockchain/gas-paid-by-the-protocol-in-consensus-not-a-relayer-not-a-paymaster-1jc7</guid>
      <description>&lt;p&gt;Most “gasless” blockchain experiences are not actually gasless.&lt;/p&gt;

&lt;p&gt;The user may not pay the fee directly, but somewhere behind the scenes there is usually a relayer, an ERC-4337 paymaster, a bundler, or an off-chain service covering the transaction.&lt;/p&gt;

&lt;p&gt;Those systems can work well, but they also introduce more infrastructure, more private keys, more failure points, and more contracts that need to be maintained and audited.&lt;/p&gt;

&lt;p&gt;With Limonata, I wanted to try something different:&lt;/p&gt;

&lt;p&gt;What if gas sponsorship was handled directly by the blockchain itself?&lt;/p&gt;

&lt;p&gt;Limonata is an independent EVM Layer 1 built with the Cosmos SDK and cosmos/evm.&lt;/p&gt;

&lt;p&gt;It has its own validators, its own CometBFT consensus, full EVM compatibility, and Chain ID 10777.&lt;/p&gt;

&lt;p&gt;The unusual part is that gas sponsorship is handled directly in consensus.&lt;/p&gt;

&lt;p&gt;No relayer.&lt;/p&gt;

&lt;p&gt;No bundler.&lt;/p&gt;

&lt;p&gt;No paymaster contract.&lt;/p&gt;

&lt;p&gt;No special transaction format.&lt;/p&gt;

&lt;p&gt;The chain itself decides whether a transaction qualifies for sponsored gas.&lt;/p&gt;

&lt;p&gt;Before going further, I want to be clear about one thing:&lt;/p&gt;

&lt;p&gt;Limonata is currently a testnet. Testnet LIMO has no monetary value. This is a technical invitation to build, test, and find problems before mainnet.&lt;/p&gt;

&lt;p&gt;How protocol-level gas sponsorship works&lt;/p&gt;

&lt;p&gt;On a normal EVM network, the sender must hold the native coin and pay the gas fee.&lt;/p&gt;

&lt;p&gt;On Limonata, every transaction first passes through the chain’s ante handler.&lt;/p&gt;

&lt;p&gt;The ante handler is the consensus-level validation step that runs before transaction execution.&lt;/p&gt;

&lt;p&gt;It checks the transaction, verifies the sender, calculates the fee, and determines whether the protocol should sponsor the gas.&lt;/p&gt;

&lt;p&gt;When a transaction qualifies, the gas is paid from an on-chain sponsorship pool.&lt;/p&gt;

&lt;p&gt;The transaction is included in the block normally, but the sender’s balance is not reduced.&lt;/p&gt;

&lt;p&gt;Because this logic exists directly inside the chain, developers do not need to operate a separate gas infrastructure system.&lt;/p&gt;

&lt;p&gt;There is no relayer server to maintain.&lt;/p&gt;

&lt;p&gt;There is no relayer private key to protect.&lt;/p&gt;

&lt;p&gt;There is no UserOperation wrapper.&lt;/p&gt;

&lt;p&gt;There is no bundler.&lt;/p&gt;

&lt;p&gt;There is no paymaster contract to deploy and secure.&lt;/p&gt;

&lt;p&gt;The base layer handles the sponsorship.&lt;/p&gt;

&lt;p&gt;The honest limitation&lt;/p&gt;

&lt;p&gt;There is one important detail that users need to understand.&lt;/p&gt;

&lt;p&gt;The account must be able to afford the gas before the chain decides to sponsor it.&lt;/p&gt;

&lt;p&gt;That means an account with a completely zero balance may still receive an insufficient funds error, even if the transaction would otherwise qualify for sponsorship.&lt;/p&gt;

&lt;p&gt;The solution is simple:&lt;/p&gt;

&lt;p&gt;Claim a small amount of test LIMO from the faucet once.&lt;/p&gt;

&lt;p&gt;After that, sponsored transactions do not reduce the balance.&lt;/p&gt;

&lt;p&gt;That small initial amount acts as a proof of funds and creates a basic anti-Sybil cost.&lt;/p&gt;

&lt;p&gt;The account must have something, but the sponsored gas itself is not deducted.&lt;/p&gt;

&lt;p&gt;This is not perfect account abstraction, and I do not want to pretend that it is.&lt;/p&gt;

&lt;p&gt;The goal is to make onboarding significantly easier while still keeping a basic economic barrier against mass-created empty accounts.&lt;/p&gt;

&lt;p&gt;Daily sponsored gas allowance&lt;/p&gt;

&lt;p&gt;Every account receives a daily protocol-paid gas allowance.&lt;/p&gt;

&lt;p&gt;The allowance currently includes:&lt;/p&gt;

&lt;p&gt;A cold-start allowance of 0.1 LIMO per day&lt;br&gt;
An additional allowance based on the amount of LIMO held by the account&lt;br&gt;
A maximum daily allowance of 10 LIMO&lt;/p&gt;

&lt;p&gt;At the low fees currently used on the testnet, even the cold-start allowance can cover a large number of ordinary transactions.&lt;/p&gt;

&lt;p&gt;The balance-based bonus also creates an anti-Sybil limit.&lt;/p&gt;

&lt;p&gt;Creating thousands of empty wallets does not provide unlimited free gas. Each wallet only receives the small base allowance unless it holds more LIMO.&lt;/p&gt;

&lt;p&gt;When an account reaches its daily sponsorship limit, transactions do not stop working.&lt;/p&gt;

&lt;p&gt;The sender simply begins paying gas normally.&lt;/p&gt;

&lt;p&gt;Gas sponsorship is therefore conditional, not unlimited.&lt;/p&gt;

&lt;p&gt;The system is implemented in a native module called x/gassponsor.&lt;/p&gt;

&lt;p&gt;That module manages the protocol sponsorship pool, daily account allowances, eligibility rules, and allowance resets.&lt;/p&gt;

&lt;p&gt;Developers can sponsor transactions to their contracts&lt;/p&gt;

&lt;p&gt;The protocol allowance is useful for ordinary activity, but some applications need more predictable coverage.&lt;/p&gt;

&lt;p&gt;Imagine a game, marketplace, social application, or trading platform that processes thousands of user interactions.&lt;/p&gt;

&lt;p&gt;The developer may want every interaction to feel gasless without forcing users to acquire the native coin and without operating ERC-4337 infrastructure.&lt;/p&gt;

&lt;p&gt;For that use case, Limonata includes another native module called x/sponsorpool.&lt;/p&gt;

&lt;p&gt;It is exposed to the EVM through a precompile at address:&lt;/p&gt;

&lt;p&gt;0x901&lt;/p&gt;

&lt;p&gt;A simplified interface looks like this:&lt;/p&gt;

&lt;p&gt;interface ISponsorPool {&lt;br&gt;
    function deposit(address contractAddr, uint256 amount) external;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function withdraw(address contractAddr, uint256 amount) external;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;A developer can deposit LIMO and assign it to a specific contract.&lt;/p&gt;

&lt;p&gt;Transactions sent to that contract can then be sponsored from the developer’s deposit until the balance runs out.&lt;/p&gt;

&lt;p&gt;The sponsorship pool is:&lt;/p&gt;

&lt;p&gt;Permissionless&lt;br&gt;
Withdrawable&lt;br&gt;
Non-inflationary&lt;br&gt;
Native to the chain&lt;/p&gt;

&lt;p&gt;There is no application allowlist.&lt;/p&gt;

&lt;p&gt;Any developer can fund sponsorship for a contract.&lt;/p&gt;

&lt;p&gt;The deposited LIMO remains controlled by the developer and can be withdrawn.&lt;/p&gt;

&lt;p&gt;The module does not mint new coins to cover the gas.&lt;/p&gt;

&lt;p&gt;The developer funds the experience directly.&lt;/p&gt;

&lt;p&gt;The idea is similar to ERC-4337 paymaster semantics: the application pays the gas for its users.&lt;/p&gt;

&lt;p&gt;The difference is that the sponsorship mechanism already exists as a native chain primitive.&lt;/p&gt;

&lt;p&gt;The developer does not need to deploy and secure an entire paymaster system.&lt;/p&gt;

&lt;p&gt;Gasless does not mean costless&lt;/p&gt;

&lt;p&gt;I dislike gasless marketing that acts as though transaction costs disappear.&lt;/p&gt;

&lt;p&gt;They do not.&lt;/p&gt;

&lt;p&gt;When a transaction is free for the user, someone else is paying.&lt;/p&gt;

&lt;p&gt;On Limonata, collected fees are processed by the x/squeeze module.&lt;/p&gt;

&lt;p&gt;The current fee split is approximately:&lt;/p&gt;

&lt;p&gt;40% burned&lt;br&gt;
10% returned to the protocol gas sponsorship pool&lt;br&gt;
50% distributed to validators&lt;/p&gt;

&lt;p&gt;The protocol-sponsored account allowance is funded through the chain’s fee system.&lt;/p&gt;

&lt;p&gt;Contract-specific sponsorship is funded directly by developers.&lt;/p&gt;

&lt;p&gt;This creates two separate paths:&lt;/p&gt;

&lt;p&gt;Protocol sponsorship for regular accounts&lt;br&gt;
Developer-funded sponsorship for specific contracts&lt;/p&gt;

&lt;p&gt;The long-term economics still need to be tested carefully before mainnet.&lt;/p&gt;

&lt;p&gt;The important point is that the system does not pretend gas has no cost.&lt;/p&gt;

&lt;p&gt;It changes who pays and moves the decision into consensus.&lt;/p&gt;

&lt;p&gt;Passkey transactions with Face ID and Touch ID&lt;/p&gt;

&lt;p&gt;Gas is only one part of the onboarding problem.&lt;/p&gt;

&lt;p&gt;The other major problem is the wallet experience.&lt;/p&gt;

&lt;p&gt;Most normal users do not want to install a browser extension, protect a seed phrase, purchase a native coin, and then learn how gas works before using an application.&lt;/p&gt;

&lt;p&gt;Limonata includes native support for secp256r1 signatures through RIP-7212.&lt;/p&gt;

&lt;p&gt;This allows wallets to use WebAuthn passkeys to authorize transactions.&lt;/p&gt;

&lt;p&gt;A user can sign using:&lt;/p&gt;

&lt;p&gt;Face ID&lt;br&gt;
Touch ID&lt;br&gt;
Windows Hello&lt;br&gt;
Another passkey-compatible authenticator&lt;/p&gt;

&lt;p&gt;The goal is to allow blockchain applications to feel more like traditional applications.&lt;/p&gt;

&lt;p&gt;The user creates a wallet using a device passkey, signs with biometrics, and interacts without manually managing gas for every transaction.&lt;/p&gt;

&lt;p&gt;The passkey implementation is still experimental and will require security auditing before mainnet.&lt;/p&gt;

&lt;p&gt;It is enabled on the testnet specifically so developers can test it publicly and help identify problems.&lt;/p&gt;

&lt;p&gt;You can try the live demo here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://limonata.xyz/demo" rel="noopener noreferrer"&gt;https://limonata.xyz/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anti-MEV development&lt;/p&gt;

&lt;p&gt;Limonata is also experimenting with encrypted transaction ordering.&lt;/p&gt;

&lt;p&gt;The current x/encmempool implementation uses a commit-reveal mechanism.&lt;/p&gt;

&lt;p&gt;I want to be careful about how this is described.&lt;/p&gt;

&lt;p&gt;The current version is not full threshold encryption.&lt;/p&gt;

&lt;p&gt;It introduces delayed visibility and ordering rules, but it does not provide complete MEV protection, especially when a single validator controls transaction ordering.&lt;/p&gt;

&lt;p&gt;The planned threshold-encrypted mempool is designed to go further.&lt;/p&gt;

&lt;p&gt;The intended flow is:&lt;/p&gt;

&lt;p&gt;Transactions are submitted in encrypted form.&lt;br&gt;
The transaction order is fixed before validators can read the contents.&lt;br&gt;
Transactions are decrypted only after the order is committed.&lt;br&gt;
Decryption requires cooperation from at least two of three keypers.&lt;/p&gt;

&lt;p&gt;The threshold-encrypted version is intended to activate through a governance upgrade.&lt;/p&gt;

&lt;p&gt;The foundation is being built and tested now, but I would rather describe the current state honestly than market unfinished work as complete.&lt;/p&gt;

&lt;p&gt;Try Limonata&lt;/p&gt;

&lt;p&gt;You can add the network using:&lt;/p&gt;

&lt;p&gt;Chain ID: 10777&lt;/p&gt;

&lt;p&gt;RPC: &lt;a href="https://rpc.limonata.xyz" rel="noopener noreferrer"&gt;https://rpc.limonata.xyz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claim test LIMO once from the faucet:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://faucet.limonata.xyz" rel="noopener noreferrer"&gt;https://faucet.limonata.xyz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploy a contract and test a sponsored transaction using the quickstart:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Limonata-Blockchain/limonata-quickstart" rel="noopener noreferrer"&gt;https://github.com/Limonata-Blockchain/limonata-quickstart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try the gasless and passkey demo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://limonata.xyz/demo" rel="noopener noreferrer"&gt;https://limonata.xyz/demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;View transactions on the explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://explorer.limonata.xyz" rel="noopener noreferrer"&gt;https://explorer.limonata.xyz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read the chain source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Limonata-Blockchain/limonata" rel="noopener noreferrer"&gt;https://github.com/Limonata-Blockchain/limonata&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join the Discord:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.gg/XEfKvF4mA" rel="noopener noreferrer"&gt;https://discord.gg/XEfKvF4mA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploy something.&lt;/p&gt;

&lt;p&gt;Send a transaction.&lt;/p&gt;

&lt;p&gt;Watch your balance remain unchanged.&lt;/p&gt;

&lt;p&gt;Then tell us what worked, what broke, and what should be improved.&lt;/p&gt;

&lt;p&gt;That is the purpose of the testnet.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>ethereum</category>
      <category>cosmosdb</category>
    </item>
  </channel>
</rss>
