Ana içeriğe atla
Change page

JSON-RPC API

Bir yazılım uygulamasının Ethereum blokzinciri ile etkileşime girmesi için - blokzincir verilerini okuyarak veya ağa işlemler göndererek - bir Ethereum düğümüne bağlanması gerekir.

Bu amaçla, her Ethereum istemcisi bir JSON-RPC spesifikasyonunu (opens in a new tab) uygular, böylece belirli düğüm veya istemci uygulamasından bağımsız olarak uygulamaların güvenebileceği tek tip bir yöntemler kümesi bulunur.

JSON-RPC (opens in a new tab), durumsuz, hafif bir uzak prosedür çağrısı (RPC) protokolüdür. Çeşitli veri yapılarını ve bunların işlenmesiyle ilgili kuralları tanımlar. Kavramların aynı süreç içinde, soketler üzerinden, HTTP üzerinden veya birçok farklı mesaj iletme ortamında kullanılabilmesi bakımından taşıma bağımsızdır. Veri formatı olarak JSON (RFC 4627) kullanır.

İstemci uygulamaları

Ethereum istemcilerinin her biri, JSON-RPC spesifikasyonunu uygularken farklı programlama dilleri kullanabilir. Belirli programlama dilleriyle ilgili daha fazla ayrıntı için ilgili istemci belgelerine bakın. En güncel API destek bilgileri için her bir istemcinin belgelerini kontrol etmenizi öneririz.

Yardımcı Kütüphaneler

Ethereum istemcileriyle doğrudan JSON-RPC API aracılığıyla etkileşime girmeyi seçebilseniz de, merkeziyetsiz uygulama (dapp) geliştiricileri için genellikle daha kolay seçenekler vardır. JSON-RPC API'sinin üzerinde sarmalayıcılar sağlamak için birçok JavaScript ve arka uç API kütüphanesi mevcuttur. Bu kütüphaneler sayesinde geliştiriciler, Ethereum ile etkileşime giren JSON-RPC isteklerini (arka planda) başlatmak için seçtikleri programlama dilinde sezgisel, tek satırlık metotlar yazabilirler.

Fikir birliği istemcisi API'leri

Bu sayfa temel olarak Ethereum yürütme istemcileri tarafından kullanılan JSON-RPC API'sini ele alır. Ancak, fikir birliği istemcilerinin de kullanıcıların doğrudan bir düğümden düğüm hakkında bilgi sorgulamasına, Beacon bloklarını, Beacon durumunu ve fikir birliği ile ilgili diğer bilgileri talep etmesine olanak tanıyan bir RPC API'si vardır. Bu API, Beacon API web sayfasında (opens in a new tab) belgelenmiştir.

Bir düğüm içindeki istemciler arası iletişim için de dahili bir API kullanılır - yani, fikir birliği istemcisi ile yürütme istemcisinin veri takası yapmasını sağlar. Buna 'Engine API' adı verilir ve spesifikasyonları GitHub (opens in a new tab) üzerinde mevcuttur.

Yürütme istemcisi spesifikasyonu

GitHub'daki tam JSON-RPC API spesifikasyonunu okuyun (opens in a new tab). Bu API, Yürütme API'si web sayfasında (opens in a new tab) belgelenmiştir ve mevcut tüm yöntemleri denemek için bir Denetleyici içerir.

Kurallar

Hex değeri kodlaması

JSON üzerinden iki temel veri türü aktarılır: biçimlendirilmemiş bayt dizileri ve nicelikler. Her ikisi de hex kodlaması ile aktarılır ancak biçimlendirme için farklı gereksinimlere sahiptir.

Nicelikler

Nicelikleri (tam sayılar, sayılar) kodlarken: hex olarak kodlayın, "0x" ön ekini ekleyin, en kompakt gösterimi kullanın (küçük bir istisna: sıfır "0x0" olarak temsil edilmelidir).

İşte bazı örnekler:

  • 0x41 (ondalık sistemde 65)
  • 0x400 (ondalık sistemde 1024)
  • YANLIŞ: 0x (her zaman en az bir basamağa sahip olmalıdır - sıfır "0x0"dır)
  • YANLIŞ: 0x0400 (başta sıfır bulunmasına izin verilmez)
  • YANLIŞ: ff (0x ön eki almalıdır)

Biçimlendirilmemiş veri

Biçimlendirilmemiş verileri (bayt dizileri, hesap adresleri, hash'ler, baytkod dizileri) kodlarken: hex olarak kodlayın, "0x" ön ekini ekleyin, her bayt için iki hex basamağı kullanın.

İşte bazı örnekler:

  • 0x41 (boyut 1, "A")
  • 0x004200 (boyut 3, "0B0")
  • 0x (boyut 0, "")
  • YANLIŞ: 0xf0f0f (çift sayıda basamak olmalıdır)
  • YANLIŞ: 004200 (0x ön eki almalıdır)

Blok parametresi

Aşağıdaki metotlar bir blok parametresine sahiptir:

Ethereum'un durumunu sorgulayan istekler yapıldığında, sağlanan blok parametresi bloğun yüksekliğini belirler.

Blok parametresi için aşağıdaki seçenekler mümkündür:

  • HEX String - bir tam sayı blok numarası
  • String "earliest" en eski/başlangıç bloğu için
  • String "latest" - önerilen en son blok için
  • String "safe" - en son güvenli baş blok için
  • String "finalized" - en son kesinleşmiş blok için
  • String "pending" - bekleyen durum/işlemler için

Örnekler

Bu sayfada, komut satırı aracı curl (opens in a new tab) kullanarak bireysel JSON_RPC API uç noktalarının nasıl kullanılacağına dair örnekler sunuyoruz. Bu bireysel uç nokta örnekleri aşağıdaki Curl örnekleri bölümünde bulunabilir. Sayfanın ilerleyen kısımlarında, bir Geth düğümü, JSON_RPC API ve curl kullanarak bir akıllı sözleşmeyi derlemek ve dağıtmak için uçtan uca bir örnek de sunuyoruz.

Curl örnekleri

Bir Ethereum düğümüne curl (opens in a new tab) istekleri yaparak JSON_RPC API'sini kullanma örnekleri aşağıda sunulmuştur. Her örnek; ilgili uç noktanın bir açıklamasını, parametrelerini, dönüş türünü ve nasıl kullanılması gerektiğine dair uygulamalı bir örneği içerir.

Curl istekleri, içerik türüyle ilgili bir hata mesajı döndürebilir. Bunun nedeni, --data seçeneğinin içerik türünü application/x-www-form-urlencoded olarak ayarlamasıdır. Düğümünüz bu konuda hata verirse, çağrının başına -H "Content-Type: application/json" yerleştirerek başlığı manuel olarak ayarlayın. Örnekler ayrıca, curl'e verilen son argüman olması gereken URL/IP ve port kombinasyonunu (örn. 127.0.0.1:8545) içermez. Bu ek verileri içeren eksiksiz bir curl isteği aşağıdaki biçimi alır:

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545

Dedikodu, Durum, Geçmiş

Birkaç temel JSON-RPC yöntemi, Ethereum ağından veri gerektirir ve düzgün bir şekilde üç ana kategoriye ayrılır: Dedikodu, Durum ve Geçmiş. Her bir yönteme atlamak için bu bölümlerdeki bağlantıları kullanın veya yöntemlerin tam listesini keşfetmek için içindekiler tablosunu kullanın.

Dedikodu Yöntemleri

Bu yöntemler zincirin başını takip eder. İşlemler ağda bu şekilde dolaşır, bloklardaki yerlerini bulur ve istemciler yeni bloklardan bu şekilde haberdar olur.

Durum Yöntemleri

Depolanan tüm verilerin mevcut durumunu bildiren yöntemler. "Durum", paylaşılan büyük bir RAM parçası gibidir ve hesap bakiyelerini, sözleşme verilerini ve gaz tahminlerini içerir.

Geçmiş Yöntemleri

Başlangıç bloğuna kadar her bloğun geçmiş kayıtlarını getirir. Bu, yalnızca ekleme yapılabilen büyük bir dosya gibidir ve tüm blok başlıklarını, blok gövdelerini, amca blokları ve işlem makbuzlarını içerir.

JSON-RPC API Oyun Alanı

API metotlarını keşfetmek ve denemek için oyun alanı aracını (opens in a new tab) kullanabilirsiniz. Ayrıca çeşitli düğüm sağlayıcıları tarafından hangi metotların ve ağların desteklendiğini de gösterir.

JSON-RPC API Metotları

web3_clientVersion

Mevcut istemci sürümünü döndürür.

Parametreler

Yok

Dönüşler

String - Mevcut istemci sürümü

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
// Sonuç
{
  "id":67,
  "jsonrpc":"2.0",
  "result": "Geth/v1.12.1-stable/linux-amd64/go1.19.1"
}

web3_sha3

Verilen verinin Keccak-256'sını (standartlaştırılmış SHA3-256 değil) döndürür.

Parametreler

  1. DATA - Bir SHA3 hash'ine dönüştürülecek veri
params: ["0x68656c6c6f20776f726c64"]

Döndürülenler

DATA - Verilen dizenin SHA3 sonucu.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
// Sonuç
{
  "id":64,
  "jsonrpc": "2.0",
  "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
}

net_version

Mevcut ağ kimliğini döndürür.

Parametreler

Yok

Döndürülenler

String - Mevcut ağ kimliği.

Mevcut ağ kimliklerinin tam listesi chainlist.org (opens in a new tab) adresinde bulunabilir. Yaygın olanlardan bazıları şunlardır:

  • 1: Ethereum Ana Ağı
  • 11155111: Sepolia test ağı
  • 560048 : Hoodi Test Ağı

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
// Sonuç
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "3"
}

net_listening

İstemci ağ bağlantıları için aktif olarak dinliyorsa true döndürür.

Parametreler

Yok

Döndürülenler

Boolean - Dinlerken true, aksi takdirde false.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
// Sonuç
{
  "id":67,
  "jsonrpc":"2.0",
  "result":true
}

net_peerCount

Şu anda istemciye bağlı olan eşlerin sayısını döndürür.

Parametreler

Yok

Dönüş Değeri

QUANTITY - bağlı eşlerin sayısını belirten tam sayı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
// Sonuç
{
  "id":74,
  "jsonrpc": "2.0",
  "result": "0x2" // 2
}

eth_protocolVersion

Mevcut Ethereum protokol sürümünü döndürür. Bu metodun Geth'te mevcut olmadığını (opens in a new tab) unutmayın.

Parametreler

Yok

Döndürülenler

String - Mevcut Ethereum protokol sürümü

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
// Sonuç
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "54"
}

eth_syncing

Eşzamanlama durumu hakkında veriler içeren bir nesne veya false döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

Kesin dönüş verileri istemci uygulamaları arasında değişiklik gösterir. Düğüm eşzamanlama yapmadığında tüm istemciler False döndürür ve tüm istemciler aşağıdaki alanları döndürür.

Object|Boolean, Eşzamanlama durumu verilerini içeren bir nesne veya eşzamanlama yapılmadığında FALSE:

  • startingBlock: QUANTITY - İçe aktarmanın başladığı blok (yalnızca eşzamanlama zincir ucuna ulaştıktan sonra sıfırlanacaktır)
  • currentBlock: QUANTITY - Mevcut blok, eth_blockNumber ile aynı
  • highestBlock: QUANTITY - Tahmini en yüksek blok

Ancak, bireysel istemciler ek veriler de sağlayabilir. Örneğin Geth aşağıdakileri döndürür:

Besu ise şunları döndürür:

Daha fazla ayrıntı için kendi istemcinizin belgelerine başvurun.

Örnek

eth_coinbase

İstemci coinbase adresini döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Not: Bu metot v1.14.0 itibarıyla kullanımdan kaldırılmıştır ve artık desteklenmemektedir. Bu metodu kullanmaya çalışmak "Method not supported" hatasıyla sonuçlanacaktır.

Parametreler

Yok

Döndürülenler

DATA, 20 bayt - mevcut coinbase adresi.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
// Sonuç
{
  "id":64,
  "jsonrpc": "2.0",
  "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
}

eth_chainId

Tekrar oynatmaya karşı korumalı işlemleri imzalamak için kullanılan zincir kimliğini döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

chainId, mevcut zincir kimliğinin tam sayısını temsil eden dize biçiminde onaltılık değer.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'
// Sonuç
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "0x1"
}

eth_mining

İstemci aktif olarak yeni bloklar için madencilik yapıyorsa true döndürür. Bu, yalnızca İş Kanıtı (PoW) ağları için true döndürebilir ve Birleşme'den bu yana bazı istemcilerde kullanılamayabilir.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Dönen Değerler

Boolean - istemci madencilik yapıyorsa true, aksi takdirde false döndürür.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
//
{
  "id":71,
  "jsonrpc": "2.0",
  "result": true
}

eth_hashrate

Düğümün madencilik yaptığı saniye başına hash sayısını döndürür. Bu, yalnızca İş Kanıtı (PoW) ağları için true döndürebilir ve Birleşme'den bu yana bazı istemcilerde mevcut olmayabilir.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

QUANTITY - saniye başına hash sayısı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
// Sonuç
{
  "id":71,
  "jsonrpc": "2.0",
  "result": "0x38a"
}

eth_gasPrice

Wei cinsinden gaz başına mevcut fiyatın bir tahminini döndürür. Örneğin, Besu istemcisi varsayılan olarak son 100 bloğu inceler ve medyan gaz birim fiyatını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

QUANTITY - Wei cinsinden mevcut gas fiyatının tam sayısı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
// Sonuç
{
  "id":73,
  "jsonrpc": "2.0",
  "result": "0x1dfd14000" // 8049999872 Wei
}

eth_accounts

İstemciye ait adreslerin bir listesini döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

Array of DATA, 20 Bayt - istemciye ait adresler.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
}

eth_blockNumber

En son bloğun numarasını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Yok

Döndürülenler

QUANTITY - istemcinin bulunduğu mevcut blok numarasını ifade eden tam sayı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
// Sonuç
{
  "id":83,
  "jsonrpc": "2.0",
  "result": "0x4b7" // 1207
}

eth_getBalance

Belirli bir adresteki hesabın bakiyesini döndürür.

Oyun alanında uç noktayı deneyin (opens in a new tab)

Parametreler

  1. DATA, 20 Bayt - bakiyesi kontrol edilecek adres.
  2. QUANTITY|TAG - tam sayı blok numarası veya "latest", "earliest", "pending", "safe" ya da "finalized" dizesi, bkz. blok parametresi
params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]

Döndürülenler

QUANTITY - Wei cinsinden mevcut bakiyenin tam sayı değeri.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58" // 158972490234375000
}

eth_getStorageAt

Belirli bir adresteki depolama konumundan değeri döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 20 Bayt - depolamanın adresi.
  2. QUANTITY - depolamadaki konumun tam sayısı.
  3. QUANTITY|TAG - tam sayı blok numarası veya "latest", "earliest", "pending", "safe", "finalized" dizesi, bkz. blok parametresi

Döndürür

DATA - bu depolama konumundaki değer.

Örnek Doğru konumu hesaplamak, alınacak depolamaya bağlıdır. 0x391694e7e0b0cce554cb130d723a9d27458f9298 adresi tarafından 0x295a70b2de5e3953354a6a8344e616ed314d7251 adresinde dağıtılan aşağıdaki sözleşmeyi göz önünde bulundurun.

contract Storage {
    uint pos0;
    mapping(address => uint) pos1;
    constructor() {
        pos0 = 1234;
        pos1[msg.sender] = 5678;
    }
}

pos0 değerini almak basittir:

curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}

Eşlemenin (mapping) bir elemanını almak daha zordur. Eşlemedeki bir elemanın konumu şu şekilde hesaplanır:

keccak(LeftPad32(key, 0), LeftPad32(map position, 0))

Bu, pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] üzerindeki depolamayı almak için konumu şu şekilde hesaplamamız gerektiği anlamına gelir:

keccak(
  decodeHex(
    "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
      "0000000000000000000000000000000000000000000000000000000000000001"
  )
)

Hesaplamayı yapmak için Web3 kütüphanesi ile birlikte gelen geth konsolu kullanılabilir:

> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
undefined
> web3.sha3(key, {"encoding": "hex"})
"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"

Şimdi depolamayı getirmek için:

curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}

eth_getTransactionCount

Bir adresten gönderilen işlemlerin sayısını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 20 Bayt - adres.
  2. QUANTITY|TAG - tam sayı blok numarası veya "latest", "earliest", "pending", "safe" ya da "finalized" dizesi, bkz. blok parametresi
params: [
  "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "latest", // en son bloktaki durum
]

Döndürülenler

QUANTITY - bu adresten gönderilen işlemlerin sayısını belirten tam sayı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_getBlockTransactionCountByHash

Verilen blok hash'i ile eşleşen bir bloktaki işlem sayısını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - bir bloğun hash'i
params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]

Döndürülenler

QUANTITY - bu bloktaki işlem sayısının tam sayı değeri.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x8b" // 139
}

eth_getBlockTransactionCountByNumber

Verilen blok numarasıyla eşleşen bir bloktaki işlem sayısını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. QUANTITY|TAG - bir blok numarasının tam sayısı veya blok parametresinde olduğu gibi "earliest", "latest", "pending", "safe" veya "finalized" dizesi.
params: [
  "0x13738ca", // 20396234
]

Döndürülenler

QUANTITY - bu bloktaki işlem sayısının tam sayısı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x8b" // 139
}

eth_getUncleCountByBlockHash

Verilen blok hash'i ile eşleşen bir bloktaki amca sayısını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - bir bloğun hash'i
params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]

Döndürülenler

QUANTITY - bu bloktaki amca sayısının tam sayı değeri.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_getUncleCountByBlockNumber

Verilen blok numarasıyla eşleşen bir bloktaki amca sayısını döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. QUANTITY|TAG - bir blok numarasının tam sayısı veya "latest", "earliest", "pending", "safe" ya da "finalized" dizesi, bkz. blok parametresi
params: [
  "0xe8", // 232
]

Döndürülenler

QUANTITY - bu bloktaki amca sayısının tam sayısı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x0" // 0
}

eth_getCode

Belirli bir adresteki kodu döndürür.

Oyun alanında uç noktayı deneyin (opens in a new tab)

Parametreler

  1. DATA, 20 Bayt - adres
  2. QUANTITY|TAG - tam sayı blok numarası veya "latest", "earliest", "pending", "safe" ya da "finalized" dizesi, bkz. blok parametresi
params: [
  "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
  "0x5daf3b", // 6139707
]

Dönen Değerler

DATA - verilen adresten alınan kod.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"
}

eth_sign

sign metodu, şununla Ethereum'a özgü bir imza hesaplar: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).

Mesaja bir önek eklenmesi, hesaplanan imzanın Ethereum'a özgü bir imza olarak tanınmasını sağlar. Bu, kötü niyetli bir merkeziyetsiz uygulamanın (dapp) rastgele verileri (örneğin, işlem) imzalayıp imzayı kurbanın kimliğine bürünmek için kullanması gibi kötüye kullanımları önler.

Not: imzalama yapılacak adresin kilidi açık olmalıdır.

Parametreler

  1. DATA, 20 Bayt - adres
  2. DATA, N Bayt - imzalanacak mesaj

Döndürülenler

DATA: İmza

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
}

eth_signTransaction

eth_sendRawTransaction kullanarak daha sonraki bir zamanda ağa gönderilebilecek bir işlemi imzalar.

Parametreler

  1. Object - İşlem nesnesi
  • type:
  • from: DATA, 20 Bayt - İşlemin gönderildiği adres.
  • to: DATA, 20 Bayt - (yeni sözleşme oluşturulurken isteğe bağlıdır) İşlemin yönlendirildiği adres.
  • gas: QUANTITY - (isteğe bağlı, varsayılan: 90000) İşlemin yürütülmesi için sağlanan gazın tam sayı değeri. Kullanılmayan gazı iade edecektir.
  • gasPrice: QUANTITY - (isteğe bağlı, varsayılan: Belirlenecek) Ödenen her gaz için kullanılan gas fiyatının Wei cinsinden tam sayı değeri.
  • value: QUANTITY - (isteğe bağlı) Bu işlemle birlikte gönderilen değerin Wei cinsinden tam sayı değeri.
  • data: DATA - Bir sözleşmenin derlenmiş kodu VEYA çağrılan yöntem imzasının ve kodlanmış parametrelerin hash'i.
  • nonce: QUANTITY - (isteğe bağlı) Bir nonce'un tam sayı değeri. Bu, aynı nonce'u kullanan kendi bekleyen işlemlerinizin üzerine yazmanıza olanak tanır.

Döndürülenler

DATA, Belirtilen hesap tarafından imzalanmış, RLP kodlamalı işlem nesnesi.

Örnek

// İstek
curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'
// Sonuç
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
}

eth_sendTransaction

Veri alanı kod içeriyorsa yeni bir mesaj çağrısı işlemi veya sözleşme oluşturma işlemi yaratır ve bunu from içinde belirtilen hesabı kullanarak imzalar.

Parametreler

  1. Object - İşlem nesnesi
  • from: DATA, 20 Bayt - İşlemin gönderildiği adres.
  • to: DATA, 20 Bayt - (yeni sözleşme oluşturulurken isteğe bağlıdır) İşlemin yönlendirildiği adres.
  • gas: QUANTITY - (isteğe bağlı, varsayılan: 90000) İşlemin yürütülmesi için sağlanan gazın tam sayısı. Kullanılmayan gazı iade edecektir.
  • gasPrice: QUANTITY - (isteğe bağlı, varsayılan: Belirlenecek) Ödenen her gaz için kullanılan gas fiyatının tam sayısı.
  • value: QUANTITY - (isteğe bağlı) Bu işlemle birlikte gönderilen değerin tam sayısı.
  • input: DATA - Bir sözleşmenin derlenmiş kodu VEYA çağrılan yöntem imzasının ve kodlanmış parametrelerin hash'i.
  • nonce: QUANTITY - (isteğe bağlı) Bir nonce tam sayısı. Bu, aynı nonce'u kullanan kendi bekleyen işlemlerinizin üzerine yazmanıza olanak tanır.

Döndürülenler

DATA, 32 Bayt - işlem hash'i veya işlem henüz mevcut değilse sıfır hash'i.

Bir sözleşme oluşturduğunuzda, işlem bir blokta önerildikten sonra sözleşme adresini almak için eth_getTransactionReceipt kullanın.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_sendRawTransaction

İmzalı işlemler için yeni bir mesaj çağrısı işlemi veya sözleşme oluşturma işlemi yaratır.

Parametreler

  1. DATA, İmzalı işlem verisi.
params: [
  "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
]

Dönen Değerler

DATA, 32 Bayt - işlem hash'i veya işlem henüz mevcut değilse sıfır hash'i.

Bir sözleşme oluşturduğunuzda, işlem bir blokta önerildikten sonra sözleşme adresini almak için eth_getTransactionReceipt kullanın.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_call

Blokzincir üzerinde bir işlem oluşturmadan hemen yeni bir mesaj çağrısı yürütür. Genellikle salt okunur akıllı sözleşme işlevlerini yürütmek için kullanılır, örneğin bir ERC-20 sözleşmesi için balanceOf.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. Object - İşlem çağrısı nesnesi
  • from: DATA, 20 Bayt - (isteğe bağlı) İşlemin gönderildiği adres.
  • to: DATA, 20 Bayt - İşlemin yönlendirildiği adres.
  • gas: QUANTITY - (isteğe bağlı) İşlem yürütmesi için sağlanan gazın tam sayısı. eth_call sıfır gaz tüketir, ancak bu parametre bazı yürütmeler için gerekli olabilir.
  • gasPrice: QUANTITY - (isteğe bağlı) Ödenen her gaz için kullanılan gasPrice tam sayısı
  • value: QUANTITY - (isteğe bağlı) Bu işlemle gönderilen değerin tam sayısı
  • input: DATA - (isteğe bağlı) Yöntem imzasının ve kodlanmış parametrelerin hash'i. Ayrıntılar için Solidity belgelerindeki Ethereum Sözleşme ABI'sine (opens in a new tab) bakın.
  1. QUANTITY|TAG - tam sayı blok numarası veya "latest", "earliest", "pending", "safe" ya da "finalized" dizesi, blok parametresine bakın

Dönüşler

DATA - yürütülen sözleşmenin dönüş değeri.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x"
}

eth_estimateGas

İşlemin tamamlanmasına izin vermek için ne kadar gaz gerektiğini tahmin eder ve döndürür. İşlem Blokzincire eklenmeyecektir. EVM mekanikleri ve düğüm performansı gibi çeşitli nedenlerden dolayı, tahminin işlem tarafından fiilen kullanılan gaz miktarından önemli ölçüde daha fazla olabileceğini unutmayın.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

Tüm özelliklerin isteğe bağlı olması dışında eth_call parametrelerine bakın. Hiçbir gaz limiti belirtilmezse Geth, bekleyen bloktaki blok gaz limitini üst sınır olarak kullanır. Sonuç olarak, gaz miktarı bekleyen blok gaz limitinden yüksek olduğunda, döndürülen tahmin çağrıyı/işlemi yürütmek için yeterli olmayabilir.

Döndürülenler

QUANTITY - kullanılan gaz miktarı.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x5208" // 21000
}

eth_getBlockByHash

Hash değerine göre bir blok hakkında bilgi döndürür.

Oyun alanında uç noktayı deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - Bir bloğun hash'i.
  2. Boolean - Eğer true ise tam işlem nesnelerini, false ise yalnızca işlemlerin hash'lerini döndürür.
params: [
  "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
  false,
]

Döndürülenler

Object - Bir blok nesnesi veya hiçbir blok bulunamadığında null döndürür:

  • number: QUANTITY - blok numarası. Bekleyen blok olduğunda null.
  • hash: DATA, 32 Bayt - bloğun hash'i. Bekleyen blok olduğunda null.
  • parentHash: DATA, 32 Bayt - üst bloğun hash'i.
  • nonce: DATA, 8 Bayt - oluşturulan İş Kanıtı (PoW) hash'i. Bekleyen blok olduğunda null, Hisse Kanıtı (PoS) blokları için (Birleşme'den beri) 0x0.
  • sha3Uncles: DATA, 32 Bayt - bloktaki uncle verilerinin SHA3'ü.
  • logsBloom: DATA, 256 Bayt - bloğun günlükleri için bloom filtresi. Bekleyen blok olduğunda null.
  • transactionsRoot: DATA, 32 Bayt - bloğun işlem ağacının (trie) kökü.
  • stateRoot: DATA, 32 Bayt - bloğun nihai durum ağacının kökü.
  • receiptsRoot: DATA, 32 Bayt - bloğun makbuz ağacının (trie) kökü.
  • miner: DATA, 20 Bayt - blok ödüllerinin verildiği lehtarın adresi.
  • difficulty: QUANTITY - bu blok için zorluğun tam sayı değeri.
  • totalDifficulty: QUANTITY - bu bloğa kadar zincirin toplam zorluğunun tam sayı değeri.
  • extraData: DATA - bu bloğun "ekstra veri" alanı.
  • size: QUANTITY - bu bloğun bayt cinsinden boyutunun tam sayı değeri.
  • gasLimit: QUANTITY - bu blokta izin verilen maksimum gaz.
  • gasUsed: QUANTITY - bu bloktaki tüm işlemler tarafından kullanılan toplam gaz.
  • timestamp: QUANTITY - bloğun derlendiği zamanın unix zaman damgası.
  • transactions: Array - Verilen son parametreye bağlı olarak işlem nesneleri dizisi veya 32 Baytlık işlem hash'leri.
  • uncles: Array - Uncle hash'leri dizisi.

Örnek

eth_getBlockByNumber

Blok numarasına göre bir blok hakkında bilgi döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. QUANTITY|TAG - bir blok numarası tam sayısı veya blok parametresi içinde olduğu gibi "earliest", "latest", "pending", "safe" veya "finalized" dizesi.
  2. Boolean - Eğer true ise tam işlem nesnelerini, false ise yalnızca işlemlerin hash'lerini döndürür.
params: [
  "0x1b4", // 436
  true,
]

Döndürülenler Bkz. eth_getBlockByHash

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'

Sonuç için bkz. eth_getBlockByHash

eth_getTransactionByHash

İşlem hash'i ile talep edilen bir işlem hakkındaki bilgileri döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - bir işlemin hash'i
params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]

Döndürülenler

Object - Bir işlem nesnesi veya hiçbir işlem bulunamadığında null:

  • blockHash: DATA, 32 Bayt - bu işlemin içinde bulunduğu bloğun hash'i. Beklemedeyken null.
  • blockNumber: QUANTITY - bu işlemin içinde bulunduğu blok numarası. Beklemedeyken null.
  • from: DATA, 20 Bayt - gönderenin adresi.
  • gas: QUANTITY - gönderen tarafından sağlanan gaz.
  • gasPrice: QUANTITY - gönderen tarafından sağlanan Wei cinsinden gas fiyatı.
  • hash: DATA, 32 Bayt - işlemin hash'i.
  • input: DATA - işlemle birlikte gönderilen veri.
  • nonce: QUANTITY - gönderen tarafından bundan önce yapılan işlemlerin sayısı.
  • to: DATA, 20 Bayt - alıcının adresi. Bir sözleşme oluşturma işlemi olduğunda null.
  • transactionIndex: QUANTITY - bloğun içindeki işlemlerin endeks konumunun tam sayısı. Beklemedeyken null.
  • value: QUANTITY - Wei cinsinden aktarılan değer.
  • v: QUANTITY - ECDSA kurtarma kimliği
  • r: QUANTITY - ECDSA imza r
  • s: QUANTITY - ECDSA imza s

Örnek

eth_getTransactionByBlockHashAndIndex

Blok hash'i ve işlem endeksi konumuna göre bir işlem hakkında bilgi döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - bir bloğun hash'i.
  2. QUANTITY - işlem endeksi konumunun tam sayısı.
params: [
  "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
  "0x0", // 0
]

Döndürdükleri Bkz. eth_getTransactionByHash

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'

Sonuç için bkz. eth_getTransactionByHash

eth_getTransactionByBlockNumberAndIndex

Blok numarası ve işlem endeksi konumuna göre bir işlem hakkında bilgi döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. QUANTITY|TAG - bir blok numarası veya blok parametresi içinde olduğu gibi "earliest", "latest", "pending", "safe" veya "finalized" dizesi.
  2. QUANTITY - işlem endeksi konumu.
params: [
  "0x9c47cf", // 10241999
  "0x24", // 36
]

Döndürülenler Bkz. eth_getTransactionByHash

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}'

Sonuç için bkz. eth_getTransactionByHash

eth_getTransactionReceipt

İşlem hash'ine göre bir işlemin makbuzunu döndürür.

Not Makbuz, bekleyen işlemler için mevcut değildir.

Parametreler

  1. DATA, 32 Bayt - bir işlemin hash'i
params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]

Döndürülenler Object - Bir işlem makbuzu nesnesi veya hiçbir makbuz bulunamadığında null:

  • transactionHash : DATA, 32 Bayt - işlemin hash'i.
  • transactionIndex: QUANTITY - işlemin bloktaki endeks konumunun tam sayısı.
  • blockHash: DATA, 32 Bayt - bu işlemin içinde bulunduğu bloğun hash'i.
  • blockNumber: QUANTITY - bu işlemin içinde bulunduğu blok numarası.
  • from: DATA, 20 Bayt - gönderenin adresi.
  • to: DATA, 20 Bayt - alıcının adresi. Bir sözleşme oluşturma işlemi olduğunda null olur.
  • cumulativeGasUsed : QUANTITY - Bu işlem blokta yürütüldüğünde kullanılan toplam gaz miktarı.
  • effectiveGasPrice : QUANTITY - Gaz birimi başına ödenen taban ücret ve öncelik ücretinin toplamı.
  • gasUsed : QUANTITY - Yalnızca bu belirli işlem tarafından kullanılan gaz miktarı.
  • contractAddress : DATA, 20 Bayt - İşlem bir sözleşme oluşturma işlemiyse oluşturulan sözleşme adresi, aksi takdirde null.
  • logs: Array - Bu işlemin oluşturduğu günlük nesneleri dizisi.
  • logsBloom: DATA, 256 Bayt - Hafif istemcilerin ilgili günlükleri hızlıca alması için Bloom filtresi.
  • type: QUANTITY - işlem türünün tam sayısı, eski işlemler için 0x0, erişim listesi türleri için 0x1, dinamik ücretler için 0x2.

Ayrıca şunlardan birini döndürür:

  • root : DATA 32 baytlık işlem sonrası durum kökü (Bizans öncesi)
  • status: QUANTITY 1(başarılı) veya0` (başarısız)

Örnek

eth_getUncleByBlockHashAndIndex

Bir bloğun amcası hakkında hash ve amca endeks konumuna göre bilgi döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. DATA, 32 Bayt - Bir bloğun hash'i.
  2. QUANTITY - Amcanın endeks konumu.
params: [
  "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
  "0x0", // 0
]

Döndürür Bkz. eth_getBlockByHash

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'

Sonuç için bkz. eth_getBlockByHash

Not: Bir amca, bireysel işlemler içermez.

eth_getUncleByBlockNumberAndIndex

Numarasına ve amca endeks konumuna göre bir bloğun amcası hakkında bilgi döndürür.

Uç noktayı oyun alanında deneyin (opens in a new tab)

Parametreler

  1. QUANTITY|TAG - bir blok numarası veya blok parametresinde olduğu gibi "earliest", "latest", "pending", "safe", "finalized" dizesi.
  2. QUANTITY - amcanın endeks konumu.
params: [
  "0x29c", // 668
  "0x0", // 0
]

Dönen Değerler Bkz. eth_getBlockByHash

Not: Bir amca, bireysel işlemleri içermez.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'

Sonuç için bkz. eth_getBlockByHash

eth_newFilter

Durum değiştiğinde (günlükler) bildirim yapmak için filtre seçeneklerine dayalı olarak bir filtre nesnesi oluşturur. Durumun değişip değişmediğini kontrol etmek için eth_getFilterChanges çağrısı yapın.

Topic filtrelerini belirleme üzerine bir not: Topic'ler sıraya bağlıdır. [A, B] topic'lerine sahip bir günlüğü olan bir işlem, aşağıdaki topic filtreleriyle eşleşecektir:

  • [] "herhangi bir şey"
  • [A] "İlk konumda A (ve sonrasında herhangi bir şey)"
  • [null, B] "İlk konumda herhangi bir şey VE ikinci konumda B (ve sonrasında herhangi bir şey)"
  • [A, B] "İlk konumda A VE ikinci konumda B (ve sonrasında herhangi bir şey)"
  • [[A, B], [A, B]] "İlk konumda (A VEYA B) VE ikinci konumda (A VEYA B) (ve sonrasında herhangi bir şey)"
  • Parametreler
  1. Object - Filtre seçenekleri:
  • fromBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya önerilen son blok için "latest", en son güvenli blok için "safe", en son kesinleşmiş blok için "finalized" veya henüz bir blokta olmayan işlemler için "pending", "earliest".
  • toBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya önerilen son blok için "latest", en son güvenli blok için "safe", en son kesinleşmiş blok için "finalized" veya henüz bir blokta olmayan işlemler için "pending", "earliest".
  • address: DATA|Array, 20 Bayt - (isteğe bağlı) Günlüklerin kaynaklanması gereken sözleşme adresi veya adreslerin bir listesi.
  • topics: Array of DATA, - (isteğe bağlı) 32 Baytlık DATA topic dizisi. Topic'ler sıraya bağlıdır. Her bir topic, "veya" seçeneklerine sahip bir VERİ (DATA) dizisi de olabilir.

Dönen Değerler QUANTITY - Bir filtre kimliği.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_newBlockFilter

Yeni bir blok geldiğinde bildirimde bulunmak için düğümde bir filtre oluşturur. Durumun değişip değişmediğini kontrol etmek için eth_getFilterChanges çağırın.

Parametreler Yok

Döndürülenler QUANTITY - Bir filtre kimliği.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
// Sonuç
{
  "id":1,
  "jsonrpc":  "2.0",
  "result": "0x1" // 1
}

eth_newPendingTransactionFilter

Yeni bekleyen işlemler ulaştığında bildirimde bulunmak için düğümde bir filtre oluşturur. Durumun değişip değişmediğini kontrol etmek için eth_getFilterChanges çağrısı yapın.

Parametreler Yok

Döndürdükleri QUANTITY - Bir filtre kimliği.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
// Sonuç
{
  "id":1,
  "jsonrpc":  "2.0",
  "result": "0x1" // 1
}

eth_uninstallFilter

Verilen id'ye sahip bir filtreyi kaldırır. İzlemeye artık ihtiyaç duyulmadığında her zaman çağrılmalıdır. Ayrıca filtreler, belirli bir süre boyunca eth_getFilterChanges ile talep edilmediklerinde zaman aşımına uğrar.

Parametreler

  1. QUANTITY - Filtre id'si.
params: [
  "0xb", // 11
]

Döndürülenler Boolean - Filtre başarıyla kaldırıldıysa true, aksi takdirde false.

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
// Sonuç
{
  "id":1,
  "jsonrpc": "2.0",
  "result": true
}

eth_getFilterChanges

Bir filtre için yoklama yöntemi, son yoklamadan bu yana oluşan günlüklerin bir dizisini döndürür.

Parametreler

  1. QUANTITY - filtre kimliği.
params: [
  "0x16", // 22
]

Döndürülenler Array - Günlük nesnelerinden oluşan bir dizi veya son yoklamadan bu yana hiçbir şey değişmediyse boş bir dizi.

  • eth_newBlockFilter ile oluşturulan filtreler için dönüş değerleri blok hash'leridir (DATA, 32 Bayt), örn. ["0x3454645634534..."].

  • eth_newPendingTransactionFilter ile oluşturulan filtreler için dönüş değerleri işlem hash'leridir (DATA, 32 Bayt), örn. ["0x6345343454645..."].

  • eth_newFilter ile oluşturulan filtreler için günlükler aşağıdaki parametrelere sahip nesnelerdir:

    • removed: TAG - Günlük, bir zincir yeniden düzenlemesi nedeniyle kaldırıldığında true olur. Geçerli bir günlükse false olur.
    • logIndex: QUANTITY - günlüğün bloktaki endeks konumunun tam sayısı. Bekleyen bir günlük olduğunda null olur.
    • transactionIndex: QUANTITY - günlüğün oluşturulduğu işlemin endeks konumunun tam sayısı. Bekleyen bir günlük olduğunda null olur.
    • transactionHash: DATA, 32 Bayt - bu günlüğün oluşturulduğu işlemin hash'i. Bekleyen bir günlük olduğunda null olur.
    • blockHash: DATA, 32 Bayt - bu günlüğün içinde bulunduğu bloğun hash'i. Beklemede olduğunda null olur. Bekleyen bir günlük olduğunda null olur.
    • blockNumber: QUANTITY - bu günlüğün içinde bulunduğu blok numarası. Beklemede olduğunda null olur. Bekleyen bir günlük olduğunda null olur.
    • address: DATA, 20 Bayt - bu günlüğün kaynaklandığı adres.
    • data: DATA - değişken uzunluklu endekslenmemiş günlük verisi. (solidity'de: sıfır veya daha fazla 32 Baytlık endekslenmemiş günlük argümanı.)
    • topics: Array of DATA - 0 ila 4 adet 32 Baytlık DATA endekslenmiş günlük argümanı dizisi. (solidity'de: Olayı anonymous belirteci ile bildirmediğiniz sürece, ilk konu olayın imzasının hash'idir (örn. Deposit(address,bytes32,uint256)).)
  • Örnek

eth_getFilterLogs

Verilen id'ye sahip filtreyle eşleşen tüm günlüklerin bir dizisini döndürür.

Parametreler

  1. QUANTITY - Filtre id'si.
params: [
  "0x16", // 22
]

Döndürülenler Bkz. eth_getFilterChanges

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'

Sonuç için bkz. eth_getFilterChanges

eth_getLogs

Belirli bir filtre nesnesiyle eşleşen tüm günlüklerin bir dizisini döndürür.

Parametreler

  1. Object - Filtre seçenekleri:
  • fromBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya önerilen son blok için "latest", en son güvenli blok için "safe", en son kesinleşmiş blok için "finalized" veya henüz bir blokta olmayan işlemler için "pending", "earliest".
  • toBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya önerilen son blok için "latest", en son güvenli blok için "safe", en son kesinleşmiş blok için "finalized" veya henüz bir blokta olmayan işlemler için "pending", "earliest".
  • address: DATA|Array, 20 Bayt - (isteğe bağlı) Günlüklerin kaynaklanması gereken sözleşme adresi veya adreslerin bir listesi.
  • topics: Array of DATA, - (isteğe bağlı) 32 Baytlık DATA konuları dizisi. Konular sıraya bağlıdır. Her konu ayrıca "veya" seçeneklerine sahip bir DATA dizisi olabilir.
  • blockHash: DATA, 32 Bayt - (isteğe bağlı, gelecek) EIP-234'ün eklenmesiyle, blockHash, döndürülen günlükleri 32 baytlık blockHash hash'ine sahip tek bir blokla sınırlayan yeni bir filtre seçeneği olacaktır. blockHash kullanmak, fromBlock = toBlock = blockHash hash'ine sahip blok numarası ile eşdeğerdir. Filtre kriterlerinde blockHash mevcutsa, ne fromBlock ne de toBlock kullanımına izin verilir.
params: [
  {
    topics: [
      "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
    ],
  },
]

Döndürülenler Bkz. eth_getFilterChanges

Örnek

// İstek
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'

Sonuç için bkz. eth_getFilterChanges

Kullanım Örneği

JSON-RPC kullanarak bir sözleşme dağıtmak

Bu bölüm, yalnızca RPC arayüzünü kullanarak bir sözleşmenin nasıl dağıtılacağına dair bir gösterim içerir. Bu karmaşıklığın soyutlandığı sözleşmeleri dağıtmanın alternatif yolları vardır; örneğin, RPC arayüzü üzerine inşa edilmiş web3.js (opens in a new tab) ve web3.py (opens in a new tab) gibi kütüphaneleri kullanmak. Bu soyutlamaların anlaşılması genellikle daha kolaydır ve daha az hataya açıktır, ancak arka planda neler olduğunu anlamak yine de faydalıdır.

Aşağıdaki, bir Ethereum düğümüne JSON-RPC arayüzü kullanılarak dağıtılacak olan Multiply7 adlı basit bir akıllı sözleşmedir. Bu eğitim, okuyucunun halihazırda bir Geth düğümü çalıştırdığını varsaymaktadır. Düğümler ve istemciler hakkında daha fazla bilgi burada mevcuttur. Geth dışındaki istemciler için HTTP JSON-RPC'nin nasıl başlatılacağını görmek üzere lütfen ilgili istemci belgelerine başvurun. Çoğu istemci varsayılan olarak localhost:8545 üzerinde hizmet verir.

contract Multiply7 {
    event Print(uint);
    function multiply(uint input) returns (uint) {
        Print(input * 7);
        return input * 7;
    }
}

Yapılacak ilk şey, HTTP RPC arayüzünün etkinleştirildiğinden emin olmaktır. Bu, başlangıçta Geth'e --http bayrağını sağladığımız anlamına gelir. Bu örnekte, özel bir geliştirme zincirindeki Geth düğümünü kullanıyoruz. Bu yaklaşımı kullanarak gerçek ağda Ether'e ihtiyacımız olmaz.

geth --http --dev console 2>>geth.log

Bu, http://localhost:8545 üzerinde HTTP RPC arayüzünü başlatacaktır.

curl (opens in a new tab) kullanarak Coinbase adresini (hesaplar dizisinden ilk adresi alarak) ve bakiyeyi alıp arayüzün çalıştığını doğrulayabiliriz. Lütfen bu örneklerdeki verilerin yerel düğümünüzde farklılık göstereceğini unutmayın. Bu komutları denemek isterseniz, ikinci curl isteğindeki istek parametrelerini ilkinden dönen sonuçla değiştirin.

curl --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[], "id":1}' -H "Content-Type: application/json" localhost:8545
{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]}

curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545
{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"}

Sayılar onaltılık (hex) olarak kodlandığından, bakiye Wei cinsinden bir onaltılık dize olarak döndürülür. Bakiyeyi sayı olarak Ether cinsinden almak istersek, Geth konsolundan web3 kullanabiliriz.

web3.fromWei("0x1639e49bba16280000", "ether")
// "410"

Artık özel geliştirme zincirimizde bir miktar Ether olduğuna göre, sözleşmeyi dağıtabiliriz. İlk adım, Multiply7 sözleşmesini EVM'ye gönderilebilecek baytkoda derlemektir. Solidity derleyicisi olan solc'yi kurmak için Solidity belgelerini (opens in a new tab) izleyin. (Örneğimiz için kullanılan derleyici sürümüyle (opens in a new tab) eşleşmesi için daha eski bir solc sürümü kullanmak isteyebilirsiniz.)

Bir sonraki adım, Multiply7 sözleşmesini EVM'ye gönderilebilecek baytkoda derlemektir.

echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin

======= <stdin>:Multiply7 =======
Binary:
6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029

Artık derlenmiş koda sahip olduğumuza göre, onu dağıtmanın ne kadar gaza mal olacağını belirlememiz gerekiyor. RPC arayüzü, bize bir tahmin verecek olan bir eth_estimateGas yöntemine sahiptir.

curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545
{"jsonrpc":"2.0","id":5,"result":"0x1c31e"}

Ve son olarak sözleşmeyi dağıtın.

curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545
{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}

İşlem düğüm tarafından kabul edilir ve bir işlem hash'i döndürülür. Bu hash, işlemi izlemek için kullanılabilir. Bir sonraki adım, sözleşmemizin dağıtıldığı adresi belirlemektir. Yürütülen her işlem bir makbuz oluşturacaktır. Bu makbuz, işlemin hangi bloğa dahil edildiği ve EVM tarafından ne kadar gaz kullanıldığı gibi işlem hakkında çeşitli bilgiler içerir. Bir işlem bir sözleşme oluşturursa, sözleşme adresini de içerecektir. Makbuzu eth_getTransactionReceipt RPC yöntemiyle alabiliriz.

curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545
{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}}

Sözleşmemiz 0x4d03d617d700cf81935d7f797f4e2ae719648262 üzerinde oluşturuldu. Makbuz yerine boş (null) bir sonuç, işlemin henüz bir bloğa dahil edilmediği anlamına gelir. Bir süre bekleyin, fikir birliği istemcinizin çalışıp çalışmadığını kontrol edin ve yeniden deneyin.

Akıllı sözleşmelerle etkileşim kurmak

Bu örnekte, sözleşmenin multiply yöntemine eth_sendTransaction kullanarak bir işlem göndereceğiz.

eth_sendTransaction birkaç argüman gerektirir, özellikle from, to ve data. From hesabımızın genel adresidir ve to sözleşme adresidir. data argümanı, hangi yöntemin hangi argümanlarla çağrılması gerektiğini tanımlayan bir yük (payload) içerir. İşte bu noktada ABI (uygulama ikili arayüzü) (opens in a new tab) devreye girer. ABI, EVM için verilerin nasıl tanımlanacağını ve kodlanacağını belirleyen bir JSON dosyasıdır.

Yükün baytları, sözleşmede hangi yöntemin çağrılacağını tanımlar. Bu, işlev adı ve argüman türleri üzerinden alınan Keccak hash'inin onaltılık (hex) olarak kodlanmış ilk 4 baytıdır. Çarpma (multiply) işlevi, uint256 için bir takma ad olan bir uint kabul eder. Bu bize şunu verir:

web3.sha3("multiply(uint256)").substring(0, 10)
// "0xc6888fa1"

Bir sonraki adım argümanları kodlamaktır. Sadece bir tane uint256 vardır, diyelim ki 6 değeri. ABI'nin uint256 türlerinin nasıl kodlanacağını belirten bir bölümü vardır.

int<M>: enc(X), X'in büyük uçlu (big-endian) ikiye tümleyen kodlamasıdır; uzunluğun 32 baytın katı olması için negatif X için yüksek dereceli (sol) tarafta 0xff ile ve pozitif X için sıfır baytlarıyla doldurulur.

Bu, 0000000000000000000000000000000000000000000000000000000000000006 olarak kodlanır.

İşlev seçiciyi ve kodlanmış argümanı birleştirdiğimizde verimiz 0xc6888fa10000000000000000000000000000000000000000000000000000000000000006 olacaktır.

Bu artık düğüme gönderilebilir:

curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545
{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"}

Bir işlem gönderildiği için bir işlem hash'i döndürüldü. Makbuzu almak şunu verir:

Makbuz bir günlük içerir. Bu günlük, işlem yürütülürken EVM tarafından oluşturulmuş ve makbuza dahil edilmiştir. multiply işlevi, Print olayının girdinin 7 katı ile tetiklendiğini gösterir. Print olayı için argüman bir uint256 olduğundan, onu ABI kurallarına göre çözebiliriz, bu da bize beklenen ondalık 42 değerini verecektir. Verilerin yanı sıra, günlüğü hangi olayın oluşturduğunu belirlemek için konuların (topics) kullanılabileceğini belirtmekte fayda var:

web3.sha3("Print(uint256)")
// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"

Bu, JSON-RPC'nin doğrudan kullanımını gösteren, en yaygın görevlerden bazılarına kısa bir girişti.