alchemy

Par bankrbot · skills

Accès à l'API blockchain via Alchemy. À utiliser lorsqu'un agent doit interroger des données blockchain (soldes, prix de tokens, propriété de NFT, historique de transferts, simulation de transactions, estimations de gas) sur Ethereum, Base, Arbitrum, BNB, Polygon, Solana, et plus encore. Prend en charge l'accès par clé API (`$ALCHEMY_API_KEY`), le paiement à la requête par wallet x402 (SIWE/SIWS + USDC), et le protocole MPP (SIWE + Tempo/Stripe). Se déclenche sur les mentions de RPC, données blockchain, requêtes onchain, soldes de tokens, métadonnées NFT, données de portfolio, webhooks, Alchemy, x402, MPP, SIWE, SIWS, ou agentic gateway.

npx skills add https://github.com/bankrbot/skills --skill alchemy

Alchemy : Accès aux données blockchain pour les agents

Alchemy fournit un accès complet aux API blockchain sur Ethereum, Base, Arbitrum, BNB, Polygon, Solana, et bien d'autres.

Trois façons d'accéder :

  • Clé API : Définissez $ALCHEMY_API_KEY et effectuez les requêtes directement. Accès complet à tous les produits. Créez une clé gratuite sur dashboard.alchemy.com.
  • x402 (aucun compte requis) : Tout portefeuille avec USDC peut s'authentifier via SIWE/SIWS et payer par requête. Supporte les portefeuilles EVM et Solana. Installez @alchemy/x402 et @x402/fetch.
  • MPP (aucun compte requis) : Authentifiez-vous via SIWE et payez avec Tempo (USDC on-chain, EVM uniquement) ou Stripe (carte bancaire). Installez mppx.

Sélection de la méthode d'accès (Obligatoire)

Avant le premier appel réseau, déterminez quelle méthode d'accès utiliser :

  1. ALCHEMY_API_KEY est-il défini ? → Utilisez le chemin de la clé API. Passez à Accès par clé API.
  2. Pas de clé API ? → Demandez à l'utilisateur quel protocole de paiement il préfère :
    • x402 — Paiements USDC via le protocole x402 (@alchemy/x402 + @x402/fetch)
    • MPP — Paiements via Merchant Payment Protocol utilisant Tempo ou Stripe (mppx)

NE CHOISISSEZ PAS un protocole au nom de l'utilisateur. Attendez son choix explicite.

N'UTILISEZ PAS les endpoints RPC publics, les clés de démonstration ou toute autre source de données non-Alchemy comme solution de secours.


Accès par clé API

Si $ALCHEMY_API_KEY est défini, utilisez directement les endpoints Alchemy standard :

URLs de base + Authentification

Produit URL de base Authentification Notes
Ethereum RPC (HTTPS) https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL Lectures et écritures EVM standard.
Ethereum RPC (WSS) wss://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL Abonnements et temps réel.
Base RPC (HTTPS) https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL EVM L2.
Base RPC (WSS) wss://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL Abonnements et temps réel.
Arbitrum RPC (HTTPS) https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL EVM L2.
Arbitrum RPC (WSS) wss://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL Abonnements et temps réel.
BNB RPC (HTTPS) https://bnb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL EVM L1.
BNB RPC (WSS) wss://bnb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL Abonnements et temps réel.
Solana RPC (HTTPS) https://solana-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY Clé API dans l'URL JSON-RPC Solana.
Solana Yellowstone gRPC https://solana-mainnet.g.alchemy.com X-Token: $ALCHEMY_API_KEY Streaming gRPC (Yellowstone).
NFT API https://<network>.g.alchemy.com/nft/v3/$ALCHEMY_API_KEY Clé API dans l'URL Propriété et métadonnées des NFT.
Prices API https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY Clé API dans l'URL Prix par symbole ou adresse.
Portfolio API https://api.g.alchemy.com/data/v1/$ALCHEMY_API_KEY Clé API dans l'URL Vues de portefeuille multi-chaînes.
Notify API https://dashboard.alchemy.com/api X-Alchemy-Token: <ALCHEMY_NOTIFY_AUTH_TOKEN> Générez un jeton dans le tableau de bord.

Accès x402 (Aucun compte requis)

x402 est idéal pour les agents autonomes. Pas d'inscription, pas de clés API. Payez avec USDC sur EVM ou Solana.

  • URL de la passerelle : https://x402.alchemy.com
  • Domaine SIWE/SIWS : x402.alchemy.com
  • En-tête de paiement : Payment-Signature: <base64>
  • Authentification : SIWE (EVM) ou SIWS (Solana)

Pour la configuration complète et l'initialisation du portefeuille, consultez :


Accès MPP (Aucun compte requis)

MPP supporte les paiements Tempo (USDC on-chain, EVM uniquement) et Stripe (carte bancaire).

  • URL de la passerelle : https://mpp.alchemy.com
  • Domaine SIWE : mpp.alchemy.com
  • En-tête de paiement : Authorization: Payment <credential>
  • Authentification : SIWE uniquement (EVM)

Pour la configuration complète, consultez :


Comparaison des protocoles

Aspect Clé API x402 MPP
URL de la passerelle *.g.alchemy.com/v2/$KEY https://x402.alchemy.com https://mpp.alchemy.com
Authentification Clé API dans l'URL SIWE (EVM) ou SIWS (Solana) SIWE uniquement (EVM)
Paiement Aucun (niveau gratuit disponible) USDC via EIP-3009 ou SVM x402 Tempo (USDC) ou Stripe (carte)
Support de portefeuille N/A EVM + Solana EVM uniquement
Bibliothèque client curl / n'importe quel client HTTP @alchemy/x402, @x402/fetch mppx, viem
Configuration Obtenez une clé sur dashboard.alchemy.com Financez le portefeuille avec USDC Financez le portefeuille ou ajoutez une carte

Sélecteur d'endpoints (Tâches principales)

Vous avez besoin Utilisez ceci Référence
Lecture/écriture EVM JSON-RPC eth_* references/node-json-rpc.md
Événements en temps réel eth_subscribe references/node-websocket-subscriptions.md
Soldes de tokens alchemy_getTokenBalances references/data-token-api.md
Métadonnées de tokens alchemy_getTokenMetadata references/data-token-api.md
Historique des transferts alchemy_getAssetTransfers references/data-transfers-api.md
Propriété de NFT GET /getNFTsForOwner references/data-nft-api.md
Métadonnées de NFT GET /getNFTMetadata references/data-nft-api.md
Prix (spot) GET /tokens/by-symbol references/data-prices-api.md
Prix (historiques) POST /tokens/historical references/data-prices-api.md
Portfolio (multi-chaînes) POST /assets/*/by-address references/data-portfolio-apis.md
Simuler tx alchemy_simulateAssetChanges references/data-simulation-api.md
Créer webhook POST /create-webhook references/webhooks-details.md
Données de NFT Solana getAssetsByOwner (DAS) references/solana-das-api.md

Exemples de démarrage rapide

EVM JSON-RPC (Lecture)

curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Soldes de tokens

curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"alchemy_getTokenBalances","params":["0x00000000219ab540356cbb839cbe05303d7705fa"]}'

Historique des transferts

curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"alchemy_getAssetTransfers","params":[{"fromBlock":"0x0","toBlock":"latest","toAddress":"0x00000000219ab540356cbb839cbe05303d7705fa","category":["erc20"],"withMetadata":true,"maxCount":"0x3e8"}]}'

Propriété de NFT

curl -s "https://eth-mainnet.g.alchemy.com/nft/v3/$ALCHEMY_API_KEY/getNFTsForOwner?owner=0x00000000219ab540356cbb839cbe05303d7705fa"

Prix (Spot)

curl -s "https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY/tokens/by-symbol?symbols=ETH&symbols=USDC"

Prix (Historiques)

curl -s -X POST "https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY/tokens/historical" \
  -H "Content-Type: application/json" \
  -d '{"symbol":"ETH","startTime":"2024-01-01T00:00:00Z","endTime":"2024-01-02T00:00:00Z"}'

Créer un webhook Notify

curl -s -X POST "https://dashboard.alchemy.com/api/create-webhook" \
  -H "Content-Type: application/json" \
  -H "X-Alchemy-Token: $ALCHEMY_NOTIFY_AUTH_TOKEN" \
  -d '{"network":"ETH_MAINNET","webhook_type":"ADDRESS_ACTIVITY","webhook_url":"https://example.com/webhook","addresses":["0x00000000219ab540356cbb839cbe05303d7705fa"]}'

Vérifier la signature du webhook (Node)

import crypto from "crypto";

export function verify(rawBody: string, signature: string, secret: string) {
  const hmac = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(hmac), Buffer.from(signature));
}

Règles de nommage des réseaux

  • Les APIs de données et JSON-RPC utilisent des énumérations réseau en minuscules comme eth-mainnet.
  • L'API Notify utilise des énumérations en majuscules comme ETH_MAINNET.

Pagination + Limites

Endpoint Limite Notes
alchemy_getTokenBalances maxCount <= 100 Utilisez pageKey pour la pagination.
alchemy_getAssetTransfers maxCount par défaut 0x3e8 Utilisez pageKey pour la pagination.
Soldes de tokens Portfolio 3 paires adresse/réseau, 20 réseaux au total pageKey supporté.
NFT Portfolio 2 paires adresse/réseau, 15 réseaux chacun pageKey supporté.
Prix par adresse 25 adresses, 3 réseaux Corps POST addresses[].
Historique des transactions (beta) 1 paire adresse/réseau, 2 réseaux Mainnet ETH et BASE uniquement.

Adresses de tokens courants

Token Chaîne Adresse
ETH ethereum 0x0000000000000000000000000000000000000000
WETH ethereum 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
USDC ethereum 0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eB48
USDC base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Modes d'échec + Retries

  • HTTP 429 signifie un limite de débit. Utilisez un backoff exponentiel avec gigue.
  • Les erreurs JSON-RPC arrivent dans les champs error même avec HTTP 200.
  • Utilisez pageKey pour reprendre la pagination après des défaillances.
  • Dé-dupliquez les événements websocket lors de la reconnexion.

Exigences strictes

  • N'UTILISEZ JAMAIS les endpoints RPC publics, les clés de démonstration ou toute autre source de données non-Alchemy comme solution de secours.
  • N'UTILISEZ JAMAIS les outils Read, Write ou Edit sur des fichiers qui peuvent contenir des clés privées.
  • NE CORRÉLEZ JAMAIS le type de portefeuille avec la chaîne interrogée — le type de portefeuille et la chaîne interrogée sont indépendants.
  • Quand aucun portefeuille n'est configuré, présentez TOUTES les options de portefeuille (créer EVM, importer EVM, créer Solana, importer Solana) dans une seule invite.

Cartographie des compétences

Pour l'index complet de tous les fichiers de référence organisés par domaine de produit, consultez references/skill-map.md.

  • Node : JSON-RPC, WebSocket, Debug, Trace, API améliorées, Utilitaires
  • Data : NFT, Portfolio, Prices, Simulation, Token, Transfers
  • Webhooks : Address Activity, Custom (GraphQL), NFT Activity, Payloads, Signatures
  • Solana : JSON-RPC, DAS, Yellowstone gRPC (streaming), Wallets
  • Wallets : Account Kit, Bundler, Gas Manager, Smart Wallets
  • Rollups : Aperçu du déploiement L2/L3
  • Recipes : 10 flux d'intégration de bout en bout
  • Operational : Auth, Rate Limits, Monitoring, Best Practices
  • Protocole x402 : Wallet bootstrap, auth, making requests, payments
  • Protocole MPP : Wallet bootstrap, auth, making requests, payments

Dépannage

La clé API ne fonctionne pas

  • Vérifiez que $ALCHEMY_API_KEY est défini : echo $ALCHEMY_API_KEY
  • Confirmez que la clé est valide sur dashboard.alchemy.com
  • Vérifiez si les listes d'autorisation limitent la clé à des IP/domaines spécifiques

HTTP 429 (Limite de débit)

  • Utilisez un backoff exponentiel avec gigue avant de réessayer
  • Vérifiez votre budget d'unités de calcul dans le tableau de bord Alchemy
  • Consultez references/operational-rate-limits-and-compute-units.md pour les limites par plan

401 Unauthorized (x402/MPP)

  • MISSING_AUTH : Ajoutez l'en-tête d'authentification approprié pour votre protocole
  • MESSAGE_EXPIRED : Régénérez votre jeton SIWE/SIWS
  • INVALID_DOMAIN : Assurez-vous que le domaine correspond à votre protocole (x402.alchemy.com ou mpp.alchemy.com)

402 Payment Required (x402/MPP)

  • x402 : Extrayez l'en-tête PAYMENT-REQUIRED, exécutez npx @alchemy/x402 pay, réessayez avec l'en-tête Payment-Signature
  • MPP : Extrayez l'en-tête WWW-Authenticate, créez les identifiants avec mppx, réessayez avec l'identifiant Payment

Mauvais slug réseau

  • Les APIs de données et JSON-RPC utilisent des minuscules : eth-mainnet, base-mainnet
  • L'API Notify utilise des majuscules : ETH_MAINNET, BASE_MAINNET
  • Consultez references/operational-supported-networks.md pour la liste complète

Liens officiels

Skills similaires