Dompet multisignature (atau singkatnya “multisig”) adalah jenis dompet mata uang kripto yang memerlukan dua atau lebih kunci privat untuk menandatangani dan mengirim transaksi. Ini berarti bahwa beberapa kunci privat dari sumber yang berbeda diperlukan untuk membuat tanda tangan untuk transaksi, yang memberikan lapisan keamanan tambahan. Jika salah satu kunci terkompromi, asetnya masih aman, menjadikan dompet multi-sig sebagai alternatif yang lebih aman untuk mengelola dana kripto.
Cara Kerja Dompet Multisignature
- Penyiapan dan Konfigurasi: Saat dompet multisignature dibuat, pemilik dompet memutuskan jumlah tanda tangan yang diperlukan untuk mengotorisasi transaksi. Konsep “M-of-N” dalam multisig mengacu pada konfigurasi spesifik dompet multisignature, di mana “M” mewakili jumlah tanda tangan minimum yang diperlukan untuk mengotorisasi transaksi dari total “N” penanda tangan yang mungkin. Dengan kata lain, “M-of-N” menunjukkan jumlah minimum tanda tangan kunci privat yang diperlukan dari total “N” kunci yang terkait dengan dompet multisig untuk memvalidasi dan mengeksekusi transaksi. Misalnya, dalam penyiapan multisig 2-of-3, ada tiga kunci privat yang terkait dengan dompet, dan dua dari kunci ini diperlukan untuk menandatangani transaksi. Demikian pula, dalam konfigurasi multisig 3-of-5, lima kunci privat terlibat, dan tiga dari kunci ini harus memberikan tanda tangannya untuk mengotorisasi transaksi.
- Kunci Privat: Setiap peserta dalam dompet menghasilkan kunci privat. Kunci-kunci ini dirahasiakan dan digunakan untuk menandatangani transaksi.
- Kunci Publik: Setiap kunci privat memiliki kunci publik yang sesuai. Kunci publik dibagikan dengan dompet, tetapi kunci privat tetap berada di tangan para peserta. Alamat multisignature dibuat dengan menggabungkan kunci publik dari semua peserta yang terlibat. Alamat ini adalah hash kriptografi dari kunci publik gabungan dan merupakan tempat dana dapat dikirim.
- Otorisasi Transaksi: Untuk melakukan transaksi, jumlah peserta yang diperlukan harus menandatangani transaksi dengan kunci privat mereka. Dompet kemudian memverifikasi tanda tangan ini terhadap kunci publik yang disimpan dalam dompet. Jika jumlah tanda tangan valid yang diperlukan diberikan, transaksi tersebut diotorisasi dan dapat disiarkan ke blockchain.
- Keamanan: Keamanan dompet multisignature berasal dari fakta bahwa meskipun satu atau lebih kunci privat dibobol, penyerang tetap memerlukan kunci privat peserta lain untuk mengotorisasi transaksi. Hal ini membuat individu yang tidak berwenang jauh lebih sulit mengakses atau mentransfer dana.
Membangun Skrip Penukaran untuk pengaturan multisignature (multisig) 2-dari-3
package main import ( "encoding/hex" "fmt" ) func main() { pubkey1, _ := hex.DecodeString("034f355bdcb7cc0af728ef3cceb9615d90684bb5b2ca5f859ab0f0b704075871aa") pubkey2, _ := hex.DecodeString("02466d7fcae563e5cb09a0d1870bb580344804617879a14949cf22285f1bae3f27") pubkey3, _ := hex.DecodeString("023c72addb4fdf09af94f0c94d7fe92a386a7e70cf8a1d85916386bb2535c7b1b1") redeemScript := []byte{ 0x52, // OP_2 0x21, // OP_PUSHBYTES_33 } redeemScript = append(redeemScript, pubkey1...) redeemScript = append(redeemScript, []byte{0x21}...) // OP_PUSHBYTES_33 redeemScript = append(redeemScript, pubkey2...) redeemScript = append(redeemScript, []byte{0x21}...) // OP_PUSHBYTES_33 redeemScript = append(redeemScript, pubkey3...) redeemScript = append(redeemScript, []byte{0x53}...) // OP_3 redeemScript = append(redeemScript, []byte{0xae}...) // OP_CHECKMULTISIG fmt.Printf("Redeem script %x\n", redeemScript) }
Dengan menggunakan Golang sebagai bahasa pilihan saya, saya telah membuat skrip redeem multisig 2 dari 3. Rinciannya adalah sebagai berikut: redeemScript diinisialisasi sebagai potongan byte yang berisi 0x52 (OP_2), yang menunjukkan bahwa 2 tanda tangan diperlukan, dan 0x21 (OP_PUSHBYTES_33), yang merupakan awalan yang menunjukkan bahwa 33 byte berikutnya akan dimasukkan ke dalam tumpukan. Kunci publik pubkey1, pubkey2, dan pubkey3 ditambahkan ke redeemScript. Setiap kunci publik diikuti oleh 0x21 (OP_PUSHBYTES_33), yang menunjukkan bahwa 33 byte berikutnya akan dimasukkan ke dalam tumpukan. Ini karena kunci publik Bitcoin biasanya sepanjang 33 byte. Terakhir, 0x53 (OP_3) ditambahkan untuk menunjukkan bahwa total ada 3 kunci publik, dan 0xae (OP_CHECKMULTISIG) ditambahkan untuk menunjukkan bahwa skrip multisig sudah lengkap dan siap untuk dieksekusi. RedeemScript yang dihasilkan akan mewakili skrip multisig 2 dari 3, yang memerlukan dua dari tiga kunci publik yang ditentukan untuk menandatangani transaksi.
Kasus Penggunaan untuk Multisig
Dompet multisignature (multisig) menawarkan berbagai macam kasus penggunaan yang meningkatkan keamanan dan fleksibilitas dalam mengelola transaksi mata uang kripto. Beberapa kasus penggunaan ini meliputi yang berikut: 1. Dompet multisig menyediakan lapisan keamanan tambahan dengan mengharuskan beberapa kunci pribadi untuk mengotorisasi transaksi. Fitur ini khususnya bermanfaat untuk mengamankan dana pribadi dalam penyimpanan dingin dan melindungi akun bisnis tempat banyak pemangku kepentingan, seperti CEO, CFO, dan anggota dewan, dapat memberikan tanda tangan untuk transfer. 2. Penggunaan dompet multisig memungkinkan autentikasi dua faktor, meningkatkan keamanan transaksi mata uang kripto. Dengan mengharuskan beberapa tanda tangan, dompet ini menyediakan lapisan perlindungan tambahan terhadap akses tidak sah dan aktivitas penipuan. 3. Multisig menambahkan lapisan keamanan ekstra untuk transaksi escrow dengan mengharuskan beberapa pihak untuk mengotorisasi pelepasan dana. Ini mengurangi risiko penipuan, pencurian, atau penyalahgunaan dana, karena semua pihak harus setuju sebelum dana dapat ditransfer.
Kesimpulan
Kasus penggunaan multisig tersebar luas karena fungsional untuk penggunaan pribadi dan perusahaan. Keamanan multisig yang ditingkatkan membuatnya sangat berguna dan menarik terutama jika pengaturan multisig direncanakan dengan cermat.