Genera una trading key permissioned
Il wizard in /app/settings crea un authenticator on-chain fresco che il bot userà per firmare i trade — senza mai toccare la tua mnemonic.
Cosa viene creato
Al click, il wizard genera una keypair secp256k1 random nel browser. È la "trading key" — un'identità crittografica separata usata solo per firmare place/cancel order.
Poi chiede a Keplr (usando il tuo owner wallet) di firmare una singola transazione MsgAddAuthenticator. Quella transazione registra la parte pubblica della trading key on-chain come firmatario delegato con una whitelist hardcoded: solo place + cancel order, solo su ETH/SOL/BNB, solo su subaccount 0. Nient'altro.
Walkthrough del wizard
Step 1 (Keplr detect): il wizard controlla window.keplr. Se manca, vedi un link per installare. Se presente, chiama keplr.enable('dydx-mainnet-1') e legge il tuo owner address da getOfflineSigner.
Step 2 (pre-flight): fetcha i clob_pair_ids di ETH/SOL/BNB dall'indexer pubblico, poi controlla che il bank abbia almeno ~0.02 DYDX per gas. Se manca, vedi un pannello "need a small gas top-up" con il tuo indirizzo per il top-up.
Step 3 (generate + sign): costruisce la trading-key + authenticator-data, apre il popup Keplr per firmare MsgAddAuthenticator. Tu approvi su Keplr (o sul Ledger se ne hai connesso uno).
Step 4 (discover): dopo il broadcast, il wizard aspetta ~8 secondi, interroga il nodo REST per i tuoi authenticator, trova quello appena registrato. Ottiene così l'authenticator id (un intero piccolo).
Step 5 (persist + display): la private key viene POSTata a /api/permissioned-keys/register, dove il server la cifra AES-256-GCM e la salva nella tua riga PermissionedKey in DB. Il wizard mostra poi il blocco .env — tre righe (DYDX_OWNER_ADDRESS, DYDX_API_PRIVATE_KEY, DYDX_AUTHENTICATOR_ID) da incollare sul bot host.
Salvare il blocco .env
La private key in chiaro è mostrata UNA volta, in questa schermata di successo. Botely conserva una copia cifrata in DB (per readiness Phase 1 multi-tenant) ma non può decifrarla per restituirtela. Salva il blocco in 1Password / Bitwarden / vault a tua scelta prima di cliccare Done.
Se perdi il blocco, non puoi recuperare la private key — ma puoi revocare la trading key esistente e rilanciare il wizard a basso costo (~$0.50 di gas). Non è una catastrofe, è una scocciatura.
Dopo il wizard
Phase 0: incolla i tre env var nel .env del bot host (tipicamente /etc/botely-saas.env o ~/crypto-bot/.env), poi `pm2 restart crypto-bot`. Il dydxClient del bot rileva il triplo al boot e switcha la modalità firma a permissioned in automatico — nessun cambio di codice.
Lascia DYDX_MNEMONIC nel .env per 48 ore come paracadute rollback. Dopo aver visto il bot tradeare con successo in firma permissioned per due giorni, rimuovi la riga mnemonic e restart di nuovo.