Ana içeriğe geç
Change page

JSON-RPC API

Son düzenleme: @Berke37(opens in a new tab), 29 Mart 2024

Bir yazılım uygulamasının Ethereum blok zinciriyle etkileşimde bulunabilmesi - blok zincir verilerini okuma ya da ağa işlemler gönderme yoluyla - bir Ethereum düğümüne bağlanmasını gerektirmektedir.

Bu amaçla, her Ethereum müşterisi, belirli bir düğüm veya istemci uygulamasından bağımsız olarak uygulamaların güvendikleri bir yöntem seti olması için bir JSON-RPC spesifikasyonu(opens in a new tab) uygular.

JSON-RPC(opens in a new tab) durumsuz, hafifliği özel bir uzaktan prosedür çağrısı (RPC) protokolüdür. Birkaç veri yapısı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 geçiş ortamında kullanılabilir olması açısından aktarımdan bağımsızdır. Veri formatı olarak JSON (RFC 4627) kullanır.

İstemci uygulamaları

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

Kolaylık Kütüphaneleri

JSON-RPC API aracılığıyla Ethereum istemcileriyle doğrudan etkileşim kurmayı seçebilseniz de, dapp geliştiricileri için genellikle daha kolay seçenekler vardır. JSON-RPC API'sinin üzerinde paketleyiciler sağlamak için birçok JavaScript ve arka uç API'si kütüphanesi bulunur. Bu kütüphanelerle geliştiriciler, Ethereum ile etkileşime giren JSON RPC taleplerini (arka planda) başlatmak için tercih ettikleri programlama dilinde sezgisel ve tek satırlı yöntemler yazabilirler.

Fikir birliği istemci API'ları

Bu sayfa, özellikle Ethereum yürütüm istemcileri tarafından kullanılan JSON-RPC API'sı ile ilgilidir. Ancak, fikir birliği istemcileri de kullanıcıların bir düğümden bilgi sorgulamasına, İşaret bloklarını, İşaret durumunu ve mutabakat ile ilgili diğer bilgileri direkt talep etmesine olanak veren bir RPC API'sına sahiptir. Bu API, Beacon API web sayfasında(opens in a new tab) belgelenmiştir.

Bir düğüm içinde müşteri veya istemci arası iletişim için dahili bir API da kullanılır; - yani, bu fikir birliği istemcisinin ve yürütüm istemcisinin veri takas etmesini sağlar. Buna "Motor API'sı" denir ve özellikler GitHub(opens in a new tab)'da mevcuttur.

Yürütüm istemcisi özellikleri

GitHub'da tam JSON-RPC API özelliklerini okuyun(opens in a new tab).

Konvansiyonlar

Onaltılık değer kodlaması

JSON üzerinden iki temel veri türü geçirilir: biçimlendirilmemiş bayt dizileri ve miktarlar. Her ikisi de bir on altılı kodlamayla geçirilir, ancak biçimlendirme için farklı gereksinimler vardır.

Miktarlar

Miktarları (tamsayılar, sayılar) kodlarken: on altılı olarak kodlayın, önek "0x", en kompakt gösterim (küçük istisna: sıfır "0x0" olarak gösterilmelidir).

İşte bazı örnekler:

  • 0x41 (ondalık olarak 65)
  • 0x400 (ondalık olarak 1024)
  • YANLIŞ: 0x (her zaman en az bir rakama sahip olmalıdır - sıfır "0x0" dır)
  • YANLIŞ: 0x0400 (baştaki sıfırlara izin verilmez)
  • YANLIŞ: ff (0x ön eki olmalıdır)

Formatlanmamış bilgi

Biçimlendirilmemiş verileri kodlarken (bayt dizileri, hesap adresleri, karmalar, bayt kodu dizileri): ön ek "0x" ile, bayt başına iki on altılık basamak ve on altılı olarak kodlayın.

İşte bazı örnekler:

  • 0x41 (size 1, "A")
  • 0x004200 (size 3, "\0B\0")
  • 0x (size 0, "")
  • YANLIŞ: 0xf0f0f (hane sayısı çift olmalıdır)
  • YANLIŞ: 004200 (0x ön eki olmalıdır)

Varsayılan blok parametresi

Aşağıdaki yöntemlerde fazladan bir varsayılan blok parametresi bulunur:

Ethereum durumuna göre hareket eden istekler yapıldığında, son varsayılan blok parametresi blokun yüksekliğini belirler.

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

  • HEX String - bir tamsayı blok numarası
  • String "earliest" en erken/genesis bloğu için
  • "En son" dizesi - en son çıkmış blok için
  • "Güvenli" dizesi - en son güvenli baş blok için
  • "Sonlanmış" dizesi - kesinleşmiş en son blok için
  • "Bekleyen" dizesi - bekleyen durum/işlemler için

Örnekler

Bu sayfada, komut satırı aracı curl(opens in a new tab) kullanılarak ayrı ayrı JSON_RPC API uç noktalarının nasıl kullanılacağına ilişkin örnekler sunuyoruz. Bu ayrı uç nokta örnekleri, aşağıda Kıvrılma örnekleri bölümünde bulunur. Sayfanın ilerleyen kısımlarında, Geth düğümü, JSON_RPC API ve kıvrılma kullanarak akıllı bir sözleşme derlemek ve dağıtmak için uçtan uca bir örnek de sağlıyoruz.

Kıvrılma örnekleri

Bir Ethereum düğümüne curl(opens in a new tab) istekleri yaparak JSON_RPC API'sını kullanma örnekleri aşağıda verilmiştir. Her örnek belirli uç noktanın bir tanımını, parametrelerini, dönüş türünü ve nasıl kullanılması gerektiğine dair çalışılmış bir örneği içerir.

Kıvrılma 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 bundan şikâyet ederse, aramanın başına -H "Content-Type: application/json" koyarak başlığı manuel olarak ayarlayın. Örnekler ayrıca kıvrılma için verilen son argüman olması gereken URL/IP ve bağlantı noktası kombinasyonunu içermez. (ör. 127.0.0.1:8545). Bu ek verileri içeren eksiksiz bir kıvrılma isteği aşağıdaki formu alır:

1curl -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çiş

Bir avuç 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 tüm yöntemler listesini keşfetmek için içindekiler tablosunu kullanın.

Dedikodu Yöntemleri

Bu yöntemler zincirin başını izler. Bu, işlemlerin ağ etrafında nasıl dolaştığını, blokların içinde nasıl yer bulduğunu ve istemcilerin yeni bloklar hakkında nasıl bilgi sahibi olduğunu gösterir.

Durum Yöntemleri

Depolanan tüm verinin mevcut durumunu raporlayan yöntemlerdir. "Durum" RAM'nin paylaşımlı, büyük tek bir parçası gibidir ve hesap bakiyelerini, sözleşme verilerini ve gaz tahminlerini içerir.

Geçmiş Yöntemleri

Başlangıça kadar her blokun geçmiş kayıtlarını alır. Bu tek büyük sadece ekleme yapılabilen bir dosya gibidir ve tüm blok başlıklarını, blok gövdelerini, amca bloklarını ve işlem makbuzlarını içerir.

JSON-RPC API Yöntemleri

web3_clientVersion

Geçerli istemci sürümünü döndürür.

Parametreler

Hiçbiri

Dönüşler

String - Geçerli istemci sürümü

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc":"2.0",
7 "result": "Mist/v0.9.3/darwin/go1.4.1"
8}
Kopyala

web3_sha3

Verilen verilerin Keccak-256'sını (standartlaştırılmış SHA3-256 olmayan) döndürür.

Parametreler

  1. DATA - SHA3 şifresine dönüştürülecek veri
1params: ["0x68656c6c6f20776f726c64"]
Kopyala

Dönüşler

DATA - Verilen dizenin SHA3 sonucu.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
3// Result
4{
5 "id":64,
6 "jsonrpc": "2.0",
7 "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
8}
Kopyala

net_version

Geçerli ağ kimliğini döndürür.

Parametreler

Hiçbiri

Dönüşler

String - Geçerli ağ kimliği.

Mevcut ağ kimliklerinin tam listesi chainlist.org(opens in a new tab) adresinde bulunabilir. Bazı yaygın olanları:

  • 1: Ethereum Ana Ağı
  • 5: Goerli test ağı
  • 11155111: Sepolia test ağı

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "3"
8}
Kopyala

net_listening

İstemci aktif olarak ağ bağlantılarını dinliyorsa true değerini döndürür.

Parametreler

Hiçbiri

Dönüşler

Boolean - Dinlerken true, aksi takdirde false.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc":"2.0",
7 "result":true
8}
Kopyala

net_peerCount

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

Parametreler

Hiçbiri

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
3// Result
4{
5 "id":74,
6 "jsonrpc": "2.0",
7 "result": "0x2" // 2
8}
Kopyala

eth_protocolVersion

Geçerli Ethereum protokol sürümünü döndürür. Bu yöntemin Geth'de mevcut olmadığını(opens in a new tab) aklınızda tutun.

Parametreler

Hiçbiri

Dönüşler

String - Geçerli Ethereum protokolü sürümü

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "54"
8}
Kopyala

eth_syncing

Senkronizasyon durumu veya false ile ilgili verileri içeren bir nesne döndürür.

Parametreler

Hiçbiri

Dönüşler

Nesne|Boolean, Senkronizasyon durumu verisi olan veya senkronize edilmediğinde FALSE olan bir nesne:

  • startingBlock: QUANTITY - İçe aktarmanın başladığı blok (yalnızca senkronizasyon kafasına ulaştıktan sonra sıfırlanır)
  • currentBlock: QUANTITY - Geçerli blok, eth_blockNumber ile aynı
  • highestBlock: QUANTITY - Tahmini en yüksek blok

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": {
8 startingBlock: '0x384',
9 currentBlock: '0x386',
10 highestBlock: '0x454'
11 }
12}
13// Or when not syncing
14{
15 "id":1,
16 "jsonrpc": "2.0",
17 "result": false
18}
Tümünü göster
Kopyala

eth_coinbase

İstemci para tabanı adresini döndürür.

Parametreler

Hiçbiri

Dönüşler

DATA, 20 bayt - mevcut para tabanı adresi.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
3// Result
4{
5 "id":64,
6 "jsonrpc": "2.0",
7 "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
8}
Kopyala

eth_chainId

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

Parametreler

Hiçbiri

Dönüşler

chainId, mevcut zincir kimliğinin sayısal değerini temsil eden metin olarak on altılı değer.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "0x1"
8}
Kopyala

eth_mining

Müşteri aktif olarak yeni bloklar kazıyorsa true değerini döndürür.

Parametreler

Hiçbiri

Dönüşler

Boolean - istemcinin madencilik yaptığı true değerini, aksi takdirde false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
3//
4{
5 "id":71,
6 "jsonrpc": "2.0",
7 "result": true
8}
Kopyala

eth_hashrate

Düğümün madencilik yaptığı saniye başına karma sayısını döndürür.

Parametreler

Hiçbiri

Dönüşler

QUANTITY - saniyedeki karma sayısı.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
3// Result
4{
5 "id":71,
6 "jsonrpc": "2.0",
7 "result": "0x38a"
8}
Kopyala

eth_gasPrice

Wei cinsinden gaz başına geçerli fiyatı döndürür.

Parametreler

Hiçbiri

Dönüşler

QUANTITY - wei cinsinden mevcut gaz fiyatının tam sayısı.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
3// Result
4{
5 "id":73,
6 "jsonrpc": "2.0",
7 "result": "0x1dfd14000" // 8049999872 Wei
8}
Kopyala

eth_accounts

İstemcinin sahip olduğu adreslerin listesini döndürür.

Parametreler

Hiçbiri

Dönüşler

Array of DATA, 20 Bayt, Müşteriye ait adresler.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
8}
Kopyala

eth_blockNumber

En son blokun numarasını döndürür.

Parametreler

Hiçbiri

Dönüşler

QUANTITY - istemcinin açık olduğu mevcut blok numarasının tam sayısı.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
3// Result
4{
5 "id":83,
6 "jsonrpc": "2.0",
7 "result": "0x4b7" // 1207
8}
Kopyala

eth_getBalance

Verilen adresin hesabının bakiyesini döndürür.

Parametreler

  1. DATA, 20 Bayt - bakiye için bakılması gereken adres.
  2. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi
1params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]
Kopyala

Dönüşler

QUANTITY - mevcut bakiyenin wei cinsinden tam sayısı.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x0234c8a3397aab58" // 158972490234375000
8}
Kopyala

eth_getStorageAt

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

Parametreler

  1. DATA, 20 Bayt - depolamanın adresi.
  2. QUANTITY - depolamadaki pozisyonun sayısı.
  3. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi

Dönüşler

DATA - bu depolama konumundaki değer.

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

1contract Storage {
2 uint pos0;
3 mapping(address => uint) pos1;
4 function Storage() {
5 pos0 = 1234;
6 pos1[msg.sender] = 5678;
7 }
8}

Pos0 değerini almak doğrudandır:

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

Haritanın bir öğesini almak daha zordur. Bir elemanın haritadaki konumu şu şekilde hesaplanır:

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

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

1keccak(
2 decodeHex(
3 "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
4 "0000000000000000000000000000000000000000000000000000000000000001"
5 )
6)
Kopyala

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

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

Şimdi depolamayı almak için:

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

eth_getTransactionCount

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

Parametreler

  1. DATA, 20 Bayt - adres.
  2. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi
1params: [
2 "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
3 "latest", // state at the latest block
4]
Kopyala

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

eth_getBlockTransactionCountByHash

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

Parametreler

  1. DATA, 32 Bayt - bir blokun karması
1params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
Kopyala

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xb" // 11
8}
Kopyala

eth_getBlockTransactionCountByNumber

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

Parametreler

  1. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi.
1params: [
2 "0xe8", // 232
3]
Kopyala

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xa" // 10
8}
Kopyala

eth_getUncleCountByBlockHash

Verilen blok karması ile eşleşen bir bloktan olan bir bloktaki amcaların sayısını döndürür.

Parametreler

  1. VERİ, 32 Bayt - bir bloğun karması
1params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
Kopyala

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

eth_getUncleCountByBlockNumber

Verilen blok numarası ile eşleşen bir bloktan olan bir bloktaki amcaların sayısını döndürür.

Parametreler

  1. QUANTITY|TAG - bir blok numarasının tam sayısı veya "latest", "earliest" veya "pending" metinlerinden biri, varsayılan blok parametresine bakın
1params: [
2 "0xe8", // 232
3]
Kopyala

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

eth_getCode

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

Parametreler

  1. DATA, 20 Bayt - adres
  2. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi
1params: [
2 "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
3 "0x2", // 2
4]
Kopyala

Dönüşler

DATA - verilen adresten gelen kod.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
8}
Kopyala

eth_sign

İmza yöntemi, Ethereum'a özel bir imzayı şu şekilde hesaplar: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).

Mesaja bir önek ekleyerek hesaplanan imzanın Ethereum'a özel bir imza olarak tanınmasını sağlar. Bu, kötü niyetli bir dapp'ın keyfi verileri imzalayabildiği (ör. işlem) ve imzayı kurbanın kimliğine bürünmek için kullandığı durumlarda kötüye kullanımı önler.

Not: İmzalanacak adresin kilidi açık olmalıdır.

Parametreler

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

Dönüşler

DATA: İmza

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
8}
Kopyala

eth_signTransaction

eth_sendRawTransaction ile kullanılarak daha sonra ağa gönderilebilecek bir işlemi imzalar.

Parametreler

  1. Object - İşlem nesnesi
  • from: DATA, 20 Bayt - İşlemin gönderildiği adres.
  • to: DATA, 20 Bayt - (yeni sözleşme oluştururken isteğe bağlı) İş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 tamsayı. Kullanılmayan gazı geri verecektir.
  • gasPrice: QUANTITY - (isteğe bağlı, varsayılan: Belirlenecek) Wei'de her ücretli gaz için kullanılan gasPrice'ın tam sayısı.
  • value: QUANTITY - (isteğe bağlı) Wei cinsinden bu işlemle gönderilen değerin tam sayısı.
  • data: DATA - Bir sözleşmenin derlenmiş kodu VEYA çağrılan yöntem imzasının ve kodlanmış parametrelerin karması.
  • nonce: QUANTITY - (isteğe bağlı) nonce tamsayı. Bu, aynı nonce'yi kullanan kendi bekleyen işlemlerinizin üzerine yazmanıza izin verir.

Dönüşler

DATA, İmzalı işlem nesnesi.

Örnek

1// Request
2curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'
3// Result
4{
5 "id": 1,
6 "jsonrpc": "2.0",
7 "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
8}
Kopyala

eth_sendTransaction

Veri alanı kod içeriyorsa, yeni mesaj çağrısı işlemi veya sözleşme oluşturma gerçekleşir.

Parametreler

  1. Object - İşlem nesnesi
  • from: DATA, 20 Bayt - İşlemin gönderildiği adres.
  • to: DATA, 20 Bayt - (yeni sözleşme oluştururken isteğe bağlı) İş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ı geri verecektir.
  • gasPrice: QUANTITY - (isteğe bağlı, varsayılan: Belirlenecek) Ücretli her gaz için kullanılan gasPrice'ın tam sayısı.
  • değer: QUANTITY - (isteğe bağlı) Bu işlemle gönderilen değerin tam sayısı.
  • data: DATA - Bir sözleşmenin derlenmiş kodu VEYA çağrılan yöntem imzasının ve kodlanmış parametrelerin karması.
  • nonce: QUANTITY - (isteğe bağlı) nonce tam sayısı. Bu, aynı nonce'yi kullanan kendi bekleyen işlemlerinizin üzerine yazmanıza izin verir.
1params: [
2 {
3 from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
4 to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
5 gas: "0x76c0", // 30400
6 gasPrice: "0x9184e72a000", // 10000000000000
7 value: "0x9184e72a", // 2441406250
8 data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
9 },
10]
Tümünü göster
Kopyala

Dönüşler

VERİ, 32 Bayt - işlem karması veya işlem henüz mevcut değilse sıfır karma.

Bir sözleşme oluşturduğunuzda, işlem çıkarıldıktan sonra sözleşme adresini almak için eth_getTransactionReceipt kullanın.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
8}
Kopyala

eth_sendRawTransaction

İmzalı işlemler için yeni mesaj arama işlemi veya sözleşme oluşturma gerçekleşir.

Parametreler

  1. DATA, İmzalanmış işlem verisi.
1params: [
2 "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
3]
Kopyala

Dönüşler

VERİ, 32 Bayt - işlem karması veya işlem henüz mevcut değilse sıfır karma.

Bir sözleşme oluşturduğunuzda, işlem çıkarıldıktan sonra sözleşme adresini almak için eth_getTransactionReceipt kullanın.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
8}
Kopyala

eth_call

Blok zincirde bir işlem oluşturmadan hemen yeni bir mesaj çağrısı yürütür.

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ı) İşlemin yürütülmesi için sağlanan gazın tam sayısı. eth_call sıfır gaz tüketir, ancak bazı uygulamalarda bu parametreye ihtiyaç duyulabilir.
  • gasPrice: QUANTITY - (isteğe bağlı) Ücretli her gaz için kullanılan gasPrice'ın tam sayısı
  • değer: QUANTITY - (isteğe bağlı) Bu işlemle gönderilen değerin tam sayısı
  • data: DATA - (isteğe bağlı) Yöntem imzasının ve kodlanmış parametrelerin karma değeri. Ayrıntılar için Solidity belgelerindeki Ethereum Sözleşmesi ABI'sına bakın(opens in a new tab)
  1. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi

Dönüşler

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

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x"
8}
Kopyala

eth_estimateGas

İşlemin tamamlanmasına izin vermek için ne kadar gazın gerekli olduğuna dair bir tahmin oluşturur ve döndürür. İşlem blok zincire eklenmez. Tahminin, ESM mekaniği ve düğüm performansı dahil olmak üzere çeşitli nedenlerle işlem tarafından fiilen kullanılan gaz miktarından önemli ölçüde daha fazla olabileceğini unutmayın.

Parametreler

eth_call parameterlerine bakın, tüm seçeneklerin isteğe bağlı olması hariç. Gaz limiti belirtilmemişse geth, bekleyen bloktan gelen blok gaz limitini üst sınır olarak kullanır. Sonuç olarak, gaz miktarı bekleyen blok gaz limitinden daha yüksek olduğunda, döndürülen tahmin çağrıyı/işlemi gerçekleştirmek için yeterli olmayabilir.

Dönüşler

QUANTITY - kullanılan gaz miktarı.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x5208" // 21000
8}
Kopyala

eth_getBlockByHash

Karma ile bir blok hakkında bilgi döndürür.

Parametreler

  1. DATA, 32 Bayt - bir blokun şifresi.
  2. Boolean - true ise tam işlem nesnelerini döndürür, false ise yalnızca işlemlerin karmalarını döndürür.
1params: [
2 "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
3 false,
4]
Kopyala

Dönüşler

Object - Bir blok nesnesi veya blok bulunamadığında null:

  • number: QUANTITY - blok numarası. null Bekleyen blok olduğunda.
  • hash: DATA, 32 Bayt - blokun özeti. null Bekleyen blok olduğunda.
  • parentHash: DATA, 32 Bayt - ana blokun karması.
  • nonce: DATA, 8 Bayt - oluşturulan iş ispatının karması. null Bekleyen blok olduğunda.
  • sha3Uncles: DATA, 32 Bayt - bloktaki amca verilerinin SHA3'ü.
  • logsBloom: DATA, 256 Bayt - blokun günlükleri için çiçek filtresi. null Bekleyen blok olduğunda.
  • transactionsRoot: DATA, 32 Bayt - blokun işlem denemesinin kökü.
  • stateRoot: DATA, 32 Bayt - blokun son durum denemesinin kökü.
  • receiptsRoot: DATA, 32 Bayt - blokun makbuz denemesinin kökü.
  • madenci: DATA, 20 Bayt - madencilik ödüllerinin verildiği yararlanıcının adresi.
  • difficulty: QUANTITY - bu blok için zorluğun tam sayısı.
  • totalDifficulty: QUANTITY - bu bloka kadar zincirin toplam zorluğunun tam sayısı.
  • extraData: DATA - bu blokun "ekstra veri" alanı.
  • size: QUANTITY - bu blokun bayt cinsinden boyutunun tam sayısı.
  • gasLimit: QUANTITY - bu blokta izin verilen maksimum gaz.
  • GasUsed: QUANTITY - bu bloktaki tüm işlemler tarafından kullanılan toplam gaz.
  • timestamp: QUANTITY - blokun harmanlandığı zamana ilişkin unix zaman damgası.
  • transactions: Array - Son verilen parametreye bağlı olarak işlem nesneleri dizisi veya 32 Bayt işlem karmaları.
  • uncles: Array - Amca karmaları dizisi.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'
3// Result
4{
5{
6"jsonrpc": "2.0",
7"id": 1,
8"result": {
9 "difficulty": "0x4ea3f27bc",
10 "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",
11 "gasLimit": "0x1388",
12 "gasUsed": "0x0",
13 "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
14 "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
15 "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171",
16 "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843",
17 "nonce": "0x689056015818adbe",
18 "number": "0x1b4",
19 "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54",
20 "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
21 "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
22 "size": "0x220",
23 "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d",
24 "timestamp": "0x55ba467c",
25 "totalDifficulty": "0x78ed983323d",
26 "transactions": [
27 ],
28 "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
29 "uncles": [
30 ]
31}
32}
Tümünü göster
Kopyala

eth_getBlockByNumber

Blok numarasına göre bir blok hakkında bilgi verir.

Parametreler

  1. QUANTITY|TAG- bir blok numarasının tam sayısı veya varsayılan blok parametresinde olduğu gibi "earliest", "latest" veya "pending" dizesi.
  2. Boolean - true ise tam işlem nesnelerini döndürür, false ise yalnızca işlemlerin karmalarını döndürür.
1params: [
2 "0x1b4", // 436
3 true,
4]
Kopyala

İadeler Bkz. eth_getBlockByHash

Örnek

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

Sonuç bkz. eth_getBlockByHash

eth_getTransactionByHash

İşlem karması tarafından istenen bir işlem hakkındaki bilgileri döndürür.

Parametreler

  1. DATA, 32 Bayt - bir işlemin özeti
1params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
Kopyala

Dönüşler

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

  • blockHash: DATA, 32 Bayt - bu işlemin yapıldığı blokun karması. null beklediğinde.
  • blockNumber: QUANTITY - bu işlemin yapıldığı blok numarası. null beklediğinde.
  • from: DATA, 20 Bayt - gönderenin adresi.
  • gas: QUANTITY - gönderen tarafından sağlanan gaz.
  • gasPrice: QUANTITY - Wei'de gönderen tarafından sağlanan gaz fiyatı.
  • hash: DATA, 32 Bayt - işlemin özeti.
  • input: DATA - işlemle birlikte gönderilen veriler.
  • nonce: QUANTITY - göndericinin bundan önce yaptığı işlem sayısı.
  • to: DATA, 20 Bayt - alıcının adresi. null bir sözleşme oluşturma işlemi olduğunda.
  • transactionIndex: QUANTITY - bloktaki işlem endeksi pozisyonunun tam sayısı. null beklediğinde.
  • value: QUANTITY - Wei'de aktarılan değer.
  • v: QUANTITY - ECDSA kurtarma kimliği
  • r: QUANTITY - ECDSA imzası r
  • r: QUANTITY - ECDSA imzası s

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}'
3// Result
4{
5 "jsonrpc":"2.0",
6 "id":1,
7 "result":{
8 "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
9 "blockNumber":"0x5daf3b", // 6139707
10 "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
11 "gas":"0xc350", // 50000
12 "gasPrice":"0x4a817c800", // 20000000000
13 "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
14 "input":"0x68656c6c6f21",
15 "nonce":"0x15", // 21
16 "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
17 "transactionIndex":"0x41", // 65
18 "value":"0xf3dbb76162000", // 4290000000000000
19 "v":"0x25", // 37
20 "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
21 "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
22 }
23}
Tümünü göster
Kopyala

eth_getTransactionByBlockHashAndIndex

Blok karması ve işlem dizini konumuna göre bir işlem hakkındaki bilgileri döndürür.

Parametreler

  1. DATA, 32 Bayt - bir blokun karması.
  2. QUANTITY - işlem endeks pozisyonunun sayısı.
1params: [
2 "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
3 "0x0", // 0
4]
Kopyala

İadeler Bkz. eth_getTransactionByHash

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
Kopyala

Sonuç bkz. eth_getTransactionByHash

eth_getTransactionByBlockNumberAndIndex

Blok numarasına ve işlem dizini konumuna göre bir işlem hakkında bilgi verir.

Parametreler

  1. QUANTITY|TAG - bir blok numarası veya "earliest", "latest" veya "pending" dizesi, varsayılan blok parametresinde olduğu gibi.
  2. QUANTITY - işlem endeks pozisyonu.
1params: [
2 "0x9c47cf", // 10241999
3 "0x24", // 36
4]
Kopyala

İadeler Bkz. eth_getTransactionByHash

Örnek

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

Sonuç bkz. eth_getTransactionByHash

eth_getTransactionReceipt

İşlem karmasına göre bir işlemin makbuzunu döndürür.

Not Makbuzun bekleyen işlemler için mevcut olmadığına.

Parametreler

  1. VERİ, 32 Bayt - bir işlemin özeti
1params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]
Kopyala

İadeler Object - Bir işlem makbuzu nesnesi veya makbuz bulunamadığında null:

  • transactionHash: DATA, 32 Bayt - işlemin özeti.
  • transactionIndex: QUANTITY - bloktaki işlem endeksi pozisyonunun tam sayısı.
  • blockHash: DATA, 32 Bayt - bu işlemin yapıldığı blokun karması.
  • blockNumber: QUANTITY - bu işlemin yapıldığı 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.
  • cumulativeGasUsed : QUANTITY - Bu işlem blokta yürütüldüğünde kullanılan toplam gaz miktarı.
  • effectiveGasPrice : QUANTITY - Ana ücretin ve gaz birimi başına ödenen bahşişin toplamı.
  • GasUsed: QUANTITY - Yalnızca bu özel işlem tarafından kullanılan gaz miktarı.
  • contractAddress: DATA, 20 Bayt - İşlem bir sözleşme oluşturma ise, 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ı bir şekilde alması için çiçek filtresi.
  • type: QUANTITY - işlem türünün tam sayısı, eski tarz işlemler için 0x0, erişim listesi türleri için 0x1, değişken ücretler için 0x2.

Ayrıca her ikisinden birini döndürür:

  • root : DATA 32 bayt işlem sonrası durum kökü (Bizans öncesi)
  • status: QUANTITY ya 1 (başarılı) veya 0 (başarısız)

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}'
3// Result
4{
5 "jsonrpc": "2.0",
6 "id": 1,
7 "result": {
8 "blockHash":
9 "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3",
10 "blockNumber": "0xeff35f",
11 "contractAddress": null, // string of the address if it was created
12 "cumulativeGasUsed": "0xa12515",
13 "effectiveGasPrice": "0x5a9c688d4",
14 "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7",
15 "gasUsed": "0xb4c8",
16 "logs": [{
17 // logs as returned by getFilterLogs, etc.
18 }],
19 "logsBloom": "0x00...0", // 256 byte bloom filter
20 "status": "0x1",
21 "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
22 "transactionHash":
23 "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5",
24 "transactionIndex": "0x66",
25 "type": "0x2"
26 }
27}
Tümünü göster
Kopyala

eth_getUncleByBlockHashAndIndex

Karma ve amca dizin konumuna göre bir blokun amcası hakkında bilgi verir.

Parametreler

  1. DATA, 32 Bayt - Bir blokun şifresi.
  2. QUANTITY - Amcanın endeks pozisyonu.
1params: [
2 "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
3 "0x0", // 0
4]
Kopyala

İadeler Bkz. eth_getBlockByHash

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
Kopyala

Sonuç bkz. eth_getBlockByHash

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

eth_getUncleByBlockNumberAndIndex

Sayıya ve amca dizin konumuna göre bir blokun amcası hakkında bilgi verir.

Parametreler

  1. QUANTITY|TAG - bir blok numarası veya "earliest", "latest" veya "pending" dizesi, varsayılan blok parametresinde olduğu gibi.
  2. QUANTITY - amcanın endeks pozisyonu.
1params: [
2 "0x29c", // 668
3 "0x0", // 0
4]
Kopyala

İadeler Bkz. eth_getBlockByHash

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

Örnek

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

Sonuç bkz. eth_getBlockByHash

eth_getCompilers

İstemcideki kullanılabilir derleyicilerin bir listesini döndürür.

Parametreler Hiçbiri

İadeler Array - Kullanılabilir derleyiciler dizisi.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCompilers","params":[],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": ["solidity", "lll", "serpent"]
8}
Kopyala

eth_compileSolidity

Derlenmiş Solidity kodunu döndürür.

Parametreler

  1. String - Kaynak kodu.
1params: [
2 "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }",
3]
Kopyala

İadeler DATA - Derlenmiş kaynak kodu.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": {
8 "code": "0x605880600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b603d6004803590602001506047565b8060005260206000f35b60006007820290506053565b91905056",
9 "info": {
10 "source": "contract test {\n function multiply(uint a) constant returns(uint d) {\n return a * 7;\n }\n}\n",
11 "language": "Solidity",
12 "languageVersion": "0",
13 "compilerVersion": "0.9.19",
14 "abiDefinition": [
15 {
16 "constant": true,
17 "inputs": [
18 {
19 "name": "a",
20 "type": "uint256"
21 }
22 ],
23 "name": "multiply",
24 "outputs": [
25 {
26 "name": "d",
27 "type": "uint256"
28 }
29 ],
30 "type": "function"
31 }
32 ],
33 "userDoc": {
34 "methods": {}
35 },
36 "developerDoc": {
37 "methods": {}
38 }
39 }
40}
Tümünü göster
Kopyala

eth_compileLLL

Derlenmiş LLL kodunu döndürür.

Parametreler

  1. Dize - Kaynak kodu.
1params: ["(returnlll (suicide (caller)))"]
Kopyala

İadeler DATA - Derlenmiş kaynak kodu.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileLLL","params":["(returnlll (suicide (caller)))"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code
8}
Kopyala

eth_compileSerpent

Derlenmiş serpent kodunu döndürür.

Parametreler

  1. Dize - Kaynak kodu.
1params: ["/* some serpent */"]
Kopyala

İadeler DATA - Derlenmiş kaynak kodu.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/* some serpent */"],"id":1}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code
8}
Kopyala

eth_newFilter

Durum değiştiğinde (günlükler) bildirimde bulunmak 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'i arayın.

Konu filtrelerinin belirlenmesiyle ilgili bir not: Konular sıraya bağlıdır. [A, B] konularına sahip günlük içeren bir işlem, aşağıdaki konu filtreleriyle eşleştirilecektir:

  • [] "herhangi bir şey"
  • [A] "A birinci konumda (ve sonraki herhangi bir şey)"
  • [null, B] "birinci konumdaki herhangi bir şey VE ikinci konumdaki B (ve sonraki herhangi bir şey)"
  • [A, B] "A birinci konumda VE B ikinci konumda (ve sonraki herhangi bir şey)"
  • [[A, B], [A, B]] "(A VEYA B) birinci konumda VE (A VEYA B) ikinci konumda (ve sonraki herhangi bir şey)"
  • Parametreler
  1. Object - Filtre seçenekleri:
  • fromBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya "latest" son çıkarılan blok için veya henüz çıkarılmamış işlemler için "pending", "earliest".
  • toBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya "latest" son çıkarılan blok için veya henüz çıkarılmamış işlemler için "pending", "earliest".
  • address: DATA|Array, 20 Bayt - (isteğe bağlı) Sözleşme adresi veya günlüklerin kaynaklanması gereken adreslerin listesi.
  • topics: Array of DATA, - (isteğe bağlı) 32 Baytlık dizi DATA konu. Konular sıraya bağlıdır. Her konu, "veya" seçenekleriyle birlikte bir VERİ dizisi de olabilir.
1params: [
2 {
3 fromBlock: "0x1",
4 toBlock: "0x2",
5 address: "0x8888f1f195afa192cfee860698584c030f4c9db1",
6 topics: [
7 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
8 null,
9 [
10 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
11 "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc",
12 ],
13 ],
14 },
15]
Tümünü göster
Kopyala

İadeler QUANTITY - Bir filtre kimliği.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

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'i arayın.

Parametreler Hiçbiri

İadeler QUANTITY - Bir filtre kimliği.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

eth_newPendingTransactionFilter

Yeni bekleyen işlemler 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'i arayın.

Parametreler Hiçbiri

İadeler QUANTITY - Bir filtre kimliği.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0x1" // 1
8}
Kopyala

eth_uninstallFilter

Verilen kimliğe sahip bir filtreyi kaldırır. Saate artık ihtiyaç duyulmadığında her zaman çağrılmalıdır. Ek olarak Filtreler, belirli bir süre için eth_getFilterChanges ile istenmediğinde zaman aşımına uğrar.

Parametreler

  1. QUANTITY - Filtre kimliği.
1params: [
2 "0xb", // 11
3]
Kopyala

İadeler Boolean - Filtre başarıyla kaldırıldıysa true, aksi takdirde false.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": true
8}
Kopyala

eth_getFilterChanges

Son yoklamadan bu yana oluşan günlüklerin bir dizisini döndüren bir filtre için yoklama yöntemi.

Parametreler

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

İadeler Array - Günlük nesneleri dizisi veya son anketten bu yana hiçbir şey değişmediyse boş bir dizi.

  • eth_newBlockFilter ile oluşturulan filtreler için dönüş, blok karmalarıdır (DATA, 32 Bayt), ör. ["0x345464563453..."].
  • eth_newPendingTransactionFilter ile oluşturulan filtreler için dönüş, işlem karmalarıdır (DATA, 32 Bayt), ör. ["0x6345343454645..."].
  • eth_newFilter günlükleriyle oluşturulan filtreler için aşağıdaki parametrelere sahip nesnelerdir:
    • removed: TAG - Zincirin yeniden düzenlenmesi nedeniyle günlük kaldırıldığında true. Geçerli bir günlükse false.
    • logIndex: QUANTITY - bloktaki günlük dizini konumunun tam sayısı. null Bekleyen kayıt defteri olduğunda.
    • transactionIndex: QUANTITY - işlem dizini pozisyon günlüğünün oluşturulduğu tam sayı. null Bekleyen kayıt defteri olduğunda.
    • transactionHash: DATA, 32 Bayt - bu günlüğün oluşturulduğu işlemlerin karması. null Bekleyen kayıt defteri olduğunda.
    • blockHash: DATA, 32 Bayt - bu günlüğün bulunduğu blokun karması. null beklediğinde. null Bekleyen kayıt defteri olduğunda.
    • blockNumber: QUANTITY - bu günlüğün bulunduğu blok numarası. null beklediğinde. null Bekleyen kayıt defteri olduğunda.
    • address: DATA, 20 Bayt - bu günlüğün kaynaklandığı adres.
    • data: DATA - günlüğün bir veya daha fazla 32 Bayt dizine eklenmemiş bağımsız değişkenini içerir.
    • topics: Array of DATA - 0 ila 4 arası dizi 32 Bayt DATA dizine alınmış günlük bağımsız değişkenleri. (solidity'de: İlk konu, olayın imzasının karma değeridir (ör. Deposit(address,bytes32,uint256)), ancak olayı anonymous belirteci ile bildirmeniz dışında.)
  • Örnek
1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": [{
8 "logIndex": "0x1", // 1
9 "blockNumber":"0x1b4", // 436
10 "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
11 "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
12 "transactionIndex": "0x0", // 0
13 "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
14 "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
15 "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
16 },{
17 ...
18 }]
19}
Tümünü göster
Kopyala

eth_getFilterLogs

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

Parametreler

  1. QUANTITY - Filtre kimliği.
1params: [
2 "0x16", // 22
3]
Kopyala

İadeler Bkz. eth_getFilterChanges

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'
Kopyala

Sonuç, 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. Nesne - Filtre seçenekleri:
  • fromBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya "latest" son çıkarılan blok için veya henüz çıkarılmamış işlemler için "pending", "earliest".
  • toBlock: QUANTITY|TAG - (isteğe bağlı, varsayılan: "latest") Tam sayı blok numarası veya "latest" son çıkarılan blok için veya henüz çıkarılmamış işlemler için "pending", "earliest".
  • address: DATA|Array, 20 Bayt - (isteğe bağlı) Sözleşme adresi veya günlüklerin kaynaklanması gereken adreslerin listesi.
  • topics: Array of DATA, - (isteğe bağlı) 32 Baytlık dizi DATA konu. Konular sıraya bağlıdır. Her konu, "veya" seçenekleriyle birlikte bir VERİ dizisi de olabilir.
  • blockhash: DATA, 32 Bayt - (isteğe bağlı, gelecek) EIP-234 eklenmesiyle, blockHash, 32 baytlık blockHash ile tek bloka döndürülen günlükleri kısıtlayan yeni bir filtre seçeneği olacaktır. blockHash kullanımı, fromBlock ile eş değerdir = toBlock = blockHash karmalı blok numarası. Filtre ölçütlerinde blockHash varsa, ne fromBlock ne de toBlock'a izin verilmez.
1params: [
2 {
3 topics: [
4 "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
5 ],
6 },
7]
Kopyala

İadeler Bkz. eth_getFilterChanges

Örnek

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

Sonuç, bkz. eth_getFilterChanges

eth_getWork

Geçerli blokun, seedHash'in ve karşılanacak sınır koşulunun ("hedef") karmasını döndürür.

Parametreler Hiçbiri

İadeler Array - Aşağıdaki özelliklere sahip dizi:

  1. DATA, 32 Bayt - mevcut blok başlığı iş ispatı karması
  2. DATA, 32 Bayt - DAG için kullanılan tohum şifre.
  3. DATA, 32 Bayt - sınır durum ("hedef"), 2^256/zorluk.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": [
8 "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
9 "0x5EED00000000000000000000000000005EED0000000000000000000000000000",
10 "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000"
11 ]
12}
Tümünü göster
Kopyala

eth_submitWork

İş ispatı çözümü göndermek için kullanılır.

Parametreler

  1. DATA, 8 Bayt - Bulunan tek seferlik sayı (64 bit)
  2. DATA, 32 Bayt - Başlığın iş ispatı karması (256 bit)
  3. DATA, 32 Bayt - Karışım özeti (256 bit)
1params: [
2 "0x0000000000000001",
3 "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
4 "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000",
5]
Kopyala

İadeler Boolean - sağlanan çözüm geçerliyse true, aksi takdirde false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}'
3// Result
4{
5 "id":73,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

eth_submitHashrate

Madencilik karma oranı göndermek için kullanılır.

Parametreler

  1. Hashrate, karma hızının on altılık metin (32 bit) olarak bir temsili
  2. ID, Metin - istemciyi tanımlayan rastgele on altılık (32 bit) bir kimlik
1params: [
2 "0x0000000000000000000000000000000000000000000000000000000000500000",
3 "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c",
4]
Kopyala

İadeler Boolean - Gönderim başarıyla tamamlandıysa true, aksi takdirde false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":73}'
3// Result
4{
5 "id":73,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

db_putString (kullanımdan kalkmış)

Yerel veritabanında bir dize depolar.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. String - Veritabanı adı.
  2. String - Anahtar adı.
  3. String - Depolanacak metin.
1params: ["testDB", "myKey", "myString"]
Kopyala

İadeler Boolean - değer depolanmışsa true değerini, değilse false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB","myKey","myString"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

db_getString (kullanımdan kalkmış)

Yerel veritabanından dize döndürür. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. Dize - Veritabanı adı.
  2. Dize - Anahtar adı.
1params: ["testDB", "myKey"]
Kopyala

İadeler Dize - Önceden saklanan dize.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB","myKey"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": "myString"
8}
Kopyala

db_putHex (kullanımdan kalkmış)

İkili verileri yerel veritabanında depolar. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. Dize - Veritabanı adı.
  2. Dize - Anahtar adı.
  3. DATA - Depolanacak veri.
1params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"]
Kopyala

İadeler Boolean - değer depolanmışsa true değerini, değilse false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","myKey","0x68656c6c6f20776f726c64"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

db_getHex (kullanımdan kalkmış)

Yerel veritabanından ikili verileri döndürür. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. Dize - Veritabanı adı.
  2. Dize - Anahtar adı.
1params: ["testDB", "myKey"]
Kopyala

İadeler DATA - Daha önce depolanan veriler.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","myKey"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": "0x68656c6c6f20776f726c64"
8}
Kopyala

shh_version (kullanımdan kalkmış)

Geçerli fısıltı protokolü sürümünü döndürür.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler Hiçbiri

İadeler String - Geçerli fısıltı protokolü sürümü

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67}'
3// Result
4{
5 "id":67,
6 "jsonrpc": "2.0",
7 "result": "2"
8}
Kopyala

shh_post (kullanımdan kalkmış)

Fısıltı mesajı gönderir.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. Object - Fısıltı gönderi nesnesi:
  • from: DATA, 60 Bayt - (isteğe bağlı) Gönderenin kimliği.
  • to: DATA, 60 Bayt - (isteğe bağlı) Alıcının kimliği. Mevcut olduğunda fısıltı mesajını şifreler, böylece sadece alıcı şifreyi çözebilir.
  • topics: Array of DATA - Alıcının mesajları tanımlaması için DATA konu dizisi.
  • payload: DATA - Mesajın yükü.
  • priority: QUANTITY - Bir aralıktaki önceliğin tam sayısı ... (?).
  • ttl: QUANTITY - saniye cinsinden yaşanacak zamanın tam sayısı.
1params: [
2 {
3 from: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
4 to: "0x3e245533f97284d442460f2998cd41858798ddf04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a0d4d661997d3940272b717b1",
5 topics: [
6 "0x776869737065722d636861742d636c69656e74",
7 "0x4d5a695276454c39425154466b61693532",
8 ],
9 payload: "0x7b2274797065223a226d6",
10 priority: "0x64",
11 ttl: "0x64",
12 },
13]
Tümünü göster
Kopyala

İadeler Boolean - İleti gönderildiyse true, değilse false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

shh_newIdentity (kullanımdan kalkmış)

İstemcide yeni fısıltı kimliği oluşturur.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler Hiçbiri

İadeler DATA, 60 Bayt - yeni kimliğin adresi.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"
8}
Kopyala

shh_hasIdentity (kullanımdan kalkmış)

İstemcinin belirli bir kimlik için özel anahtarları elinde tutup tutmadığını kontrol eder.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. DATA, 60 Bayt - Kontrol edilecek bir kimlik adresi.
1params: [
2 "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
3]
Kopyala

İadeler Boolean - istemci bu kimlik için özel anahtarı elinde tutuyorsa true değerini döndürür, aksi takdirde false değerini döndürür.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": true
8}
Kopyala

shh_newGroup (kullanımdan kalkmış)

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler Hiçbiri

İadeler DATA, 60 Bayt - yeni grubun adresi. (?)

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": "0xc65f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca90931d93e97ab07fe42d923478ba2407d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"
8}
Kopyala

shh_addToGroup (kullanımdan kalkmış)

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. DATA, 60 Bayt - Bir gruba eklenecek kimlik adresi (?).
1params: [
2 "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
3]
Kopyala

İadeler Boolean - kimlik gruba başarıyla eklendiyse true döndürür, aksi takdirde false (?).

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc": "2.0",
7 "result": true
8}
Kopyala

shh_newFilter (kullanımdan kalkmış)

İstemci, filtre seçenekleriyle eşleşen fısıltı mesajı aldığında bilgilendirmek için filtre oluşturur. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. Nesne - Filtre seçenekleri:
  • to: DATA, 60 Bayt - (isteğe bağlı) Alıcının kimliği. Mevcut olduğunda, istemci bu kimliğin özel anahtarını elinde tutuyorsa, gelen tüm mesajların şifresini çözmeye çalışır.
  • topics: Array of DATA - gelen mesajın konularının uyuşması gereken DATA konularının dizisi. Aşağıdaki kombinasyonları kullanabilirsiniz:
    • [A, B] = A && B
    • [A, [B, C]] = A && (B || C)
    • [null, A, B] = HERHANGİ BİR ŞEY && Bir && B null joker karakter olarak çalışır
1params: [
2 {
3 topics: ["0x12341234bf4b564f"],
4 to: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
5 },
6]
Kopyala

İadeler QUANTITY - Yeni oluşturulan filtre.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topics": ['0x12341234bf4b564f'],"to": "0x2341234bf4b2341234bf4b564f..."}],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": "0x7" // 7
8}
Kopyala

shh_uninstallFilter (kullanımdan kalkmış)

Verilen kimliğe sahip bir filtreyi kaldırır. Saate artık ihtiyaç duyulmadığında her zaman çağrılmalıdır. Ek olarak Filtreler, belirli bir süre için shh_getFilterChanges ile istenmediğinde zaman aşımına uğrar. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. QUANTITY - Filtre kimliği.
1params: [
2 "0x7", // 7
3]
Kopyala

İadeler Boolean - Filtre başarıyla kaldırıldıysa true, aksi takdirde false.

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":["0x7"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": true
8}
Kopyala

shh_getFilterChanges (kullanımdan kalkmış)

Fısıltı filtreleri için yoklama yöntemi. Bu yöntemin son çağrısından bu yana yeni mesajları döndürür. Not, shh_getMessages yönteminin çağrılması, bu yöntemin arabelleğini sıfırlar, böylece yinelenen mesajlar almazsınız. Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. QUANTITY - Filtre kimliği.
1params: [
2 "0x7", // 7
3]
Kopyala

İadeler Dizi - Son anketten bu yana alınan mesaj dizisi:

  • hash: DATA, 32 Bayt (?) - Mesajın karması.
  • from: DATA, 60 Bayt - Bir gönderen belirtilmişse, mesajın göndericisi.
  • to: DATA, 60 Bayt - Bir alıcı belirtilmişse mesajın alıcısı.
  • expiry: QUANTITY - Bu mesajın süresinin dolması gereken saniye cinsinden tam sayısı (?).
  • ttl: QUANTITY - Mesajın sistemde gezinmesi gereken sürenin saniye cinsinden tam sayısı (?).
  • sent: QUANTITY - Mesajın gönderildiği zamandaki unix zaman damgasının tam sayısı.
  • topics: Array of DATA - İletinin içerdiği DATA konu dizisi.
  • payload: DATA - Mesajın yükü.
  • workProved: QUANTITY - Bu mesajın gönderilmeden önce gereken işin tam sayısı (?).

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":["0x7"],"id":73}'
3// Result
4{
5 "id":1,
6 "jsonrpc":"2.0",
7 "result": [{
8 "hash": "0x33eb2da77bf3527e28f8bf493650b1879b08c4f2a362beae4ba2f71bafcd91f9",
9 "from": "0x3ec052fc33..",
10 "to": "0x87gdf76g8d7fgdfg...",
11 "expiry": "0x54caa50a", // 1422566666
12 "sent": "0x54ca9ea2", // 1422565026
13 "ttl": "0x64", // 100
14 "topics": ["0x6578616d"],
15 "payload": "0x7b2274797065223a226d657373616765222c2263686...",
16 "workProved": "0x0"
17 }]
18}
Tümünü göster
Kopyala

shh_getMessages (kullanımdan kalkmış)

Bir filtreyle eşleşen tüm mesajları alın. shh_getFilterChanges'in aksine bu, tüm mesajları döndürür.

Not bu işlev kullanımdan kaldırılmıştır.

Parametreler

  1. QUANTITY - Filtre kimliği.
1params: [
2 "0x7", // 7
3]
Kopyala

İadeler Bkz. shh_getFilterChanges

Örnek

1// Request
2curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7"
3],"id":73}'
Kopyala

Sonuç, bkz. shh_getFilterChanges

Kullanım Örneği

JSON_RPC kullanarak bir sözleşmeyi dağıtma

Bu bölüm, yalnızca RPC arayüzünü kullanarak bir sözleşmenin nasıl dağıtılacağının bir gösterimini içerir. Bu karmaşıklığın ortadan kaldırıldığı sözleşmeleri dağıtmanın alternatif yolları vardır; örneğin, web3.js(opens in a new tab) ve web3.py(opens in a new tab) gibi RPC arayüzünün üzerine kurulmuş kitaplıkları kullanmak gibi. Bu soyutlamaların anlaşılması genellikle daha kolaydır ve hataya karşı daha korumalıdır, ancak kaputun altında neler oldup bittiğini anlamak yine de yardımcı olur.

Aşağıdaki, JSON-RPC arabirimi kullanılarak bir Ethereum düğümüne dağıtılacak olan Multiply7 adlı basit bir akıllı sözleşmedir. Bu öğretici, okuyucunun zaten bir Geth düğümü çalıştırdığını varsayar. Düğümler ve istemciler hakkında daha fazla bilgiyi burada bulabilirsiniz. Geth olmayan istemciler için HTTP JSON-RPC'nin nasıl başlatılacağını görmek için lütfen bireysel istemci dokümanlarına bakın. Çoğu istemci varsayılan olarak localhost:8545 üzerinde hizmet verir.

1contract Multiply7 {
2 event Print(uint);
3 function multiply(uint input) returns (uint) {
4 Print(input * 7);
5 return input * 7;
6 }
7}

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

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

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

curl(opens in a new tab) kullanarak Coinbase adresini ve bakiyeyi alarak 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 istiyorsanız, ikinci kıvrılma isteğindeki istek paragraflarını ilkinden döndürülen sonuçla değiştirin.

curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "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 on altılık kodlandığından, bakiye wei'de on altılılık bir dize olarak döndürülür. Ether'de bir sayı olarak bakiyeye sahip olmak istiyorsak, Geth konsolundan web3'ü kullanabiliriz.

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

Artık özel geliştirme zincirimizde bir miktar ether olduğuna göre, sözleşmeyi uygulayabiliriz. İlk adım, Multiply7 sözleşmesini EVM'ye gönderilebilecek bayt koduna derlemektir. Solidity derleyicisi olan solc'u kurmak için Solidity dokümanlarını(opens in a new tab) izleyin. (Örneğimizde 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 bayt koduna 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ünde bize bir tahmin verecek bir eth_estimateGas yöntemi vardır.

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 karması döndürülür. Bu karma, işlemi takip etmek için kullanılabilir. Bir sonraki adım, sözleşmemizin dağıtıldığı adresi belirlemektir. Gerçekleştirilen her işlem bir makbuz oluşturacaktır. Bu makbuz, işlemin hangi bloka dahil olduğu ve ESM tarafından ne kadar gaz kullanıldığı gibi işlemle ilgili çeşitli bilgileri içerir. Bir işlem bir sözleşme oluşturuyorsa, sözleşme adresini de içerecektir. eth_getTransactionReceipt RPC yöntemiyle makbuzu 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ş bir sonuç, işlemin henüz bir bloka dahil edilmediği anlamına gelir. Bir dakika bekleyin ve madencinizin çalışıp çalışmadığını kontrol edip yeniden deneyin.

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

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

eth_sendTransaction, özellikle from, to ve data olmak üzere birkaç bağımsız değişken gerektirir. From hesabımızın genel adresidir ve to da sözleşme adresidir. Data bağımsız değişkeni, hangi yöntemin hangi bağımsız değişkenlerle çağrılması gerektiğini tanımlayan bir yük içerir. Burada 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ı tanımlayan bir JSON dosyasıdır.

Yükün baytları, sözleşmedeki hangi yöntemin çağrılacağını tanımlar. Bu, Keccak karmasından işlev adı ve on altılık kodlu argüman türleri üzerindeki ilk 4 bayttır. Çarpma işlevi, uint256 için bir diğer ad olan bir uint'i kabul eder. Bu bize şunu bırakır:

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

Bir sonraki adım, argümanları kodlamaktır. Yalnızca bir uint256 var, diyelim ki değeri 6. ABI, uint256 türlerinin nasıl kodlanacağını belirten bir bölüme sahiptir.

int<M>: enc(X), yüksek dereceden (sol) tarafta negatif X için 0xff ve sıfır > Uzunluk 32 baytın katı olacak şekilde pozitif X için baytlardan oluşan X'in büyük endian ikinin tümleyeni kodlamasıdır.

Bu 0000000000000000000000000000000000000000000000000000000000000006 olarak kodlar.

İşlev seçiciyi ve kodlanmış argümanı birleştirerek verilerimiz 0xc6888fa1000000000000000000000000000000000000000000000000000000000000000 olacaktır.

Bu şimdi 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ğinden, bir işlem karması döndürüldü. Makbuzun alınması şunları sağlar:

1{
2 blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
3 blockNumber: 268,
4 contractAddress: null,
5 cumulativeGasUsed: 22631,
6 gasUsed: 22631,
7 logs: [{
8 address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d",
9 blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
10 blockNumber: 268,
11 data: "0x000000000000000000000000000000000000000000000000000000000000002a",
12 logIndex: 0,
13 topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"],
14 transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
15 transactionIndex: 0
16 }],
17 transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
18 transactionIndex: 0
19}
Tümünü göster

Makbuz bir günlük içerir. Bu günlük, işlem yürütülürken EVM tarafından oluşturulur ve makbuza dahil edilir. multiply işlevi, Print olayının giriş sürelerinin 7 ile başlatıldığını gösterir. Print olayının argümanı bir uint256 olduğundan bunun kodunu, bizi beklenen ondalık 42 ile bırakacak olan ABI kurallarına göre çözebiliriz. Verilerin yanı sıra, günlüğü hangi olayın oluşturduğunu belirlemek için konuların kullanılabileceğini belirtmekte fayda var:

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

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

Bu makale yararlı oldu mu?