
Apa Itu PDA Solana? Penjelasan & Contoh (2026)
Daftar Isi
- PDA sebagai Penyimpanan Data Key/Value
- 1. PDA untuk Menyimpan Token yang Terkait dengan Wallet
- Ringkasan Video
- 2. PDA untuk Menyimpan Data Program Anda
- Ringkasan Video
- 3. PDA untuk Menetapkan Nilai yang Dapat Dikonfigurasi bagi Program Anda
- Ringkasan Video
- 4. PDA untuk Memiliki dan Mentransfer Token
- Ringkasan Video
- Ringkasan
Terima kasih kepada 0xIchigo atas ulasannya, Unboxed Software untuk program ulasan film, dan Paul Verhoeven untuk Robocop.
Program Solana (smart contract) menyimpan datanya dalam akun terpisah yang disebut Program Derived Addresses (PDA).
PDA dapat diakses dan diperbarui secara independen, sehingga mengurangi perebutan akses dan memungkinkan pemrosesan paralel.
Meskipun konsep PDA tidak sulit, developer baru mungkin kesulitan memahaminya.
Artikel ini akan membantu Anda memahami PDA sebagai penyimpanan Key/Value dan membagikan empat contoh praktis PDA.
Mari kita mulai.
PDA sebagai Penyimpanan Data Key/Value
Penyimpanan key/value telah digunakan dalam pemrograman bertahun-tahun sebelum blockchain hadir. Penyimpanan ini memungkinkan data ditemukan dengan cepat. Pencarian nilai pada key tertentu di dalam penyimpanan akan selalu menemukan data yang sama.
Dalam model pemrograman Solana, sistem PDA berfungsi sebagai penyimpanan key/value program Anda.
Key untuk setiap bagian data adalah jenis alamat khusus yang dibuat dari seed input yang ditentukan oleh programmer.
Seed yang sama selalu menghasilkan alamat yang sama. Karena itu, siapa pun dapat menemukan data secara deterministik untuk sekumpulan seed tertentu.
Alamat PDA tidak akan pernah bertabrakan dengan public key sebenarnya karena nilainya ‘off curve’. Artinya, alamat yang dibuat untuk PDA secara matematis berbeda dari nilai public key yang ada pada kurva Ed25519 Solana.
Value adalah struct (atau objek) berisi field dan nilai yang ingin Anda, sebagai pembuat program, simpan di sana.
PDA paling mudah dijelaskan melalui contoh. Mari kita lihat.
1. PDA untuk Menyimpan Token yang Terkait dengan Wallet
Mari kita mulai dengan program milik pihak lain—program yang sudah pernah Anda gunakan. Anda tentu tahu bahwa wallet Anda berisi berbagai token, dan masing-masing memiliki saldo sendiri. Selamat datang di contoh PDA pertama Anda!
Setiap saldo token Anda disimpan dalam akun PDA, dengan seed yang ditentukan oleh program Associated Token Account.
Mari kita lihat secara persis cara kerjanya:
Ringkasan Video
Program: program Associated Token Account
Tujuan Akun: menyimpan saldo token unik di wallet Anda
Seed: alamat wallet dan alamat mint token
Data: saldo token ini untuk wallet tersebut
Manfaat:
Tersedia lokasi kanonis untuk mencari kepemilikan token tertentu milik pengguna. Karena saldo pengguna berada di akun terpisah, lebih banyak transaksi dapat dijalankan secara paralel sehingga Solana menjadi cepat!
2. PDA untuk Menyimpan Data Program Anda
Baik, tetapi bagaimana kita dapat menggunakan PDA sebagai penyimpanan data serbaguna dalam program Solana? Apa yang perlu dipertimbangkan saat merancang seed dan data untuk PDA kita?
Ringkasan Video
Program: program ulasan film yang menggunakan kepemilikan aset untuk memastikan ulasan lebih mungkin autentik
Tujuan Akun: menyimpan ulasan film dari setiap pemilik aset
Seed: alamat wallet, nama film, dan tahun rilis
Data:
- ulasan tertulis (
string) - penilaian dari 0–10 yang disimpan sebagai
u8
Manfaat:
Tersedia lokasi kanonis untuk mencari ulasan pengguna atas film tertentu. Pengguna dapat memperbarui ulasan mereka secara paralel tanpa saling memblokir. Desain PDA yang cermat memastikan hanya ada satu ulasan untuk setiap film per pengguna, sekaligus menangani kasus khusus seperti orang jahat yang membuat ulang Robocop.
3. PDA untuk Menetapkan Nilai yang Dapat Dikonfigurasi bagi Program Anda
Saat membuat aplikasi sendiri, Anda mungkin memiliki beberapa nilai yang dapat dikonfigurasi dan ingin ditetapkan sepanjang siklus hidup program:
- Nilai konstan (misalnya, biaya untuk platform Anda)
- Daftar alamat mint token yang akan digunakan program Anda
- Feature flag yang dapat Anda aktifkan dan nonaktifkan kapan saja
- Apakah program Anda aktif atau dijeda (misalnya, mengizinkan akun admin menjeda program merupakan fitur darurat yang umum pada banyak program blockchain)
Kita tidak ingin melakukan upgrade program hanya untuk mengubah nilai-nilai ini. Jadi, mari tempatkan konfigurasi kita dalam akun PDA! Setelah itu, kita dapat membuat beberapa instruction handler untuk memperbarui nilai tersebut dan memeriksa bahwa instruksi yang masuk ditandatangani oleh akun ‘admin’ yang ditunjuk.
Dalam kasus ini, kita akan memiliki konfigurasi berisi daftar public key yang diizinkan agar dapat membatasi siapa saja yang bisa berinteraksi dengan program. Namun, kita juga dapat menambahkan pengaturan konfigurasi lain sesuai kebutuhan.
Ini adalah contoh yang menarik karena penggunaan PDA untuk menyimpan konfigurasi global seperti ini mungkin tidak langsung terlihat jelas!
Ringkasan Video
Program: program apa pun yang Anda buat
Tujuan Akun: menyimpan konfigurasi yang dapat diperbarui secara dinamis
Seed: "config"
Data: konfigurasi kita, yang dalam kasus ini berupa daftar izin dan akun admin
allow_list: vektor public key bagi pengguna yang diizinkan menggunakan aplikasi iniauthority: public key dari akun yang dapat mengubah pengaturan ini (aplikasi Solana biasanya menggunakan kataauthorityuntuk menunjukkan suatu jenis izin). Kita akan memastikan akun ini menandatangani tindakan dengan hak istimewa!
Manfaat:
Alih-alih melakukan hard-code konfigurasi tertentu ke dalam source code, kita dapat memperbaruinya secara langsung menggunakan fungsi instruksi dalam program.
Pembaruan konfigurasi juga tidak terhambat oleh perubahan pada data yang tidak terkait. Saat pertama kali men-deploy program, Anda juga perlu menjalankan intialize_config() dan menetapkan authority Anda!
4. PDA untuk Memiliki dan Mentransfer Token
PDA tidak hanya digunakan untuk menyimpan data. PDA juga dapat memiliki akun tokennya sendiri. Program kita kemudian menandatangani transaksi sebagai PDA untuk memindahkan token dari akun token tersebut ke tempat lain. Dengan demikian, program kita dapat menyimpan dan mentransfer nilai:
Ringkasan Video
Program: program swap
Tujuan Akun:
- Menyimpan detail penawaran swap, khususnya token dan jumlah token yang diinginkan pembuat penawaran sebagai imbalan atas token yang mereka sediakan.
- PDA ini memiliki akun token yang menyimpan token yang disediakan. PDA dapat menandatangani transaksi dan mentransfer token dari akun ini kepada penerima.
Seed: "offer", ID penawaran (pengidentifikasi apa pun selama belum digunakan), dan alamat pembuat penawaran
Data:
maker_wanted_token: token yang diinginkan sebagai imbalan, dalam bentuk public key dari alamat mint tokenmaker_wanted_amount: jumlah token yang diinginkan (u64)
Manfaat:
PDA ini memungkinkan pengguna menyimpan data sekaligus bertindak sebagai pemilik akun token untuk menyimpan token dan mentransfernya ke akun lain.
Ringkasan
Itulah empat contoh praktis PDA Solana.
Pertama, program Associated Token Account menggunakan PDA untuk menyimpan saldo setiap token yang dimiliki wallet Anda.
Kedua, program yang Anda buat dapat menyimpan data yang terkait dengan pengguna tertentu menggunakan public key mereka, atau dengan item data tertentu menggunakan ID yang telah Anda tetapkan untuk item tersebut.
Ketiga, program dapat menyimpan konfigurasinya sendiri dalam PDA, dengan instruction handler khusus admin yang membatasi siapa saja yang dapat mengubah pengaturan tersebut.
Keempat, PDA Anda dapat memiliki akun tokennya sendiri, sehingga program dapat menyimpan dana. Program Anda dapat ‘menandatangani’ transaksi yang menggunakan token ini cukup dengan menentukan seed PDA yang memilikinya.
PDA tidak hanya membuat Solana cepat, tetapi juga menyediakan penyimpanan key/value lengkap yang memungkinkan program Anda menemukan data dengan cepat berdasarkan seed yang Anda tentukan.
Selamat bereksperimen dengan PDA, dan jangan lupa menonton lebih banyak film Paul Verhoeven!
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


