Gunakan RPC blockchain di Agent LangChain dengan BlockVectra
Beri Agent LangChain data blockchain langsung dengan satu alat melalui endpoint publik BlockVectra tanpa API key, lalu tambahkan server MCP dokumentasi dan API key untuk metode yang memerlukannya.
Agent LangChain membaca data blockchain langsung melalui satu alat yang mengirim JSON-RPC dengan POST ke https://api.blockvectra.com/v1/eth_mainnet/public. Endpoint itu tidak memerlukan API key atau pendaftaran untuk metode dalam public.methods setiap chain. API key menambahkan metode lainnya, dan Paket Gratis memberi 30,000,000 CU per jendela 30 hari. Diperiksa pada .
import httpx
from langchain.agents import create_agent
from langchain.tools import tool
RPC = "https://api.blockvectra.com/v1/eth_mainnet/public"
@tool
def eth_block_number() -> str:
"""Return the latest Ethereum mainnet block number as a hex string."""
body = {"jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []}
return httpx.post(RPC, json=body, timeout=10).json()["result"]
agent = create_agent("claude-sonnet-5", tools=[eth_block_number])
result = agent.invoke({"messages": [{"role": "user", "content": "What is the latest block?"}]})
print(result["messages"][-1].content)Instal dengan pip install langchain httpx; string model dan API key penyedianya mengikuti quickstart LangChain. Alat ini menggunakan dekorator @tool milik LangChain dan create_agent.
Alat yang sama di TypeScript
import * as z from "zod";
import { createAgent, tool } from "langchain";
const ethBlockNumber = tool(
async () => {
const res = await fetch("https://api.blockvectra.com/v1/eth_mainnet/public", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_blockNumber", params: [] }),
});
return (await res.json()).result as string;
},
{ name: "eth_block_number", description: "Latest Ethereum mainnet block number (hex).", schema: z.object({}) },
);
const agent = createAgent({ model: "claude-sonnet-5", tools: [ethBlockNumber] });Lihat panduan alat LangChain JS untuk signature tool().
Panggil metode apa pun dengan API key
Metode di luar public.methods, seperti eth_getLogs, memerlukan API key. Baca dari lingkungan dan kirim dalam header x-api-key; slug chain (eth_mainnet, base_mainnet, dan seterusnya) berasal dari GET /v1/chains:
import os
import httpx
from langchain.tools import tool
@tool
def rpc_call(chain: str, method: str, params: list) -> dict:
"""Call a JSON-RPC method on a BlockVectra chain slug such as base_mainnet."""
headers = {"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]}
body = {"jsonrpc": "2.0", "id": 1, "method": method, "params": params}
return httpx.post(f"https://api.blockvectra.com/v1/{chain}", json=body, headers=headers, timeout=15).json()Dengan mengembalikan seluruh respons JSON-RPC, model dapat membaca objek error dan mengubah panggilan berikutnya. Untuk membuat API key tanpa browser, jalankan alur empat langkah dalam panduan pendaftaran terprogram: challenge, tanda tangan, login, lalu POST /keys. Pengembang juga dapat membuat API key di konsol.
Tambahkan server MCP dokumentasi
Agent LangChain terhubung ke server MCP melalui MCPAdapter. Arahkan ke https://docs.blockvectra.com/mcp agar Agent memiliki list_chains, get_status, rpc_call, read_doc, dan alat lain yang tercantum di halaman server MCP. Untuk terhubung tidak diperlukan API key.
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter
async def main():
async with MCPAdapter("https://docs.blockvectra.com/mcp") as adapter:
tools = await adapter.list_tools()
agent = create_agent("claude-sonnet-5", tools)
return await agent.ainvoke({"messages": [{"role": "user", "content": "List the supported chains."}]})Instal dengan pip install "langchain[mcp]" (langchain>=1.4.0, masih beta). Untuk memakai alat yang memerlukan API key, kirim API key sebagai bearer token: MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])) dengan from fastmcp.client import Client, seperti dalam panduan autentikasi MCP LangChain.
Di TypeScript, instal @langchain/mcp-adapters@^2.0.0 dan berikan peta header:
import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
const adapter = new MCPAdapter({
servers: {
blockvectra: {
url: "https://docs.blockvectra.com/mcp",
headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
},
},
});
try {
const agent = createAgent({ model: "claude-sonnet-5", tools: await adapter.listTools() });
// agent.invoke(...)
} finally {
await adapter.close();
}Hapus baris headers untuk terhubung tanpa API key. Referensi resmi: LangChain MCP (Python) dan LangChain MCP (JavaScript).
Error yang akan dilihat alat Anda
| Respons | Arti | Yang harus dilakukan Agent |
|---|---|---|
HTTP 401, -32024, missing_api_key | URL yang memerlukan API key dipanggil tanpa API key | Kirim API key di x-api-key atau di path |
HTTP 401, -32024, invalid_api_key | API key tidak dikenal, dinonaktifkan, atau dicabut | Periksa API key di konsol; API key baru memerlukan beberapa detik untuk aktif |
-32601, method_not_public | Metode tidak ada di public.methods chain | Gunakan URL dengan API key, bukan /public |
-32601, method not available | Metode tidak diaktifkan di chain tersebut | Periksa methods.allow di GET /v1/chains |
Setiap error memuat data.reason dan docs_url; daftar lengkapnya ada di halaman error.
Pertanyaan umum
Apakah endpoint publik berfungsi untuk eth_getLogs? Tidak. Endpoint ini hanya melayani metode dalam public.methods chain; eth_getLogs dan Data API memerlukan API key.
Dapatkah Agent mengirim API key sebagai argumen alat? Tidak. Simpan di lingkungan atau header klien MCP; server MCP menolak API key dalam argumen alat.
Dapatkah alat ini menargetkan chain lain? Bisa. Ganti eth_mainnet dengan slug chain mana pun yang memiliki public.url di GET /v1/chains.
Langkah selanjutnya
- Ikhtisar framework Agent untuk ElizaOS, viem, wagmi, dan Coinbase AgentKit.
- Hubungkan AI Agent untuk menemukan endpoint dengan MCP, llms.txt, dan OpenAPI.
- Aturan penagihan untuk pengukuran CU, batas laju, dan error yang tidak ditagih.
Terakhir diperbarui:
Perbandingan Infura
Gunakan kredit siklus BlockVectra untuk tugas pembacaan terkonsentrasi, bayar berdasarkan metode tanpa langganan RPC bulanan, serta otomatiskan pembuatan akun dan pendanaan stablecoin.
API Logs vs Transfers
Pilih eth_getLogs untuk log peristiwa kontrak atau Token Transfers API untuk riwayat transfer ERC-20 terindeks. Bandingkan rentang blok, paginasi, cakupan, dan finalitas.