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. İlkmessage.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 ilknumRequiredSignatures
ile eşleşmelidir.numReadonlySignedAccounts: <number>
- İmzalı anahtarların sonnumReadonlySignedAccounts
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 sonnumReadonlyUnsignedAccounts
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ı belirtenmessage.accountKeys
dizisine dizin.accounts: <array[number]>
- Programa hangi hesapların geçirileceğini belirtenmessage.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 zamanmessage.header.numRequiredSignatures
uzunluğundadır ve boş değildir.i
indeksindeki imza,message.accountKeys
içindekii
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ı olarakpreBalances: <array>
- işlem işlenmeden önceki u64 hesap bakiyelerinin dizisipostBalances: <array>
- işlem işlendikten sonraki u64 hesap bakiyelerinin dizisiinnerInstructions: <array|null>
- iç talimatlar listesi veya bu işlem sırasında iç talimat kaydı etkinleştirilmemişsenull
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ırpostTokenBalances: <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ırlogMessages: <array|null>
- dize günlük mesajlarının dizisi veya bu işlem sırasında günlük mesajı kaydı etkinleştirilmemişsenull
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'ilamports: <i64>
- hesaba alacak veya borç olarak kaydedilen ödül lamport sayısı, i64 olarakpostBalance: <u64>
- ödül uygulandıktan sonra lamport cinsinden hesap bakiyesirewardType: <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 parametrelerindemaxSupportedTransactionVersion
ayarlanmamışsa veya istek parametrelerindejsonParsed
kodlaması ayarlanmışsa tanımsızdır.writable: <array[string]>
- Yazılabilir yüklenen hesaplar için base-58 ile kodlanmış adreslerin sıralı listesireadonly: <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 olarakdata: <[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 parametrelerindemaxSupportedTransactionVersion
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 diziniinstructions: <array[object]>
- Tek bir işlem talimatı sırasında çağrılan iç program talimatlarının sıralı listesiprogramIdIndex: <number>
- Bu talimatı yürüten program hesabını gösterenmessage.accountKeys
dizisindeki dizinaccounts: <array[number]>
- Programa hangi hesapların aktarılacağını gösterenmessage.accountKeys
dizisindeki sıralı dizinlerin listesidata: <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 dizinimint: <string>
- Token'ın mint pubkey'iowner: <string|undefined>
- Token bakiyesinin sahibinin pubkey'iprogramId: <string|undefined>
- Hesabın sahibi olan Token programının pubkey'iuiTokenAmount: <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ŞTIRuiAmountString: <string>
- Ondalık sayıları hesaba katan token miktarı (dize olarak)
Is this page helpful?