Ethereum JSON-RPC ve Python: cüzdan bağlamadan ağ bilgisi okuma
Python standart kütüphanesiyle ağ kimliği ve son blok numarasını okuyun. Hata yanıtlarını ve hexadecimal dönüşümünü güvenli örnekle ayırın.

Ethereum JSON-RPC ve Python
Girdi
Yetkili HTTPS RPC adresini ortamdan al.
Çağrı
Yalnızca chainId ve blockNumber iste.
Kontrol
Hata ile eksik sonucu ayır.
Çıktı
Hex değerleri sayıya dönüştür.
Editörün hazırladığı eğitim şemasıdır; gerçek bir cüzdan ekranı veya işlem kaydı değildir.
Kısa özet
Python standart kütüphanesiyle ağ kimliği ve son blok numarasını okuyun. Hata yanıtlarını ve hexadecimal dönüşümünü güvenli örnekle ayırın.
Bitcoin ve Kripto topluluğuna gitBir blokzincir uygulaması yazmaya başlamak için para göndermeniz gerekmez. Ağın kimliğini ve son blok numarasını okumak, istek ile yanıt arasındaki ilişkiyi öğrenmek için yeterlidir. Bu rehberde Python’un standart kütüphanesini kullanacağız; ek paket, cüzdan eklentisi veya özel anahtar olmayacak. Hedef, küçük bir komut satırı programının güvenilir şekilde sonuç veya anlaşılır hata üretmesidir. Kullanacağınız RPC adresini, erişim yetkiniz olan sağlayıcının resmi panelinden edinmelisiniz.
1. Okuma çağrılarını açıkça sınırlandırın
Ethereum belgelerinde eth_chainId ağ kimliğini, eth_blockNumber ise istemcinin bildiği son blok numarasını döndüren yöntemler arasında yer alır. Bu örnek yalnızca bu iki çağrıyı yapar. Bir eğitim betiğine sonradan “kolaylık olsun” diye imza veya gönderim yöntemi eklemek, kapsamı değiştirir. Dosyanın başına küçük bir amaç notu koyun: “Ağ bilgisi okuma aracı.” Sonraki düzenlemede bu amaçla ilgisiz satırları fark etmek daha kolay olur.
2. Adresi koddan ayrı tutun
RPC URL’si bazen hesaba özel erişim bilgisi içerebilir. Bu nedenle örnekte onu ortam değişkeninden okuyoruz ve çıktıya yazdırmıyoruz. Kendi sağlayıcınızın kullanım kotasını inceleyin; bu program hızlı bir tarayıcı veya yük testi değildir. İlk denemeyi tek çalıştırmayla yapın. Ortam değişkeni tanımlı değilse dosya anlaşılır biçimde durmalıdır. URL’yi sohbet grubuna, ekran görüntüsüne veya herkese açık depoya yapıştırmayın; bu uyarı cüzdan anahtarından farklı olarak hizmet erişimiyle ilgilidir.
3. Çalışan Python örneği
Aşağıdaki dosyayı ag_bilgisi.py adıyla kaydedin. Python 3 kurulu olmalıdır. Çalıştırmadan önce RPC_URL ortam değişkenini kendi HTTPS uç noktanızla tanımlayın. Değişkeni tanımlama biçimi kullandığınız kabuğa göre değiştiği için, örnek adresi doğrudan bir komuta yerleştirmiyoruz. Kod JSON-RPC hatasını ağ bağlantısı hatasından ayırır; başarısız durumda anahtarlı URL’yi veya bütün sunucu yanıtını terminale dökmez.
import json
import os
from urllib.request import Request, urlopen
from urllib.error import URLError
endpoint = os.environ.get("RPC_URL", "")
if not endpoint.startswith("https://"):
raise SystemExit("RPC_URL için yetkili bir HTTPS adresi tanımlayın.")
def rpc(method, request_id):
payload = {"jsonrpc": "2.0", "id": request_id,
"method": method, "params": []}
req = Request(endpoint, data=json.dumps(payload).encode(),
headers={"Content-Type": "application/json"},
method="POST")
with urlopen(req, timeout=15) as response:
body = json.load(response)
if "error" in body:
raise ValueError("RPC hata kodu: " + str(body["error"].get("code")))
result = body.get("result")
if not isinstance(result, str) or not result.startswith("0x"):
raise ValueError("Beklenen hexadecimal sonuç gelmedi.")
return int(result, 16)
try:
print("Ağ kimliği:", rpc("eth_chainId", 1))
print("Son blok:", rpc("eth_blockNumber", 2))
except URLError:
raise SystemExit("RPC bağlantısı kurulamadı; adres ve erişimi kontrol edin.")
except (ValueError, TypeError, KeyError):
raise SystemExit("Yanıt okunamadı; yöntem ve sağlayıcı belgesini kontrol edin.")4. Çıktının neyi kanıtladığını anlayın
Programın sayı yazdırması, bir cüzdanın güvenli olduğunu veya bir işlemin tamamlandığını kanıtlamaz. Yalnızca belirlenen uç noktadan gelen iki değeri okumuş olursunuz. Ağ kimliğini sağlayıcının seçtiğiniz ağ bilgisiyle karşılaştırın. Son blok numarası daha sonraki çalıştırmada değişebilir; bu beklenen bir veri güncellemesidir. İki farklı sağlayıcıda çok farklı sonuç görürseniz önce yanlış ağ ve gecikmeli düğüm olasılığını inceleyin; hemen kodunuzun tamamen bozuk olduğu sonucuna atlamayın.
5. Hataları birer kontrollü denemeyle ayırın
İlk denemede değişkeni boş bırakın; hazırlık mesajının çıktığını görün. Sonra doğru uç noktayla bir kez çalıştırın. Yetki hatası alırsanız kullanım panelindeki erişim durumuna bakın. Bir başka yöntem adı yazarak rastgele denemek, sorunun URL’den mi yöntemden mi geldiğini belirsizleştirir. Kodun örneği sabit iki yöntemde tutmasının nedeni budur. Sağlayıcı kota uyarısı veriyorsa döngü eklemek yerine isteği azaltın ve hata zamanını not edin.
6. Küçük bir çalışma günlüğü oluşturun
Günlüğe Python sürümünü, ağ adını, çalıştırma saatini ve iki çıktıyı yazın; erişim anahtarını yazmayın. İlk başarılı okumadan sonra kodu değiştirmeden aynı komutu yeniden çalıştırarak sonuç biçimini karşılaştırın. Bu aşamada zamanlayıcıya veya sürekli sorguya ihtiyaç yoktur. Tekrar üretilebilir bir örnek, daha büyük uygulamaya temel olur. Sonraki adımda makbuz okuma ekleyecekseniz işlem kimliği doğrulamasını ve null sonucunu ayrıca tasarlayın; iki sayılık örneği sessizce finansal işlem aracına dönüştürmeyin.


