DeFi · Vault infrastructure · AI-native layerAttivo

Factor

Founding Engineer · Top contributor su Discover · 100% sole author su VaaS / Agent · 2023 – present

Visita il sito
01

Problema

Costruire l'infrastruttura per un'esperienza DeFi vault-as-a-service end-to-end: contratti ERC-4626 con manager-adapter, SDK tipizzato, due UI in produzione (power-user + depositor) e — dal 2026 — un layer AI-native che esponga vault e strategie a LLM, agent autonomi e API HTTP a pagamento.

02

Architettura

Factor.fi è un'infrastruttura per vault DeFi su Arbitrum, Base ed Ethereum: vault ERC-4626 Studio Pro, manager-adapter pattern con integrazione di Aave, Compound, Morpho, Silo, Uniswap V3, OpenOcean e Pendle, più un SDK tipizzato (`@factordao/sdk`, `@factordao/sdk-studio`). Sopra girano due UI in produzione: Factor Studio (Vite + React 19 + wagmi + RainbowKit, ~78k LOC, ~253 commit Andrea) per power-user che compongono e gestiscono vault, e Factor Discover (Next.js 14 + Sentry, ~56k LOC, ~468 commit Andrea — top contributor individuale) per i depositanti su `pro.factor.fi`. Nel 2026 ho aggiunto un layer AI-native: un server MCP (`factor-mcp`, 68 tool) che espone l'intero SDK agli LLM con due modalità (stdio classica e stateless multi-tenant via AsyncLocalStorage); un prodotto Vault-as-a-Service (`factor-vaas`, 100% sole author) HTTP con pagamenti via x402 / USDC su Base, worker BullMQ, pool di wallet HD-derived (treasury all'indice 0, ogni worker su indice proprio — nessuna chiave condivisa) e motore di ribilanciamento basato su Anthropic; un agente DeFi autonomo (`factor-agent`, 4.8k LOC, working tree only) che consuma il server MCP via task pianificati con cron (vault-monitor, position-tracker, strategy-executor, auto-compound, risk-guard, reporter), con notifiche Telegram + Discord.

03

Decisioni chiave

HD wallet pool con isolamento per worker

In `factor-vaas` il treasury vive sull'indice HD 0; ogni worker deriva il proprio indice. Nessuna chiave condivisa, scaling orizzontale immediato e blast radius minimo se un worker viene compromesso.

MCP stateless via AsyncLocalStorage

`factor-mcp` ha due modalità: stdio classica e stateless per gateway multi-tenant. ChainId ed environment viaggiano nel context per-richiesta tramite AsyncLocalStorage; `sendTransaction` restituisce calldata non firmato anziché broadcast — un singolo processo serve molti utenti senza mutazione di stato globale.

Pagamenti x402 per primitive on-chain

VaaS espone `POST /api/vault` dietro x402 (Coinbase, USDC su Base): il client ottiene 402 Payment Required, firma il pagamento e riprova. Niente account, niente carte di credito, una primitiva HTTP+blockchain pulita. Pricing in funzione dei componenti (`3 + adapters*1 + assets*0.10` USDC).

Manager-adapter pattern riusabile

Ogni protocollo (Aave, Morpho, Silo, Compound, Uniswap V3, OpenOcean, Pendle) è un adapter isolato dietro un'interfaccia comune. Le strategie diventano building block componibili anziché contratti monolitici, audit più semplice e onboarding di nuovi protocolli incrementale.

04

Risultati

Feb 2024 – oraPeriodo attivo
~140k LOCCodebase principali
468 + 253Commit su Discover · Studio
Arbitrum · Base · EthereumChain supportate
MCP · VaaS · AgentLayer AI-native (2026)
05

Tech e pilastri

Tech Stack

SolidityERC-4626FoundryHardhatwagmiviemethersTypeScriptNode.jsExpressDrizzle ORMPostgresRedisBullMQReact 19Next.js 14ViteRainbowKitRadix UITailwindTanStack Query/TableMCP (Model Context Protocol)Anthropic SDKx402AsyncLocalStorageSentryDrizzle-KitZodLernai18next

Pillars touched

Traditional DevWeb3 / BlockchainAI EngineeringCloud / DevOps
Factor — DeFi · Vault infrastructure · AI-native layer · Andrea Ritondale