MSTR Cat

Blockchain/Tahap IV · Kedalaman protokol/4.1 Script/Pelajaran 7

Segregated Witness dan kebolehubahan transaksi

ID yang tidak stabil, tandatangan yang dipisahkan, dan penyelesaian yang membuka jalan kepada Lightning

BahanPenjelajah blok (block explorer) dengan keupayaan output JSONRentetan heksadesimal transaksi P2PKH sebelum SegWit (dari tahun 2016 atau lebih awal)Rentetan heksadesimal transaksi P2WPKH selepas SegWit

Ingin tahu

  1. Mengapakah orang asing boleh mengubah identiti sesuatu transaksi tanpa menjejaskan kesahihannya?
  2. Bagaimanakah pemindahan tandatangan keluar daripada hash membetulkan kebolehubahan transaksi sambil memastikan tandatangan itu kekal dilindungi oleh konsensus?
  3. Apakah berat blok, dan mengapa pemberian diskaun kepada data saksi meningkatkan kapasiti?

Teroka

  1. Sebelum SegWit, ID transaksi (txid) ialah hasil SHA-256 berganda bagi keseluruhan transaksi, termasuk tandatangan. Pihak ketiga boleh mengekod semula sesuatu tandatangan, contohnya dengan menegatifkan nilai s atau mengubah cara tandatangan itu ditolak (push), tanpa menjadikannya tidak sah, lalu menghasilkan txid baharu bagi pembayaran yang sama. Kebolehubahan ini memutuskan rantaian transaksi yang belum disahkan: jika transaksi anak milik Alice merujuk transaksi induknya melalui ID, transaksi induk yang telah diubah akan menjadikan transaksi anak itu yatim (orphan), lalu mengelirukan dompet dan bursa yang menjejak pembayaran.
  2. Mt. Gox memetik mekanisme ini pada Februari 2014 untuk menjelaskan kekacauan dalaman semasa keruntuhannya, walaupun analisis kemudian menunjukkan bahawa ia hanya menyumbang sebahagian kecil daripada kerugian yang dilaporkan. Kelemahan ini berterusan kerana tandatangan ECDSA sememangnya boleh diubah dari segi perwakilan baitnya; pihak ketiga, dan selepas BIP66 serta peraturan low-S terutamanya pelombong, boleh menulisnya semula. Ketidakstabilan ini menjadikan pembinaan saluran pembayaran dua hala seperti Lightning tidak selamat, kerana keadaan saluran bergantung pada ID transaksi yang khusus dan boleh diramal sebelum pengesahan.
  3. Segregated Witness (BIP141), yang diaktifkan pada 24 Ogos 2017 pada blok 481,824, menyelesaikan masalah ini dengan memisahkan data saksi daripada badan transaksi. Kini txid hanya mencincang (hash) medan bukan saksi, menjadikannya kebal terhadap perubahan pengekodan tandatangan. Data saksi kekal dalam struktur berasingan di dalam transaksi mentah tetapi dikecualikan daripada hash identiti. Pihak ketiga tidak lagi dapat mengubah txid, sementara tandatangan masih diperiksa sepenuhnya oleh konsensus.
  4. Data saksi dikomitkan melalui pokok Merkle yang dirujuk dalam transaksi coinbase setiap blok, sekali gus memastikan ia tidak boleh dibuang atau diubah tanpa menjadikan blok tersebut tidak sah. Walaupun dipisahkan daripada txid, data saksi masih dikira dalam had saiz blok di bawah metrik baharu, iaitu “berat”: 4,000,000 unit berat bagi setiap blok. Setiap bait bukan saksi dikira sebagai 4 unit berat dan setiap bait saksi sebagai 1, maka transaksi yang sarat dengan tandatangan lebih mudah dimuatkan.
  5. BIP143 memperkenalkan skema pencincangan tandatangan baharu yang menghapuskan kos pencincangan kuadratik bagi transaksi yang mempunyai banyak input. BIP141 mentakrifkan program saksi versi 0, iaitu P2WPKH dan P2WSH, yang menjadi standard untuk alamat baharu, manakala BIP144 menetapkan cara data saksi dipindahkan antara peer. Perubahan ini bukan sahaja membetulkan kebolehubahan transaksi, malah turut meletakkan asas bagi naik taraf masa hadapan seperti Taproot dengan mewujudkan rangka kerja program saksi berversi yang membolehkan evolusi skrip tanpa melanggar peraturan konsensus sedia ada.
  6. Buka penjelajah blok dan cari transaksi P2WPKH yang terkini. Periksa transaksi itu: tandatangan terdapat dalam medan “witness” yang berasingan, bukan dalam scriptSig input, dan txid dikira tanpa tandatangan tersebut. Bandingkan dengan transaksi P2PKH sebelum SegWit dari tahun 2016, yang tandatangannya terletak dalam scriptSig dan oleh itu turut mempengaruhi txid. Pemisahan yang jelas kelihatan ini mengesahkan bahawa data saksi tidak lagi mempengaruhi identiti transaksi.

Fakta utama

  • Segregated Witness diaktifkan pada 24 Ogos 2017, pada blok 481,824.
  • Kebolehubahan transaksi membolehkan pihak ketiga menukar txid dengan mengubah pengekodan tandatangan ECDSA tanpa menjadikan transaksi tersebut tidak sah.
  • BIP141 memindahkan tandatangan ke dalam struktur saksi yang berasingan, yang dikecualikan daripada pengiraan txid.
  • Berat blok dihadkan kepada 4,000,000 unit, dengan data saksi diberi diskaun sebanyak faktor empat berbanding data bukan saksi.
  • BIP143 memperkenalkan skema pencincangan tandatangan yang menghapuskan kos pencincangan kuadratik bagi transaksi yang mempunyai banyak input.
  • BIP141 memperkenalkan program saksi bernombor versi (versi 0: P2WPKH dan P2WSH), sekali gus memberi ruang untuk versi seterusnya seperti Taproot.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 akibat teknikal atau ekonomi kebolehubahan transaksi (malleability) sebelum tahun 2017. Nyatakan pihak mana yang terjejas: pengguna, dompet, bursa atau pembangun protokol.
6KelompokkanKumpulkan 9 perkara tersebut ke dalam 6 kategori: ketidakstabilan ID, putusnya rantaian transaksi yang belum disahkan, kekeliruan bursa, ketidakmungkinan saluran pembayaran, kebolehubahan pengekodan tandatangan, dan jurang perlindungan konsensus.
3SaringKurangkan 6 kategori tersebut kepada 3 sebab utama mengapa kebolehubahan transaksi menghalang saluran pembayaran yang boleh diskalakan sebelum SegWit.
1KristalkanTulis 1 ayat tentang bagaimana pemisahan data saksi (witness) daripada hash txid sekali gus membetulkan kestabilan ID dan membolehkan naik taraf skrip pada masa hadapan.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR