Solana RPC Metodları için Yaygın JSON Veri Yapıları

Çeşitli Solana RPC metodları, belirli anahtarlı değerlerle doldurulmuş, yapılandırılmış JSON nesneleri olarak daha karmaşık yanıtlar döndürür.

Bu JSON veri yapılarının en yaygın olanları şunları içerir:

İşlemler

İşlemler, diğer blok zincirlerindekilerden oldukça farklıdır. Solana'daki işlemler hakkında bilgi edinmek için İşlemin Anatomisi bölümünü incelediğinizden emin olun.

JSON

Bir işlemin JSON yapısı aşağıdaki gibi tanımlanmıştır:

  • message: <object> - İşlemin içeriğini tanımlar.
    • accountKeys: <array[string]> - İşlem tarafından kullanılan, talimatlar ve imzalar için base-58 ile kodlanmış genel anahtarların listesi. İlk message.header.numRequiredSignatures genel anahtar işlemi imzalamalıdır.
    • header: <object> - İşlem tarafından gereken hesap türlerini ve imzaları detaylandırır.
      • numRequiredSignatures: <number> - İşlemi geçerli kılmak için gereken toplam imza sayısı. İmzalar, message.accountKeys içindeki ilk numRequiredSignatures ile eşleşmelidir.
      • numReadonlySignedAccounts: <number> - İmzalı anahtarların son numReadonlySignedAccounts salt okunur hesaplardır. Programlar, tek bir PoH girişi içinde salt okunur hesapları yükleyen birden fazla işlemi işleyebilir, ancak lamport'ları kredilendirmek veya borçlandırmak ya da hesap verilerini değiştirmek için izin verilmez. Aynı yazma-okuma hesabını hedefleyen işlemler sırayla değerlendirilir.
      • numReadonlyUnsignedAccounts: <number> - İmzasız anahtarların son numReadonlyUnsignedAccounts salt okunur hesaplardır.
    • recentBlockhash: <string> - İşlem çoğaltmasını önlemek ve işlemlere ömür vermek için kullanılan, defterdeki yakın zamanda bir bloğun base-58 ile kodlanmış hash'i.
    • instructions: <array[object]> - Sırayla yürütülecek ve hepsi başarılı olursa tek bir atomik işlemde taahhüt edilecek program talimatlarının listesi.
      • programIdIndex: <number> - Bu talimatı yürüten program hesabını belirten message.accountKeys dizisine dizin.
      • accounts: <array[number]> - Programa hangi hesapların geçirileceğini belirten message.accountKeys dizisine sıralı dizinlerin listesi.
      • data: <string> - Base-58 dizesinde kodlanmış program giriş verileri.
    • addressTableLookups: <array[object]|undefined> - Bir işlem tarafından zincir üzerindeki adres arama tablolarından dinamik olarak adres yüklemek için kullanılan adres tablosu aramaları listesi. maxSupportedTransactionVersion ayarlanmamışsa tanımsızdır.
      • accountKey: <string> - Bir adres arama tablosu hesabı için base-58 ile kodlanmış genel anahtar.
      • writableIndexes: <array[number]> - Bir arama tablosundan yazılabilir hesapların adreslerini yüklemek için kullanılan dizinlerin listesi.
      • readonlyIndexes: <array[number]> - Bir arama tablosundan salt okunur hesapların adreslerini yüklemek için kullanılan dizinlerin listesi.
  • signatures: <array[string]> - İşleme uygulanan base-58 ile kodlanmış imzaların listesi. Liste her zaman message.header.numRequiredSignatures uzunluğundadır ve boş değildir. i indeksindeki imza, message.accountKeys içindeki i indeksindeki genel anahtara karşılık gelir. İlk imza işlem kimliği olarak kullanılır.

JSON Ayrıştırıldı

Bir işlemin ayrıştırılmış JSON yapısı, normal JSON formatına benzer bir yapıyı takip eder, ancak hesap ve talimat bilgilerinin ek olarak ayrıştırılmasını içerir:

  • message: <object> - İşlemin içeriğini tanımlar.
    • accountKeys: <array[object]> - İşlem tarafından kullanılan hesap bilgilerinin listesi.
      • pubkey: <string> - Hesabın base-58 ile kodlanmış public key'i.
      • signer: <boolean> - Hesabın gerekli bir işlem imzalayıcısı olup olmadığını belirtir.
      • writable: <boolean> - Hesabın yazılabilir olup olmadığını belirtir.
      • source: <string> - Hesabın kaynağı (işlem veya arama tablosu).
    • recentBlockhash: <string> - İşlem çoğaltmasını önlemek ve işlemlere ömür vermek için kullanılan, defterdeki yakın zamanda bir bloğun base-58 ile kodlanmış hash'i.
    • instructions: <array[object]> - Ayrıştırılmış program talimatlarının listesi.
      • program: <string> - Çağrılan programın adı.
      • programId: <string> - Programın base-58 ile kodlanmış public key'i.
      • stackHeight: <number|null> - Talimatın yığın yüksekliği.
      • parsed: <object> - Programa özgü ayrıştırılmış veriler.
        • type: <string> - Talimatın türü (örn. "transfer").
        • info: <object> - Programa ve talimat türüne özgü ayrıştırılmış talimat bilgileri.
  • signatures: <array[string]> - İşleme uygulanan base-58 ile kodlanmış imzaların listesi.

İşlem Durumu Metaverisi

  • err: <object|null> - İşlem başarısız olursa hata, işlem başarılı olursa null. TransactionError tanımları
  • fee: <u64> - bu işlem için alınan ücret, u64 tamsayı olarak
  • preBalances: <array> - işlem işlenmeden önceki u64 hesap bakiyelerinin dizisi
  • postBalances: <array> - işlem işlendikten sonraki u64 hesap bakiyelerinin dizisi
  • innerInstructions: <array|null> - iç talimatlar listesi veya bu işlem sırasında iç talimat kaydı etkinleştirilmemişse null
  • preTokenBalances: <array|undefined> - İşlem işlenmeden önceki token bakiyeleri listesi veya bu işlem sırasında token bakiye kaydı henüz etkinleştirilmemişse atlanır
  • postTokenBalances: <array|undefined> - İşlem işlendikten sonraki token bakiyeleri listesi veya bu işlem sırasında token bakiye kaydı henüz etkinleştirilmemişse atlanır
  • logMessages: <array|null> - dize günlük mesajlarının dizisi veya bu işlem sırasında günlük mesajı kaydı etkinleştirilmemişse null
  • rewards: <array|null> - işlem düzeyindeki ödüller; aşağıdakileri içeren JSON nesnelerinin bir dizisi:
    • pubkey: <string> - Ödülü alan hesabın base-58 ile kodlanmış dize olarak public key'i
    • lamports: <i64>- hesaba alacak veya borç olarak kaydedilen ödül lamport sayısı, i64 olarak
    • postBalance: <u64> - ödül uygulandıktan sonra lamport cinsinden hesap bakiyesi
    • rewardType: <string|undefined> - ödül türü: "fee", "rent", "voting", "staking"
    • commission: <u8|undefined> - ödül alacaklandırıldığında oy hesabı komisyonu, yalnızca oylama ve staking ödülleri için mevcuttur
  • KULLANIM DIŞI: status: <object> - İşlem durumu
    • "Ok": <null> - İşlem başarılı oldu
    • "Err": <ERR> - İşlem TransactionError ile başarısız oldu
  • loadedAddresses: <object|undefined> - Adres arama tablolarından yüklenen işlem adresleri. İstek parametrelerinde maxSupportedTransactionVersion ayarlanmamışsa veya istek parametrelerinde jsonParsed kodlaması ayarlanmışsa tanımsızdır.
    • writable: <array[string]> - Yazılabilir yüklenen hesaplar için base-58 ile kodlanmış adreslerin sıralı listesi
    • readonly: <array[string]> - Salt okunur yüklenen hesaplar için base-58 ile kodlanmış adreslerin sıralı listesi
  • returnData: <object|undefined> - işlemdeki bir talimat tarafından oluşturulan en son dönüş verileri, aşağıdaki alanlarla:
    • programId: <string> - dönüş verilerini oluşturan program, base-58 ile kodlanmış Pubkey olarak
    • data: <[string, encoding]> - dönüş verilerinin kendisi, base-64 ile kodlanmış ikili veri olarak
  • computeUnitsConsumed: <u64|undefined> - işlem tarafından tüketilen hesaplama birimleri sayısı
  • version: <"legacy"|number|undefined> - İşlem sürümü. İstek parametrelerinde maxSupportedTransactionVersion ayarlanmamışsa tanımsızdır.
  • signatures: <array> - işlem ayrıntıları için "signatures" talep edilirse mevcuttur; bloktaki işlem sırasına karşılık gelen imza dizelerinin bir dizisi

İç Talimatlar

Solana çalışma zamanı, işlem işleme sırasında çağrılan program arası talimatları kaydeder ve bunları, işlem talimatı başına zincir üzerinde neyin yürütüldüğüne dair daha fazla şeffaflık sağlamak için kullanıma sunar. Çağrılan talimatlar, başlatan işlem talimatına göre gruplandırılır ve işleme sırasına göre listelenir.

İç talimatların JSON yapısı, aşağıdaki yapıda nesnelerin bir listesi olarak tanımlanır:

  • index: number - İç talimatların kaynaklandığı işlem talimatının dizini
  • instructions: <array[object]> - Tek bir işlem talimatı sırasında çağrılan iç program talimatlarının sıralı listesi
    • programIdIndex: <number> - Bu talimatı yürüten program hesabını gösteren message.accountKeys dizisindeki dizin
    • accounts: <array[number]> - Programa hangi hesapların aktarılacağını gösteren message.accountKeys dizisindeki sıralı dizinlerin listesi
    • data: <string> - Base-58 dizesi olarak kodlanmış program giriş verileri

Token Bakiyeleri

Token bakiyelerinin JSON yapısı, aşağıdaki yapıda nesnelerin bir listesi olarak tanımlanır:

  • accountIndex: <number> - Token bakiyesinin sağlandığı hesabın dizini
  • mint: <string> - Token'ın mint pubkey'i
  • owner: <string|undefined> - Token bakiyesinin sahibinin pubkey'i
  • programId: <string|undefined> - Hesabın sahibi olan Token programının pubkey'i
  • uiTokenAmount: <object> -
    • amount: <string> - Ondalık sayıları göz ardı ederek, ham token miktarı (dize olarak)
    • decimals: <number> - Token'ın mint'i için yapılandırılmış ondalık sayı miktarı
    • uiAmount: <number|null> - Ondalık sayıları hesaba katan token miktarı (kayan nokta olarak). KULLANIMI BIRAKILMIŞTIR
    • uiAmountString: <string> - Ondalık sayıları hesaba katan token miktarı (dize olarak)

Is this page helpful?

İçindekiler

Sayfayı Düzenle