Model Akun Solana Dijelaskan
Learn how Solana's account model stores state, manages ownership, and enables parallel transaction processing for developers and investors.
Model Akun Solana menyimpan saldo, kode program, kepemilikan token, dan status aplikasi dalam akun terpisah dengan aturan kepemilikan yang jelas. Panduan bahasa Inggris sederhana ini menjelaskan model untuk pembaca umum sebelum beralih ke kolom, tipe akun, pengecualian sewa, dan contoh dunia nyata.
Detail implementasi seperti penanganan sewa, batas ukuran akun, dan API klien dapat berubah. Pengembang harus memeriksa dokumentasi Solana saat ini dan menanyakan parameter jaringan saat ini sebelum deployment.
Jika Anda berasal dari Ethereum, model akun Solana akan terasa terbalik pada awalnya. Reaksi itu adalah titik awal yang benar. Model mental yang Anda bangun di Ethereum tidak dapat ditransfer dengan bersih, dan mencoba memaksakannya akan menciptakan kebingungan di setiap langkah.
Model akun Solana adalah sistem arsitektur di mana semua status on-chain disimpan dalam unit penyimpanan diskrit yang disebut akun. Setiap saldo dompet, program, kepemilikan token, dan catatan status aplikasi berada di akun terpisah dengan pemilik yang ditentukan, saldo lamport, dan aturan eksplisit yang mengatur siapa yang dapat membacanya atau menulis kepadanya. Tidak ada yang ada di Solana di luar akun.
Anggap Solana sebagai sistem pengarsipan global. Setiap bagian data berada di file terpisah yang disebut akun. Program adalah aplikasi yang membaca dan menulis file-file tersebut, tetapi program hanya dapat memodifikasi file yang dimilikinya. Runtime memberlakukan aturan kepemilikan tersebut di tingkat protokol, tanpa pengecualian.
Artikel ini membahas lima kolom di dalam setiap akun Solana, lima tipe akun yang berbeda, cara kerja sewa dan pengecualian sewa, apa itu Alamat Turunan Program (PDA) dan mengapa mereka ada, bagaimana akun dibuat dan ditutup, dan mengapa arsitektur ini memungkinkan pemrosesan transaksi paralel Solana. Program Solana ditulis dalam Rust (atau C/C++), meskipun kerangka kerja seperti Anchor mengabstraksi banyak boilerplate manajemen akun. Artikel ini membahas dasar konseptual yang dibutuhkan keduanya.
Model Akun Solana: Anatomi Sebuah Akun
Akun Solana adalah slot penyimpanan berlabel di jaringan yang menyimpan saldo dalam lamport, muatan data arbitrer, dan serangkaian bidang metadata yang menentukan siapa pemiliknya dan apa yang dapat dilakukannya. Di Solana, semua data, mulai dari saldo wallet hingga status program hingga kepemilikan token, disimpan dalam akun.
Lamport adalah denominasi terkecil dari SOL, token asli jaringan. Lamport setara dengan SOL seperti sen setara dengan dolar, kecuali dengan sembilan tempat desimal presisi: 1 SOL sama dengan 1.000.000.000 lamport. Setiap akun membawa saldo lamport yang mendanai keberlangsungan akun di jaringan dan mewakili nilai yang dapat ditransfer.
Setiap akun Solana berisi tepat lima kolom:
lamports(u64): Saldo akun dalam lamport. Kolom ini mendanai sewa dan dapat ditransfer ke akun lain.data(array byte): Penyimpanan biner mentah. Dalam akun eksekutabel, kolom ini menyimpan bytecode BPF/SBF terkompilasi. Dalam akun data, ini menyimpan status aplikasi terstruktur. Ukuran kolom data maksimum adalah 10 MB pada parameter mainnet saat ini.owner(Pubkey): Kunci publik 32-byte dari program yang memiliki otorisitas tulis eksklusif atas kolom data akun ini. Ini adalah kolom yang paling tidak intuitif bagi pengembang Ethereum. Alamat dompet Anda tidak dimiliki oleh Anda di tingkat protokol; itu dimiliki oleh Program Sistem. Pembahasan lengkap tentang kolom owner muncul di bagian kepemilikan dan otorisitas akun.executable(bool): Bendera boolean. Jika benar, kolom data berisi bytecode program dan akun berfungsi sebagai program. Jika salah, akun menyimpan status atau saldo.rent_epoch(u64): Kolom warisan yang melacak epoch terakhir kali sewa dikumpulkan. Per 2024, pengumpulan sewa telah dihentikan demi model pengecualian sewa secara default. Kolom ini tetap ada di struktur akun tetapi tidak lagi digunakan secara aktif.
Berikut tampilan akun wallet sebagai struktur data:
{
"lamports": 1000000000,
"data": [],
"owner": "11111111111111111111111111111111",
"executable": false,
"rent_epoch": 0
}
Kolom owner adalah konsep tingkat protokol: program yang mengontrol akses tulis ke kolom data. Otoritas adalah konvensi terpisah yang disimpan di dalam data yang dikelola program, seperti kolom otorisitas transfer di dalam akun token. Ini bukanlah hal yang sama; bagian kepemilikan dengan tepat menggambar perbedaan ini.
Lima Tipe Akun Solana
Solana memiliki lima tipe akun yang berbeda, masing-masing melayani peran arsitektur spesifik yang ditentukan oleh kolom owner dan bendera executable-nya. Tipenya tidak disimpan sebagai kolom terpisah; itu disimpulkan dari siapa pemilik akun dan apakah ia berisi kode yang dapat dieksekusi.
Akun yang Dimiliki Sistem (Akun Dompet)
Akun yang dimiliki sistem menyimpan saldo SOL pengguna dan tidak ada yang lain. Owner selalu Program Sistem (11111111111111111111111111111111), bendera executable adalah false, dan kolom data kosong. Saat Anda membagikan alamat dompet Anda dengan Phantom atau Solflare, Anda membagikan alamat akun yang dimiliki sistem. Anda mengontrolnya dengan menandatangani transaksi dengan kunci pribadi Anda, tetapi Program Sistem adalah pemilik tingkat protokol.
Akun Program (Akun Eksekutabel)
Akun program adalah akun eksekutabel yang berisi bytecode BPF/SBF terkompilasi. Bendera executable adalah true, dan owner adalah BPF Loader. Akun program dirancang tanpa status; mereka hanya menyimpan kode, tidak pernah status. Di Ethereum, kontrak pintar menyimpan kode dan statusnya di satu alamat kontrak. Di Solana, kode berada di akun program dan status berada di akun data terpisah, selalu disimpan terpisah.
Akun program dapat menyimpan kode yang dapat dieksekusi, dengan executable = true dan bytecode BPF/SBF di kolom data. Akun data non-eksekutabel memiliki executable = false dan menyimpan status sebagai gantinya.
Akun Data (Akun yang Dimiliki Program)
Akun data adalah akun non-eksekutabel yang dimiliki oleh program tertentu yang menyimpan status program di kolom datanya. Bendera executable adalah false. Owner adalah program apa pun yang membuat dan mengelola akun tersebut. Saldo token USDC Anda, posisi pinjaman DeFi, catatan metadata NFT; masing-masing berada di akun data khusus milik program yang relevan.
Akun Program Asli
Akun program asli adalah program bawaan yang di-deploy di alamat tetap selama genesis jaringan. Ini termasuk Program Sistem, BPF Loader, Program Vote, dan Program Stake. Ini adalah program infrastruktur inti yang tidak dapat diganti atau ditingkatkan oleh pengguna. Bendera executable-nya adalah true.
Akun Sysvar
Akun Sysvar adalah akun hanya baca yang sudah diisi sebelumnya oleh runtime Solana yang memberi program akses ke status jaringan saat ini. Anggap saja akun sysvar sebagai papan pengumuman pemerintah di gedung pengadilan: dapat dibaca publik, dipelihara oleh sumber yang berwenang, tetapi tidak dapat diubah oleh pihak swasta mana pun. Sysvar Clock di SysvarC1ock11111111111111111111111111111111 menyediakan stempel waktu blok saat ini dan nomor slot. Sysvar Sewa menyediakan parameter sewa saat ini.
| Tipe Akun | Pemilik | Dapat Dieksekusi | Penggunaan Utama | Contoh |
|---|---|---|---|---|
| Milik Sistem (Dompet) | Program Sistem | false | Menyimpan Saldo SOL | Alamat Phantom wallet |
| Akun Program | BPF Loader | true | Menyimpan bytecode program | Program Token SPL |
| Akun Data | Program spesifik | false | Menyimpan status program | Akun token USDC |
| Program Asli | Runtime (genesis) | true | Infrastruktur inti | Program Vote |
| Akun Sysvar | Runtime Solana | false | Akses status jaringan | Sysvar Clock |
Program bersifat stateless di Solana. Semua status berada di akun data yang mereka miliki dan kontrol. Pemisahan logika dari status ini adalah keputusan desain yang membuat segala hal lain dalam artikel ini mungkin terjadi.
Program vs. Akun Data: Pemisahan Logika dan Status
Program Solana bersifat stateless. Mereka tidak menyimpan data sendiri, dan setiap bagian dari status yang mereka operasikan berada di akun data terpisah yang diteruskan ke program saat runtime.
Bayangkan program Solana sebagai perangkat lunak pemrosesan transaksi sebuah bank, dan akun data sebagai catatan rekening pelanggan individual. Perangkat lunak tahu cara memproses deposit dan penarikan, tetapi Saldo sebenarnya berada di file pelanggan, bukan di dalam perangkat lunak itu sendiri. Di Ethereum, yang setara adalah bank di mana perangkat lunak dan catatan setiap pelanggan berbagi ruangan terkunci yang sama, dengan program dan statusnya tidak terpisahkan di satu alamat.
Empat properti mendefinisikan cara program Solana berinteraksi dengan akun:
- Program memproses instruksi dan membaca dari atau menulis ke akun yang diteruskan kepada mereka saat pemanggilan. Mereka tidak menyimpan status mereka sendiri.
- Program tidak dapat diubah setelah di-deploy, kecuali pengembang memilih loader yang dapat ditingkatkan saat deployment.
- Hanya program yang memiliki akun data yang dapat memodifikasi bidang data akun tersebut. Pengguna mana pun dapat memanggil program, tetapi akses tulis ke akun apa pun dibatasi oleh kepemilikan.
- Bendera
executablememberlakukan perbedaan ini di tingkat protokol dan tidak dapat diubah setelah deployment.
Program Solana bersifat stateless, tetapi sistem Solana secara keseluruhan bersifat stateful. Status tetap ada; ia berada di akun data. Perbedaannya adalah status selalu eksternal terhadap program, tidak pernah dibundel di dalamnya.
Pemisahan ini memiliki konsekuensi kinerja. Karena setiap transaksi harus mendeklarasikan akun mana yang akan dibaca atau ditulis sebelum eksekusi dimulai, runtime Sealevel dapat mengidentifikasi transaksi yang tumpang tindih dan menjalankannya secara bersamaan. Penjelasan lengkap tentang bagaimana model akun memungkinkan eksekusi paralel mengikuti di bawah.
Kepemilikan Akun dan Otoritas: Siapa Mengontrol Apa di Solana
Bidang pemilik dalam akun Solana mengidentifikasi program yang memiliki izin eksklusif untuk memodifikasi data akun tersebut. Hanya program itu, di tingkat protokol, yang dapat menulis ke bidang data.
Bidang pemilik menyimpan kunci publik program 32-byte. Untuk akun wallet, pemiliknya adalah Program Sistem. Untuk akun token, pemiliknya adalah Program Token SPL. Untuk akun data kustom, pemiliknya adalah program mana pun yang membuatnya. Kepemilikan diatur saat pembuatan akun dan ditegakkan oleh runtime Solana pada setiap transaksi.
Pertimbangkan kotak penyimpanan aman di sebuah bank. Bank memiliki kotak itu dan merupakan satu-satunya entitas yang dapat secara fisik membuka dan memodifikasi isinya. Anda memegang kunci yang memungkinkan Anda menginstruksikan bank apa yang harus dilakukan dengan kotak Anda, tetapi hanya bank yang menyentuh isinya. Di Solana, program adalah bank, dan Anda adalah pemegang akun dengan kunci.
Perbedaan antara pemilik dan otoritas membingungkan banyak pengembang Ethereum:
- Pemilik (bidang protokol): ID program yang dapat memodifikasi bidang
dataakun. Diatur saat pembuatan akun. Ditegakkan oleh runtime Solana, bukan oleh logika program apa pun. - Otoritas (konvensi data): Kunci publik yang disimpan di dalam bidang
dataakun oleh program pemilik. Ini mengotorisasi operasi tertentu dalam logika program tersebut. Ditegakkan oleh program itu sendiri, bukan oleh runtime.
Untuk akun token USDC, Program Token adalah pemiliknya dan dapat memodifikasi Saldo yang disimpan di bidang data. wallet Anda adalah otoritas transfer, kunci publik yang dicatat di dalam bidang data yang diperiksa oleh Program Token sebelum mengeksekusi transfer. Ini adalah kunci yang berbeda yang melakukan fungsi yang berbeda. Menggabungkan keduanya adalah salah satu kesalahan paling umum dalam pengembangan Solana baru.
Sewa Akun Solana dan Penjelasan Bebas Sewa
Sewa di Solana adalah biaya penyimpanan, yang dinyatakan dalam lamports, yang dibebankan kepada akun untuk memberi kompensasi kepada validator karena memelihara status On-Chain. Akun yang menyimpan Saldo lamport minimum, ambang batas bebas sewa, secara permanen dikecualikan dari biaya sewa dan tidak akan pernah dihapus oleh runtime.
Apa Itu Sewa di Solana?
Validator harus menyimpan semua status akun aktif dalam memori. Jumlah akun tanpa Saldo yang tidak terbatas akan menjadi vektor penolakan layanan terhadap jaringan, sehingga Solana mengharuskan akun untuk menyimpan Saldo lamport minimum sebagai komitmen untuk membayar biaya penyimpanan. Model sewa asli mengenakan biaya per epoch yang proporsional dengan ukuran data, dengan akun di bawah minimum tunduk pada pengumpulan sampah. Model itu telah usang.
Berdasarkan parameter Mainnet Solana saat ini (diformalisasi dalam SIMD-0084), semua akun baru harus bebas sewa saat pembuatan. Bidang rent_epoch dalam struktur akun sekarang merupakan bidang lama.
Untuk membuat akun Anda bebas sewa, danai dengan setidaknya Saldo lamport minimum untuk ukuran datanya saat mengirimkan transaksi pembuatan. Pada parameter jaringan saat ini:
- Akun 0-byte (wallet): sekitar 890.880 lamports (~0,00089 SOL)
- Akun 165-byte (akun token standar): sekitar 2.039.280 lamports (~0,00204 SOL)
- Akun data 1.024-byte: sekitar 7.180.800 lamports (~0,00718 SOL)
Nilai-nilai ini adalah perkiraan dan tunduk pada perubahan parameter runtime. Hitung minimum saat ini yang tepat menggunakan Solana CLI atau metode RPC getMinimumBalanceForRentExemption:
solana rent 0 # bebas sewa untuk akun 0-byte
solana rent 165 # bebas sewa untuk akun token standarPembebasan sewa bekerja seperti deposit keamanan pada unit penyimpanan. Anda mengunci Saldo lamport minimum untuk menjamin keberadaan akun di jaringan. Berbeda dengan biaya, deposit ini sepenuhnya dapat dipulihkan. Saat Anda menutup akun, lamports tersebut kembali kepada Anda.
Denominasi lamport yang digunakan di seluruh perhitungan sewa ditentukan dalam bagian anatomi akun. Untuk membuat akun data bebas sewa saat program Anda membuatnya, panggil getMinimumBalanceForRentExemption(dataSize) di sisi klien sebelum membangun transaksi pembuatan, lalu sertakan jumlah lamport tersebut dalam instruksi.
Solana vs. Ethereum vs. Bitcoin: Perbandingan Model Akun
Apa Perbedaan Antara Akun Solana dan Akun Ethereum?
Di Ethereum, Kontrak Pintar menggabungkan kode dan status mereka bersama di satu alamat. Akun kontrak menyimpan baik logika maupun data yang dioperasikannya. Di Solana, kode dan status selalu berada di akun terpisah: program (logika) berada di akun yang dapat dieksekusi, dan semua status berada di akun data terpisah yang dimiliki oleh program tersebut. Pemisahan ini adalah fondasi arsitektur dari semua yang Solana lakukan secara berbeda.
Bitcoin mengambil pendekatan yang sama sekali berbeda, menggunakan model UTXO (Unspent Transaction Output). UTXO seperti cek yang belum dibelanjakan dalam buku cek: setiap transaksi mengonsumsi output yang ada dan membuat output baru. Tidak ada akun permanen yang menyimpan Saldo dari waktu ke waktu. Saldo Anda adalah jumlah output yang belum dibelanjakan yang terkait dengan kunci Anda. Model Bitcoin mendahului konsep status yang dapat diprogram, itulah sebabnya kemampuan Kontrak Pintar-nya terbatas pada Bitcoin Script.
| Fitur | Bitcoin (Model UTXO) | Ethereum (Model EVM) | Solana (Model Akun) |
|---|---|---|---|
| Unit penyimpanan state | Output Transaksi yang Belum Terpakai | Akun (EOA atau kontrak) | Akun (5 varian bertipe) |
| Logika dan state | Tidak berlaku (tidak ada state kontrak) | Saling menempatkan di akun kontrak | Selalu terpisah (program + akun data) |
| Kepemilikan akun | UTXO dibelanjakan, tidak dimiliki secara persisten | Dikendalikan oleh Kunci Pribadi (EOA) atau kode kontrak | Dimiliki oleh Program Sistem atau program spesifik |
| Mekanisme biaya penyimpanan | Tidak ada biaya penyimpanan persisten | Gas per operasi; tidak ada Deposit | Deposit lamport bebas sewa (dapat dipulihkan) |
| Eksekusi paralel | Terbatas (pemindaian set UTXO) | Sekuensial (konflik state global) | Tinggi (deklarasi akun di muka memungkinkan penjadwalan) |
| Model kontrak pintar | Terbatas (Bitcoin Script) | Penuh (Solidity, state saling menempatkan) | Penuh (program stateless, state eksternal) |
Jaringan yang kompatibel dengan EVM, termasuk Ethereum, Polygon, BNB Chain, dan Avalanche C-Chain, semuanya memiliki model akun yang sama yang berbeda dari Solana. Satu perbandingan mencakup semuanya.
Di Ethereum, dompet pengguna disebut Externally Owned Accounts (EOA). Di Solana, yang setara adalah akun yang dimiliki sistem yang dikendalikan oleh keypair; mekanismenya serupa, tetapi bidang pemilik secara eksplisit diatur ke Program Sistem daripada implisit.
Apa yang Harus Dihapus oleh Pengembang Ethereum
Tiga pergeseran model mental diperlukan sebelum menulis program Solana yang berfungsi:
- Program tidak menyimpan state mereka sendiri. Akun data yang melakukannya. Berhentilah mencari state di alamat program.
- Pemilik wallet Anda bukanlah Anda di tingkat protokol. Anda mengontrol akun dengan menandatangani; Program Sistem memiliki bidang data.
- Penyimpanan tidak gratis. Setiap akun data memerlukan deposit lamport untuk pembebasan sewa. Anggarkan biaya ini saat merancang program yang membuat akun.
Pemisahan kode dari state yang ketat di Solana adalah prasyarat untuk eksekusi paralel, sebuah koneksi yang dieksplorasi secara penuh di bagian Sealevel dan eksekusi paralel.
Bagaimana Model Akun Memberdayakan Kecepatan Solana: Sealevel dan Eksekusi Paralel
Model akun Solana memungkinkan pemrosesan paralel karena setiap transaksi harus secara eksplisit mendeklarasikan daftar lengkap akun yang akan dibaca atau ditulis sebelum eksekusi dimulai. Sealevel, runtime kontrak pintar paralel Solana, menggunakan deklarasi di muka tersebut untuk mengidentifikasi transaksi yang menyentuh akun yang berbeda dan mengeksekusinya secara bersamaan.
Berikut adalah rantai kausalnya, langkah demi langkah:
- Transaksi Solana mencakup daftar lengkap semua akun yang akan diaksesnya, masing-masing ditandai hanya-baca atau baca-tulis, sebelum eksekusi terjadi.
- Sealevel memeriksa semua transaksi yang tertunda di slot saat ini.
- Transaksi yang berbagi setidaknya satu akun baca-tulis diurutkan. Transaksi yang mengakses akun yang sepenuhnya berbeda diidentifikasi sebagai tidak bertentangan.
- Transaksi yang tidak bertentangan dieksekusi secara bersamaan di beberapa inti CPU.
EVM Ethereum mengeksekusi transaksi secara sekuensial terhadap state global yang dibagikan. Karena state kontrak saling menempatkan dengan kode kontrak, menentukan konflik baca/tulis akan memerlukan eksekusi transaksi terlebih dahulu, membuat penjadwalan statis tidak mungkin dilakukan sebelum eksekusi.
Anggap Sealevel seperti supermarket dengan banyak jalur kasir. Setiap transaksi adalah pembeli dengan daftar item yang dideklarasikan. Selama dua pembeli tidak meraih item yang sama, mereka akan selesai secara bersamaan. Solana tahu persis apa yang dibutuhkan setiap transaksi sebelumnya, karena model akun memaksa deklarasi itu di muka.
Proof of History (PoH), yang ditemukan oleh salah satu pendiri Solana Anatoly Yakovenko, menyediakan jam kriptografis yang memungkinkan validator menyetujui urutan transaksi tanpa koordinasi waktu nyata. Solana menggunakan Proof of Stake (PoS) untuk konsensus, di mana validator mempertaruhkan SOL untuk berpartisipasi dalam produksi blok, dan PoH sebagai lapisan waktu. Dikombinasikan dengan deklarasi akun di muka dari model akun, arsitektur ini memungkinkan Sealevel memproses transaksi yang tidak bertentangan secara paralel tanpa menunggu konfirmasi seluruh jaringan di setiap langkah.
Model akun bukanlah skema penyimpanan secara terisolasi. Ini adalah prasyarat untuk paralelisme, dan ini adalah akar teknis dari keunggulan throughput dan skalabilitas Solana.
Contoh Dunia Nyata: Akun Token, NFT, dan DeFi di Solana
Setiap aset di Solana, Saldo token, NFT, Posisi NFT, adalah akun Solana dengan tata letak data tertentu. Arsitektur abstrak yang dijelaskan di atas terwujud dalam tiga pola yang ditemui setiap pengguna Solana.
Akun Token SPL
Token SPL, padanan Solana dari token ERC-20 Ethereum, dikelola oleh Program Token SPL, yang memiliki semua akun token di jaringan. Alamat dompet Anda hanya berisi SOL (lamports). Setiap token yang Anda pegang, baik itu USDC, JTO, BONK, atau lainnya, berada di akun token khususnya sendiri yang dimiliki oleh Program Token SPL.
Bidang data akun token menyimpan tiga informasi: alamat mint token (token apa yang dimiliki akun ini), Kunci Publik otoritas pemilik (alamat dompet Anda, yang mengotorisasi transfer), dan Saldo token saat ini. Di Ethereum, semua saldo ERC-20 untuk token tertentu berada di dalam pemetaan internal kontrak token. Di Solana, setiap pasangan (pengguna, token) memerlukan akun khusus sendiri.
Inilah sebabnya mengapa dompet Solana meminta Anda untuk membuat akun token saat menerima token baru untuk pertama kalinya. Pembuatan itu memerlukan deposit lamport bebas sewa sekitar 0,00204 SOL untuk akun standar 165-byte pada parameter jaringan saat ini.
Akun Token Terkait (ATA) adalah akun token yang alamatnya merupakan PDA yang diturunkan secara deterministik dari alamat dompet Anda dan alamat mint token. Karena alamatnya deterministik, protokol apa pun dapat menghitung di mana akun USDC Anda seharusnya berada tanpa menyimpan tabel pencarian. ATA adalah jenis akun token standar yang digunakan oleh hampir semua dompet dan protokol Solana.
ATA adalah penerapan turunan PDA. Anda dapat memiliki beberapa akun token untuk mint yang sama, tetapi ATA Anda adalah yang kanonik yang menjadi default protokol.
NFT di Solana terdiri dari setidaknya dua akun: Akun Token yang dimiliki oleh Program Token yang mendefinisikan suplai token tepat 1, dan Akun Metadata yang dimiliki oleh Program Metadata Token Metaplex yang menyimpan nama, simbol, URI gambar, dan konfigurasi royalti NFT. Gambar NFT tidak disimpan on-chain; hanya URI yang menunjuk ke sana yang ada di akun metadata. Saldo token (1 NFT) disimpan dalam akun token, identik dengan token SPL lainnya.
Protokol Likuiditas pada Solana, termasuk bursa terdesentralisasi, platform pinjaman, dan kumpulan Likuiditas, menyimpan setiap Posisi pengguna, state kumpulan, dan konfigurasi protokol dalam akun data khusus, dengan PDA yang dimiliki program mengendalikan dana yang dikumpulkan secara otonom.
Mengapa Model Akun Solana Penting untuk SOL
Catatan: Bagian ini menjelaskan bagaimana model akun Solana memengaruhi utilitas teknis SOL. Tidak ada dalam artikel ini yang merupakan nasihat keuangan atau rekomendasi investasi.
Model akun bukan hanya masalah pengembang. SOL, yang tersedia di bursa Mata Uang Kripto utama, berfungsi sebagai token utilitas asli jaringan. Model akun adalah mekanisme utama di mana SOL dituntut dan digunakan di lapisan jaringan.
SOL digunakan dalam model akun melalui tiga mekanisme berbeda:
Deposit bebas sewa: Setiap akun di Solana harus menahan Saldo lamport agar ada di jaringan. Dengan jutaan akun token, akun data program, catatan NFT, dan akun state DeFi yang aktif kapan saja, ini menciptakan permintaan dasar yang persisten untuk SOL. Lamport ini dikunci dalam akun dan dikeluarkan dari sirkulasi likuiditas selama akun tersebut tetap terbuka.
Biaya transaksi: Setiap transaksi yang membuat atau memodifikasi akun membayar tarif dasar dalam lamport. Sebagian dari setiap biaya dibakar berdasarkan struktur biaya saat ini, sehingga mengurangi pasokan yang beredar pada setiap transaksi.
Staking validator: Validator melakukan Staking SOL untuk berpartisipasi dalam konsensus di bawah mekanisme Proof of Stake Solana, serta mendapatkan imbalan karena memvalidasi transisi status akun di seluruh jaringan.
Seiring pertumbuhan aktivitas on-chain, lebih banyak protokol DeFi, lebih banyak koleksi NFT, lebih banyak peluncuran token, jumlah akun tumbuh secara proporsional. Lebih banyak akun memerlukan lebih banyak SOL yang terkunci dalam deposit pembebasan sewa.
Lamport yang terkunci dalam akun bebas sewa berfungsi seperti uang jaminan yang dipegang oleh jaringan: tidak dibelanjakan, tetapi didepositokan selama akun tersebut tetap terbuka. Saat akun ditutup, lamport tersebut kembali ke pemiliknya.
Sumber Daya Arsitektur Solana Terkait
Akun token lebih mudah dipahami bersama Solana Program Library, sementara konkurensi dijelaskan dalam panduan untuk pemrosesan paralel Sealevel. Pembaca dapat meninjau halaman harga SOL;; pengguna yang mengevaluasi produk terkait staking dapat meninjau SOL Earn, secara terpisah, termasuk ketentuan dan risikonya saat ini.
FAQ: Model Akun Solana
Apa perbedaan antara akun Solana dan akun Ethereum?
Di Ethereum, kontrak pintar menyimpan kode dan statusnya di satu alamat. Di Solana, kode dan status selalu berada di akun yang terpisah: program adalah akun eksekusi tanpa status, dan semua status berada di akun data berbeda yang dimiliki oleh program tersebut. Pemisahan ini memungkinkan Sealevel untuk mengeksekusi transaksi yang tidak bertabrakan secara paralel, yang tidak mungkin dilakukan dengan model status terkolokasi milik Ethereum.
Apa itu sewa di Solana dan bagaimana cara kerjanya?
Sewa di Solana adalah biaya penyimpanan data di jaringan, yang didenominasikan dalam lamport. Daripada membayar biaya berkelanjutan, akun harus menyetor saldo lamport minimum di muka, yaitu ambang pembebasan sewa, untuk menghindari penghapusan oleh runtime. Deposit tersebut dapat dipulihkan: saat akun ditutup, lamport kembali ke pemiliknya. Untuk akun token standar 165-byte, depositnya kira-kira 0,00204 SOL pada parameter jaringan saat ini.
Apa itu Program Derived Address (PDA) di Solana?
PDA adalah alamat akun Solana yang diturunkan secara deterministik dari ID program dan sekumpulan nilai benih (seed values). PDA tidak memiliki kunci pribadi terkait, sehingga hanya program yang menurunkannya yang dapat mengizinkan transaksi atas namanya melalui Cross-Program Invocation. PDA memberikan kontrol otonom dan tanpa kepercayaan kepada program atas akun, suatu persyaratan untuk protokol DeFi, escrow NFT, dan Associated Token Accounts.
Bagaimana model akun Solana memungkinkan pemrosesan paralel?
Setiap transaksi Solana harus mendeklarasikan daftar lengkap akun yang akan dibaca atau ditulisnya sebelum dieksekusi. Sealevel, runtime kontrak pintar paralel Solana, menggunakan deklarasi tersebut untuk mengidentifikasi transaksi yang tidak bertabrakan dan mengeksekusinya secara bersamaan di beberapa inti CPU. Penjadwalan statis ini hanya mungkin karena kode dan status berada di akun yang dimiliki secara eksplisit dan terpisah, sehingga konflik baca/tulis dapat dideteksi sebelum eksekusi dimulai.
Apa itu bidang pemilik (owner) di akun Solana?
Bidang pemilik adalah kunci publik 32-byte yang mengidentifikasi program yang memiliki wewenang untuk memodifikasi bidang data akun. Untuk akun wallet, pemiliknya adalah Program Sistem. Untuk akun token, pemiliknya adalah Program Token SPL. Bidang pemilik adalah konsep tingkat protokol yang ditegakkan oleh runtime Solana. Hal ini berbeda dari bidang "otoritas" yang ditemukan di dalam akun data tertentu yang dikelola program seperti akun token.
Bagaimana SOL digunakan dalam model akun?
SOL digunakan dalam model akun melalui tiga mekanisme: setiap akun harus memiliki saldo lamport (SOL) agar ada di jaringan; membuat akun memerlukan SOL untuk mendanai deposit pembebasan sewa; dan validator yang memproses serta menyimpan status akun harus melakukan Staking SOL untuk berpartisipasi dalam konsensus. Seiring pertumbuhan jaringan, permintaan struktural untuk SOL tumbuh bersamanya.
Apa itu Sealevel dan bagaimana hubungannya dengan akun?
Sealevel adalah runtime kontrak pintar paralel Solana. Sealevel dapat mengeksekusi beberapa transaksi secara bersamaan karena model akun Solana mengharuskan setiap transaksi untuk mendeklarasikan terlebih dahulu akun mana yang akan dibaca atau ditulisnya. Sealevel menggunakan deklarasi tersebut untuk mengidentifikasi transaksi yang tidak bertabrakan dan menjadwalkannya untuk berjalan secara paralel. Tanpa deklarasi di muka dari model akun, penjadwalan statis ini mustahil dilakukan.
Apa perbedaan antara akun wallet dan akun program di Solana?
Akun wallet adalah akun milik sistem dengan bidang data kosong yang hanya menyimpan saldo SOL, yang dikendalikan oleh pasangan kunci. Akun program adalah akun yang dapat dieksekusi dengan executable = true yang berisi bytecode BPF/SBF terkompilasi; akun ini dimiliki oleh Pemuat BPF dan tidak memiliki statusnya sendiri. Tabel jenis akun di bagian Lima Jenis Akun Solana menunjukkan kelima varian secara berdampingan.
Berapa banyak akun yang dapat direferensikan oleh satu transaksi Solana?
Satu transaksi Solana dapat mereferensikan hingga 64 akun pada parameter Mainnet saat ini, meningkat dari awalnya 32 melalui Tabel Pencarian Alamat. Setiap akun harus dideklarasikan sebagai baca-saja atau baca-tulis sebelum eksekusi dimulai. Deklarasi di muka inilah yang memungkinkan Sealevel menjadwalkan eksekusi paralel tanpa menjalankan transaksi terlebih dahulu untuk mendeteksi konflik.
Bisakah satu akun Solana menyimpan beberapa token?
No. Setiap jenis token SPL memerlukan akun token khususnya sendiri. Alamat wallet hanya menyimpan SOL; setiap token tambahan memerlukan akun token terpisah yang ditautkan ke wallet melalui bidang otoritasnya. Inilah sebabnya mengapa wallet Solana meminta Anda membuat akun token baru saat menerima token yang belum pernah Anda miliki sebelumnya, dan mengapa pembuatan tersebut memerlukan deposit lamport bebas sewa yang kecil.
Poin-Poin Utama
- Setiap bagian status on-chain di Solana berada dalam akun dengan lima bidang:
lamports,data,owner,executable,rent_epoch. - Program bersifat tanpa status (stateless). Semua status berada di akun data terpisah yang dimiliki dan dikendalikan oleh program.
- Akun memerlukan deposit lamport (pembebasan sewa) untuk tetap ada di jaringan. Deposit tersebut dapat dipulihkan saat akun ditutup.
- PDA adalah alamat tanpa kunci pribadi, yang diturunkan secara deterministik dari ID program dan benih (seeds), serta hanya dapat ditandatangani oleh program yang membuatnya melalui CPI.
- Setiap transaksi mendeklarasikan daftar akses akunnya di muka. Sealevel menggunakan deklarasi tersebut untuk mengeksekusi transaksi yang tidak bertabrakan secara bersamaan.
Langkah Selanjutnya
- Untuk spesifikasi implementasi, lihat dokumentasi akun Solana di docs.solana.com.
- Pengembang yang membangun program Solana pertama mereka dapat memulai dengan kerangka kerja Anchor, yang mengabstraksi banyak boilerplate manajemen akun (program ditulis dalam Rust atau C/C++).
- Untuk resep kode praktis dan contoh kerja dalam JavaScript/TypeScript, Solana Cookbook menyediakan materi referensi langsung.