P2WPKH (Pay to Witness Public Key Hash)
Last updated
Last updated
Di tahun 2015, Pieter Wuille memperkenalkan sebuah fitur bitcoin yang disebut dengan Segregated Witness atau yang disingkat dengan, segwit. Pada dasarnya, Segregated Witness memindah proof of ownership dari bagian scriptSig pada sebuah transaksi, kepada sebuah bagian yang disebut dengan witness dari sebuah input.
Ada sejumlah alasan yang diungkap mengapa menggunakan skema baru ini. Berikut adalah penjelasannya, anda bisa melihatnya di sini: https:\/\/bitcoincore.org\/en\/2016\/01\/26\/segwit-benefits\/
Third party Malleability Fix: Pada awalnya, third party bisa merubah id transaksi pada transaksi anda sebelum di konfirmasi. Hal tersebut tidak perlu lagi dilakukan.
Linear sig hash scaling: Penandatanganan transaksi membutuhan hashing keseluruhan input transaksi. Ini berpotensi terjadi serangan DDoS vector pada transaksi yang besar.
Signing of input values: Jumlah pengeluarkan pada input juga ditandatangani, artinya penandatangan juga tidak bisa memungkiri sejumlah biaya transaksi yang disertakan juga dalam transaksi.
Capacity increase: Memungkinkan untuk mempunyai transaksi lebih dari 1MB setiap 10 menit, meningkat sekitar 1.75.
Fraud proof: Akan dikembangkan lebih lanjut, namun wallet SPV akan mampu memvalidasi aturan konsensus ketimbang hanya dengan mengikuti rantai block terpanjang saja.
Sebelum tandatangan transaksi dimasukkan ke kalkulasi id transaksi, itu tidak diperlukan lagi.
Tanda tangan digital ini menyimpan informasi yang sama seperti pada pengeluaran di P2PKH, namun terletak di witness menggantikan scriptSig. SementarascriptPubKey,
adalah hasil modifikasi dari
Menjadi
Setiap node yang masih belum mengupgrade software mereka, akan nampak seperti menempatkannya pada stack. Artinya disini pada berbagaiscriptSig
dapat dibelanjakan. Sehingga meski tanpa sebuah signature, node lama akan menganggap transaksi tersebut adalah transaksi yang valid. Sedangkan node baru, pertama akan menginterpretasi versi witness, dan kedua di "push" sebagai witness program.
Namun kedua kedua node tersebut masih membutuhkan signature untuk memverifikasi transaksi.
Pada NBitcoin, output pengeluaran P2WPKH output tidak berbeda dengan P2PKH secara normal.
Untuk mendapatScriptPubKey
dan menggunakannya dari sebuah public key, digunakanPubKey.WitHash
menggantikan PubKey.Hash
.
Outputnya, akan nampak seperti ini
Penandatanganan traksaksi pengeluaran ini akan dijelaskan pada bahasan “Penggunaan TransactionBuilder
”, hampir tidak berbeda sebenarnya, pada banyak hal, dari kode penandatanganan output P2PKH.
witness
, sama padascriptSig
dari P2PKH, dan scriptSig
kosong:
Jadi sekali lagi semantic P2WPKH sama dengan semantic dari P2PKH, kecuali pada signature tidak diletakkan pada lokasi yang sama seperti sebelumnya.