在 ElizaOS Agent 中用 BlockVectra 调用区块链 RPC
用两个环境变量把 ElizaOS 的 plugin-evm 指向 BlockVectra,先用免 key 公共端点,再通过 plugin-mcp 接入文档 MCP 服务。
ElizaOS Agent 通过 @elizaos/plugin-evm 访问 EVM 链,插件从环境变量读取 RPC 地址。把 EVM_PROVIDER_URL 设为 https://api.blockvectra.com/v1/eth_mainnet/public,插件即可无需 API key 使用 BlockVectra 的以太坊主网。加上 key 可使用其余方法,免费套餐每个 30 天窗口含 30,000,000 CU,核对于 。
# .env(插件还需要钱包密钥;请放在你的密钥库里)
EVM_PRIVATE_KEY=your-wallet-private-key
EVM_PROVIDER_URL=https://api.blockvectra.com/v1/eth_mainnet/public
ETHEREUM_PROVIDER_BASE=https://api.blockvectra.com/v1/base_mainnet/public{
"name": "DeFiAgent",
"plugins": ["@elizaos/plugin-evm"],
"settings": { "chains": { "evm": ["base"] } }
}用 bun add @elizaos/plugin-evm 安装插件。以太坊主网默认启用;settings.chains.evm 中列出的其他链必须使用其 viem/chains 导出名,对应的地址变量为大写的 ETHEREUM_PROVIDER_<CHAIN_NAME>,见插件在 npm 上的 README。
使用 API key
公共端点只覆盖各链 public.methods 中的方法。其余方法把 key 放进 URL 路径(/v1/{chain}/{api_key})。该插件只接受 URL,所以这里 key 只能放在路径里。在启动 Agent 的 shell 中导出变量,key 就不会落进会提交的文件:
export EVM_PROVIDER_URL=https://api.blockvectra.com/v1/eth_mainnet/${BLOCKVECTRA_API_KEY}
export ETHEREUM_PROVIDER_BASE=https://api.blockvectra.com/v1/base_mainnet/${BLOCKVECTRA_API_KEY}URL 可能出现在日志、代理和错误信息里,建议为 Agent 单独创建一个 cu_cap 较低的 key,泄露后在控制台吊销即可。
无需浏览器创建 key,按程序化开户指南的四步操作:challenge、签名、login,再 POST /keys。开发者也可以在控制台创建 key。同一个 key 适用于所有链,因此每个 ETHEREUM_PROVIDER_* 变量用同一个 key 即可。
接入文档 MCP 服务
@elizaos/plugin-mcp 让角色通过 Streamable HTTP 使用远程 MCP 服务。用 bun add @elizaos/plugin-mcp 安装,然后在角色配置中登记 BlockVectra 文档服务:
{
"plugins": ["@elizaos/plugin-evm", "@elizaos/plugin-mcp"],
"settings": {
"mcp": {
"servers": {
"blockvectra": { "type": "streamable-http", "url": "https://docs.blockvectra.com/mcp" }
}
}
}
}之后 Agent 即可免 key 调用 list_chains、get_status、rpc_call、read_doc 等 MCP 服务页列出的工具。插件文档中的 HTTP 选项只有 type、url 与 timeout,没有请求头选项,因此这种配置下无法使用带 key 的 MCP 工具。带 key 的读取请按上文交给 plugin-evm。
可能遇到的错误
| 响应 | 含义 | 处理方式 |
|---|---|---|
HTTP 401,-32024,missing_api_key | 调用带 key 的地址时没带 key | 把 key 放进路径或 x-api-key 请求头 |
HTTP 401,-32024,invalid_api_key | key 不存在、已停用或已撤销 | 在控制台核对 key;新 key 需要几秒钟生效 |
-32601,method_not_public | 该方法不在该链的 public.methods 中 | 把该链的地址从 /public 换成带 key 的形式 |
| 链未被识别 | settings.chains.evm 中的名称与 viem/chains 名称不一致 | 使用准确的 viem/chains 名称 |
BlockVectra 的每个错误都带有 data.reason 与 docs_url;完整列表见错误码页。
官方文档
常见问题
EVM_PROVIDER_URL 对 Base 生效吗? 不生效。它只设置以太坊主网;其他链使用 ETHEREUM_PROVIDER_<CHAIN_NAME>。
Agent 能通过公共端点签名并发送交易吗? 列出 eth_sendRawTransaction 的链,其 public.methods 中包含该方法,并在 GET /v1/chains 的 public.send_raw_rate_limit 中有单独且更低的单 IP 速率限制。构建前请先在那里确认限额。
使用 MCP 服务需要 key 吗? 不需要。连接以及文档、链与定价工具均免 key。
下一步
- Agent 框架总览:LangChain、viem、wagmi 与 Coinbase AgentKit。
- 接入 AI Agent:通过 MCP、llms.txt 和 OpenAPI 自动发现接口。
- 计费规则:CU 计量、速率限制与不计费错误。
最后更新: