Aller au contenu

Variables d'environnement

Toutes les stratégies s'exécutent à travers le sidecar passerelle (démarré automatiquement par almanak strat run). La passerelle détient les secrets, fournit l'accès RPC et exécute les transactions.

Créez un fichier .env dans le répertoire de votre stratégie avec les variables ci-dessous.


Obligatoires

Ces variables doivent être définies avant d'exécuter toute stratégie.

Variable Description Exemple
ALMANAK_PRIVATE_KEY Clé privée du portefeuille pour signer les transactions et dériver l'adresse du portefeuille 0x4c0883a6...

Accès RPC (recommandé ; RPCs publics gratuits utilisés si non défini)

Variable Priorité Description Exemple
ALMANAK_{CHAIN}_RPC_URL 1 (plus haute) URL RPC par chaîne avec préfixe ALMANAK https://arb-mainnet.infura.io/v3/KEY
{CHAIN}_RPC_URL 2 URL RPC par chaîne (ex : ARBITRUM_RPC_URL) https://arb-mainnet.infura.io/v3/KEY
ALMANAK_RPC_URL 3 URL RPC générique pour toutes les chaînes https://your-rpc.com/v1/KEY
RPC_URL 4 URL RPC générique simple https://your-rpc.com/v1/KEY
ALCHEMY_API_KEY 5 (secours) Clé API Alchemy -- URLs construites automatiquement par chaîne abc123def456
TENDERLY_API_KEY_{CHAIN} 6 (secours) Clé API Tenderly par chaîne (ex : TENDERLY_API_KEY_ARBITRUM) abc123...

N'importe quel fournisseur fonctionne : Infura, QuickNode, auto-hébergé, Alchemy, etc. ALCHEMY_API_KEY est un secours optionnel qui construit automatiquement les URLs pour toutes les chaînes supportées. Si rien n'est défini, la passerelle utilise les RPCs publics gratuits (limités en débit, best-effort).

Warning

Ne commitez jamais de clés privées. Utilisez un portefeuille de test dédié pour le développement.

Note : La passerelle accepte aussi ALMANAK_GATEWAY_PRIVATE_KEY (avec son propre préfixe). Si définie, elle est prioritaire. Sinon, la passerelle utilise ALMANAK_PRIVATE_KEY -- vous n'avez besoin que d'une seule variable.


Clés API optionnelles

Définissez-les selon les protocoles et fonctionnalités utilisés par votre stratégie.

Variable Quand c'est nécessaire Obtenir une clé
ENSO_API_KEY Routage de swaps via l'agrégateur Enso Finance enso.finance
COINGECKO_API_KEY Améliore les limites de débit pour les données de prix (fonctionne sans clé) coingecko.com/en/api
ALMANAK_API_KEY Authentification de la plateforme Almanak app.almanak.co
THEGRAPH_API_KEY Backtesting avec données de subgraphs (volumes DEX, APYs de prêt) thegraph.com/studio

Spécifiques aux protocoles

Nécessaires uniquement si votre stratégie utilise ces protocoles spécifiques.

Kraken

Variable Description
KRAKEN_API_KEY Clé API Kraken (obtenir des identifiants)
KRAKEN_API_SECRET Secret API Kraken

Polymarket

Variable Description
POLYMARKET_WALLET_ADDRESS Adresse du portefeuille Polymarket
POLYMARKET_PRIVATE_KEY Clé de signature Polymarket
POLYMARKET_API_KEY Clé API CLOB
POLYMARKET_SECRET Secret HMAC
POLYMARKET_PASSPHRASE Phrase secrète API

Pendle

Variable Description
ALMANAK_GATEWAY_PENDLE_API_KEY Clé API du protocole Pendle

Solana

Variable Description
SOLANA_PRIVATE_KEY Paire de clés Ed25519 au format base58 (ou semence hexadécimale de 64 caractères). Requise pour les stratégies Solana.
SOLANA_RPC_URL Point de terminaison RPC Solana. Par défaut https://api.mainnet-beta.solana.com (limité en débit). Utilisez Helius, QuickNode ou Triton en production.
JUPITER_API_KEY Clé API de l'agrégateur Jupiter. Niveau gratuit utilisé si non définie.
DRIFT_DATA_API_BASE_URL Surcharge de l'URL de base de l'API de données Drift (par défaut https://data.api.drift.trade).
METEORA_API_BASE_URL Surcharge de l'URL de base de l'API Meteora (par défaut https://dlmm.datapi.meteora.ag).
ORCA_API_BASE_URL Surcharge de l'URL de base de l'API Orca (par défaut https://api.orca.so/v2/solana).
RAYDIUM_API_BASE_URL Surcharge de l'URL de base de l'API Raydium (par défaut https://api-v3.raydium.io).

Points de terminaison de données Polymarket

Variable Description
POLYMARKET_GAMMA_URL Surcharge du point de terminaison Polymarket Gamma (métadonnées de marché). Repli sur la valeur amont par défaut si non définie.
POLYMARKET_CLOB_URL Surcharge du point de terminaison Polymarket CLOB (carnet d'ordres + gestion des ordres).
POLYMARKET_DATA_API_URL Surcharge du point de terminaison de l'API de données Polymarket (positions / historique).

Autres intégrations externes

Variable Description
LIFI_API_KEY Clé API de l'agrégateur de bridge / swap Li.Fi.
RUGCHECK_API_KEY Clé API Rugcheck.xyz pour le scoring de risque des tokens Solana.

Authentification et sécurité de la passerelle

Critique pour les déploiements hébergés (Almanak Infra). Chaque variable est lue une fois au démarrage de la passerelle ; les modifications nécessitent un redémarrage.

Variable Description
ALMANAK_GATEWAY_AUTH_TOKEN Jeton secret partagé pour l'authentification gRPC. Lorsqu'il est défini, les clients doivent fournir ce jeton dans les métadonnées pour accéder aux services. Requis sur les déploiements hébergés.
ALMANAK_GATEWAY_ALLOW_INSECURE Lorsque true, autorise la passerelle à démarrer sans ALMANAK_GATEWAY_AUTH_TOKEN. Par défaut false (la passerelle refuse de démarrer). Uniquement pour le développement local — ne jamais activer sur un déploiement hébergé.
ALMANAK_GATEWAY_OPERATOR_TOKEN Jeton de second facteur (VIB-4493 Phase 1) requis pour les RPC de mutation sur DashboardService (PreviewReconcile, ApplyReconcile, RefreshRegistryFromChain). Les appelants doivent envoyer la même valeur dans l'en-tête de métadonnées x-operator-token en plus du jeton d'authentification habituel. Lorsqu'il n'est pas défini (par défaut), les handlers se rabattent sur l'authentification par jeton seul — sûr pour les déploiements mono-utilisateur / locaux.

Les déploiements hébergés sont non sécurisés sans ces variables

Omettre ALMANAK_GATEWAY_AUTH_TOKEN (ou activer ALMANAK_GATEWAY_ALLOW_INSECURE=true) sur une passerelle hébergée expose chaque service gRPC à des appelants non authentifiés — y compris ExecutionService, qui signe et soumet les transactions. Traitez les deux comme des secrets de production.


Surcharges de prix manuelles

Solution de dernier recours pour les tokens qu'aucune source d'oracle réelle ne peut tarifer (ex. tokens long-tail sur des chaînes émergentes).

Variable Description
ALMANAK_GATEWAY_ENABLE_MANUAL_PRICE_OVERRIDES Active le repli ManualPriceOverrideSource. Par défaut false. Désactivé par défaut car une variable mal configurée pourrait injecter un prix erroné dans les décisions de slippage / teardown.
ALMANAK_PRICE_OVERRIDE_<TOKEN> Prix de surcharge par token en USD. Consulté uniquement lorsque toutes les sources d'oracle réelles ont échoué à tarifer le token. Exemple : ALMANAK_PRICE_OVERRIDE_W0G=0.012.

Configurez les deux : le drapeau d'activation allume la source ; les variables par token fournissent les prix.


Simulation Tenderly

Utilisée par SimulationService.SimulateBundle lorsque le simulateur est réglé sur "tenderly" (ou auto-sélectionné). Les trois doivent être définis ensemble — laisser l'un vide désactive Tenderly et bascule vers la simulation Alchemy si disponible.

Variable Description
ALMANAK_GATEWAY_TENDERLY_ACCOUNT_SLUG Slug de compte Tenderly (le segment <account> de l'URL du tableau de bord).
ALMANAK_GATEWAY_TENDERLY_PROJECT_SLUG Slug de projet Tenderly dans le compte.
ALMANAK_GATEWAY_TENDERLY_ACCESS_KEY Clé d'accès Tenderly avec permissions de simulation (paramètres du compte → clés d'accès).

Fournisseur de portefeuille (multi-fournisseur)

Configure la ou les source(s) d'évaluation de portefeuille de la passerelle. Utilisé par IntegrationService.GetWalletPortfolio / GetWalletPositions pour agréger les soldes et les positions DeFi sur plusieurs chaînes.

Variable Description
ALMANAK_GATEWAY_PORTFOLIO_API_KEY Clé API mono-fournisseur (chemin hérité mono-fournisseur).
ALMANAK_GATEWAY_PORTFOLIO_API_PROVIDER Nom du fournisseur unique. Par défaut zerion.
ALMANAK_GATEWAY_PORTFOLIO_PROVIDERS Surcharge multi-fournisseur. Noms de fournisseurs séparés par des virgules, par ordre de priorité (ex. zerion,moralis). Lorsque défini, prend le pas sur les clés mono-fournisseur. Chaque fournisseur lit sa propre clé API depuis {NAME}_API_KEY (ex. ZERION_API_KEY, MORALIS_API_KEY).

Portefeuille Safe

Pour les stratégies qui s'exécutent via un multisig Gnosis Safe.

Variable Description
ALMANAK_GATEWAY_SAFE_ADDRESS Adresse du portefeuille Safe
ALMANAK_GATEWAY_SAFE_MODE direct (Anvil/seuil-1) ou zodiac (production)
ALMANAK_GATEWAY_ZODIAC_ROLES_ADDRESS Adresse du module Zodiac Roles (mode zodiac)
ALMANAK_GATEWAY_SIGNER_SERVICE_URL URL du service de signature distant (mode zodiac)
ALMANAK_GATEWAY_SIGNER_SERVICE_JWT JWT du signataire distant (mode zodiac)

Backtesting

URLs RPC d'archive

Nécessaires pour les données historiques on-chain (prix Chainlink, calculs TWAP). Les nœuds RPC standard ne supportent pas les requêtes d'état historique. Utilisez des fournisseurs compatible archive comme Alchemy (payant), QuickNode ou Infura.

Modèle : ARCHIVE_RPC_URL_{CHAIN} (ex : ARCHIVE_RPC_URL_ARBITRUM, ARCHIVE_RPC_URL_ETHEREUM, ARCHIVE_RPC_URL_BASE, ARCHIVE_RPC_URL_OPTIMISM, ARCHIVE_RPC_URL_POLYGON, ARCHIVE_RPC_URL_AVALANCHE)

Clés API d'explorateurs de blocs

Optionnelles, pour les données historiques de prix du gas. Modèle : {EXPLORER}_API_KEY

Variable Explorateur
ETHERSCAN_API_KEY etherscan.io
ARBISCAN_API_KEY arbiscan.io
BASESCAN_API_KEY basescan.org
OPTIMISTIC_ETHERSCAN_API_KEY optimistic.etherscan.io
POLYGONSCAN_API_KEY polygonscan.com
SNOWTRACE_API_KEY snowtrace.io
BSCSCAN_API_KEY bscscan.com

.env de démarrage rapide

# Obligatoire
ALMANAK_PRIVATE_KEY=0xYOUR_PRIVATE_KEY

# Accès RPC (choisissez un)
RPC_URL=https://your-rpc-provider.com/v1/your-key
# ALCHEMY_API_KEY=your_alchemy_key  # alternative : construit automatiquement les URLs par chaîne

# Recommandé
ENSO_API_KEY=your_enso_key
COINGECKO_API_KEY=your_coingecko_key

Tous les autres paramètres de la passerelle et du framework ont des valeurs par défaut raisonnables et n'ont pas besoin d'être définis. Consultez .env.example pour la liste complète des options avancées.