# Robinhood Chain entegrasyon rehberi: RPC istemcileri, dağıtım ve olaylar

> Source: https://docs.blockvectra.com/tr/guides/robinhood-chain/

Kamusal bağlantı kontrolleri ve kimlik doğrulamalı okumalar için Robinhood Chain RPC'yi veya desteklenen mainnet veri kümeleri için Data API'yi kullanın. Geliştiriciler ve AI Agent'lar aynı uç noktaları kullanır; mainnet ve testnet isteklerini ayrı tutun.

* **İlk adım:** Çalıştırmadan önce `network.mjs` ve bir istemci örneğini kaydederek [viem veya ethers ile bağlanın](#connect-with-viem-or-ethers).
* **Tamamlanma kriteri:** İstemci, RPC zincir kimliğinin katalogdaki `chain_id` ile eşleştiğini doğrular ve bir `RPC chain ID mismatch` hatası olmadan en son blok numarasını yazdırır.

[Mainnet parametreleri ve erişim seçenekleri](https://blockvectra.com/tr/chains/robinhood_mainnet/).

## Bu rehberin tamamlamanıza yardımcı olduğu görevler

* viem veya ethers kullanarak genel bir okuma ile [Robinhood Chain RPC'yi yoklayın](#connect-with-viem-or-ethers), ardından kimlik doğrulamalı yöntemler için bir anahtar kullanın.
* Testnet işlemlerini çalıştırmadan önce `eth_chainId` okuyarak [testnet RPC bağlantısını kontrol edin](#testnet).
* Veri kümesi desteğini kontrol ettikten sonra mainnet Data API ile [tokenlaştırılmış hisse senedi aktivitesini sorgulayın](#tokenized-stock-data); metrikler hisse senedi fiyatlarını değil, zincir üstü aktiviteyi açıklar.

## RPC ve WebSocket erişimi

* **Genel RPC URL'si**: Anahtarsız uç noktayı, desteklenen genel yöntemleri ve hız sınırlarını [Robinhood Chain mainnet sayfasında](https://blockvectra.com/tr/chains/robinhood_mainnet/) veya [testnet sayfasında](https://blockvectra.com/tr/chains/robinhood_testnet/) bulun.
* **Bir API anahtarı ile JSON-RPC**: Aşağıdaki uç noktaları ve curl örneklerini kullanın. Loglar için [eth\_getLogs yöntem referansına](https://docs.blockvectra.com/tr/api/json-rpc/methods/eth_getLogs/) ve [blok aralığı sınırı rehberine](https://docs.blockvectra.com/tr/guides/getlogs-block-range/) bakın.
* **Bir API anahtarı ile WebSocket**: Aşağıdaki WebSocket uç noktalarını kullanın ve `newHeads` ile `logs` için [WebSocket abonelikleri rehberini](https://docs.blockvectra.com/tr/guides/websocket-subscriptions/) izleyin. Genel RPC erişimi HTTP JSON-RPC'dir; WebSocket bağlantıları bir anahtar gerektirir.

## Ağ bilgileri ve uç noktalar

Robinhood Chain'e yapılan her istek, URL yolunda `robinhood_mainnet` slug'ını kullanarak hedef ağını açıkça tanımlar. JSON-RPC hem yol tabanlı anahtar kimlik doğrulamasını hem de istek başlığı kimlik doğrulamasını (`x-api-key`) desteklerken, Data API `/v1/data/robinhood_mainnet/` altında REST uç noktaları sunar.

Aşağıdaki parametreler ve uç noktalar aktif ağ parametrelerini yansıtır:

| Parametre / Uç Nokta | Değer / Şablon | Kimlik Doğrulama |
|---|---|---|
| Chain ID (EIP-155) | `4663` | — |
| JSON-RPC (yol anahtarı) | `POST https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}` | URL yolunda API key |
| JSON-RPC (başlık anahtarı) | `POST https://api.blockvectra.com/v1/robinhood_mainnet` | Header x-api-key: {api_key} |
| WebSocket (yol anahtarı) | `wss://api.blockvectra.com/v1/robinhood_mainnet/{api_key}` | URL yolunda API key |
| WebSocket (başlık anahtarı) | `wss://api.blockvectra.com/v1/robinhood_mainnet` | Header x-api-key: {api_key} veya Authorization: Bearer {api_key} |
| WebSocket abonelikleri | `newHeads, logs` | — |
| Data API tabanı | `GET https://api.blockvectra.com/v1/data/robinhood_mainnet/…` | Header x-api-key: {api_key} |
| Genel durum | `GET https://api.blockvectra.com/v1/status` | Kimlik doğrulamasız (genel) |

## viem veya ethers ile bağlanın

Geliştiriciler ve AI Agent'lar aynı sunucu tarafı ayarlarını kullanabilir. Node.js 24 veya sonraki bir sürümünü, viem 2 veya ethers 6 kullanın ve genel okumalarla başlayın. Anahtar gerektiren yöntemler ve WebSocket için ortamda `BLOCKVECTRA_API_KEY` değerini güvenli bir şekilde ayarlayın. Anahtarları ve anahtar içeren RPC URL'lerini tarayıcı kodundan, loglardan ve sürüm kontrolünden uzak tutun.

Bunu `network.mjs` olarak kaydedin. Testnet ile başlayın; mainnet'e geçmek için `BLOCKVECTRA_CHAIN=robinhood_mainnet` olarak ayarlayın. Bu dosya, `chain_id` ve yöntem politikasını [GET /v1/chains](https://api.blockvectra.com/v1/chains) üzerinden okur. Anahtarsız okumalar için kataloğun `public.url` adresini ve yalnızca `public.methods` içinde listelenen yöntemleri kullanın; genel HTTP kullanılabilirliği WebSocket erişimi anlamına gelmez.

```js
const chainSlug = process.env.BLOCKVECTRA_CHAIN ?? 'robinhood_testnet';
const key = process.env.BLOCKVECTRA_API_KEY;
const catalogUrl = 'https://api.blockvectra.com/v1/chains';
const response = await fetch(catalogUrl, { signal: AbortSignal.timeout(15_000) });
if (!response.ok) throw new Error(`Chains HTTP ${response.status}`);
const catalog = await response.json();
export const chainInfo = catalog.chains.find(item => item.chain === chainSlug);
if (!chainInfo || !Number.isSafeInteger(chainInfo.chain_id) || chainInfo.chain_id <= 0) {
  throw new Error('Missing chain or chain_id');
}
export function allows(method) {
  const matches = pattern => pattern.endsWith('*')
    ? method.startsWith(pattern.slice(0, -1)) : pattern === method;
  if (!key) return (chainInfo.public?.methods ?? []).some(matches);
  return (chainInfo.methods?.allow ?? []).some(matches)
    && !(chainInfo.methods?.deny ?? []).some(matches);
}
if (!allows('eth_chainId')) throw new Error('eth_chainId is unavailable');
export const rpcUrl = key
  ? new URL(`./${chainSlug}/${encodeURIComponent(key)}`, catalogUrl).href
  : chainInfo.public?.url;
if (!rpcUrl) throw new Error('Public RPC is unavailable; set BLOCKVECTRA_API_KEY');
```

`viem-client.mjs` olarak kaydedin, `npm install viem@2` ile kurun, ardından `node viem-client.mjs` çalıştırın.

```js
import { createPublicClient, defineChain, http } from 'viem';
import { chainInfo, rpcUrl } from './network.mjs';

export const chain = defineChain({
  id: chainInfo.chain_id,
  name: chainInfo.name,
  nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },
  rpcUrls: { default: { http: [rpcUrl] } },
});
export const client = createPublicClient({ chain, transport: http(rpcUrl) });
if (await client.getChainId() !== chain.id) throw new Error('RPC chain ID mismatch');
console.log(await client.getBlockNumber());
```

ethers için `ethers-client.mjs` olarak kaydedin, `npm install ethers@6` ile kurun, ardından `node ethers-client.mjs` çalıştırın.

```js
import { JsonRpcProvider } from 'ethers';
import { chainInfo, rpcUrl } from './network.mjs';

const provider = new JsonRpcProvider(rpcUrl, chainInfo.chain_id, { batchMaxCount: 1 });
const network = await provider.getNetwork();
if (network.chainId !== BigInt(chainInfo.chain_id)) throw new Error('RPC chain ID mismatch');
console.log(await provider.getBlockNumber());
provider.destroy();
```

## Foundry veya Hardhat ile dağıtım yapın

Önce [testnet faucet'i](https://docs.blockvectra.com/tr/guides/robinhood-testnet-faucet/) aracılığıyla dağıtıcıyı test ETH ile fonlayın; mainnet işlemleri mainnet ETH gerektirir. [Resmi ağ ve dağıtım rehberi](https://docs.robinhood.com/chain/deploy-smart-contracts/) mainnet ve testnet zincir kimliklerini listeler (erişim tarihi: 2026-10-07). Bu sayfadaki uç nokta tabloları `/v1/chains` kullanır.

Seçilen URL'yi ve zincir kimliğini `network.mjs` dosyasından dışa aktarın. Yayınlamadan önce `methods.allow` ve `methods.deny` üzerinden `eth_sendRawTransaction` yöntemini kontrol edin:

```bash
export RPC_URL="$(node --input-type=module -e "import { rpcUrl, allows } from './network.mjs'; if (!allows('eth_sendRawTransaction')) throw new Error('Broadcast unavailable'); console.log(rpcUrl)")"
export CHAIN_ID="$(node --input-type=module -e "import { chainInfo } from './network.mjs'; console.log(chainInfo.chain_id)")"
```

`Hello.sol`, araç ayarları, yayınlama ve makbuz kontrolleri için paylaşılan [Foundry veya Hardhat dağıtım eğitimine](https://docs.blockvectra.com/tr/guides/deploy-contract/) devam edin.

## WebSocket üzerinden sözleşme olaylarını dinleyin

`watch-logs.mjs` olarak kaydedin ve `LOG_ADDRESS` değerini izlediğiniz dağıtılmış sözleşmeye veya token sözleşmesine ayarlayın. `node watch-logs.mjs` komutunu çalıştırın. Kod, `logs` aboneliğine başlamadan önce `/v1/chains` üzerinden `ws` ve `subscriptions` alanlarını kontrol eder.

```js
import { createPublicClient, webSocket, isAddress } from 'viem';
import { chain } from './viem-client.mjs';
import { chainInfo, rpcUrl } from './network.mjs';

if (!process.env.BLOCKVECTRA_API_KEY) throw new Error('WebSocket requires BLOCKVECTRA_API_KEY');
const address = process.env.LOG_ADDRESS;
if (!chainInfo.ws || !chainInfo.subscriptions?.includes('logs')) {
  throw new Error('WebSocket logs are unavailable; use HTTP backfill or webhook push');
}
if (!address || !isAddress(address)) throw new Error('Set LOG_ADDRESS');
const wsUrl = new URL(rpcUrl);
wsUrl.protocol = 'wss:';
const client = createPublicClient({ chain, transport: webSocket(wsUrl.href) });
const unwatch = client.watchEvent({
  address, poll: false,
  onLogs: logs => console.log(logs),
  onError: error => console.error(error),
});
process.once('SIGINT', () => { unwatch(); process.exit(0); });
```

Dinleyici başladıktan sonra, aynı dışa aktarılan dağıtım değişkenlerini kullanarak başka bir terminalden bir `ping()` işlemi gönderin:

```bash
cast send "$CONTRACT_ADDRESS" "ping()" --rpc-url "$RPC_URL" \
  --private-key "$DEPLOYER_PRIVATE_KEY"
```

İşlenen son bloğu kalıcı olarak kaydedin ve `(blockHash, transactionHash, logIndex)` ile tekilleştirin. Yeniden bağlandıktan sonra, kaçırılan blokları sınırlı `eth_getLogs` istekleriyle geriye dönük doldurun; bir yeniden yapılanmada (reorg) `removed` olarak işaretlenen logları uzlaştırın. Bkz. [WebSocket abonelikleri](https://docs.blockvectra.com/tr/guides/websocket-subscriptions/) ve [blok aralığı sınırları](https://docs.blockvectra.com/tr/guides/getlogs-block-range/).

HTTPS alıcınıza iletilen adres olayları için **GET /v1/push/chains desteklenen zincirleri** ve onay ayarlarını listeler; bir `x-api-key` başlığı kullanın. Abonelikler, imza doğrulama, tekilleştirme ve yeniden oynatma için [webhook push rehberini](https://docs.blockvectra.com/tr/guides/webhook-push/) takip edin. Mainnet hisse senedi token aktivitesi sorguları için [hisse senetleri rehberi](https://docs.blockvectra.com/tr/guides/stocks/) ile devam edin.

## Doğrudan curl örnekleri

Standart HTTP istemcilerini kullanarak hemen JSON-RPC çağrıları yapabilirsiniz. `{api_key}` yerine BlockVectra API anahtarınızı yazın:

**eth_chainId (Header)**

`x-api-key` istek başlığını kullanarak EIP-155 zincir kimliğini sorgulayın:

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```


  **eth_blockNumber (Path)**

API anahtarınızı URL yolunda ileterek en son blok numarasını sorgulayın:

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/{api_key}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
```


### Yanıt yapısı

Yanıtlar JSON-RPC 2.0 belirtimini takip eder:

* **Başarı**: `jsonrpc: "2.0"`, aynı `id` ve onaltılık kodlanmış miktarı içeren bir `result` dizesiyle bir zarf döndürür (`eth_chainId` onaltılık kodlanmış zincir kimliğini döndürür; `eth_blockNumber` en son blok yüksekliğini döndürür).
* **İzin verilmeyen yöntemler**: Ağın izin verilen yöntemleri dışındaki bir yöntemin istenmesi, JSON-RPC hata kodu `-32601` (`method not available`, faturalandırılmaz) döndürür.
* **Pencere dışı sorgular**: Durum saklama penceresinden daha önceki geçmiş durum istekleri, JSON-RPC hata kodu `-32011` (faturalandırılmaz) döndürür.
* **Geçersiz parametreler**: Hatalı biçimlendirilmiş veya izin verilmeyen istek parametreleri, JSON-RPC hata kodu `-32602` (faturalandırılmaz) döndürür.

## Yetenek ve yöntem politikası

Robinhood Chain üzerindeki kullanılabilir JSON-RPC yöntemleri, log blok aralığı sınırları ve geçmiş durum saklama, `GET /v1/chains` aracılığıyla dinamik olarak yayınlanır. Yürütme izleme (`debug_trace*`, `debug_traceTransaction` dahil), zincirin yöntem politikası tarafından yönetilir:

### Ağ parametreleri ve sınırları

- **eth_getLogs blok aralığı**: İstek başına maks 1000 blok
- **Geçmiş durum penceresi**: Son 900 blok (ötesindeki sorgular -32011 döndürür)
- **Yürütme izleme (debug_trace*)**: Destekleniyor (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Zincir başına izin verilen yöntemler: [Desteklenen Zincirler](https://docs.blockvectra.com/en/chains/)

## Testnet

İşlemler için test ETH almak üzere [Robinhood Chain testnet faucet rehberine](https://docs.blockvectra.com/tr/guides/robinhood-testnet-faucet/) bakın.

Robinhood Chain Testnet (zincir kimliği: 46630), `https://api.blockvectra.com/v1/robinhood_testnet` uç noktasında mainnet ile aynı API anahtarını kullanır ve `x-api-key` istek başlığı aracılığıyla kimlik doğrulaması yapar.

Testnet istekleri mainnet ile aynı CU ağırlıklarını kullanır ve aynı bakiyeden ve ücretsiz kredilerden düşülür. Robinhood Chain Testnet üzerindeki kullanılabilir JSON-RPC yöntemleri ve geçmiş durum saklama, `GET /v1/chains` aracılığıyla dinamik olarak yayınlanır.

Testnet'i anahtarsız okuyan, WebSocket üzerinden logları aktaran ve ardından aynı anahtarı mainnet'e taşıyan çalıştırılabilir üç adımlı bir başlangıç için [Robinhood Chain Testnet başlangıç rehberine](https://docs.blockvectra.com/tr/guides/robinhood-testnet-starter/) bakın.

```bash
curl -s "https://api.blockvectra.com/v1/robinhood_testnet" \
  -H "Content-Type: application/json" \
  -H "x-api-key: {api_key}" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

Beklenen yanıt:

```json
{"jsonrpc":"2.0","id":1,"result":"0xb626"}
```

| Parametre / Uç Nokta | Değer / Şablon | Kimlik Doğrulama |
|---|---|---|
| Chain ID (EIP-155) | `46630` | — |
| JSON-RPC (yol anahtarı) | `POST https://api.blockvectra.com/v1/robinhood_testnet/{api_key}` | URL yolunda API key |
| JSON-RPC (başlık anahtarı) | `POST https://api.blockvectra.com/v1/robinhood_testnet` | Header x-api-key: {api_key} |
| WebSocket (yol anahtarı) | `wss://api.blockvectra.com/v1/robinhood_testnet/{api_key}` | URL yolunda API key |
| WebSocket (başlık anahtarı) | `wss://api.blockvectra.com/v1/robinhood_testnet` | Header x-api-key: {api_key} veya Authorization: Bearer {api_key} |
| WebSocket abonelikleri | `newHeads, logs` | — |
| Data API tabanı | `Henüz mevcut değil` | — |
| Genel durum | `GET https://api.blockvectra.com/v1/status` | Kimlik doğrulamasız (genel) |

### Ağ parametreleri ve sınırları

- **eth_getLogs blok aralığı**: İstek başına maks 1000 blok
- **Geçmiş durum penceresi**: Son 1023 blok (ötesindeki sorgular -32011 döndürür)
- **Yürütme izleme (debug_trace*)**: Destekleniyor (debug_traceTransaction, debug_traceCall, debug_traceBlockByNumber, debug_traceBlockByHash)

Zincir başına izin verilen yöntemler: [Desteklenen Zincirler](https://docs.blockvectra.com/en/chains/)

## Tokenlaştırılmış hisse senedi verileri

Robinhood Chain üzerinde BlockVectra Data API, tokenlaştırılmış hisse senetleri için iki uç nokta üzerinden günlük zincir üstü metrikler ve meta veriler sağlar:

* **Günlük liderlik tablosu (`GET /v1/data/robinhood_mainnet/stocks`)**: Belirtilen bir UTC tarihi için transfer aktivitesine göre azalan şekilde sıralanmış tokenlaştırılmış hisse senetlerinin günlük aktivite tablosu.
* **Tek bir tokenlaştırılmış hisse senedi alma (`GET /v1/data/robinhood_mainnet/stocks/{token}`)**: Token sözleşmesi meta verileri ve token adresine göre 30 güne kadar son günlük metrikler.

Ayrıntılı istek parametreleri, yanıt zarfları (`StockDailyListEnvelope` ve `StockTokenEnvelope`), sayfalama notları ve CU tüketim tahminleri için [Tokenlaştırılmış hisse senetleri rehberine](https://docs.blockvectra.com/tr/guides/stocks/) bakın.

Eksiksiz başlangıç şablonu: [blockvectra/robinhood-stock-tokens](https://github.com/blockvectra/robinhood-stock-tokens)

## Başlarken ve API anahtarları

Yeni hesaplar kaydolduklarında 30,000,000 CU kazanır — kredi kartı gerekmez.

Önce anahtarsız genel uç nokta olan `https://api.blockvectra.com/v1/robinhood_mainnet/public` adresini deneyebilirsiniz (yalnızca cüzdan JSON-RPC yöntemleri, Data API bir anahtar gerektirir; yöntemler ve sınırlar `/v1/chains` koşullarına tabidir); daha yüksek bir hız sınırına ihtiyacınız varsa bir hesap açın.

* **Web konsolu**: Ethereum cüzdan imzasıyla kaydolun ve [Konsol](https://console.blockvectra.com/login/?next=%2Fkeys%2F) içinde bir API anahtarı oluşturun. Kurulum ayrıntıları için [Hızlı Başlangıç rehberine](https://docs.blockvectra.com/tr/quickstart/) bakın.
* **Programatik kayıt**: Otonom AI Agent'lar, otomatik betikler ve CI ardışık düzenleri, bir tarayıcı olmadan Ethereum cüzdan imzalarını (EIP-191) kullanarak oturum açabilir ve API anahtarları sağlayabilir. [Programatik kayıt rehberini](https://docs.blockvectra.com/tr/guides/programmatic-signup/) takip edin.
* **AI Agent'lar**: Otonom AI Agent'lar, resmi Model Context Protocol (MCP) sunucusunu kullanarak Robinhood Chain yeteneklerini keşfedebilir. Bkz. [AI Agent'ları BlockVectra'ya Bağlama](https://docs.blockvectra.com/tr/guides/ai-agents/).
* **Limitleri yükseltme**: Bakiye yüklemesi yapıldıktan sonra hesap genelindeki saniye başına çağrı sınırı kaldırılır; her anahtar Compute Unit (CU) hız ve burst sınırlarına tabi kalmaya devam eder. Güncel oranlar ve faturalandırma birimleri için [Fiyatlandırma sayfasına](https://blockvectra.com/tr/pricing/) bakın.

## Sonraki adımlar

* [BlockVectra'nın indekslediği her veri setini görmek için veri setleri dizinine göz atın](https://blockvectra.com/tr/data/).
* [Hesabınızın neleri içerdiğini kontrol etmek için ücretsiz planı ve fiyatlandırmayı inceleyin](https://blockvectra.com/tr/pricing/#free).
* [Bir API anahtarı oluşturmak için konsola giriş yapın](https://console.blockvectra.com/login/?next=%2Fkeys%2F).
