
Dompet multisig Solana yang alamatnya adalah himpunan anggota
Sebuah dompet multisig membutuhkan dua kunci atau lebih untuk menyetujui pengeluaran apa pun. Di Bitcoin, alamat dompet hanyalah sebuah hash dari aturannya sendiri: daftar kunci publik dan angka "berapa tanda tangan yang dibutuhkan". Anda bisa menghitung alamat itu di selembar kertas catatan, membagikannya, dan menerima dana jauh sebelum ada yang menyentuh blockchain.
Solana secara tradisional tidak bisa melakukan ini. Seperti dijelaskan artikel pertama dalam seri ini, multisig dominan di Solana meminta Anda menjalankan sebuah transaksi pembuatan dengan keacakan yang dipilih pembuat sebelum alamat dompet itu bahkan ada. Program multisig Solana milik SSP sendiri justru mengambil pendekatan Bitcoin. Ia menginisiasi sendiri: alamat dompet adalah himpunan anggota.
Satu catatan di awal: program multisig Solana SSP bersifat sumber terbuka (RunOnFlux/Solana-Multisig) dan saat ini berjalan hanya di devnet — jaringan uji Solana. Penyebaran ke mainnet bergantung pada audit keamanan eksternal.
Dua alamat: multisig dan vault
Desain SSP menggunakan dua alamat terpisah untuk setiap dompet multisig.
Alamat multisig menyimpan aturan — daftar kunci anggota yang terurut, ambang (huruf M dalam "M-dari-N"), dan sebuah penghitung transaksi yang diajukan. Alamat ini dimiliki oleh program SSP.
Alamat vault menyimpan uang — SOL dan token SPL. Alamat ini dimiliki oleh System Program bawaan Solana dan tidak menyimpan data apa pun miliknya sendiri. Vault adalah alamat setoran: alamat yang Anda berikan kepada siapa pun yang ingin membayar Anda.
Keduanya adalah sebuah Program Derived Address, atau PDA — sebuah alamat tanpa kunci privat, sengaja ditempatkan di luar kurva kriptografis sehingga tidak ada kunci yang bisa mengendalikannya. Hanya program yang menurunkannya yang dapat mengizinkan perpindahan darinya. Detail itu penting di bagian akhir.
Bagaimana alamat dihitung dari anggota
Inilah bagian yang membuat dompet menginisiasi sendiri. Untuk menurunkan alamat multisig, dengan bahasa sederhana: ambil label harfiah multisig, sebuah hash SHA-256 dari daftar anggota yang terurut, dan ambang; lalu masukkan itu, bersama ID program SSP, ke dalam fungsi penurunan alamat Solana. Tiga detail patut diperhatikan.
Anggota diurutkan dan dihilangkan duplikatnya terlebih dahulu. Sebuah dompet 2-dari-3 dengan anggota A, B, C menghasilkan alamat yang persis sama, baik Anda mendaftarkannya sebagai C, A, B maupun B, C, A. Urutan tidak penting; hanya himpunan yang penting.
Hash penuh 32 byte digunakan — tidak pernah versi yang dipendekkan. Memotong hash akan membuka serangan nyata: penyerang bisa mencari himpunan anggota yang berbeda yang ter-hash ke nilai pendek yang sama, lalu mendaftarkan anggotanya sendiri di alamat Anda dan menguras dana apa pun yang sudah Anda muat sebelumnya. Hash penuh 32 byte membuat pencarian itu mahal secara astronomis, sehingga hal itu tidak pernah terjadi.
Ambang adalah bagian dari alamat. Sebuah dompet 2-dari-3 dan sebuah dompet 3-dari-3 dengan anggota yang persis sama adalah dompet berbeda di alamat berbeda. Aturan terpahat ke dalam identitas.
Alamat vault kemudian diturunkan dari alamat multisig ditambah sebuah nomor indeks kecil (SSP selalu memakai indeks 0), sehingga vault pun sepenuhnya ditentukan oleh himpunan anggota dan ambang.
Hasil praktisnya: siapa pun dapat menghitung kedua alamat secara luring, sebelum satu transaksi pun dikirim. Anda bisa membagikan alamat vault dan menerima dana ke sebuah dompet yang, di rantai, belum ada — sifat Bitcoin, dibawa ke Solana.
Pendaftaran bebas izin: siapa pun bisa menyalakannya
Alamat dompet sudah ada begitu Anda mengetahui para anggota. Tetapi untuk membelanjakan darinya, aturan pada akhirnya perlu ditulis di rantai — program menyebut langkah ini initialize.
Pada kebanyakan multisig Solana, hanya seorang pembuat yang berhak istimewa yang dapat melakukan langkah setara itu. Pada program SSP, inisialisasi bersifat bebas izin: siapa pun dapat melakukannya. Tidak ada akun pembuat, tidak ada tanda tangan anggota, tidak ada izin khusus. Biasanya layanan relay SSP yang membayar biaya sewa kecil dan menyalakan dompet, tetapi sungguh tidak penting siapa yang melakukannya.
Itu terdengar mengkhawatirkan sampai Anda melihat pemeriksaan keamanannya. Ketika seseorang menginisialisasi dompet, program menghitung ulang hash SHA-256 dari daftar anggota yang ia berikan dan menolak transaksi kecuali hash itu cocok dengan yang terpahat ke dalam alamat. Kerangka akun Solana secara independen mengikat alamat ke hash yang sama itu. Bersama-sama, dua pemeriksaan ini berarti alamat kanonik hanya dapat menampung himpunan anggota yang kanonik. Tidak ada yang dapat mendaftarkan alamat Anda dengan daftar anggota pilihannya sendiri — hash tidak akan cocok, dan transaksi gagal.
Mengapa orang asing yang menginisialisasi dompet Anda tidak bisa merugikan Anda
Mari telusuri apa yang sebenarnya bisa dicoba seorang penyerang.
Ia menginisialisasi dengan himpunan anggota yang berbeda. Himpunan yang berbeda ter-hash ke nilai yang berbeda, yang menurunkan alamat yang berbeda. Penyerang itu sekadar membuat dompetnya sendiri yang tidak terkait di tempat lain di Solana — tidak ada koneksi dengan vault Anda, tidak ada klaim atas dana Anda.
Ia menginisialisasi dengan himpunan anggota Anda. Hash cocok, sehingga transaksi berhasil — tetapi yang ia lakukan hanyalah membayar biaya sewa Anda untuk Anda. Dompet kini terdaftar persis dengan aturan yang Anda harapkan, dan penyerang bukan anggota, jadi ia tidak dapat mengajukan, menyetujui, atau mengeksekusi apa pun. Uang tidak pernah berada di alamat multisig itu sendiri — uang berada di vault, yang dimiliki sistem dan tidak dapat dibajak. Siapa pun yang menginisialisasi dompet, dan kapan pun, hasilnya adalah dompet kanonik yang sama dengan aturan yang benar.
Ambang diperiksa saat Anda membelanjakan, bukan saat Anda mendaftar
Ini adalah model yang sama dengan yang dipakai multisig P2WSH Bitcoin, dan layak dikatakan dengan jelas: ambang M-dari-N hanya ditegakkan saat dana berpindah — tidak pernah saat pendaftaran.
Pendaftaran sekadar mencatat "ini para anggota, ini ambangnya". Ia tidak meminta tanda tangan karena ia tidak dapat menimbulkan kerugian apa pun. Gerbang yang sebenarnya adalah alur pembelanjaan, tempat program menghitung persetujuan dan menolak bertindak sampai cukup banyak anggota memberi persetujuan. Alamat adalah hash dari aturan; siapa pun dapat mendanainya; hanya tanda tangan yang sah yang dapat membelanjakan. Untuk penyegaran tentang arti "M-dari-N", lihat 2-dari-2 vs 2-dari-3 vs M-dari-N multisig.
Seluruh siklus hidup, dari awal hingga akhir
Menyatukan semua bagian, inilah hidup sebuah dompet multisig Solana SSP:
- Turunkan. Siapa pun menghitung alamat multisig dan vault secara luring dari para anggota dan ambang. Tanpa blockchain, tanpa biaya.
- Danai di awal. Siapa pun mengirim SOL atau token ke alamat vault — ini berfungsi bahkan sebelum dompet didaftarkan.
- Inisialisasi. Siapa pun, biasanya relay SSP, mengirim transaksi pendaftaran yang bebas izin. Program memverifikasi hash anggota dan menulis aturan kanonik di rantai.
- Ajukan. Seorang anggota membuat sebuah usulan transaksi, disimpan secara ringkas pada sebuah akun usulan khusus.
- Setujui. Setiap anggota menyetujui usulan, masing-masing satu kali. Persetujuan menumpuk di rantai.
- Eksekusi. Begitu persetujuan mencapai ambang, siapa pun dapat memicu eksekusi. Program pertama-tama menandai usulan sebagai telah dieksekusi — sebuah pengaman yang disengaja agar ia tidak pernah berjalan dua kali — lalu menjalankan setiap instruksi, dengan vault itu sendiri bertindak sebagai penanda tangan.
Langkah terakhir itulah tempat alamat vault yang tanpa kunci menunjukkan nilainya. Karena vault adalah sebuah PDA tanpa kunci privat, tidak ada manusia dan tidak ada program yang dapat memindahkan dananya dengan menandatangani secara biasa. Satu-satunya jalan keluar adalah program SSP mengeksekusi sebuah usulan yang telah disetujui dan mencapai ambang — ia "menandatangani" untuk vault dengan menyajikan resep penurunan vault kepada runtime Solana, sebuah izin yang ia peroleh semata-mata karena ia adalah pemilik alamat itu.
Tanpa pembuat, tanpa admin, tanpa rotasi kunci di tempat
Dua sifat terakhir mengikat desain ini menjadi satu.
Himpunan anggota dan ambang bersifat tidak dapat diubah. Begitu sebuah dompet diinisialisasi, tidak ada instruksi dalam program yang dapat mengubah anggota atau ambangnya — tidak ada jalur kode untuk itu. Untuk mengubah siapa yang mengendalikan sebuah dompet — yang oleh sistem lain disebut secara longgar "rotasi kunci" — Anda membuat sebuah multisig baru dengan himpunan anggota baru dan memindahkan dana ke sana. Alamat lama menyimpan aturan lamanya selamanya.
Tidak ada peran pembuat dan tidak ada kunci admin, sama sekali. Banyak desain multisig menyimpan sebuah akun istimewa yang dapat menimpa para anggota atau mengubah konfigurasi. Program SSP tidak memiliki satu pun — tidak ada yang bisa dikompromikan, tidak ada kunci admin untuk diphishing, tidak ada pembuat untuk dipaksa. Para anggota dan ambang adalah seluruh ceritanya.
Minimalisme itu adalah sebuah pertukaran yang disengaja: SSP membangun sebuah primitif yang kecil dan deterministik alih-alih sebuah platform tata kelola yang kaya fitur. Artikel berikutnya, Multisig Solana SSP vs Squads, membandingkan desain ini secara jujur dengan Squads V4 — multisig Solana yang matang, telah diaudit, dan dominan. Untuk konteks produk, pengumuman peluncuran dukungan Solana membahas apa yang hadir di SSP Wallet v1.39.0.
Gagasan intinya cukup kecil untuk ditampung dalam benak: pada multisig Solana SSP, alamat dompet adalah sebuah sidik jari dari aturannya sendiri. Ketahui para anggota dan ambang, maka Anda mengetahui alamatnya. Tidak ada lagi yang dibutuhkan, dan tidak ada lagi yang dipercaya.


