P2W* diatas P2SH
Saat menggunakan witness scriptPubKey dalam scripting anda, masih ada kebutuhan yang harus terpenuhi, karena kenyataannya sebagaian besar wallet saat ini hanya support address P2PKH atau P2SH.
Untuk dapat memanfaatkan keuntungan dari segwit, masih kompatibel juga pada software lama, seperti pada P2W atau P2SH. Node lama, akan membacanya seperti pada pembayaran normal P2SH.
Anda dapat mengubah setiap P2W* menjadi P2W* over P2SH dengan cara:
Mengganti ScriptPubKey dengan P2SH.
ScriptPubKey yang telah digantikan, ditempatkan sebagai satu-satunya dorongan dalam scriptSig untuk transaksi pengeluaran,
Semua data lain akan menjadi pendorong dalam witness pada transaksi pengeluaran.
Agak rumit memang, namun jangan khawatir, karena TransactionBuilder dapat memudahkan abstraksi pembuatannya menjadi lebih efektif.
Mari kita ambil contoh pada P2WPKH melalui P2SH, atau yang disebut dengan P2SH(P2WPKH).
Printing ScriptPubKey:
Catatan: Kode diatas cukup mengagumkan.
Yang membuat scriptPubKey P2SH banyak dikenal.
Lalu, menandatangani output transaksi pengeluaran seperti ini:
ScriptSig hanya menekan script redem P2SH pada ScriptPubKey sebelumnya (atau key.PubKey.WitHash.ScriptPubKey).Witness sama seperti pembayaran P2WPKH.
Dalam NBitcoin, penandatanganan sebuah P2SH(P2WPKH) sama persis seperti penandatanganan P2SH secara normal dengan ScriptCoin.
Dengan prinsip yang sama, kita coba melihat bagaimana sebuah P2SH(P2WSH) akan terlihat. Anda perlu memahami bahwa dalam hal ini, kita berhadapan pada dua redem sript yang berbeda: P2SH redeem script yang dimasukkan kedalam scriptSig dari transaksi pengeluaran, dan juga P2WSH redeem script yang dimasukkan ke dalam witness.
ScriptPubKey pada aturan yang pertama:
Mengganti ScriptPubKey dengan P2SH yang setara.
Warning: It makes sense, don't try whiny ragequitting!
ScriptPubKey yang telah digantikan, akan ditempatkan untuk mendorong scriptSig pada transaksi pengeluaran,
Semua data lain akan jadi pendorong witness dalam transaksi pengeluaran,
Untuk yang ke-3. Pada ‘data lain’ tersebut, dalam konteks pembayaran P2WSH berarti menjadi parameter dari P2WSH redeem script, diikuti dengan dorongan sebuah P2WSH redeem script.
Singkatnya, script redem P2SH di hash untuk mendapat scriptPubKey P2WSH sebagai pembayaran normal P2WSH. Kemudian, sebagai sebuah pembayaran normal P2SH, scriptPubKey P2WSH digantikan oleh hash dan digunakan untuk membuat P2SH yang sebenarnya.
Jika P2SH\/P2WSH\/P2SH(P2WSH)\/P2SH(P2WPKH) nampak cukup rumit, jangan khawatir. NBitcoin, untuk semua tipe pembayaran tersebut, anda hanya membutuhkan membuat sebuah ScriptCoin dengan menerapkan redem script (script redem P2WSH atau P2SH) dan ScriptPubKey, sama persis seperti yang telah dijelaskan pada pembahasan P2SH.
Pada NBitcoin, anda hanya perlu menentukan output transaksi pengeluaran, dengan redem script yang tepat. Sementara pada TransactionBuilder akan mencari cara bagaimana menandatanganinya dengan tepat sama halnya yang telah dijelaskan pada pembahasan Multi Sig. Selanjutnya dibahas di pembahasan “Penggunaan TransactionBuilder”.
Kompatibel untuk P2SH\/P2WSH\/P2SH(P2WSH)\/P2SH(P2WPKH)
Anda dapat mencari contoh pembayaran P2W* di http:\/\/n.bitcoin.ninja\/checkscript
Last updated