Göndermeden önce simüle edin: eth_simulateV1 ile işlemleri test çalıştırması (dry-run)
eth_simulateV1 kullanarak zincir üzerinde göndermeden önce birden fazla işlemi test edin ve durum değişikliklerini inceleyin. Desteklenen zincir yöntemi politikalarını, yürütme belirtimi istek yüklerini, CU fiyatlandırma ağırlıklarını ve AI Agent MCP entegrasyonunu öğrenin.
İşlemleri bir blokzincir ağına yayınlamadan önce test çalıştırması (dry-run) yapmak, geliştiricilerin yürütme sonuçlarını incelemesine, sözleşme durum geçişlerini doğrulamasına ve olay log'larını önceden gözlemlemesine olanak tanıyarak sözleşme iptallerinin (revert) neden olduğu gereksiz gas ücretlerini önler.
Ethereum yürütme katmanı, işlemleri göndermeden önce değerlendirmek için çeşitli yollar sunar:
eth_call: Ardışık çağrılar arasında durum kalıcılığı olmadan tek bir salt okunur mesaj çağrısı yürütür.eth_estimateGas: Yürütme için gereken gas limitini hesaplar, ancak çoklu işlem sıralı durum geçişleri veya tam olay log'ları sağlamaz.eth_simulateV1: Ethereum Execution APIs standart belirtiminde tanımlanan bu yöntem, bloklar arasında birden fazla işlemin sıralı simülasyonuna izin verir, işlemler arasındaki durum değişikliklerini biriktirir ve blok parametreleri ile hesap durumunun geçersiz kılınmasını destekler.
Desteklenen zincirler ve yöntem politikası
Ağ yetenekleri GET /v1/chains aracılığıyla dinamik olarak yayınlanır. Hangi zincirlerin eth_simulateV1 yöntemine izin verdiğini görmek için bu yanıttan methods.allow alanını okuyun; bu yöntemin listelenmediği bir zincir, çağrıyı -32601 JSON-RPC hatasıyla (method not available, faturalandırılmaz) reddeder.
Düğüm durumu koşulları
eth_simulateV1 bir durum sorgulama yöntemidir:
- Eşitleme geçidi (
-32010): Hedef zincirin düğümü eşitleniyorsa ve henüz hazır değilse, çağrı-32010(node is syncing, faturalandırılmaz) döndürür. - Durum penceresi (
-32011): Robinhood Chain'de, zincirinstate_window_blocks(GET /v1/chains) değerinden daha eski blokları hedefleyen veyasafe,finalizedya daearliestblok etiketlerini belirten istekler-32011döndürür (faturalandırılmaz). Varsayılan blok etiketilatestdeğeridir.
İstek yapısı ve temel örnek
Yürütme katmanı belirtimine göre (Ethereum Execution APIs eth_simulateV1 tanımı), eth_simulateV1 iki konumsal parametre kabul eder:
- Yük (payload) nesnesi:
blockStateCalls(zorunlu dizi): Simüle edilen blok nesnelerinden oluşan bir dizi. Her nesne bir işlem çağrıları dizisicalls, isteğe bağlı blok başlığı geçersiz kılmalarıblockOverridesve isteğe bağlı hesap durumu geçersiz kılmalarıstateOverridesiçerir.validation(isteğe bağlı boolean, varsayılanfalse):falseolduğundaeth_callgibi davranır;trueolduğunda imza kontrolleri hariç tüm EVM doğrulamasını çalıştırır.traceTransfers(isteğe bağlı boolean):trueolduğunda yerel token transferleri için olay log'larını döndürür.
- Blok etiketi (isteğe bağlı dize, varsayılan
'latest'): Blok numarası, blok karması veya blok etiketi.
Temel örnek: bir ERC-20 transferini test çalıştırma
Aşağıdaki örnek, Robinhood Chain üzerinde bir ERC-20 transfer(address,uint256) çağrısını test amaçlı simüle eder. $BLOCKVECTRA_API_KEY değerini gerçek API key'inizle değiştirin:
export BLOCKVECTRA_API_KEY=rgw_your_api_key
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H "Content-Type: application/json" \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_simulateV1",
"params": [
{
"blockStateCalls": [
{
"calls": [
{
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"data": "0xa9059cbb00000000000000000000000033333333333333333333333333333333333333330000000000000000000000000000000000000000000000000de0b6b3a7640000",
"value": "0x0"
}
]
}
]
},
"latest"
]
}'Yanıt yapısını inceleme
Ethereum yürütme belirtimi uyarınca, result alanı aşağıdaki şemaya sahip simüle edilmiş blok sonuçları dizisi içerir:
Blok düzeyindeki alanlar
number: Simüle edilen bloğun blok numarası (onaltılık dize).hash: Simüle edilen blok karması (32 baytlık onaltılık dize).parentHash: Üst bloğun karması.timestamp: Blok zaman damgası (onaltılık dize).gasLimit: Blok gas limiti.gasUsed: Bu bloktaki tüm simüle edilmiş çağrılarda tüketilen toplam gas.baseFeePerGas: Blok için gas başına taban ücret.miner: Blok ücretlerini alan coinbase adresi.calls: Simüle edilen her çağrı için yürütme sonuçları dizisi.
Çağrı düzeyindeki alanlar (calls dizi öğeleri)
status: Onaltılık dize olarak çağrı durumu.0x1başarıyı,0x0ise başarısızlığı veya iptali gösterir.gasUsed: Bu çağrı tarafından fiilen tüketilen gas (onaltılık dize).maxUsedGas(isteğe bağlı): İadelerden önce yürütme sırasında kullanılan en yüksek gas miktarı.returnData: Onaltılık kodlanmış dönüş verisi. Başarılı bir ERC-20 transferinde bu alan booleantrueiçerir; iptal durumunda hata seçicisini veya revert verisini içerir.logs: Çağrı tarafından yayımlanan olay log'ları dizisi. Başarılı olduğundaTransfergibi olay log'larını içerir:address: Olayı yayımlayan sözleşme adresi.topics: 32 baytlık topic karmaları dizisi (topics[0],Transferolay imzası gibi olay imzasının karmasıdır).data: Onaltılık kodlanmış indekslenmemiş olay verisi.blockNumber,blockHash,transactionHash,transactionIndex,logIndex,removed.
error(başarısızlık durumunda bulunur):code(revert için3, bir VM hatası için-32015) vemessage(örneğinexecution reverted) içeren bir nesne.
Fiyatlandırma ve CU ağırlıkları
BlockVectra, tüketimi Compute Unit (CU) cinsinden ölçer. Her JSON-RPC yönteminin ağırlığı GET /v1/plans tarafından dinamik olarak yayınlanır:
Çağrı başına CU ağırlığı
| Yöntem | Çağrı başına CU |
|---|---|
eth_simulateV1 | 20 |
eth_call | 15 |
eth_estimateGas | 20 |
Birim dönüştürme formülleri ve bakiye yükleme ayrıntıları için Fiyatlandırma sayfasını ziyaret edin.
Düğüm eşitlemesi (-32010), durum penceresi dışı (-32011) veya yöntemin kullanılamaması (-32601) dahil olmak üzere reddedilen istekler faturalandırılmaz. Eksiksiz faturalandırma kuralları için Hangi istekler ücretsizdir sayfasına bakın.
Yapay zeka ajanları (AI Agent) ve MCP ile kullanma
Otonom Yapay Zeka Ajanları (AI Agent), BlockVectra'nın Model Context Protocol (MCP) sunucusu aracılığıyla eth_simulateV1 yöntemini doğrudan çağırabilir.
Kimlik doğrulamalı rpc_call aracı, desteklenen zincirlerde JSON-RPC yöntemlerinin yürütülmesine olanak tanır. API key, MCP istemcisi HTTP başlıklarında (x-api-key: {api_key} veya Authorization: Bearer {api_key}) yapılandırılmalıdır; araç parametreleri veya konuşma istemleri içinde asla iletilmemelidir.
Robinhood Chain üzerinde örnek rpc_call aracı çağırma yükü:
{
"chain": "robinhood_mainnet",
"method": "eth_simulateV1",
"params": [
{
"blockStateCalls": [
{
"calls": [
{
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"data": "0xa9059cbb00000000000000000000000033333333333333333333333333333333333333330000000000000000000000000000000000000000000000000de0b6b3a7640000",
"value": "0x0"
}
]
}
]
},
"latest"
]
}Ajanlar, ham işlemleri göndermeden önce sözleşme etkileşiminin geçerliliğini doğrulamak ve gas tüketimini değerlendirmek için status === "0x1" kontrolü yapabilir. Kurulum ve kullanım talimatları için AI Agent entegrasyon rehberi sayfasına bakın.
Sonraki adımlar
- Hesabınızın neleri içerdiğini kontrol etmek için ücretsiz planı ve fiyatlandırmayı inceleyin.
- Bir API key oluşturmak için konsolda oturum açın.
Son güncelleme:
Robinhood Chain Testnet başlangıcı
Robinhood Chain Testnet RPC ile başlayın: genel RPC URL'si, anahtarsız okumalar, API anahtarı ile WebSocket log'ları, faucet erişimi ve aynı anahtarla mainnet'e geçiş.
Stablecoin Ödemeleri
Bir ödeme alıcısı ve yoklama imleci (polling cursor) oluşturun. Token sözleşmelerini, alıcıları ve tam sayı tutarları doğrulayın, olayları tekilleştirin ve eksik veya değiştirilen blokları uzlaştırın.