gas-advance-snap
v1.0.1
Published
MetaMask Snap for GasAdvance - ERC-7715 Permission Management
Readme
GasAdvance MetaMask Snap
MetaMask Snap extension for managing ERC-7715 permissions and monitoring gas sponsorship for GasAdvance.
Features
- Permission Management: Grant and revoke ERC-7715 gas recovery permissions
- Status Monitoring: Check gas sponsorship status and remaining allowances
- Recovery History: View gas recovery transaction history
- Notifications: Get alerts when permissions are used or limits are reached
Installation
cd snap
npm installDevelopment
# Build the Snap
npm run build
# Start development server with hot reload
npm run start
# Serve the Snap for testing
npm run serveUsage
From a Dapp
// Install the Snap
const snapId = await window.ethereum.request({
method: 'wallet_requestSnaps',
params: {
'npm:gas-advance-snap': {},
},
});
// Grant a permission
const result = await window.ethereum.request({
method: 'wallet_invokeSnap',
params: {
snapId: 'npm:gas-advance-snap',
request: {
method: 'grantPermission',
params: {
token: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC
dailyLimit: '2000000', // $2 in USDC (6 decimals)
duration: 7 * 24 * 60 * 60, // 7 days
},
},
},
});
// Get permissions
const permissions = await window.ethereum.request({
method: 'wallet_invokeSnap',
params: {
snapId: 'npm:gas-advance-snap',
request: {
method: 'getPermissions',
},
},
});
// Get gas sponsorship status
const status = await window.ethereum.request({
method: 'wallet_invokeSnap',
params: {
snapId: 'wallet_invokeSnap',
request: {
method: 'getGasStatus',
},
},
});RPC Methods
grantPermission- Grant a new ERC-7715 permissionrevokePermission- Revoke an existing permissiongetPermissions- Get all user's permissionsgetGasStatus- Get gas sponsorship statusgetRecoveryHistory- Get gas recovery history
Contract Addresses
The Snap uses the following contract addresses on Sepolia:
- GasRecoveryExecutor:
0xfFe8625d50BF8c518f4151e63A3316f316302081 - SimpleGasSponsor:
0x17c985d17586808d568df79f0D134dB18DE763f4 - USDC:
0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238
Security
- All transactions require user confirmation
- Permissions are stored locally in Snap state
- Contract interactions are read-only where possible
- Write operations require explicit user approval
