← ClaudeAtlas

web3-identity-authlisted

Implement Web3 authentication and identity. Use when integrating Sign-In with Ethereum (SIWE), ENS resolution, session management, or verifiable credentials.
Gabssama12/spoon-awesome-skill · ★ 1 · AI & Automation · score 64
Install: claude install-skill Gabssama12/spoon-awesome-skill
# Web3 Identity & Authentication Implement decentralized identity and authentication. ## Authentication Methods | Method | Use Case | Gas Cost | |--------|----------|----------| | SIWE | Web app login | None (signature only) | | ENS | Human-readable addresses | None (read only) | | ERC-8004 | Agent identity | On-chain registration | ## Sign-In with Ethereum (SIWE) ### SIWE Message Format ``` example.com wants you to sign in with your Ethereum account: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7 Sign in to access your account. URI: https://example.com Version: 1 Chain ID: 1 Nonce: 32891756 Issued At: 2025-01-23T10:00:00.000Z Expiration Time: 2025-01-23T11:00:00.000Z ``` ### Backend Implementation ```python # scripts/siwe_auth.py from siwe import SiweMessage, generate_nonce from datetime import datetime, timedelta from typing import Optional import os class SIWEAuthenticator: """SIWE authentication handler.""" def __init__(self, domain: str, uri: str): self.domain = domain self.uri = uri self.nonces = {} # In production, use Redis/DB def create_message(self, address: str, chain_id: int = 1, statement: str = "Sign in to access your account.") -> dict: """Create SIWE message for signing.""" nonce = generate_nonce() # Store nonce with expiry self.nonces[nonce] = { "address": address, "expires": datetime.utcnow() + timedelta(minutes=10) }