Daftar Isi

Poin Utama

  • Segregated Witness, atau SegWit, adalah upgrade untuk protokol Bitcoin yang diaktifkan pada tahun 2017 untuk memperbaiki malleabilitas transaksi dan membantu skalabilitas Bitcoin.
  • SegWit memungkinkan Lightning Network diluncurkan di atas protokol Bitcoin.
  • Aktivasi SegWit membuktikan bahwa Bitcoin adalah sistem antifragile yang dikendalikan oleh operator node, bukan penambang atau pemimpin bisnis.

Pendahuluan

Segregated Witness, sering disingkat menjadi SegWit, adalah sebuah upgrade yang diimplementasikan di Bitcoin Core pada 2017. SegWit menyempurnakan beberapa aspek Bitcoin dan membuka pintu untuk penyempurnaan di masa depan, termasuk Taproot.

Pertama dan terpenting, SegWit memperbaiki malleability transaksi. SegWit juga meningkatkan batas ukuran blok Bitcoin, memungkinkan lebih banyak transaksi dimasukkan dalam setiap blok. Terakhir, SegWit memperkenalkan dua jenis skrip baru yaitu:

  1. Cara mengirim dan menerima bitcoin
  2. Dan skema pengkodean baru bernama Bech32.

Peningkatan SegWit dulu sempat menjadi kontroversial, dan aktivasi tersebut menimbulkan perdebatan, dan aktivasinya menyebabkan perpecahan yang mendalam di komunitas Bitcoin. Namun, terbukti Bitcoin muncul menjadi lebih kuat dan lebih scalable, membuktikan bahwa desentralisasinya dapat bertahan dari upaya pengambilalihan oleh penambang dan pemimpin komunitas.

Apa Itu Malleability Transaksi?

Malleability transaksi adalah kemampuan sebuah transaksi untuk memiliki beberapa txids yang valid. Malleability terjadi terjadi ketika suatu bagian dari suatu transaksi dapat berubah setelah transaksi ditandatangani, tanpa membuat tanda tangan awal menjadi tidak valid. Karena txid adalah hash dari transaksi, setiap perubahan pada transaksi akan menghasilkan perubahan txid. Namun, perubahan yang mengubah txid dan membatalkan tanda tangan bukanlah masalah; hanya perubahan yang mengubah txid dan tidak membatalkan tanda tangan yang menimbulkan kekhawatiran malleability.

Mengapa Malleability Transaksi Menjadi Masalah

Malleability adalah masalah bagi developer dan pengguna yang ingin merujuk transaksi sebelumnya dalam transaksi pengeluaran baru sebelum transaksi sebelumnya telah dikonfirmasi di blockchain. Masalah ini muncul karena, untuk membelanjakan bitcoin yang dibuat oleh transaksi sebelumnya, transaksi pembelanjaan tersebut harus merujuk txid dari transaksi sebelumnya. Jika txid ini dapat berubah, perujukan akan gagal, dan transaksi pengeluaran akan menjadi tidak valid.

Secara khusus, malleability transaksi adalah masalah yang dapat mencegah adopsi Lightning Network, yang mengandalkan pertukaran transaksi Bitcoin yang belum dikonfirmasi.

Bagaimana SegWit Memperbaiki Malleability Transaksi

Transaksi dapat dimanipulasi dengan dua cara. Pertama, setelah transaksi ditandatangani, data tambahan dapat ditambahkan ke ScriptSig, bagian dari transaksi yang memegang tanda tangan dan data lain yang digunakan untuk membuka bitcoin. Kedua, tanda tangan itu sendiri, yang terkandung dalam ScriptSig, dapat diubah. Kedua pilihan ini memungkinkan karena tanda tangan tidak dapat menandatangani dirinya sendiri, dan dengan demikian tidak dapat membuat dirinya tidak dapat diubah. Karena ScriptSig dan tanda tangan yang terkandung di dalamnya adalah bagian dari txid preimage, jika mereka diubah, txid akan berubah.

SegWit menghilangkan kemungkinan ini dengan menghapus semua data dari ScriptSig. Ini dicapai dengan memindahkan data ScriptSig—biasanya tanda tangan dan kunci publik—ke Witness, bagian baru dari transaksi SegWit yang tidak di-hash untuk menghitung txid. ScriptSig untuk input SegWit dengan demikian dibuat tidak dapat diubah setelah penandatanganan, dan data yang diperlukan untuk membuka bitcoin, yang tidak dapat diubah, terkandung di dalam Witness. Ini berarti bahwa ScriptSig tidak dapat diubah, dan dengan demikian txid tidak dapat diubah tanpa membatalkan seluruh transaksi.

SegWit Mengaktifkan Lightning Network

Pengaktifan SegWit memungkinkan peluncuran Lightning Network sebagai lapisan kedua di atas jaringan Bitcoin. Sampai SegWit diaktifkan, Lightning Network tidak dapat dijalankan karena sangat bergantung pada transaksi bitcoin yang belum dikonfirmasi dan dengan demikian rentan terhadap serangan selama malleability transaksi masih mungkin.

Peningkatan Ukuran Blok SegWit

Meskipun SegWit secara teknis adalah soft fork, ia mengubah salah satu aturan konsensus penting Bitcoin dengan cara yang kompatibel ke belakang untuk meningkatkan jumlah transaksi yang dapat dimasukkan dalam setiap blok.

Sebelum SegWit, setiap blok dibatasi hingga 1MB data, yang setara dengan sekitar 1650 transaksi dalam blok penuh. SegWit memperkenalkan berat blok, yang menggantikan ukuran blok sebagai faktor pembatas untuk blok. Saat ini, blok penuh berisi sekitar 2700 transaksi.

Ukuran blok adalah ukuran total jumlah byte dalam transaksi. Sebelum SegWit, batas ini ditetapkan menjadi 1MB, atau 1 juta byte.

Berat blok dihitung dalam unit berat. Satu byte data non-Witness transaksi bernilai 4 unit berat, sedangkan satu byte data Witness bernilai 1 unit berat. Batas berat blok ditetapkan menjadi 4 juta unit berat. Yang penting, untuk blok yang hanya berisi transaksi non-SegWit, batas 4 juta unit berat ini akan setara dengan batas byte 1 juta lama.

Metode pengukuran baru ini memungkinkan peningkatan ukuran blok tetap menjadi soft fork, tetapi juga memberikan insentif finansial kepada penambang dan pengguna Bitcoin untuk menggunakan SegWit. Pengguna Bitcoin dapat menghemat biaya transaksi jika mereka menggunakan transaksi SegWit, karena data Witness memakan lebih sedikit dari batas berat blok, dan penambang yang memasukkan transaksi SegWit bisa memuat lebih banyak transaksi di blok mereka, menghasilkan pendapatan biaya yang lebih tinggi.

Alasan Dibalik Diskon “Witness” SegWit

SegWit memperkenalkan konsep unit bobot ke Bitcoin. Bersamaan dengan itu, upaya peningkatan ini menentukan bahwa data yang disimpan dalam saksi baru akan dihitung sebagai “1” unit bobot, sedangkan bidang transaksi warisan akan dihitung sebagai “4” unit bobot. Dengan kata lain, data saksi didiskon menjadi 0,25 dibandingkan dengan standar 1 untuk bidang data warisan.

Faktor diskon empat ini membantu menyeimbangkan insentif antara membuat output dan menghabiskan satu. Sebelum SegWit, biaya untuk menghabiskan output jauh lebih mahal; ini karena tanda tangan transaksi standar dan skrip pengeluaran mengandung lebih banyak data dibandingkan dengan output sebelumnya (Bytes dibandingkan dengan vBytes Bitcoin).

Perbedaan ini cenderung memiliki efek mendorong pengguna untuk membuat lebih banyak output dibandingkan yang mereka habiskan. Jika skenario ini diizinkan berlangsung dalam jangka waktu yang cukup lama, hal itu bisa memperbesar UTXO Set Bitcoin hingga titik di mana pengguna rata-rata tidak mungkin dapat menjalankan node.

Untuk memverifikasi transaksi dengan cepat, node menyimpan salinan UTXO Set di RAM (random access memory). Namun, RAM adalah sumber daya yang terbatas dan developer Bitcoin ingin meminimalkan biaya menjalankan node demi manfaat desentralisasi jaringan. Diskon “witness” ini mencapainya dengan seimbangnya biaya membuat dan menghabiskan output.

Jenis Skrip Baru SegWit

Jenis skrip adalah berbagai cara mengirim bitcoin di blockchain menggunakan bahasa skrip Bitcoin, Script. SegWit memperkenalkan dua jenis skrip baru untuk memanfaatkan bidang Witness: Pay-to-Witness-Pubkey-Hash (P2WPKH) dan Pay-to-Witness-Script-Hash (P2WSH).

Jenis skrip yang ada sebelum SegWit, seperti P2PKH dan P2SH, dikenal sebagai jenis skrip Legacy.

Pay-to-Witness-PubKey-Hash (P2WPKH)

Sebelum SegWit, sebagian besar pengguna menggunakan skrip Pay-to-Pubkey-Hash (P2PKH), yang mengunci bitcoin ke hash dari kunci publik. Pay-to-Witness-Pubkey-Hash (P2WPKH) SegWit berfungsi hampir identik dengan P2PKH, dengan satu perbedaan utama. Ketika pengguna menghabiskan output P2WPKH, tanda tangan dan kunci publik, dua data yang diperlukan untuk membuka output P2PKH atau P2WPKH, disimpan di Witness, sementara ScriptSig kosong. Seperti disebutkan, ini dilakukan untuk mencegah malleability dari txid.

Pay-to-Witness-Script-Hash (P2WSH)

Jenis skrip legacy yang paling populer kedua adalah Pay-to-Script-Hash (P2SH), yang memungkinkan bitcoin dikirim ke hash dari skrip random, yang disebut redeemScript. Bitcoin ini kemudian dapat ditebus oleh siapa saja yang dapat menyediakan redeemScript dan memenuhi persyaratan yang ditentukan di dalamnya.

Sebelum SegWit, P2SH paling sering digunakan untuk multisig, karena menghemat ruang dan privasi dibandingkan dengan alternatif seperti multisig naked.

SegWit mengimplementasikan Pay-to-Witness-Script-Hash (P2WSH), yang berfungsi mirip dengan P2SH. Output P2WSH dapat dihabiskan dengan menyediakan Witness Script, yang merupakan setara SegWit dari redeemScript, dan tanda tangan dan kunci publik yang diperlukan oleh Witness Script. Mirip dengan input P2WPKH yang meninggalkan ScriptSig kosong, input P2WSH harus memiliki bidang ScriptSig kosong dan menempatkan Script Witness — yang terdiri dari tanda tangan dan kunci publik yang diperlukan — di bidang witness.

Wrapped SegWit

Pengenalan dua jenis skrip baru adalah perubahan besar pada protokol Bitcoin, dan banyak dompet, aplikasi, dan layanan yang berbeda tidak dapat diharapkan untuk segera mengakomodasi perubahan besar ini. Untuk memudahkan adopsi SegWit secara bertahap, jembatan dibangun antara jenis skrip lama dan jenis skrip SegWit.

Jembatan ini disebut wrapped SegWit, dan merupakan bentuk skrip P2SH lama. Skrip Wrapped SegWit mengambil skrip SegWit asli, P2WPKH atau P2WSH, dan menggunakannya sebagai redeemScript dari skrip P2SH. Dua jenis skrip wrapped SegWit adalah P2SH-P2WPKH dan P2SH-P2WSH.

Desain ini memungkinkan dompet lama dan perangkat lunak lainnya untuk mengirim bitcoin ke alamat SegWit meski mereka tidak mendukung SegWit. Penerima transaksi wrapped SegWit dapat menghabiskan bitcoin sebagai input SegWit, dan dengan demikian menghemat biaya.

Skema pengkodean baru SegWit

Peningkatan SegWit juga memperkenalkan skema pengkodean baru untuk alamat SegWit, yang disebut Bech32. Sebelum SegWit, alamat Bitcoin dan kunci privat telah dikodekan menggunakan Base58, skema yang menggunakan huruf besar dan kecil.

Bech32 diajukan dan diterima sebagai peningkatan atas Base58 karena tidak pernah menggunakan campuran huruf besar dan kecil, membuatnya lebih mudah dibaca, lebih mudah dibaca atau ditranskripsi, dan lebih cocok untuk pengkodean QR. Selain itu, Bech32 memiliki mekanisme deteksi kesalahan bawaan untuk membantu pengguna dan dompet mendeteksi dan bahkan memperbaiki kesalahan pengetikan atau perubahan alamat.

Bech32 juga membuat alamat SegWit asli mudah dikenali, karena mereka hanya menggunakan huruf kecil dan dimulai dengan “bc1”. Karena Bech32 hanya menggunakan 32 karakter, alamat ini sedikit lebih panjang dari alamat Base58, tetapi mereka mengambil lebih sedikit ruang di blockchain itu sendiri.

Bech32 juga digunakan untuk mengkodekan faktur Lightning, yang dimulai dengan ‘lnbc1’.

Sejarah dan Aktivasi SegWit

Peningkatan SegWit adalah peningkatan yang sangat kontroversial untuk Bitcoin, dan memiliki dampak yang berkepanjangan pada proses pengembangan dan komunitas. Namun, keberhasilan Bitcoin dalam menghadapi tantangan semacam itu membuktikan kepada banyak orang betapa tangguhnya Bitcoin.

SegWit pertama kali diajukan untuk Bitcoin Core pada tahun 2015 untuk menyelesaikan masalah malleability transaksi dan membebaskan lebih banyak ruang di blockchain. Namun, selama waktu ini, anggota komunitas khawatir tentang kemampuan Bitcoin untuk meningkatkan skala dan menangani jumlah transaksi yang semakin banyak.

Dalam upaya untuk meningkatkan skala Bitcoin, beberapa anggota komunitas Bitcoin mengusulkan SegWit2x, yang memperkenalkan SegWit dan menggandakan batas bobot blok menjadi 8 unit bobot, setara dengan 2MB. SegWit2x mendapatkan dukungan dari 95% penambang, seperti yang diukur oleh hash rate. Lebih dari 50 bisnis di industri Bitcoin menandatangani perjanjian yang disebut New York Agreement, berjanji untuk mengaktifkan SegWit2x dan menggandakan ukuran blok.

Perjanjian New York (NYA) adalah perubahan dari proses konsensus sumber terbuka Bitcoin. Untuk alasan ini, NYA tidak menerima dukungan yang cukup dari operator node dan developer dan akhirnya gagal.

Sebaliknya, developer yang sebelumnya tidak dikenal mengusulkan BIP 148, yang mendapatkan dukungan dari operator node dan mampu mengimplementasikan SegWit sambil menolak SegWit2x. Untuk mendorong perubahan ini, banyak node mengadopsi implementasi alternatif dari Bitcoin Core, yang memaksa penambang untuk mengadopsi SegWit atau mengambil risiko penolakan blok mereka.

Mengapa Operator Node Menentang SegWit2x

Operator node menyimpan seluruh blockchain, dan banyak operator node menggunakan mesin kecil, berdaya rendah untuk melakukannya. SegWit2x akan lebih dari menggandakan laju pertumbuhan blockchain, memaksa operator node untuk menyimpan data yang tumbuh dengan cepat. Ini akan memberikan biaya pada operator node, memperlambat download blok awal (IBD) dan mengecilkan semangat pengguna untuk menjalankan node.

Sebagian besar developer juga menentang SegWit2x karena alasan yang sama. Mereka khawatir bahwa jika lebih sedikit individu yang dapat menjalankan node, jaringan akan menjadi lebih terpusat dan dengan demikian kurang tahan terhadap sensor dan penangkapan.

Apa yang Kita Pelajari Dari SegWit

Argumen yang diperdebatkan tentang SegWit dan SegWit2x menunjukkan bahwa node, bukan penambang, bisnis, atau bahkan developer, yang mengendalikan jaringan. Node yang menjalankan perangkat lunak mereka sendiri mampu menolak mayoritas penambang dan melaksanakan SegWit sambil menolak SegWit2x.

Ini memberikan kepercayaan kepada pengguna Bitcoin bahwa aturan konsensus Bitcoin, termasuk batas keras Bitcoin sebanyak 21 juta, tidak dapat diubah tanpa persetujuan operator node.