BlockVectra ile LangChain agent'larında blokzincir RPC kullanın
Bir LangChain agent'ına BlockVectra'nın anahtarsız genel uç noktası üzerinden tek bir araçla canlı blokzincir verisi verin, ardından belge MCP sunucusunu ve anahtar gerektiren yöntemler için bir API key ekleyin.
Bir LangChain agent'ı, https://api.blockvectra.com/v1/eth_mainnet/public adresine JSON-RPC POST eden tek bir araç üzerinden canlı blokzincir verisini okur. Bu uç nokta, her zincirin public.methods listesindeki yöntemler için API key veya kayıt gerektirmez. Bir anahtar gerisini ekler ve Ücretsiz Plan, 30 günlük pencere başına 30,000,000 CU verir. Kontrol tarihi .
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)pip install langchain httpx ile kurun; model dizesi ve sağlayıcı anahtarı LangChain hızlı başlangıcını izler. Araç, LangChain'in @tool dekoratörünü ve create_agent işlevini kullanır.
TypeScript'te aynı araç
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] });tool() imzası için LangChain JS araçlar rehberine bakın.
Bir API key ile her yöntemi çağırın
eth_getLogs gibi public.methods dışındaki yöntemler bir anahtar gerektirir. Anahtarı ortamdan okuyun ve x-api-key başlığında gönderin; zincir slug'ı (eth_mainnet, base_mainnet vb.) GET /v1/chains içinden gelir:
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()JSON-RPC yanıtının tamamını döndürmek, modelin bir error nesnesini okuyup bir sonraki çağrısını değiştirmesini sağlar. Anahtarı tarayıcı olmadan oluşturmak için programatik kayıt rehberindeki dört adımlı akışı çalıştırın: challenge, imza, oturum açma, ardından POST /keys. Geliştiriciler ayrıca konsolda bir anahtar oluşturabilir.
Belge MCP sunucusunu ekleyin
LangChain agent'ları MCP sunucularına MCPAdapter ile bağlanır. Agent'a list_chains, get_status, rpc_call, read_doc ve MCP sunucusu sayfasında listelenen diğer araçları vermek için onu https://docs.blockvectra.com/mcp adresine yönlendirin. Bağlanmak için anahtar gerekmez.
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."}]})pip install "langchain[mcp]" ile kurun (langchain>=1.4.0, beta). Anahtar gerektiren araçları kullanmak için anahtarı bearer token olarak iletin: from fastmcp.client import Client ile MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])), LangChain'in MCP kimlik doğrulama rehberindeki gibi.
TypeScript'te @langchain/mcp-adapters@^2.0.0 paketini kurun ve bir başlık eşlemesi iletin:
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();
}Anahtarsız bağlanmak için headers satırını kaldırın. Resmî başvurular: LangChain MCP (Python) ve LangChain MCP (JavaScript).
Aracınızın göreceği hatalar
| Yanıt | Anlamı | Agent ne yapmalı |
|---|---|---|
HTTP 401, -32024, missing_api_key | Anahtar gerektiren URL anahtarsız çağrıldı | Anahtarı x-api-key başlığında veya yolda gönderin |
HTTP 401, -32024, invalid_api_key | Anahtar bilinmiyor, devre dışı veya iptal edilmiş | Anahtarı konsolda kontrol edin; yeni bir anahtarın etkinleşmesi birkaç saniye sürer |
-32601, method_not_public | Yöntem zincirin public.methods listesinde değil | /public yerine anahtarlı bir URL kullanın |
-32601, method not available | Yöntem o zincirde etkin değil | GET /v1/chains içindeki methods.allow alanını kontrol edin |
Her hata data.reason ve bir docs_url taşır; tam liste hatalar sayfasındadır.
Sık sorulan sorular
Genel uç nokta eth_getLogs için çalışır mı? Hayır. Yalnızca zincirin public.methods listesindeki yöntemleri sunar; eth_getLogs ve Data API bir API key gerektirir.
Agent, API key'i bir araç argümanı olarak iletebilir mi? Hayır. Anahtarı ortamda veya MCP istemcisinin başlıklarında tutun; MCP sunucusu araç argümanlarındaki anahtarları reddeder.
Araç başka bir zinciri hedefleyebilir mi? Evet. eth_mainnet değerini, GET /v1/chains içinde bir public.url değeri olan herhangi bir zincir slug'ı ile değiştirin.
Sonraki adımlar
- ElizaOS, viem, wagmi ve Coinbase AgentKit için Agent çerçevesi genel bakışı.
- MCP, llms.txt ve OpenAPI ile uç noktaları keşfetmek için bir AI Agent'ı bağlayın.
- CU ölçümü, hız sınırları ve faturalandırılmayan hatalar için faturalandırma kuralları.
Son güncelleme:
Infura karşılaştırması
Yoğun okuma görevleri için BlockVectra döngü kredilerini kullanın, aylık RPC aboneliği olmadan yöntem bazında ödeme yapın ve hesap oluşturma ile sabit kripto para fonlamasını otomatikleştirin.
Logs ile Transfers API karşılaştırması
Sözleşme olay logları için eth_getLogs'u veya indekslenmiş ERC-20 transfer geçmişi için Token Transfers API'yi seçin. Blok aralıklarını, sayfalamayı, kapsamı ve kesinliği karşılaştırın.