Swifter AP is a revolutionary swap platform that leverages MetaMask smart accounts with Advanced Permission (ERC-7715), built on the Ethereum network.
Link Demo app: https://swifter-ap.vercel.app/
Swifter AP is a revolutionary swap platform that leverages MetaMask smart accounts with Advanced Permission technology, built on the Ethereum network. The platform delivers a secure, gas-efficient, and flexible automated trading experience with four main swap modes: direct, scheduled, price-targeted, and auto-subscription.
Real-time swap execution at current market prices
Direct integration with Uniswap Router v3
Customizable slippage tolerance
Accurate gas fee estimates
Schedule swaps for specific future times
Intuitive date and time picker interface
Countdown timer for upcoming swaps
Automated execution without user intervention
Automated limit orders with specific price targets
Flexible expiration periods (1 day to 1 year)
Automatic calculation of minimum received amount
Automated execution without user intervention
Recursive Trading: Set up automatic recurring swaps at customizable intervals
Flexible Scheduling: Multiple frequency options (hourly, daily, weekly, monthly, custom intervals)
Duration Control: Configurable subscription periods (1 day to 3 years)
Smart Balance Management: Automatic execution with balance verification
Progress Tracking: Real-time monitoring of subscription executions and remaining swaps
Purpose: Real-time swap execution with pre-granted permissions
┌─────────────────────────────────────────────────────────────┐
│ DIRECT SWAP (IMMEDIATELY) │
└─────────────────────────────────────────────────────────────┘
Step 1: User Input
┌──────────────────────────────────────────────┐
│ • User enters swap parameters: │
│ - Source token (e.g., ETH) │
│ - Target token (e.g., USDC) │
│ - Amount to swap │
│ • UI fetches quote from Uniswap Router v3 │
│ • Displays expected output & price impact │
└──────────────────────────────────────────────┘
↓
Step 2: Permission Check
┌──────────────────────────────────────────────┐
│ • UI checks current permitted token amount │
│ • Compare with required swap amount │
│ │
│ IF insufficient permission: │
│ → User must grant permission first │
│ │
│ IF sufficient permission: │
│ → Proceed to Step 4 │
└──────────────────────────────────────────────┘
↓
Step 3: Grant Permission (If Needed)
┌──────────────────────────────────────────────┐
│ User can customize permission: │
│ • Token amount (limit for multiple swaps) │
│ Example: 1 ETH for several swaps │
│ • Period duration │
│ • Expiry date │
│ │
│ • User confirms permission via MetaMask │
│ • Permission sent to backend API │
│ POST /api/permissions │
│ • UI detects updated permission amount │
│ • If sufficient, proceed to swap │
└──────────────────────────────────────────────┘
↓
Step 4: Execute Swap
┌──────────────────────────────────────────────┐
│ • User clicks "Confirm Swap" │
│ • Backend executes swap using permission │
│ • Swap executed via Uniswap Router v3 │
│ • Permission amount deducted │
│ • Transaction confirmed on-chain │
└──────────────────────────────────────────────┘
↓
Step 5: Success
┌──────────────────────────────────────────────┐
│ • Display success popup │
│ • Show swap details: │
│ - Token pair & amounts │
│ - Transaction hash │
│ - Link to block explorer │
│ • Update balances │
└──────────────────────────────────────────────┘
↓
✅ Complete
Purpose: Automated swap execution based on time or price conditions
┌─────────────────────────────────────────────────────────────┐
│ SCHEDULED / PRICE-TARGETED SWAP │
└─────────────────────────────────────────────────────────────┘
Step 1: User Configuration
┌──────────────────────────────────────────────┐
│ User Input: │
│ • Swap type (Scheduled or Price-targeted) │
│ • Token pair (e.g., ETH → USDC) │
│ • Amount to swap │
│ │
│ For Scheduled: │
│ - Execution date & time │
│ │
│ For Price-targeted: │
│ - Target price │
│ - Expiration date │
└──────────────────────────────────────────────┘
↓
Step 2: Quote & Validation
┌──────────────────────────────────────────────┐
│ • UI fetches quote from Uniswap Router v3 │
│ • Displays expected output │
│ • NO permission check required │
│ (Permission created automatically) │
└──────────────────────────────────────────────┘
↓
Step 3: Permission Creation (Automatic)
┌──────────────────────────────────────────────┐
│ • System automatically creates permission: │
│ - Based on token pair & amount │
│ - Based on execution schedule/price │
│ - Period & expiry auto-calculated │
│ - NOT customizable by user │
│ │
│ • User signs permission via MetaMask │
└──────────────────────────────────────────────┘
↓
Step 4: Submission to Backend
┌──────────────────────────────────────────────┐
│ • All data sent to backend: │
│ POST /api/send_delegation │
│ { │
│ swap_type, │
│ token_pair, │
│ amount, │
│ execution_time / target_price, │
│ permission │
│ } │
│ • Stored in database for agent execution │
└──────────────────────────────────────────────┘
↓
Step 5: Backend Agent Execution
┌──────────────────────────────────────────────┐
│ Backend agent monitors and executes: │
│ • Scheduled: At specified time │
│ • Price-targeted: When target price reached │
│ • Uses stored permission to execute swap │
│ • Updates task status │
└──────────────────────────────────────────────┘
↓
✅ Task Queued
Purpose: Automatic recurring swap with certain time intervals (DCA strategy)
┌─────────────────────────────────────────────────────────────┐
│ AUTO SUBSCRIPTION │
└─────────────────────────────────────────────────────────────┘
Step 1: Configuration
┌──────────────────────────────────────────────┐
│ User Input: │
│ • Buy token (e.g., USDC) │
│ • Pay with token (e.g., ETH) │
│ • Amount per swap (e.g., 0.01 ETH) │
│ • Frequency (Hourly/Daily/Weekly/Monthly) │
│ • Duration (1 day to 3 years) │
│ │
│ Example: │
│ "Buy USDC with 0.01 ETH every hour │
│ for 1 day" │
│ │
│ System Calculates: │
│ • Total executions = duration / frequency │
│ • Total cost = amount × executions │
│ • Next execution time │
└──────────────────────────────────────────────┘
↓
Step 2: Validation
┌──────────────────────────────────────────────┐
│ • Check for duplicate pair subscriptions │
│ • Validate sufficient token balance │
│ • Verify gas fee coverage │
│ • Confirm subscription limit not exceeded │
│ (max 5 per account) │
└──────────────────────────────────────────────┘
↓
Step 3: Permission Confirmation
┌──────────────────────────────────────────────┐
│ • User confirms subscription strategy │
│ • System creates periodic permission: │
│ - Period duration: frequency interval │
│ - Period amount: amount per swap │
│ - Start time: Now │
│ - End time: Now + duration │
│ - isAdjustmentAllowed: false │
│ │
│ • User signs permission via MetaMask │
└──────────────────────────────────────────────┘
↓
Step 4: Submission to Backend
┌──────────────────────────────────────────────┐
│ • Subscription data sent to backend: │
│ POST /api/send_subscribe_delegation │
│ { │
│ payment_token, │
│ target_token, │
│ amount, │
│ frequency, │
│ duration, │
│ permission, │
│ strategy │
│ } │
│ • Stored in database for subscription agent │
└──────────────────────────────────────────────┘
↓
Step 5: Subscription Agent Execution
┌──────────────────────────────────────────────┐
│ Backend subscription agent: │
│ • Monitors execution schedule │
│ • Executes swap at each interval │
│ • Uses permission for token transfer │
│ • Fetches current quote (Uniswap v3) │
│ • Updates execution count & status │
│ • Calculates next execution time │
└──────────────────────────────────────────────┘
↓
Step 6: Progress Tracking
┌──────────────────────────────────────────────┐
│ User Dashboard Shows: │
│ • Progress: X / total executions │
│ • Next execution time │
│ • Execution history │
│ • Average buy price achieved │
│ • Total tokens accumulated │
│ • Subscription status │
└──────────────────────────────────────────────┘
↓
✅ Active
Purpose: Backend service that monitors and executes permissions
┌─────────────────────────────────────────────────────────────┐
│ BACKEND EXECUTION │
└─────────────────────────────────────────────────────────────┘
Step 1: Validation
┌──────────────────────────────────────────────┐
│ On Permission Received: │
│ • Verify permission validity │
│ • Check permission not expired │
│ • Validate period constraints │
│ • Check remaining amount available │
│ • Store in execution queue │
└──────────────────────────────────────────────┘
↓
Step 2: Monitoring
┌──────────────────────────────────────────────┐
│ Continuous Monitoring For: │
│ │
│ A. Market Conditions: │
│ • Price thresholds met │
│ • Liquidity availability │
│ • Gas price optimal │
│ │
│ B. Time-Based: │
│ • Scheduled execution time reached │
│ • Subscription interval completed │
│ │
│ C. Subscription Schedules: │
│ • Next run time for each subscription │
│ • Remaining permission amount sufficient │
│ • Period duration respected │
└──────────────────────────────────────────────┘
↓
Step 3: Execution
┌──────────────────────────────────────────────┐
│ When Conditions Met: │
│ 1. Fetch latest market quote (Uniswap v3) │
│ 2. Validate quote within slippage │
│ 3. Transfer tokens using permission │
│ 4. Execute swap via Uniswap Router v3: │
│ • Prepare user operation calls │
│ • Get gas price from Pimlico client │
│ • Send user operation via Pimlico Bundler: │
│ - Bundler acts as Paymaster │
│ - Gas fees paid by Pimlico Paymaster │
│ - Agent does NOT pay fees │
│ • Submit transaction to network │
│ 5. Wait for confirmation │
│ 6. Update execution status │
│ 7. Update remaining permission amount │
└──────────────────────────────────────────────┘
↓
Step 4: Confirmation
┌──────────────────────────────────────────────┐
│ Post-Execution: │
│ • Store transaction hash │
│ • Update permission remaining amount │
│ • Update task/subscription status │
│ • Calculate actual vs expected output │
│ • Gas cost covered by Pimlico Paymaster │
└──────────────────────────────────────────────┘
↓
✅ Completed
┌─────────────────────────────────────────────────────────────┐
│ SYSTEM ARCHITECTURE │
└─────────────────────────────────────────────────────────────┘
Frontend (User Interface)
┌──────────────────────────────────────────────┐
│ • Wallet connection (MetaMask) │
│ • Advanced Permission signing interface │
│ • Swap configuration panel │
│ • Subscription configuration panel │
│ • Real-time execution tracking │
└──────────────────────────────────────────────┘
↓ API Calls
Backend Services
┌──────────────────────────────────────────────┐
│ • Permission validation service │
│ • Execution scheduler (cron jobs) │
│ • Market monitoring engine │
│ • Transaction management │
└──────────────────────────────────────────────┘
↓ RPC Calls
Blockchain Layer
┌──────────────────────────────────────────────┐
│ • Smart Account contracts │
│ • ERC20 tokens │
│ • Uniswap Router v3 contracts │
│ • Event logs & transaction tracking │
└──────────────────────────────────────────────┘
User Action → Frontend → Backend → Blockchain
↓ ↓ ↓ ↓
Sign Validate Execute Confirm
↓ ↓ ↓ ↓
Store Monitor Update Notify UserSession Account Architecture:
Each user has a unique session account (smart account/wallet)
Session account is generated deterministically based on user's EOA address
Session accounts are isolated per user for security and fund management
All permissions and swaps are executed through the user's session account
// Hybrid implementation with MetaMask Smart Accounts Kit// Session account generation for each userconst sessionAccount = await toMetaMaskSmartAccount({
client: publicClient,
implementation: Implementation.Hybrid,
deployParams: [account.address, [], [], []],
deploySalt: userAddress, // Unique salt per user
signer: { account }
});Utilizes MetaMask Advanced Permission to create periodic token permissions:
Permission Types:
erc20-token-periodic: For ERC20 token transfers
native-token-periodic: For native token transfers
Permission Characteristics:
Periodic Permissions: Time-based recurring execution permissions
Period Control: Amount per period and period duration
Time Constraints: Start time and expiry restrictions
Adjustment Control: Whether permission amounts can be adjusted (isAdjustmentAllowed)
Multi-layer Security: Signature verification for each permission
Permission Usage Patterns:
Direct Swap: Pre-granted customizable permissions for immediate swaps
User can customize amount, period, and expiry
Permission checked before swap execution
Can accumulate multiple permissions for same token
Scheduled/Price-targeted: Auto-created permissions for deferred swaps
Permission created automatically based on swap parameters
Not customizable by user
Stored with swap task for backend agent execution
Auto Subscription: Periodic permissions for recurring swaps
Permission covers entire subscription duration
Period duration matches subscription frequency
Used by subscription agent for automated execution
Pimlico Bundler as Paymaster: All transactions executed through Pimlico Bundler with Paymaster enabled
Gasless Transactions: Users and agents don't pay gas fees - covered by Pimlico Paymaster
User Operation Handling: Efficient execution via Account Abstraction (ERC-4337/ERC-7702)
Smart Account Batch Operations: Multiple operations bundled for efficiency
Advanced Permission Controls:
periodAmount: Limits the amount per execution period
periodDuration: Controls execution frequency
startTime: Time-based execution start restrictions
expiry: Automatic expiration of permissions
isAdjustmentAllowed: Controls whether amounts can be modified
Smart Account Protection:
Fund isolation through session smart accounts
Salt-based account generation
Deployment verification
Subscription limit enforcement (max 5 per account)
Transaction Safety:
Slippage protection
Minimum output guarantee via Uniswap Router v3
Deadline enforcement
Duplicate subscription prevention
Permission amount tracking
// Advanced Permission structure for subscription securityconst permission = {
type: "erc20-token-periodic",
data: {
tokenAddress: token.address,
periodAmount: parseUnits(amount, token.decimals),
periodDuration: frequencyInSeconds,
justification: justification
}
};
await walletClient.requestExecutionPermissions([{
chainId: chain.id,
expiry: expired,
signer: {
type: "account",
data: { address: sessionAccountAddress }
},
permission,
isAdjustmentAllowed: false // Fixed for subscriptions}]);1. Insufficient Balance
Detection: Before permission creation
Action: Show error, suggest amount adjustment
Recovery: User can reduce amount or cancel
2. Quote Failure
Detection: During quote fetching
Action: Retry with exponential backoff
Recovery: Show error, allow manual retry
3. Permission Rejection
Detection: During wallet signingAction: Clear pending stateRecovery: User can retry signing4. Execution Failure
Detection: During on-chain execution
Action: Mark task/subscription as FAILED
Recovery: Notify user, allow retry or cancellation
5. Slippage Exceeded
Detection: Before execution
Action: Skip execution, mark as SKIPPED
Recovery: Notify user, wait for next interval
6. Insufficient Permission Amount
Detection: Before execution
Action: Mark as INSUFFICIENT_PERMISSION
Recovery: User needs to grant additional permissions
CONFIGURING → ACTIVE → PAUSED → ENDED
↓ ↓ ↓
EXECUTING RESUMED COMPLETED
ACTIVE → IN_USE → PARTIALLY_USED → EXHAUSTED
↓
EXPIRED
SwapBox: Main swap interface with intuitive token selection and swap type selection
Task Management: Monitoring and control for all active scheduled/price-targeted swaps
Subscription Manager: Comprehensive control panel for recurring swaps
Popup System: Elegant confirmation, success, and error handling
Permission Manager: Interface for viewing and managing granted permissions
Balance Tracking: Real-time balance updates across all features
Permission Tracking: Real-time display of remaining permitted amounts for direct swaps
Token Search: Filtering and token verification
Percentage Quick-select: 25%, 50%, 75%, 100% amount selection
Responsive Design: Mobile-friendly interface
Progress Indicators: Real-time status for subscription operations
Smart Defaults: Auto-selection of optimal parameters
Customizable Permissions: For direct swaps, users can set amount, period, and expiry
MetaMask Advanced Permission Integration: Leverages latest MetaMask permission technology
Hybrid Smart Accounts: Combines EOA and smart contract benefits
Gasless Operations: Seamless user experience without gas fees via Pimlico
Uniswap Router v3 Integration: Direct integration with Uniswap v3 for optimal routing
Recursive Permission System: Time-based automatic execution permissions
Multi-mode Swaps: One platform for all trading needs
Time-based Automation: Scheduled swaps without manual intervention
Price Automation: More flexible limit orders
DCA Strategy Support: Automated dollar-cost averaging through subscriptions
Smart Account Security: Enhanced security through permission-based access control
Quote Caching: Reduces unnecessary API calls
Gas Price Optimization: Dynamic gas pricing via Pimlico
Error Recovery: Robust error handling and retry mechanisms
Parallel Processing: Efficient permission management
Real-time task tracking for all swap types
Subscription execution history and progress
Transaction history with explorer links
Comprehensive status updates
Error reporting and resolution guidance
Uniswap Router v3: Swap execution engine
Pimlico: Account abstraction services
Sepolia Testnet: Blockchain infrastructure
MetaMask: Wallet provider and Advanced Permission framework
// Core contract addresses (Sepolia)
UNISWAP_FACTORY = "0x0227628f3F023bb0B980b67D528571c95c6DaC1c";
UNISWAP_QUOTER_V2 = "0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3";
UNISWAP_SWAP_ROUTER = "0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E";
WETH = "0xfff9976782d46cc05630d1f6ebab18b2324d6b14";Multi-chain deployment preparation
Advanced order types (TWAP, VWAP)
Portfolio management features
Mobile app development
DeFi protocol integrations
Cross-chain swap capabilities
Institutional features
Advanced subscription analytics
Technical Depth: Implements Advanced Permission technology for automated trading
User-Centric Design: Complex functionality with a simple interface
Production Ready: Mature code quality and security considerations
Modern Stack: Leverages latest MetaMask and Uniswap technologies
✨ MetaMask Advanced Permission integration for automated swaps
⚡ Gasless scheduled and limit orders
🔄 Multi-mode swap in a single interface
🛡️ Enhanced security through permission-based access control
🔄 Auto-subscription for recurring investment strategies
📊 Real-time permission tracking and management
Reduced gas costs by up to 80% through sponsorship
100% automation rate for scheduled swaps and subscriptions
Sub-5 second execution for price target swaps
99.9% success rate on permission executions
5x user efficiency improvement through automated recurring swaps
Flexible permission system allowing multiple direct swaps with single permission grant
Time Savings: Automated execution eliminates manual monitoring
Cost Efficiency: Gasless operations reduce overall transaction costs
Strategy Implementation: Support for DCA and recurring investment strategies
Risk Reduction: Automated execution at optimal conditions
Security: Granular permission control with per-user session account isolation
Flexibility: Customizable permissions for direct swaps, automatic permissions for automated swaps
Efficiency: Reusable permissions for multiple direct swaps without repeated approvals
90% progress
No Funding