# ใช้ blockchain RPC ใน ElizaOS agent ด้วย BlockVectra

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

ElizaOS agent เข้าถึงเชน EVM ผ่าน `@elizaos/plugin-evm` ซึ่งอ่าน RPC URL จากสภาพแวดล้อม ตั้ง `EVM_PROVIDER_URL` เป็น `https://api.blockvectra.com/v1/eth_mainnet/public` แล้วปลั๊กอินจะใช้ BlockVectra สำหรับ Ethereum mainnet โดยไม่ต้องใช้ API key แผนบริการฟรีเพิ่มเมธอดที่ต้องใช้คีย์ด้วย 30,000,000 CU ต่อช่วงเวลา 30 วัน ตรวจสอบเมื่อ 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"] } }
}
```

ติดตั้งปลั๊กอินด้วย `bun add @elizaos/plugin-evm` Ethereum mainnet เปิดใช้งานโดยค่าเริ่มต้น; เชนอื่นทุกเชนที่คุณระบุใน `settings.chains.evm` ต้องใช้ชื่อ export ของ `viem/chains` และตัวแปร URL ของเชนนั้นคือ `ETHEREUM_PROVIDER_<CHAIN_NAME>` เป็นตัวพิมพ์ใหญ่ ตามที่ระบุใน [README บน npm](https://www.npmjs.com/package/@elizaos/plugin-evm) ของปลั๊กอิน

## ใช้ API key

endpoint สาธารณะครอบคลุมเฉพาะเมธอดใน `public.methods` ของแต่ละเชน สำหรับเมธอดที่เหลือ ให้ใส่คีย์ในพาธของ URL (`/v1/{chain}/{api_key}`) ปลั๊กอินรับเพียง URL จึงเป็นที่เดียวที่คีย์เดินทางในพาธ ให้ export ตัวแปรในเชลล์ที่เริ่ม agent เพื่อไม่ให้คีย์ไปอยู่ในไฟล์ที่คุณ 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 อาจปรากฏในบันทึก พร็อกซี และข้อความข้อผิดพลาด ดังนั้นให้ใช้คีย์แยกต่างหากที่มี `cu_cap` ต่ำสำหรับ agent และเพิกถอนในคอนโซลหากรั่วไหล

หากต้องการสร้างคีย์โดยไม่ใช้เบราว์เซอร์ ให้ทำตามสี่ขั้นตอนใน[คู่มือการลงทะเบียนแบบเป็นโปรแกรม](https://docs.blockvectra.com/th/guides/programmatic-signup/?ref=docs-elizaos): challenge, ลายเซ็น, login แล้ว `POST /keys` นักพัฒนายัง[สร้างคีย์ในคอนโซล](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-elizaos)ได้ด้วย คีย์เดียวกันใช้ได้กับทุกเชน ดังนั้นคีย์เดียวรองรับทุกตัวแปร `ETHEREUM_PROVIDER_*`

## เพิ่ม docs MCP server

`@elizaos/plugin-mcp` ให้ตัวละครใช้ MCP server ระยะไกลผ่าน Streamable HTTP ติดตั้งด้วย `bun add @elizaos/plugin-mcp` แล้วลงทะเบียน BlockVectra docs server ในการตั้งค่าตัวละคร:

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

จากนั้น agent เรียก `list_chains`, `get_status`, `rpc_call`, `read_doc` และเครื่องมืออื่นที่ระบุไว้ใน[หน้า MCP server](https://docs.blockvectra.com/th/guides/mcp-server/)ได้โดยไม่ต้องใช้คีย์ ตัวเลือก HTTP ที่ปลั๊กอินระบุไว้คือ `type`, `url` และ `timeout`; ปลั๊กอินไม่ได้ระบุตัวเลือกส่วนหัว จึงเข้าถึงเครื่องมือ MCP ที่ต้องใช้คีย์จากการกำหนดค่านี้ไม่ได้ ให้คงการอ่านที่ต้องใช้คีย์ไว้ใน `plugin-evm` ตามข้างต้น

## ข้อผิดพลาดที่คุณอาจพบ

| การตอบกลับ                            | ความหมาย                                                   | สิ่งที่ต้องทำ                                                   |
| ------------------------------------- | ---------------------------------------------------------- | --------------------------------------------------------------- |
| HTTP 401, `-32024`, `missing_api_key` | เรียก URL ที่ต้องใช้คีย์โดยไม่มีคีย์                       | ใส่คีย์ในพาธหรือส่วนหัว `x-api-key`                             |
| HTTP 401, `-32024`, `invalid_api_key` | ไม่รู้จักคีย์ ถูกปิดใช้งาน หรือถูกเพิกถอน                  | ตรวจสอบคีย์ในคอนโซล; คีย์ใหม่ใช้เวลาไม่กี่วินาทีจึงจะเปิดใช้งาน |
| `-32601`, `method_not_public`         | เมธอดไม่อยู่ใน `public.methods` ของเชน                     | เปลี่ยน URL ของเชนนั้นจาก `/public` เป็นรูปแบบที่ใช้คีย์        |
| ไม่รู้จักเชน                          | ชื่อใน `settings.chains.evm` ไม่ตรงกับชื่อใน `viem/chains` | ใช้ชื่อ `viem/chains` ที่ถูกต้องตรงตัว                          |

ทุกข้อผิดพลาดของ BlockVectra มี `data.reason` และ `docs_url`; รายการทั้งหมดอยู่ใน[หน้าข้อผิดพลาด](https://docs.blockvectra.com/th/errors/)

## เอกสารทางการ

* [เอกสาร ElizaOS](https://elizaos.github.io/eliza/)
* [elizaos/eliza บน GitHub](https://github.com/elizaos/eliza)
* [`@elizaos/plugin-evm` บน npm](https://www.npmjs.com/package/@elizaos/plugin-evm)
* [`@elizaos/plugin-mcp` บน npm](https://www.npmjs.com/package/@elizaos/plugin-mcp)

## คำถามที่พบบ่อย

**`EVM_PROVIDER_URL` ใช้กับ Base ได้หรือไม่** ไม่ได้ ตัวแปรนี้ตั้งค่าเฉพาะ Ethereum mainnet; เชนอื่นใช้ `ETHEREUM_PROVIDER_<CHAIN_NAME>`

**agent ลงนามและส่งธุรกรรมผ่าน endpoint สาธารณะได้หรือไม่** `eth_sendRawTransaction` อยู่ใน `public.methods` ของเชนที่ระบุไว้ โดยมีขีดจำกัดอัตราต่อ IP ที่ต่ำกว่าของตัวเองภายใต้ `public.send_raw_rate_limit` ใน `GET /v1/chains` อ่านขีดจำกัดที่นั่นก่อนสร้างระบบบนฟีเจอร์นี้

**MCP server ต้องใช้คีย์หรือไม่** ไม่ต้อง การเชื่อมต่อและเครื่องมือเอกสาร เชน และราคาไม่ต้องใช้คีย์

## ขั้นตอนถัดไป

* [ภาพรวมเฟรมเวิร์ก agent](https://docs.blockvectra.com/th/guides/agent-frameworks/) สำหรับ LangChain, viem, wagmi และ Coinbase AgentKit
* [เชื่อมต่อ AI Agent](https://docs.blockvectra.com/th/guides/ai-agents/) เพื่อค้นหา endpoint ด้วย MCP, llms.txt และ OpenAPI
* [กฎการเรียกเก็บเงิน](https://docs.blockvectra.com/th/guides/billing-rules/) สำหรับการวัด CU ขีดจำกัดอัตรา และข้อผิดพลาดที่ไม่คิดค่าบริการ
