Блокчейн RPC в агентах Coinbase AgentKit с BlockVectra

Направьте чтения и транзакции агента Coinbase AgentKit через BlockVectra, передав ViemWalletProvider клиент viem с публичным эндпоинтом без ключа, затем добавьте API key и инструменты MCP.

Coinbase AgentKit отправляет ончейн-действия через провайдер кошелька, а ViemWalletProvider принимает любой WalletClient из viem. Укажите этому клиенту https://api.blockvectra.com/v1/base_mainnet/public в качестве транспорта, и RPC-трафик AgentKit пойдет через BlockVectra без API key. Ключ открывает остальные методы; Free Plan дает 30,000,000 CU за каждое окно в 30 дн. Проверено .

import { AgentKit, ViemWalletProvider } from "@coinbase/agentkit";
import { getLangChainTools } from "@coinbase/agentkit-langchain";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const client = createWalletClient({
  account: privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`),
  chain: base,
  transport: http("https://api.blockvectra.com/v1/base_mainnet/public"),
});

const agentKit = await AgentKit.from({ walletProvider: new ViemWalletProvider(client) });
const tools = await getLangChainTools(agentKit);

Установите зависимости командой npm install @coinbase/agentkit @coinbase/agentkit-langchain viem. tools — это список, который интеграция AgentKit с LangChain передает в createAgent({ model, tools }); ключ кошелька остается в вашем окружении.

Использование API key

Публичный эндпоинт обслуживает только методы из public.methods каждой сети. Для остальных передавайте ключ в заголовке x-api-key и храните его в окружении, чтобы он не попадал в URL:

const transport = http("https://api.blockvectra.com/v1/base_mainnet", {
  fetchOptions: { headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! } },
});

Если клиент не умеет задавать заголовки, ключ можно передать в пути URL (/v1/{chain}/{api_key}); URL могут попадать в журналы доступа, поэтому лучше использовать заголовок.

Создайте ключ без браузера по четырем шагам из руководства по программной регистрации: challenge, подпись, login, затем POST /keys. Разработчики также могут создать ключ в консоли. Один ключ работает во всех сетях, поэтому при переключении агента на другую сеть меняются только идентификатор сети и объект сети viem.

Совмещение действий AgentKit с MCP-сервером документации

Пакет AgentKit для TypeScript предоставляет свои действия как инструменты LangChain, поэтому инструменты MCP из адаптера LangChain попадают в тот же массив tools. Следуйте руководству по LangChain, чтобы загрузить https://docs.blockvectra.com/mcp, затем объедините списки:

const agent = createAgent({ model: "claude-sonnet-5", tools: [...tools, ...(await adapter.listTools())] });

Агент получает действия кошелька AgentKit и инструменты BlockVectra list_chains, get_status, rpc_call и read_doc, перечисленные на странице MCP-сервера. Для подключения ключ не нужен.

Ошибки, которые вы можете увидеть

ОтветЗначениеЧто делать
HTTP 401, -32024, missing_api_keyЗапрос, требующий ключ, отправлен без ключаПередайте ключ в заголовке x-api-key (или в пути URL)
HTTP 401, -32024, invalid_api_keyКлюч неизвестен, отключен или отозванПроверьте ключ в консоли; новый ключ активируется за несколько секунд
-32601, method_not_publicМетода нет в public.methods сетиЗамените в транспорте /public на URL с ключом

Каждая ошибка BlockVectra содержит data.reason и docs_url; полный список приведен на странице ошибок.

Официальная документация

Частые вопросы

Видит ли BlockVectra приватный ключ кошелька? Нет. Аккаунт viem подписывает локально; эндпоинт получает чтения и подписанные сырые транзакции.

Может ли агент читать логи через публичный эндпоинт? Нет. Для eth_getLogs и Data API нужен API key.

Передается ли ключ в аргументах инструмента MCP? Нет. Храните его в окружении или в заголовках MCP-клиента.

Дальнейшие шаги

Последнее обновление:

На этой странице