Struktur Data JSON Umum untuk Metode RPC Solana

Berbagai metode RPC Solana akan mengembalikan respons yang lebih kompleks sebagai objek JSON terstruktur, diisi dengan nilai-nilai kunci tertentu.

Struktur data JSON yang paling umum meliputi:

Transaksi

Transaksi di Solana sangat berbeda dari yang ada di blockchain lain. Pastikan untuk mempelajari Anatomi Transaksi untuk memahami transaksi di Solana.

JSON

Struktur JSON dari sebuah transaksi didefinisikan sebagai berikut:

  • message: <object> - Mendefinisikan konten transaksi.
    • accountKeys: <array[string]> - Daftar kunci publik yang dikodekan base-58 yang digunakan oleh transaksi, termasuk oleh instruksi dan untuk tanda tangan. message.header.numRequiredSignatures kunci publik pertama harus menandatangani transaksi.
    • header: <object> - Merinci jenis akun dan tanda tangan yang diperlukan oleh transaksi.
      • numRequiredSignatures: <number> - Jumlah total tanda tangan yang diperlukan untuk membuat transaksi valid. Tanda tangan harus cocok dengan numRequiredSignatures pertama dari message.accountKeys.
      • numReadonlySignedAccounts: <number> - numReadonlySignedAccounts terakhir dari kunci yang ditandatangani adalah akun hanya-baca. Program dapat memproses beberapa transaksi yang memuat akun hanya-baca dalam satu entri PoH, tetapi tidak diizinkan untuk mengkredit atau mendebit lamport atau memodifikasi data akun. Transaksi yang menargetkan akun baca-tulis yang sama dievaluasi secara berurutan.
      • numReadonlyUnsignedAccounts: <number> - numReadonlyUnsignedAccounts terakhir dari kunci yang tidak ditandatangani adalah akun hanya-baca.
    • recentBlockhash: <string> - Hash yang dikodekan base-58 dari blok terbaru di buku besar yang digunakan untuk mencegah duplikasi transaksi dan memberikan masa hidup transaksi.
    • instructions: <array[object]> - Daftar instruksi program yang akan dieksekusi secara berurutan dan dikomit dalam satu transaksi atomik jika semuanya berhasil.
      • programIdIndex: <number> - Indeks ke dalam array message.accountKeys yang menunjukkan akun program yang mengeksekusi instruksi ini.
      • accounts: <array[number]> - Daftar indeks terurut ke dalam array message.accountKeys yang menunjukkan akun mana yang akan diteruskan ke program.
      • data: <string> - Data input program yang dikodekan dalam string base-58.
    • addressTableLookups: <array[object]|undefined> - Daftar pencarian tabel alamat yang digunakan oleh transaksi untuk memuat alamat secara dinamis dari tabel pencarian alamat on-chain. Tidak terdefinisi jika maxSupportedTransactionVersion tidak disetel.
      • accountKey: <string> - Kunci publik yang dikodekan base-58 untuk akun tabel pencarian alamat.
      • writableIndexes: <array[number]> - Daftar indeks yang digunakan untuk memuat alamat akun yang dapat ditulis dari tabel pencarian.
      • readonlyIndexes: <array[number]> - Daftar indeks yang digunakan untuk memuat alamat akun hanya-baca dari tabel pencarian.
  • signatures: <array[string]> - Daftar tanda tangan yang dikodekan base-58 yang diterapkan pada transaksi. Daftar ini selalu memiliki panjang message.header.numRequiredSignatures dan tidak kosong. Tanda tangan pada indeks i sesuai dengan kunci publik pada indeks i di message.accountKeys. Yang pertama digunakan sebagai id transaksi.

JSON Diuraikan

Struktur JSON yang diuraikan dari sebuah transaksi mengikuti struktur yang mirip dengan format JSON biasa, dengan tambahan penguraian informasi akun dan instruksi:

  • message: <object> - Mendefinisikan konten transaksi.
    • accountKeys: <array[object]> - Daftar informasi akun yang digunakan oleh transaksi.
      • pubkey: <string> - Kunci publik akun yang dikodekan base-58.
      • signer: <boolean> - Menunjukkan apakah akun adalah penandatangan transaksi yang diperlukan.
      • writable: <boolean> - Menunjukkan apakah akun dapat ditulis.
      • source: <string> - Sumber akun (transaksi atau tabel pencarian).
    • recentBlockhash: <string> - Hash yang dikodekan base-58 dari blok terbaru di buku besar yang digunakan untuk mencegah duplikasi transaksi dan memberikan masa hidup transaksi.
    • instructions: <array[object]> - Daftar instruksi program yang diuraikan.
      • program: <string> - Nama program yang dipanggil.
      • programId: <string> - Kunci publik program yang dikodekan base-58.
      • stackHeight: <number|null> - Tinggi tumpukan instruksi.
      • parsed: <object> - Data yang diuraikan khusus program.
        • type: <string> - Jenis instruksi (misalnya, "transfer").
        • info: <object> - Informasi instruksi yang diuraikan khusus untuk program dan jenis instruksi.
  • signatures: <array[string]> - Daftar tanda tangan yang dikodekan base-58 yang diterapkan pada transaksi.

Metadata Status Transaksi

  • err: <object|null> - Error jika transaksi gagal, null jika transaksi berhasil. Definisi TransactionError
  • fee: <u64> - biaya yang dikenakan untuk transaksi ini, sebagai integer u64
  • preBalances: <array> - array saldo akun u64 dari sebelum transaksi diproses
  • postBalances: <array> - array saldo akun u64 setelah transaksi diproses
  • innerInstructions: <array|null> - Daftar instruksi dalam atau null jika pencatatan instruksi dalam tidak diaktifkan selama transaksi ini
  • preTokenBalances: <array|undefined> - Daftar saldo token dari sebelum transaksi diproses atau dihilangkan jika pencatatan saldo token belum diaktifkan selama transaksi ini
  • postTokenBalances: <array|undefined> - Daftar saldo token dari setelah transaksi diproses atau dihilangkan jika pencatatan saldo token belum diaktifkan selama transaksi ini
  • logMessages: <array|null> - array pesan log string atau null jika pencatatan pesan log tidak diaktifkan selama transaksi ini
  • rewards: <array|null> - imbalan tingkat transaksi; array objek JSON yang berisi:
    • pubkey: <string> - Kunci publik, sebagai string yang dikodekan base-58, dari akun yang menerima imbalan
    • lamports: <i64>- jumlah lamport imbalan yang dikreditkan atau didebit oleh akun, sebagai i64
    • postBalance: <u64> - saldo akun dalam lamport setelah imbalan diterapkan
    • rewardType: <string|undefined> - jenis imbalan: "fee", "rent", "voting", "staking"
    • commission: <u8|undefined> - komisi akun voting saat imbalan dikreditkan, hanya ada untuk imbalan voting dan staking
  • USANG: status: <object> - Status transaksi
    • "Ok": <null> - Transaksi berhasil
    • "Err": <ERR> - Transaksi gagal dengan TransactionError
  • loadedAddresses: <object|undefined> - Alamat transaksi yang dimuat dari tabel pencarian alamat. Tidak terdefinisi jika maxSupportedTransactionVersion tidak diatur dalam parameter permintaan, atau jika pengkodean jsonParsed diatur dalam parameter permintaan.
    • writable: <array[string]> - Daftar terurut alamat yang dikodekan base-58 untuk akun yang dimuat yang dapat ditulis
    • readonly: <array[string]> - Daftar terurut alamat yang dikodekan base-58 untuk akun yang dimuat hanya-baca
  • returnData: <object|undefined> - data pengembalian terbaru yang dihasilkan oleh instruksi dalam transaksi, dengan bidang berikut:
    • programId: <string> - program yang menghasilkan data pengembalian, sebagai Pubkey yang dikodekan base-58
    • data: <[string, encoding]> - data pengembalian itu sendiri, sebagai data biner yang dikodekan base-64
  • computeUnitsConsumed: <u64|undefined> - jumlah unit komputasi yang dikonsumsi oleh transaksi
  • version: <"legacy"|number|undefined> - Versi transaksi. Tidak terdefinisi jika maxSupportedTransactionVersion tidak diatur dalam parameter permintaan.
  • signatures: <array> - ada jika "signatures" diminta untuk detail transaksi; array string tanda tangan, sesuai dengan urutan transaksi dalam blok

Instruksi Internal

Runtime Solana mencatat instruksi lintas program yang dipanggil selama pemrosesan transaksi dan menyediakannya untuk transparansi yang lebih besar tentang apa yang dieksekusi di rantai per instruksi transaksi. Instruksi yang dipanggil dikelompokkan berdasarkan instruksi transaksi asal dan dicantumkan sesuai urutan pemrosesan.

Struktur JSON dari instruksi internal didefinisikan sebagai daftar objek dalam struktur berikut:

  • index: number - Indeks instruksi transaksi dari mana instruksi internal berasal
  • instructions: <array[object]> - Daftar terurut instruksi program internal yang dipanggil selama instruksi transaksi tunggal.
    • programIdIndex: <number> - Indeks ke dalam array message.accountKeys yang menunjukkan akun program yang mengeksekusi instruksi ini.
    • accounts: <array[number]> - Daftar indeks terurut ke dalam array message.accountKeys yang menunjukkan akun mana yang akan diteruskan ke program.
    • data: <string> - Data input program yang dikodekan dalam string base-58.

Saldo Token

Struktur JSON dari saldo token didefinisikan sebagai daftar objek dalam struktur berikut:

  • accountIndex: <number> - Indeks akun yang saldo tokennya disediakan.
  • mint: <string> - Pubkey dari mint token.
  • owner: <string|undefined> - Pubkey dari pemilik saldo token.
  • programId: <string|undefined> - Pubkey dari Token Program yang memiliki akun.
  • uiTokenAmount: <object> -
    • amount: <string> - Jumlah token mentah sebagai string, mengabaikan desimal.
    • decimals: <number> - Jumlah desimal yang dikonfigurasi untuk mint token.
    • uiAmount: <number|null> - Jumlah token sebagai float, memperhitungkan desimal. TIDAK DIGUNAKAN LAGI
    • uiAmountString: <string> - Jumlah token sebagai string, memperhitungkan desimal.

Is this page helpful?

Daftar Isi

Edit Halaman