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 dengannumRequiredSignatures
pertama darimessage.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 arraymessage.accountKeys
yang menunjukkan akun program yang mengeksekusi instruksi ini.accounts: <array[number]>
- Daftar indeks terurut ke dalam arraymessage.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 jikamaxSupportedTransactionVersion
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 panjangmessage.header.numRequiredSignatures
dan tidak kosong. Tanda tangan pada indeksi
sesuai dengan kunci publik pada indeksi
dimessage.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 TransactionErrorfee: <u64>
- biaya yang dikenakan untuk transaksi ini, sebagai integer u64preBalances: <array>
- array saldo akun u64 dari sebelum transaksi diprosespostBalances: <array>
- array saldo akun u64 setelah transaksi diprosesinnerInstructions: <array|null>
- Daftar instruksi dalam ataunull
jika pencatatan instruksi dalam tidak diaktifkan selama transaksi inipreTokenBalances: <array|undefined>
- Daftar saldo token dari sebelum transaksi diproses atau dihilangkan jika pencatatan saldo token belum diaktifkan selama transaksi inipostTokenBalances: <array|undefined>
- Daftar saldo token dari setelah transaksi diproses atau dihilangkan jika pencatatan saldo token belum diaktifkan selama transaksi inilogMessages: <array|null>
- array pesan log string ataunull
jika pencatatan pesan log tidak diaktifkan selama transaksi inirewards: <array|null>
- imbalan tingkat transaksi; array objek JSON yang berisi:pubkey: <string>
- Kunci publik, sebagai string yang dikodekan base-58, dari akun yang menerima imbalanlamports: <i64>
- jumlah lamport imbalan yang dikreditkan atau didebit oleh akun, sebagai i64postBalance: <u64>
- saldo akun dalam lamport setelah imbalan diterapkanrewardType: <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 jikamaxSupportedTransactionVersion
tidak diatur dalam parameter permintaan, atau jika pengkodeanjsonParsed
diatur dalam parameter permintaan.writable: <array[string]>
- Daftar terurut alamat yang dikodekan base-58 untuk akun yang dimuat yang dapat ditulisreadonly: <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-58data: <[string, encoding]>
- data pengembalian itu sendiri, sebagai data biner yang dikodekan base-64
computeUnitsConsumed: <u64|undefined>
- jumlah unit komputasi yang dikonsumsi oleh transaksiversion: <"legacy"|number|undefined>
- Versi transaksi. Tidak terdefinisi jikamaxSupportedTransactionVersion
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 berasalinstructions: <array[object]>
- Daftar terurut instruksi program internal yang dipanggil selama instruksi transaksi tunggal.programIdIndex: <number>
- Indeks ke dalam arraymessage.accountKeys
yang menunjukkan akun program yang mengeksekusi instruksi ini.accounts: <array[number]>
- Daftar indeks terurut ke dalam arraymessage.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 LAGIuiAmountString: <string>
- Jumlah token sebagai string, memperhitungkan desimal.
Is this page helpful?