# Dùng RPC blockchain trong Agent ElizaOS với BlockVectra

> Source: https://docs.blockvectra.com/vi/guides/elizaos/

Agent ElizaOS truy cập các chuỗi EVM qua `@elizaos/plugin-evm`, plugin đọc URL RPC từ biến môi trường. Đặt `EVM_PROVIDER_URL` thành `https://api.blockvectra.com/v1/eth_mainnet/public` và plugin sẽ dùng BlockVectra cho Ethereum mainnet mà không cần API key. Gói miễn phí bổ sung các phương thức cần key với 30,000,000 CU cho mỗi cửa sổ 30 ngày. Kiểm tra ngày 2026-10-11.

```bash
# .env (the plugin also needs the wallet key; keep it in your secret store)
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
```

```json
{
  "name": "DeFiAgent",
  "plugins": ["@elizaos/plugin-evm"],
  "settings": { "chains": { "evm": ["base"] } }
}
```

Cài plugin bằng `bun add @elizaos/plugin-evm`. Ethereum mainnet được bật theo mặc định; mọi chuỗi khác bạn liệt kê trong `settings.chains.evm` phải dùng đúng tên export của `viem/chains`, và biến URL của nó là `ETHEREUM_PROVIDER_<CHAIN_NAME>` viết hoa, như trong [README trên npm](https://www.npmjs.com/package/@elizaos/plugin-evm) của plugin.

## Dùng API key

Endpoint công khai chỉ bao phủ các phương thức trong `public.methods` của từng chuỗi. Với phần còn lại, đặt key vào đường dẫn URL (`/v1/{chain}/{api_key}`). Plugin chỉ nhận một URL, nên đây là nơi duy nhất key đi qua đường dẫn. Export các biến trong shell khởi chạy Agent để key không bao giờ rơi vào tệp bạn commit:

```bash
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 có thể xuất hiện trong log, proxy và thông báo lỗi, vì vậy hãy dùng một key riêng với `cu_cap` thấp cho Agent, và thu hồi nó trong console nếu bị lộ.

Để tạo key mà không cần trình duyệt, làm theo bốn bước trong [hướng dẫn đăng ký bằng chương trình](https://docs.blockvectra.com/vi/guides/programmatic-signup/?ref=docs-elizaos): challenge, chữ ký, đăng nhập, rồi `POST /keys`. Nhà phát triển cũng có thể [tạo key trong console](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-elizaos). Cùng một key dùng được trên mọi chuỗi, nên một key phục vụ mọi biến `ETHEREUM_PROVIDER_*`.

## Thêm máy chủ MCP tài liệu

`@elizaos/plugin-mcp` cho phép một character dùng các máy chủ MCP từ xa qua Streamable HTTP. Cài bằng `bun add @elizaos/plugin-mcp`, rồi đăng ký máy chủ tài liệu BlockVectra trong phần cài đặt của character:

```json
{
  "plugins": ["@elizaos/plugin-evm", "@elizaos/plugin-mcp"],
  "settings": {
    "mcp": {
      "servers": {
        "blockvectra": { "type": "streamable-http", "url": "https://docs.blockvectra.com/mcp" }
      }
    }
  }
}
```

Khi đó Agent có thể gọi `list_chains`, `get_status`, `rpc_call`, `read_doc` và các công cụ khác được liệt kê trên [trang máy chủ MCP](https://docs.blockvectra.com/vi/guides/mcp-server/), không cần key. Các tùy chọn HTTP được plugin ghi trong tài liệu là `type`, `url` và `timeout`; plugin không ghi tùy chọn header nào, nên các công cụ MCP cần key không dùng được từ cấu hình này. Giữ các lệnh đọc cần key trong `plugin-evm` như trên.

## Các lỗi bạn có thể gặp

| Phản hồi                              | Ý nghĩa                                                                | Cần làm                                                       |
| ------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------- |
| HTTP 401, `-32024`, `missing_api_key` | URL dùng key được gọi mà không có key                                  | Đặt key vào đường dẫn hoặc header `x-api-key`                 |
| HTTP 401, `-32024`, `invalid_api_key` | Key không tồn tại, đã bị vô hiệu hóa hoặc đã bị thu hồi                | Kiểm tra key trong console; key mới cần vài giây để kích hoạt |
| `-32601`, `method_not_public`         | Phương thức không nằm trong `public.methods` của chuỗi                 | Chuyển URL của chuỗi đó từ `/public` sang dạng dùng key       |
| Chain not recognised                  | Tên trong `settings.chains.evm` không khớp tên nào trong `viem/chains` | Dùng đúng tên trong `viem/chains`                             |

Mỗi lỗi của BlockVectra có `data.reason` và `docs_url`; danh sách đầy đủ nằm trên [trang lỗi](https://docs.blockvectra.com/vi/errors/).

## Tài liệu chính thức

* [Tài liệu ElizaOS](https://elizaos.github.io/eliza/)
* [elizaos/eliza trên GitHub](https://github.com/elizaos/eliza)
* [`@elizaos/plugin-evm` trên npm](https://www.npmjs.com/package/@elizaos/plugin-evm)
* [`@elizaos/plugin-mcp` trên npm](https://www.npmjs.com/package/@elizaos/plugin-mcp)

## Câu hỏi thường gặp

**`EVM_PROVIDER_URL` có áp dụng cho Base không?** Không. Nó chỉ đặt Ethereum mainnet; các chuỗi khác dùng `ETHEREUM_PROVIDER_<CHAIN_NAME>`.

**Agent có thể ký và gửi giao dịch qua endpoint công khai không?** `eth_sendRawTransaction` nằm trong `public.methods` của những chuỗi liệt kê nó, với giới hạn tốc độ theo IP thấp hơn riêng tại `public.send_raw_rate_limit` trong `GET /v1/chains`. Hãy đọc giới hạn ở đó trước khi xây dựng dựa vào nó.

**Tôi có cần key cho máy chủ MCP không?** Không. Việc kết nối và các công cụ tài liệu, chuỗi và giá đều không cần key.

## Bước tiếp theo

* [Tổng quan framework Agent](https://docs.blockvectra.com/vi/guides/agent-frameworks/) cho LangChain, viem, wagmi và Coinbase AgentKit.
* [Kết nối AI Agent](https://docs.blockvectra.com/vi/guides/ai-agents/) để khám phá endpoint bằng MCP, llms.txt và OpenAPI.
* [Quy tắc thanh toán](https://docs.blockvectra.com/vi/guides/billing-rules/) về đo lường CU, giới hạn tốc độ và các lỗi không bị tính phí.
