Buat penggiat Bitcoin, tentu sering mendengar istilah SegWit atau segregated witness. Secara harfiah dapat diterjemahkan sebagai ‘pemisahan saksi’. Apa sebetulnya SegWit ini? Kenapa ada pro kontra? Apa pengaruhnya bagi Bitcoin secara umum? Berikut penjelasan singkatnya.
Block Bitcoin
Sebelum memahami SegWit, harus paham dulu bagaimana block di Bitcoin terbentuk. Block di dalam blockchain Bitcoin terdiri dari tiga bagian yakni:
- Block Header (ukuran sekitar 80 bytes)
- Transaction Counter (sekitar 1-9 bytes)
- List of Transactions (jumlahnya bervariasi di tiap transaksi)
Total seluruh block tidak boleh lebih dari 1MB.
Kita menyelam lebih dalam lagi dalam List of Transactions, karena di sini SegWit akan dilakukan. Salah satu bagian transaction block adalah signature. Bagian ini makan tempat hampir 65% dari transaction block. Di dalamnya berisi ‘witness‘ atau semua signature yang ‘menyaksikan’ bahwa transaksi ini benar.
Segregated Witness, atau disingkat SegWit, adalah cara untuk memisahkan penanda transaksi (transaction signature) – lihat gambar di atas, menjadi block tersendiri dengan nama ‘witness block‘, dan bukan merupakan bagian dari transaction block. Kira-kira bentuknya seperti ini.
Itulah yang disebut dengan Segwit, pada dasarnya memisahkan block yang berisi witness signature ke dalam block terpisah. Dengan pemisahan ini, ukuran block menjadi ‘lebih besar’ karena ukuran transaction block bisa berkurang hingga 65% dan bisa ditambahkan transaksi lainnya. Meskipun demikian, witness block tetap merupakan satu bagian dari blockchain Bitcoin. Dalam arti, klien yang sudah mengerti SegWit, akan menggunakan witness block untuk melakukan validasi.
Keuntungan SegWit
- Mengatasi masalah Transaction Maleability
Sebelum SegWit, transaction signature merupakan bagian dari transaction. Artinya perubahan signature, juga akan mengubah hash transaction. Bisa saja terjadi sebuah transaksi bersumber sama, dengan tujuan yang sama, berubah transaction ID dengan mengganti atau menambahkan signature. Ini disebut ScriptSig Maleability. Dengan pemisahan signature ke dalam witness block, transaction ID tetap tidak akan berubah meskipun ada perubahan signature. - Membuat operasi SigHash menjadi linear
Dalam melakukan validasi transaksi di blockchain, operasi signature hashing (atau sighash) memakan sumber daya paling besar. Jika transaksi bertambah, Sighash bertambah menjadi 4 kali lipat. Dengan SegWit ini, penghitungan transaction signature hash, tidak bergantung pada jumlah transaksi, dan dilakukan maksimal sebanyak dua kali. Sehingga operasi SigHash bisa linear meskipun jumlah transaksi bertambah. - Bisa tanda tangan terhadap data input, alih-alih terhadap output
Manfaat ini dirasakan oleh pengguna hardware wallet, dimana biaya dikenakan tergantung pada operasi hash transaksi. Sebelum segwit, hash dilakukan setelah menambahkan signature, sehingga bisa naik turun dan dilakukan pada data output. Setelah SegWit, signature hash bisa langsung pada data input, cukup dengan memasukkan transaction hash, index, dan value. Waktu hashing lebih cepat, dengan biaya yang lebih murah/relatif sama setiap transaksi. - Meningkatkan efisiensi tanpa verifikasi signature
Beberapa klien bitcoin, dan node yang tergabung dalam Lightning Network, tidak melakukan verifikasi signature terhadap transaksi sebelumnya dengan asumsi verifikasi sudah dilakukan oleh pihak lain. SegWit yang memisahkan signature ke dalam witness block, memungkinkan hal ini terjadi sehingga jaringan bisa lebih efektif dan validasi transaksi bisa lebih cepat. - ‘Meningkatnya’ jumlah block yang bisa digunakan
Sebagaimana yang telah dijelaskan sebelumnya, dengan memisahkan signature dari transaction block, yang biasanya memakan tempat hingga 65%, transaction block menjadi lebih lapang dan bisa ditambahkan jumlah transaksinya. Disamping itu, skema witness block yang diusulkan bisa menampung hingga 4MB (atau empat kali dari transaction block). Batasan ini dibuat dengan rumus:(tx size with witness data stripped) * 3 + (tx size)
Segwit 2x
Setelah keberhasilan SegWit pertama, sekelompok penggiat utama Bitcoin mengusulkan Segwit 2x. Poin utama segregated witness ini adalah untuk meningkatkan maksimum block hingga menjadi 2MB bahkan lebih. Namun rencana ini ditolak dan dibatalkan penerapannya karena tidak mencapai konsensus. SegWit pertama dilakukan dengan soft fork, dalam arti tidak mengganti code utama, hanya mengganti struktur data. Dan ini artinya node tanpa segwit dapat melakukan validasi meskipun tidak mengenal segregated witness block. Sedangkan Segwit 2x, melakukan hardfork dan radikal dalam Bitcoin.