Skip to main content
Un agente AI che controlla un wallet su Base può generare la propria API key Venice senza intervento umano. L’agente acquisisce VVV, ne effettua lo staking, richiede una challenge a breve durata vincolata all’indirizzo del proprio wallet, la firma e la invia per ricevere una nuova API key associata al wallet di staking. Questa guida illustra l’intero flusso end-to-end e copre le opzioni di finanziamento per pagare effettivamente l’inferenza una volta generata la chiave.

Prerequisiti

  • Un wallet EVM su Base controllato dall’agente (chiave privata in una variabile d’ambiente o in un secret manager).
  • Una piccola quantità di ETH su Base per il gas (lo staking richiede due transazioni: approve poi stake).
  • Qualsiasi quantità non zero di VVV in staking. L’endpoint di minting richiede solo che il wallet abbia un saldo sVVV non zero, quindi 1 VVV è sufficiente per generare una chiave. Consulta Pagare l’inferenza per ciò che ti serve per chiamare effettivamente gli endpoint a pagamento.
Usa un wallet dedicato per l’agente piuttosto che un wallet di tesoreria. La chiave privata del wallet firma ogni challenge Venice, quindi il suo blast radius dovrebbe essere piccolo.

Passaggi

1

Acquisisci VVV

Invia VVV al wallet dell’agente, o fai eseguire all’agente uno swap su un DEX come Aerodrome o Uniswap.Contratto del token VVV su Base: 0xacfE6019Ed1A7Dc6f7B508C02d1b04ec88cC21bf
2

Effettua lo staking di VVV con Venice

Esegui lo staking dei VVV nello smart contract di staking Venice all’indirizzo 0x321b7ff75154472B18EDb199033fF4D116F340Ff. Sono due transazioni:
  1. approve(spender, amount) sul token VVV, dove spender è il contratto di staking.
  2. stake(amount) sul contratto di staking.
Smart Contract Staking
Quando la seconda transazione viene confermata, il saldo VVV del wallet diminuisce e il suo saldo sVVV aumenta della stessa quantità. L’endpoint di minting legge il saldo sVVV per confermare che il wallet ha effettuato lo staking.
3

Richiedi una challenge per il wallet

Chiama GET /api/v1/api_keys/generate_web3_key?address=<wallet address> per ottenere una challenge EIP-4361 (Sign-In with Ethereum) a breve durata. L’endpoint non è autenticato, ma la challenge è vincolata all’indirizzo che passi e può essere riscattata solo da quel wallet.
La risposta contiene message, nonce e expiresAt:
La challenge scade 15 minuti dopo l’emissione ed è monouso: viene consumata alla prima chiave creata con essa. Richiedine una nuova per ogni chiave.
4

Firma la challenge con il wallet di staking

Firma la stringa message così com’è con il wallet che detiene i VVV in staking. Si tratta di un personal_sign standard. Sia ethers.Wallet.signMessage(message) sia account.signMessage({ message }) di viem producono la firma corretta.Non riformattare, non riavvolgere e non rigenerare il messaggio. Venice verifica la firma sui byte esatti che ha emesso e ricontrolla in modo indipendente domain, URI, Chain ID, dichiarazione e indirizzo al suo interno.
5

Genera l'API key

Esegui POST con address, signature e message allo stesso endpoint, insieme al tipo di chiave che desideri.
Campi obbligatori: address, signature, message, apiKeyType (INFERENCE o ADMIN).Campi opzionali: description, expiresAt, consumptionLimit (limita la spesa totale su questa chiave, in usd, vcu o diem).In caso di successo, la risposta contiene la stringa apiKey generata. Conservala nel secret store dell’agente e usala come un normale Bearer token (Authorization: Bearer <key>).

Esempio end-to-end

L’esempio qui sotto usa un wallet reale da una variabile d’ambiente piuttosto che uno generato casualmente. Un wallet casuale non ha VVV in staking e il minting verrà rifiutato con l’errore Wallet has no staked VVV on Base.

Riferimento errori

L’endpoint restituisce messaggi di errore specifici e azionabili. Mappali nell’agente in modo che possa decidere se ritentare, richiedere una nuova challenge o fermarsi.

Perché la challenge è vincolata al wallet e monouso

La challenge è un messaggio EIP-4361 leggibile da una persona anziché un token opaco, e offre tre protezioni che contano se a un wallet viene mai chiesto di firmarne una al di fuori del tuo agente:
  • Vincolo all’indirizzo. La challenge indica il wallet per cui è stata emessa. Una challenge ottenuta da una parte non può essere firmata e riscattata da un wallet diverso.
  • Nonce monouso. Venice traccia il nonce lato server e lo consuma alla prima generazione riuscita. Una firma genera esattamente una chiave, quindi una firma intercettata non può essere riutilizzata per ottenerne altre.
  • Dichiarazione leggibile. Il messaggio afferma chiaramente che firmare autorizza la creazione di una API key Venice, così un’interfaccia wallet come MetaMask mostra al firmatario ciò che sta approvando invece di un blob binario.
Considera una firma su questo messaggio equivalente a cedere i diritti di creazione delle API key sul tuo account Venice. Firma solo challenge la cui riga domain riporta api.venice.ai e la cui dichiarazione nomina la creazione di una API key Venice. Una chiave ADMIN può creare ed eliminare altre chiavi e spendere dai tuoi saldi DIEM, crediti inclusi e USD.

Pagare l’inferenza

Generare una chiave e poter chiamare gli endpoint a pagamento con essa sono due cose distinte. Una chiave appena generata si autentica correttamente ma non può chiamare gli endpoint a pagamento (come /chat/completions) finché l’account del wallet non ha un saldo spendibile. La chiave generata può spendere dall’account utente in questo ordine di priorità: DIEM, poi crediti in bundle, poi USD. Se l’agente ha bisogno di un percorso di finanziamento completamente crypto-native e headless, le opzioni più pulite sono:
  1. Effettuare lo staking di più VVV in modo che l’allocazione giornaliera di DIEM copra la spesa dell’agente. La chiave generata lo riconosce automaticamente.
  2. Usare il flusso wallet x402 al posto dell’API key. Con x402 l’agente firma un messaggio Sign-In-With-X per richiesta, ricarica direttamente con USDC su Base o Solana tramite POST /api/v1/x402/top-up e paga per richiesta. Il saldo USDC x402 è legato al wallet, non all’utente, quindi non appare come saldo per la Bearer key generata, ma consente allo stesso wallet di pagare l’inferenza in modo programmatico.

Risorse correlate

Crypto e agenti

Usa Venice sia come provider di modelli sia come layer RPC blockchain per agenti autonomi.

Autenticazione wallet x402

Paga per richiesta con USDC su Base o Solana, senza API key.

Endpoint Generate Web3 API Key

Riferimento dell’endpoint di minting.

Guida API key standard

Per gli utenti che preferiscono generare una chiave dalla dashboard.