
Sebuah alamat dompet tampak seperti hal yang sederhana: serangkaian karakter yang Anda salin, tempel, dan kirimi uang. Di Bitcoin, hampir memang sesederhana itu. Di Solana, menempatkan dompet bersama — sebuah multisig — di balik sebuah alamat ternyata sangat sulit. Artikel ini menjelaskan mengapa, dan menyiapkan pertanyaan yang dijawab oleh sisa seri ini.
Apa yang harus dijanjikan oleh alamat multisig
Dompet multisig adalah dompet yang dikendalikan oleh beberapa kunci, di mana sejumlah tetap dari kunci itu harus setuju sebelum uang berpindah. Multisig "2 dari 3", misalnya, memiliki tiga kunci dan membutuhkan dua kunci mana pun untuk menyetujui sebuah pembayaran. Tujuannya adalah menghapus titik kegagalan tunggal: Anda kehilangan satu kunci, atau satu kunci dicuri, dan dana Anda tetap aman.
Agar itu berguna, alamat tersebut harus menepati dua janji. Pertama, ia harus dapat diketahui sebelumnya — Anda ingin memberi seseorang alamat setoran sebelum Anda selesai menyiapkan apa pun. Kedua, ia harus jujur: siapa pun yang mengirim uang ke alamat itu harus dapat percaya bahwa hanya kelompok kunci yang disepakati, di bawah aturan yang disepakati, yang akan pernah dapat membelanjakan darinya. Ingatlah dua janji ini. Keduanya adalah benang merah dari semua yang menyusul.
Di Bitcoin, alamat adalah aturannya
Bitcoin membuat ini tampak mudah. Sebuah multisig Bitcoin dijelaskan oleh sebuah skrip kecil: daftar kunci publik ditambah aturan "M dari N". Untuk mendapatkan alamatnya, Anda mengambil skrip itu dan meng-hash-nya. Alamat itu (sebuah alamat P2WSH) secara harfiah adalah hash dari aturan pembelanjaan.
Itu punya konsekuensi yang diam-diam kuat. Siapa pun dapat menghitung alamat secara luring, di laptop tanpa internet, sebelum satu transaksi pun disiarkan. Tidak ada langkah "buat dompet" — dompet tidak perlu ada di jaringan untuk menerima uang. Skrip baru diungkap belakangan, saat dana dibelanjakan, dan jaringan memeriksa bahwa skrip yang diungkap cocok dengan alamat dan ada cukup tanda tangan yang valid. Alamat dapat diketahui sebelumnya: ya. Jujur: ya — karena alamat diturunkan dari aturan itu sendiri, kumpulan kunci yang berbeda menghasilkan alamat yang berbeda.
Di Solana, sebuah alamat adalah akun yang harus dibuat
Solana bekerja secara berbeda. Di Solana, segala sesuatu adalah akun — sebuah slot penyimpanan on-chain dengan seorang pemilik. Dana Anda hidup di akun, program hidup di akun, dan konfigurasi sebuah multisig juga hidup di sebuah akun. Yang penting, akun tidak muncul secara gratis. Sebuah akun harus dibuat dan dibayar secara eksplisit: seseorang mendanainya dengan sejumlah kecil SOL yang disebut "sewa" (rent) agar jaringan menyimpan datanya.
Sebuah multisig di Solana karena itu bukan sekadar alamat — ia adalah akun yang dikendalikan program yang menyimpan daftar anggota dan ambang batas. Dan akun itu harus dibuat oleh sebuah transaksi sebelum multisig dapat melakukan apa pun. Inilah akar kesulitannya: dompet bersama di Solana memiliki langkah penyiapan yang tidak dimiliki Bitcoin sama sekali.
PDA: alamat tanpa kunci privat
Solana memang punya alat yang elegan untuk ini, disebut Program Derived Address, atau PDA. Sebuah alamat Solana biasa memiliki kunci privat yang bersesuaian — siapa pun yang memegang kunci mengendalikan alamat. Sebuah PDA sengaja dibangun untuk berada di luar kurva: ia adalah alamat yang tampak valid tetapi tidak ada kunci privat yang ada dan tidak ada kunci privat yang bisa ada. Tidak ada yang dapat menandatangani untuknya secara pribadi.
Sebagai gantinya, sebuah PDA diturunkan secara deterministik. Anda mengambil beberapa nilai masukan — disebut "benih" (seeds) — ditambah ID sebuah program, melewatkannya melalui sebuah fungsi satu arah, dan keluarlah alamatnya. Benih yang sama dan program yang sama selalu menghasilkan PDA yang sama, sehingga siapa pun dapat mereproduksinya. Dan karena tidak ada kunci privat, hanya program pemilik yang dapat mengizinkan tindakan untuk alamat itu, yang dilakukannya melalui mekanisme yang disebut pemanggilan antarprogram dengan invoke_signed: program menyajikan benih kepada runtime Solana, dan runtime memberinya wewenang menandatangani untuk PDA. Tidak pernah ada tanda tangan kriptografis yang dihasilkan — hak untuk bertindak datang dari mengetahui benih, bukan dari memegang kunci.
Sebuah PDA adalah rumah yang tepat untuk multisig: sebuah alamat yang dikendalikan oleh logika program ketimbang oleh satu orang mana pun. Sejauh ini baik-baik saja. Bagian yang sulit adalah apa yang dipilih sebagai benih.
Masalah mendanai sebelum membuat
Di sinilah multisig-multisig dominan Solana menemui masalah. Tidak seperti model deterministik Bitcoin, multisig Solana yang paling banyak dipakai — Squads V4 adalah contoh terdepan, matang dan banyak diaudit — menurunkan alamat multisig dari sebuah nilai acak yang baru dibuat dan dipilih pada saat pembuatan, bukan dari kumpulan anggota. Di Squads V4 nilai itu disebut create_key, sebuah kunci sekilas yang dihasilkan ketika seorang pembuat menjalankan transaksi pembuatan.
Menurunkan alamat dari create_key acak adalah pilihan desain yang disengaja dan masuk akal — ia menghindari kasus tepi yang merepotkan di mana dua kelompok berbeda menginginkan komposisi anggota yang persis sama. Tetapi ia memiliki dua konsekuensi yang perlu dipahami dengan jelas:
- Anda tidak dapat mengetahui alamat sebelumnya. Benih tidak ada sampai seseorang menjalankan transaksi pembuatan, jadi alamat pun tidak ada. Tidak ada cara untuk mencetak alamat setoran dan mendanainya sebelum penyiapan — masalah mendanai sebelum membuat. Janji pertama patah.
- Pembuat adalah titik kepercayaan tunggal saat penyiapan. Satu akun tertentu harus menjalankan transaksi pembuatan itu dan memilih nilai acak itu. Untuk jendela penyiapan yang singkat, Anda mempercayai pihak itu untuk melakukannya dengan benar.
Tidak satu pun dari ini membuat Squads V4 tidak aman — ia adalah multisig paling teruji di Solana dan mengamankan jumlah yang sangat besar. Ini hanyalah bentuk kepercayaan yang berbeda dari Bitcoin. Alamat tidak lagi "hash dari aturan"; ia adalah "apa pun yang kebetulan dihasilkan oleh transaksi pembuatan".
Ethereum menemukan jalan tengah
Ethereum menghadapi masalah serupa dan menjawabnya dengan sebuah fitur bernama CREATE2. Fitur ini memungkinkan Anda menghitung alamat sebuah kontrak pintar sebelum kontrak itu disebarkan, dari masukan yang tetap. Dompet seperti Safe memakai ini untuk memberi Anda apa yang disebut alamat kontrafaktual: alamat nyata yang dapat didanai yang dapat Anda bagikan dan terima uang di sana, sementara kontrak yang sebenarnya disebarkan secara malas — hanya ketika dana pertama kali perlu berpindah. Standar abstraksi akun yang lebih baru, ERC-4337, memformalkan ide yang sama. Dengan demikian Ethereum memulihkan janji "dapat diketahui sebelumnya" meskipun, seperti Solana, pada akhirnya ia memerlukan sebuah objek on-chain untuk ada.
Pertanyaan yang dijawab seri ini
Letakkan ketiga model itu berdampingan. Bitcoin: alamat adalah hash dari aturan — dapat diketahui secara luring, jujur secara konstruksi, tanpa langkah pembuatan. Ethereum: alamat kontrafaktual — dapat diketahui sebelumnya, dengan penyebaran ditunda. Multisig umum Solana: alamat berasal dari keacakan saat pembuatan — tidak dapat diketahui sebelumnya, dengan seorang pembuat yang harus dipercaya saat penyiapan.
Maka inilah pertanyaannya. Solana membutuhkan akun, dan akun perlu dibuat — itu tidak akan hilang. Tetapi apakah sebuah multisig Solana harus melepaskan sifat Bitcoin itu? Bisakah alamat justru diturunkan murni dari kumpulan anggota dan ambang batas — aturan itu sendiri — sehingga ia dapat diketahui secara luring, dapat didanai sebelum penyiapan, dan jujur karena kelompok kunci yang berbeda menghasilkan alamat yang berbeda?
Itulah persis sifat yang dibangun tim SSP ke dalam program multisig Solana mereka sendiri. Artikel berikutnya menunjukkan caranya: sebuah alamat yang adalah kumpulan anggota, sebuah brankas yang dapat Anda danai sebelum apa pun terdaftar on-chain, dan langkah pendaftaran yang sama sekali tidak membutuhkan pembuat. Desain ini dirilis bersamaan dengan dukungan Solana di SSP Wallet — lihat pengumuman rilis — dan, sejalan dengan cara SSP memperlakukan keamanan, program ini saat ini hanya di devnet dan menunggu audit eksternal sebelum mainnet. Jika multisig itu sendiri masih baru bagi Anda, mulailah dengan apa itu multisig dan mengapa itu penting; jika tidak, lanjutkan membaca.


