ByAUJay
From Sign-In With Ethereum to Sign-In With Intents: Rewriting Onboarding Flow
A Handy Guide to Supercharging Your Wallet Connection
Let’s take that boring old “connect wallet → sign” process and turn it into something slick and user-friendly. We're talking about a smooth, one-click experience that’s not only capability-scoped but also gasless and MEV-protected. Plus, it should work seamlessly on both EOA and smart accounts. Here’s what you need to do to get started:
What to Change First
- Focus on simplifying the connection flow.
- Ensure that the onboarding is intuitive and easy to navigate.
What to Measure
- Keep an eye on user engagement and conversion rates.
- Track how often users drop off during the signup process.
How to Ship Safely
- Stick to today’s best practices to ensure everything runs smoothly.
- Test thoroughly before rolling out changes to avoid hiccups.
By following these steps, you’ll create a much more enjoyable onboarding experience for your users!
TL;DR (executive description)
“Sign-In with Intents” brings together SIWE and ReCaps, session keys, paymasters, wallet APIs, and solver-based execution (like UniswapX/CoW). This setup lets users authorize outcomes--whether that's swapping, bridging, or minting--rather than just dealing with raw transactions. It simplifies the process by cutting down on steps, removing gas prompts, and allowing for background execution with full auditability.
Why SIWE alone isn’t enough in 2025
Sign-In with Ethereum (SIWE, ERC‑4361)
Sign-In with Ethereum (SIWE) is all about making off-chain logins easier using an EIP‑191 message along with a nonce. It’s gotten pretty popular and is a solid place to start, but it doesn’t quite cover everything. While SIWE handles authentication, users still find themselves dealing with network confusion, having to approve transactions over and over, gas prompts popping up, and questionable mempools.
These days, the best user experience (UX) teams are taking SIWE to the next level by combining it with capability grants, intent fulfillment, and gas abstraction. If you're interested in diving deeper, check out the details here: (eips.ethereum.org).
Two practical gaps that SIWE doesn't quite cover on its own:
- Authorization scope: How do we know what actions the app can actually perform later on? Think things like swapping up to $200, calling a specific protocol, or auto-rolling a vault. That’s where ReCaps (ERC‑5573) come in. They expand SIWE by letting you attach capability URIs that wallets can easily render, and servers can verify. Check it out here: (eips.ethereum.org).
- Smart-account signatures before deployment: So, what if your user has a counterfactual (not-yet-deployed) 4337 account? In that case, the usual ERC‑1271 verification just won't cut it. But no worries! ERC‑6492 introduces a wrapper signature format, which allows relying parties to verify contract signatures even before they're officially deployed. More info here: (eips.ethereum.org).
Throw in the upgrades coming in 2025--like wallet APIs for batching (EIP‑5792), session keys, account abstraction (ERC‑4337), and Pectra’s EIP‑7702 for EOA delegation--and you can really shift the game from “sign-in” to “sign objectives” securely. (eips.ethereum.org)
What “Sign-In with Intents” actually means
Imagine it as a multi-layered design that your product is ready to roll out now:
- Authenticate: Start by using a SIWE (ERC‑4361) message that has a short lifespan and an anti-replay nonce. You can also throw in ReCaps if you want to specify narrow permissions, like “this site can ask for typed-data signatures for Uniswap swaps, with a limit of 1,000 USDC, until 2025‑12‑31.” (eips.ethereum.org)
2) Delegate
Set up a session key or device identity key so your app can run smoothly within its permissions without bugging the main wallet for every little action. WalletConnect’s Identity Keys leverage a CAIP‑122‑formatted SIWE to legitimize an Ed25519 identity. Plus, ERC‑7579 “Smart Sessions” introduce portable, module-level policies for smart accounts. Check out the details at specs.walletconnect.com.
- Execute intents: users place a general order (intent). Solvers like UniswapX and CoW Protocol go head-to-head to meet that order, covering the gas fees and routing privately to keep things safe from MEV issues. Users end up with the best possible outcome within the set limits. (docs.uniswap.org)
- Abstract gas: A paymaster can help out by covering fees in USDC or other tokens. Plus, with EIP‑5792's “wallet_sendCalls,” your frontend can make requests for atomic batched calls while having that paymaster feature. Check it out here: (eips.ethereum.org)
- Safeguard your orderflow: use MEV-protected RPCs (like MEV Blocker) or go for orderflow auctions (like Flashbots MEV-Share) to keep MEV in check as price improvements or rebates. Check out the details here: (docs.cow.fi)
- To ensure safety, use ERC‑1271 for smart-account signatures. If you're dealing with counterfactual accounts, make sure to accept the ERC‑6492 wrapper. For better readability and to prevent replay attacks across various smart accounts linked to a single EOA, it's a good idea to go with ERC‑7739. (eips.ethereum.org)
Architecture blueprint (drop‑in components)
- Frontend
- We’ve got a wallet adapter that supports EIP‑5792 and SIWE, and guess what? The WC AppKit's “one-click SIWE” with ReCaps is good to go in production! Check it out here: (walletconnect-docs.vercel.app).
- Intent UI: users can easily pick what they want to do, whether that's “swap X→Y” or “bridge 50 USDC to Base,” plus they can set caps and expiry.
- AuthN/AuthZ
- We're diving into SIWE (ERC‑4361) along with ReCaps (ERC‑5573) for giving your origin some serious capability delegation. This includes wallet RPC and solver endpoints as key resources. Check it out here: (eips.ethereum.org)
- Delegation
- We're talking about session keys that make 1-click flows super easy (thanks to the ERC‑7579 Smart Sessions module), or those WalletConnect Identity Keys that are tied to device-level signing via CAIP‑122 SIWE. Check out the details here!
- Execution
- Settle intents using UniswapX (think gasless swaps, with auction options that change based on the chain) or check out CoW solvers. They both handle MEV internally and let you place off-chain orders that settle on-chain. For more details, hit up the Uniswap documentation.
- Gas
- Check out the ERC‑4337 paymaster (you know, the verifying or ERC‑20 paymaster) offered by providers like Pimlico, Candide, Alchemy, and Circle. You can transfer funds using EIP‑5792 features. For more details, head over to the docs.erc4337.io.
- Orderflow Privacy
- You can submit your transactions using the MEV Blocker RPC or MEV‑Share to steer clear of sandwich attacks and possibly snag some rebates while you're at it. Check out the details here: (docs.cow.fi)
- EOA compatibility
- Starting May 7, 2025, with EIP‑7702 going live in Pectra, EOAs will have the option to temporarily hand off some tasks to smart-wallet code. This means they can manage batching, sponsorship, and even ease up on privileges a bit--essentially linking the “old” EOAs with a more user-friendly intents experience. (blog.ethereum.org)
1) SIWE + ReCaps message (what the wallet shows)
example.com wants you to sign in with your Ethereum account:
0xABCD…1234
I further authorize the stated URI to perform the following actions on my behalf:
(1) 'request': 'wallet_sendCalls' with 'atomic' on 'eip155:1' (2) 'request': 'personal_sign','eth_signTypedData_v4' for 'eip155:1'
URI: https://example.com
Version: 1
Chain ID: 1
Nonce: 3f2bd2…
Issued At: 2025-12-01T10:00:00Z
Resources:
- urn:recap:eyJhdHQiOnsiaHR0cHM6Ly9leGFtcGxlLmNvbSI6eyJ3YWxsZXQvc2VuZENhbGxzIjpbeyJhdG9taWMiOnRydWV9XX19fQ
This is your typical ERC‑4361 SIWE combined with an ERC‑5573 ReCap encoding for wallet RPC permissions. With WalletConnect AppKit, it shows up as “One‑Click Auth” that features easy-to-read ReCaps. Check it out here: (eips.ethereum.org)
Implementation notes:
- Make sure to check SIWE according to ERC‑4361. If the signing address turns out to be a contract, you’ll want to call ERC‑1271. And if it’s a counterfactual smart account, don’t forget to spot and unwrap ERC‑6492 before you validate. (eips.ethereum.org)
2) Batch + paymaster over Wallet API (EIP‑5792)
await wallet_sendCalls({
from: "0xABCD…1234",
chainId: "0x1",
calls: [
{ to: UNISWAPX_REACTOR, data: swapCalldata },
{ to: recipient, data: transferBytes }
],
capabilities: {
paymasterService: { url: "https://paymaster.example.com/v1/sign", optional: false },
atomic: { required: true }
}
})
- Frontends can find out about support by using
wallet_getCapabilities. A lot of wallets are adding this feature along with their support for 4337. Atomic execution is now a standardized capability, and the paymaster URL is sent over directly. (eips.ethereum.org)
3) Session key for 1‑click swaps (ERC‑7579 Smart Sessions)
Scope a session to a token and function selector (transfer), along with a maximum spend limit and an expiry date. The SDK handles the policy directly on-chain:
const session = {
owners: { type: 'ecdsa', accounts: [sessionOwner] },
actions: [{ target: USDC, selector: '0xa9059cbb' }],
policies: [
{ type: 'spendLimit', token: USDC, max: '1000000000' }, // 1,000 USDC
{ type: 'expiry', validUntil: 1735689600 } // Dec 31, 2024
]
}
await rhinestone.createAccount({ owners: mainOwner, sessions: [session] })
Rhinestone/Biconomy's Smart Sessions bring scoping into the mix and work seamlessly with ERC‑7579 accounts and Safe through adapters. If you're looking to verify signatures, check out ERC‑7739. It helps stop replay attacks across a user’s various smart accounts while ensuring that typed data stays easy to read. (docs.rhinestone.dev)
Intents execution: UniswapX and CoW Protocol
- UniswapX is a cool auction-based protocol for gasless settlements. Here, swappers just sign off-chain orders, and then “fillers” go head-to-head to execute them. The way it works can vary depending on the chain: you've got RFQ exclusivity followed by Dutch on Ethereum, block-decay Dutch on Arbitrum, and priority-gas auctions on Base/Unichain. The best part? Users never have to pay gas fees since fillers cover those costs through the price. Check out more details here.
- CoW Protocol operates by batching intents and finding that “coincidence of wants” before directing to on/off-chain liquidity. It features some friendly competition among solvers and includes native MEV protection patterns. You can dive deeper into it here.
Cross‑chain
Uniswap Labs and Across are shaking things up with a new standard for cross-chain intents. Think of this as a CrossChainOrder format along with a Settler role, which will let different intent systems work together through common filler networks. If you’re putting together a multi-chain user experience, this is definitely something to keep an eye on. Check out more about it here.
Gas, mempools, and MEV in a sign‑in‑with‑intents world
- With ERC‑4337 Paymasters, you can easily sponsor or accept USDC for gas fees. Some of the production providers include Pimlico, Candide, Circle, and Alchemy. Plus, you have the option to self-host with reference ERC‑20 paymasters and verifying paymasters. When you pair this with the capabilities of 5792, you can create a smooth app-to-wallet contract experience. Check out the details here: (docs.erc4337.io)
- For a private routing option, CoW’s MEV Blocker RPC and Flashbots MEV‑Share provide a neutral, rules-based path that keeps sensitive information under wraps while also offering rebates. This setup minimizes user impact and ensures speedy inclusion. Intents-based DEXs and solver flows fit right in with this approach. Learn more about it here: (docs.cow.fi)
EOAs aren’t left behind: EIP‑7702 shipped with Pectra
EIP‑7702 is set to go live on the mainnet on May 7, 2025. This upgrade allows a traditional Externally Owned Account (EOA) to delegate tasks to smart accounts using a Type‑4 transaction that includes an authorization list. What does this mean for onboarding? Well, it opens up some pretty exciting possibilities: you can approve transactions in batches, swap assets all in one go, sponsor gas fees, or even apply temporary privilege de-escalation--all without needing to change your keys. You can also expect wallets to start offering user-friendly safe delegation contracts and revocation features. Check out more details on the official blog: (blog.ethereum.org).
Passkeys are finally practical on EVM
With P‑256 verify precompiles becoming more widely available (thanks to RIP‑7212 on Layer 2s, and now superseded on mainnet by the EIP‑7951 proposal in its “Last Call”), it's a great time to consider using platform passkeys like WebAuthn, Secure Enclave, or Android Keystore as smart-account validators or session keys. Pair that with ERC‑4337 or 7702 delegation to create a smooth, seedless onboarding experience that's resistant to phishing. Check out the details here: (eip.info).
Security hardening checklist (do this before GA)
- When it comes to login, steer clear of those raw eth_sign blobs. Go for ERC‑4361 instead, which comes with domain binding, issuedAt/nonce, and a short expiry. And don't forget to verify 1271 for contract wallets; also, throw in ERC‑6492 for counterfactual signatures. You can check out more about it here.
- For anything that the user can see, it's better to use typed-data (EIP‑712). Plus, you might want to adopt ERC‑7739 defensive rehashing in your 1271 process. This will help you prevent cross-account replay while ensuring that "what you sign" remains clear for wallets. More details are available here.
- Need some smart-account plugins? Use module registries! ERC‑7484 sets up a singleton registry specifically for attestations (think audits and type assertions). Make sure to gate module installation and execution by checking the registry and setting up thresholds. You can read up on it here.
- Set up some guardrails for your Wallet API: only ask for
wallet_sendCallswith atomicRequired=true when it's absolutely necessary. And to avoid any slip-ups, be sure to list out wallet capabilities first. You can find more on this here. - For private order flow defaults, consider using MEV Blocker’s “fullprivacy” for those sensitive transactions. If not, go for rebate-enabled endpoints and keep an eye on revert protections. Check it out on mevblocker.io.
Migration plan: 30/60/90 day roadmap
- Days 1-30:
- First up, ditch the ad-hoc message signing and switch over to ERC‑4361 SIWE for your domain. Don't forget to add ReCaps for the bare minimum permissions you’ll need--think typed-data signing and wallet_sendCalls. Once that’s done, get your server-side verification in place, including 1271 and 6492. You can check out more about it here.
- Next, make sure to enable MEV-safe RPC for your transaction submissions. You can choose between the MEV Blocker or the MEV-Share path. For details, take a look at this doc.
- Days 31-60:
- Implement EIP‑5792 to handle batched calls and bring in a verifying paymaster. This will help sponsor first-session flows and let power users pay with USDC. (eips.ethereum.org)
- Run a pilot for one intent: try out UniswapX gasless swaps with limits and expiry details included in your UI and logged on the server side. Don't forget to track fill-time and see how much you can improve prices! (docs.uniswap.org)
- Days 61-90:
- Start using session keys with ERC‑7579 Smart Sessions for a smooth “1‑click” experience in your app. You'll want to set up some spend and time policies, and make sure to implement ERC‑7739-aware verification. Check out the details here: (docs.rhinestone.dev).
- Optional: You can offer an EOA‑friendly option with EIP‑7702 delegation presets (think batch + sponsor) along with a clear “revoke delegation” button. More info on this can be found at (eips.ethereum.org).
KPIs to track (and realistic targets after 90 days)
- Auth conversion: We're hitting a success rate of over 95% for SIWE to session-establishment.
- Time-to-first-intent: The median time is less than 10 seconds when you're on L2 (including any swap fulfillment) and under 30 seconds on L1 during normal conditions. Check it out here.
- Gas prompts avoided: We’re managing to sponsor at least 90% of first-time actions through the paymaster. More details can be found here.
- MEV protection: We’re maintaining at least 95% of our flows through a private RPC, measuring price improvements against a public mempool baseline with a sample. Learn more here.
- Replay incidents: We're proud to say there have been zero replay incidents, thanks to the ERC-7739 tests in your 1271 code path. You can read about it here.
Deep implementation notes for teams
- WalletConnect One‑Click Auth: With v2 Pairing, you can now connect and do SIWE all in one go! Just pop ReCaps into the “resources” array and sort things out on your backend. You can authorize Identity Keys (ed25519) with a CAIP‑122 SIWE, making it possible for devices to sign on behalf of your app within the permissions you set. Check out the details here.
- UniswapX per‑chain knobs: There’s a lot happening! You get RFQ exclusivity on the mainnet, block-decay Dutch auctions on Arbitrum, and priority gas auctions on Base/Unichain. Don’t forget to build in chain-aware fallbacks and add some slippage + deadline protection. More info can be found here.
- 4337 details that matter: If you're crafting your own paymaster, be sure to stick to the v0.7+ “paymasterSignature” format so that accounts and paymasters can sign simultaneously. And remember to always simulate those UserOps! Dive into the specifics here.
- Passkeys: Aim for P‑256! You’ll want to map WebAuthn outputs to on‑chain verification using the 7212/7951 interface; consider combining it with 4337 or 7702 for execution. Keep an eye on the mainnet EIP‑7951 progress and L2 coverage. Find the details here.
- Module safety: It’s smart to implement ERC‑7484 registry checks during installation and the first execution. For those high‑risk modules, make sure to require a quorum of attesters (like 2 out of 3) for added security. Check out the guidelines here.
What’s next (2026‑ready)
- The new cross-chain intents standardization from Uniswap Labs and Across is set to make it easier for solvers to move around, which should help cut down on the fragmentation we see across different chains and intent systems. They're currently running a pilot, aiming to gear up for a universal filler network. Check out the details here.
- With native account abstraction coming to L2s and EIP-7702 being introduced on L1, we're looking at a game-changer: hybrid wallets. These wallets will use an Externally Owned Account (EOA) for compatibility, but they'll also have smart features available when needed. This approach is likely to become the norm for mainstream applications. So, start thinking about your policy layers--like spend limits, time locks, and registries--as reusable code across both layers. Get more info on EIP-7702 here.
Bottom line
“Sign-In with Intents” isn’t just another login button; it’s a practical, standards-based approach that lets you (1) authenticate with SIWE, (2) authorize specific, limited capabilities, and (3) achieve outcomes using session keys, paymasters, and solver competition--all while ensuring privacy and auditability. Roll it out step by step: start with SIWE+ReCaps, then move to 5792+paymaster, and finally add sessions+intents. Your users will notice the improvement right from day one, and your ops team will love having those extra guardrails in place.
If you’re looking for a practical blueprint that’s customized just for your tech stack, 7Block Labs is here to assist! They can help you design, implement, audit, and even A/B test your migration--all in less than 90 days.
Like what you're reading? Let's build together.
Get a free 30-minute consultation with our engineering team.
Related Posts
ByAUJay
Building 'Private Social Networks' with Onchain Keys
Creating Private Social Networks with Onchain Keys
ByAUJay
Tokenizing Intellectual Property for AI Models: A Simple Guide
## How to Tokenize “Intellectual Property” for AI Models ### Summary: A lot of AI teams struggle to show what their models have been trained on or what licenses they comply with. With the EU AI Act set to kick in by 2026 and new publisher standards like RSL 1.0 making things more transparent, it's becoming more crucial than ever to get this right.
ByAUJay
Creating 'Meme-Utility' Hybrids on Solana: A Simple Guide
## How to Create “Meme‑Utility” Hybrids on Solana Dive into this handy guide on how to blend Solana’s Token‑2022 extensions, Actions/Blinks, Jito bundles, and ZK compression. We’ll show you how to launch a meme coin that’s not just fun but also packs a punch with real utility, slashes distribution costs, and gets you a solid go-to-market strategy.

