Bitcoin Forum
May 09, 2024, 08:13:30 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: 1 2 [All]
  Print  
Author Topic: [Edukasi] Proses Transaksi & Block di Jaringan Blockchain Bitcoin  (Read 671 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 03, 2024, 08:13:23 PM
Last edit: February 18, 2024, 01:49:26 PM by punk.zink
Merited by ABCbits (6), Husna QA (5), ryzaadit (2), masulum (2), khiholangkang (2), bayu7adi (2), AakZaki (1), DdmrDdmr (1), AprilioMP (1), Pandorak (1)
 #1

Index




[Edukasi] Proses Transaksi & Block di Jaringan Blockchain Bitcoin

Secara umum pada saat seseorang mengirimkan BTC dari wallet yang dimilikinya ke Wallet milik orang lain, maka pada saat transaksi tersebut mendapatkan konfirmasi Block, secara otomatis Balance pada kedua Wallet akan mengalami perubahan. Sederhananya Balance dari pengirim akan berkurang dan Balance milik penerima akan bertambah sebesar jumlah nilai transaksi yang dilakukan.

Pada prakteknya, proses transaksi dari satu address ke address lainnya di dalam jaringan Bitcoin harus melalui proses komputasi dan prosedur yang cukup kompleks yang melibatkan keseluruhan Node yang ada di Jaringan Bitcoin. Disini, akan saya jelaskan mengenai flow sebuah transaksi dan bagaimana transaksi tersebut mendapatkan konfirmasi block, sehingga output dari transaksi tersebut bisa digunakan sebagai referensi (UTXO) buat transaksi-transaksi selanjutnya.


● Proses Transaksi

◉ Pada saat sebuah transaksi baru dibuat, secara umum transaksi tersebut akan berisikan address pengirim, address penerima, besaran BTC yang dikirimkan dan besaran fee transaksi. Sebenarnya yang menjadi nilai besaran BTC yang akan dikirimkan adalah UTXO yang merupakan Output dari transaksi yang belum digunakan. UTXO tersebut digunakan sebagai Input yang merupakan referensi dari transaksi yang dipilih, sehingga pada Input akan berisikan hash dan indeks dari TXID yang mewakili UTXO. Sementara pada Output berisikan intruksi untuk mengirimkan BTC (berapa besar jumlah BTC yang dikirimkan, dan address penerima transaksi).

◉ Transaksi yang dibuat harus ditandatangani terlebih dahulu menggunakan private key melalui proses kriptografi. Selain sebagai tanda persetujuan, hal ini juga menjadi bukti bahwa UTXO yang digunakan dalam Input adalah milik si pengirim, sekaligus akan menciptakan UTXO baru bagi pemilik address penerima.

◉ Setelah transaksi dibuat dan ditandatangani, maka transaksi tersebut akan memiliki struktur dengan Version, Flag, Input Count, Input, Output Count, Output, Witness data dan Locktime didalamnya. Sebagai contoh saya menggunakan transaksi 55fc28c1ca463fc27c7092d5776d6d78a2607741bb622bd888d0da5cedbd2903, yang jika diuraikan RAW data dari transaksi tersebut adalah sebagai berikut :


RAW Transaction
0200000000010151ab9ecdaeb374eacdd52ea3c56ef65ab3c1a5017b851e54a55872cf604a144d0 100000000fdffffff02357b140000000000160014cf63468044aedeb9e83d594bf958970951d953 ca1147d300000000001600144a15270d0f29348f4733b3e8306ed612eadc1c6f024730440220186 a25919f4c5c9b24db4296336763ed2a1d6267c97ff13104a42e3bac564723022078fa2ad2db73a9 6023df6b482c5c5c7b0599378f224d1e609af7f024d277c2f7012102f264b13d35294c6bcdea229 f229645ad990989816be46605599579a5f947f337dd3b0b00

Transaction Structure
02000000 0001 01 51ab9ecdaeb374eacdd52ea3c56ef65ab3c1a5017b851e54a55872cf604a144d 01000000 00 fdffffff 02 357b140000000000 16 0014cf63468044aedeb9e83d594bf958970951d953ca 1147d30000000000 16 00144a15270d0f29348f4733b3e8306ed612eadc1c6f 02 47 30440220186a25919f4c5c9b24db4296336763ed2a1d6267c97ff13104a42e3bac564723022078f a2ad2db73a96023df6b482c5c5c7b0599378f224d1e609af7f024d277c2f701
21 02f264b13d35294c6bcdea229f229645ad990989816be46605599579a5f947f337 dd3b0b00



Version02000000Menyatakan Versi 2
Witness Flag*0001Marker 0x00 , Flag 0x01
Input Count01Jumlah Input 1
Hash of referenced Tx51ab9ecdaeb374eacdd52ea3c56ef65ab3c1a5017b851e54a55872cf604a144dHash dari transaksi yang digunakan sebagai input
Index of transaction output01000000Index dari UTXO, Vout = 1
ScriptSig Size001 byte yang menyatakan Ukuran dari Unlocking-Script
Sequence Numberfdffffffdiasumsikan sebagai RBF karena fdffffff < ffffffff
Output Count02Jumlah Output 2
Amount Output 1357b1400000000001342261 satoshis = 0.01342261 BTC
ScriptPubKey Size Output 116Menyatakan ukuran 22 bytes
ScriptPubKey Output 10014cf63468044aedeb9e83d594bf958970951d953caOP_0 OP_PUSHBYTES_20 <20-byte hash>
Amount Output 21147d3000000000013846289 satoshis = 0.13846289 BTC
ScriptPubKey Size Output 216Menyatakan ukuran 22 bytes
ScriptPubKey Output 200144a15270d0f29348f4733b3e8306ed612eadc1c6fOP_0 OP_PUSHBYTES_20 <20-byte hash>
Count of witness components*02Jumlah Witness Component 2
Witness size component 1*47Menyatakan ukuran 71 bytes
Witness data component 1*3044022018.........................................024d277c2f701Data yang merupakan script signature
Witness size component 2*21Menyatakan ukuran 33 bytes
Witness data component 2*02f264b13d35294c6bcdea229f229645ad990989816be46605599579a5f947f337Data yang merupakan script signature
Locktimedd3b0b00Block Height 736221

* Merupakan part dari Witness (Segwit) Transaction, untuk Non - Witness Transaction akan memiliki witness field kosong



◉ Transaksi diatas merupakan Segwit Transaction yang ketika dikirimkan ke Jaringan Blockchain Bitcoin, transaksi tersebut akan memiliki 2 IDs (identifiers) yakni TXID dan WTXID.

WTXID merupakan hash (double-sha256) dari keseluruhan struktur transaksi yang dibuat termasuk witness data, sehingga jika diimplementasikan pada RAW Transaction diatas akan didapatkan hash sebagai berikut
Code: (WTXID)
c727e500a9565be2630fa540fbd26de3dd5a0763deda09d1d4a6cbd42ebfcc77

TXID merupakan hash (double-sha256) dari sebuah transaksi yang pada strukturnya semua part dari witness tidak diikutsertakan. Pada transaksi diatas jika part dari witness data dihilangkan akan didapatkan RAW Transaction sebagai berikut
Code: (RAW TX Without Witness)
020000000151ab9ecdaeb374eacdd52ea3c56ef65ab3c1a5017b851e54a55872cf604a144d0100000000fdffffff02357b140000000000160014cf63468044aedeb9e83d594bf958970951d953ca1147d300000000001600144a15270d0f29348f4733b3e8306ed612eadc1c6fdd3b0b00

Jika dilakukan Double-Sha256 pada raw transaction (no-witness data) tersebut maka akan didapatkan TXID
Code: (TXID)
55fc28c1ca463fc27c7092d5776d6d78a2607741bb622bd888d0da5cedbd2903


◉ Setelah transaksi di broadcast ke Jaringan Blockchain Bitcoin, maka transaksi tersebut akan divalidasi dan dimasukan kedalam Memory (Transaction) Pool dari masing-masing Node yang ada di Jaringan Bitcoin dengan status "Unconfirmed".

◉ Semua transaksi yang berada di dalam Mempool, memiliki chance untuk bisa masuk ke dalam kandidat Block berdasarkan dengan nilai fee transaksi yang digunakan, dimana pada umumnya kandidat Block akan memprioritaskan transaksi yang memiliki nilai fee lebih tinggi.

Untuk pembahasan mengenai bagaimana transaksi masuk ke dalam kandidat Block dan bagaimana kandidat Block itu dibuat sehingga bisa menjadi sebuah Block yang valid, akan diulas di post #2

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Even in the event that an attacker gains more than 50% of the network's computational power, only transactions sent by the attacker could be reversed or double-spent. The network would not be destroyed.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715242410
Hero Member
*
Offline Offline

Posts: 1715242410

View Profile Personal Message (Offline)

Ignore
1715242410
Reply with quote  #2

1715242410
Report to moderator
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 03, 2024, 08:14:34 PM
Last edit: February 18, 2024, 01:36:17 PM by punk.zink
Merited by ABCbits (5), Husna QA (5)
 #2

● Proses Block

◉ Setiap Node Mining yang membuat sebuah kandidat Block, akan mengumpulkan data-data terlebih dahulu (contoh: Menggunakan perintah getblocktemplate), dimana data-data ini meliputi

  • previousblockhash (hash dari Block sebelumnya)
  • version (versi block yang digunakan)
  • transactions (list transaksi yang berada di Mempool)
  • txid (hash dari masing-masing transaksi)
  • fee (nilai fee dari masing-masing transaksi)
  • coinbaseaux (data yang harus disertakan dalam scriptSig coinbase)
  • coinbasevalue (input maksimum buat Coinbase Transaction (meliputi block subsidy dan fee transaksi)
  • target (hash dari Target)
  • bits (versi compact dari Target)
  • version (versi block yang digunakan)
  • noncerange (rentang nonce yang bisa digunakan)
  • dan data-data lainnya

◉ Setelah data-data yang dibutuhkan untuk membuat sebuah kandidat Block didapatkan, selanjutnya Node Mining akan membuat Coinbase Transaction, sampai didapatkan hash dari Coinbase Transaction tersebut.
Contoh didapatkan hash Coinbase Transaction 80243726711825d60e33a86603ac9fe08bcad9946c21e52679f2b78d5ad87b77

◉ Selanjutnya adalah menyusun Merkle Tree dengan meletakkan hash Coinbase Transaction sebagai TXID pertama dan diikuti oleh hash (TXID) dari transaksi-transaksi yang lain secara berpasangan, lalu dilakukan hash (Double-Sha256) secara continue sampai didapatkan sebuah hash tunggal yang mewakili hash dari Merkle Root. Jika dalam prosesnya ditemukan TXID yang tidak memiliki pasangan, maka TXID tersebut akan dipasangkan dengan dirinya sendiri.
Contoh didapatkan hash Merkle Root 88e7d06f5990ab82c9a824614852cbda8714da569b0a260a59ddf971bf79bbe2

◉ Menyusun Block Header berdasarkan data-data yang telah dikumpulkan dan dibuat, lalu melakukan proses hash function (Double-Sha256) pada Block Header tersebut sampai didapatkan Hash yang memenuhi kriteria Target. Pada prosesnya akan digunakan berbagai nilai nonce (berdasarkan rentang nonce yang diijinkan) dan memungkinakan untuk menggunakan Hash merkle root yang berbeda, sampai didapatkan nilai Hash <= Hash Target untuk menjadi sebuah kandidat Block yang valid.

Contoh: diketahui dan didapatkan

version620781568
previousblockhash00000000000000000000e9fd4d729d55b6feab0c351996fb21029d0c4537b3a7
merkleroot88e7d06f5990ab82c9a824614852cbda8714da569b0a260a59ddf971bf79bbe2
time1652452910
bits170901ba
nonce1746394120
target0000000000000000000901ba0000000000000000000000000000000000000000

Untuk menyusun Block Header menggunakan data-data diatas, maka harus dalam bentuk format Little-endian dan untuk setiap data numeric harus dirubah terlebih dahulu ke bentuk hexadecimal, dengan urutan susunan : version, previousblockhash, merkleroot, time, bits, nonce.

Dengan setiap perubahannya maka untuk data-data diatas disusun menjadi sebuah Block Header sebagai berikut
00600025 a7b337450c9d0221fb9619350cabfeb6559d724dfde900000000000000000000 e2bb79bf71f9dd590a260a9b56da1487dacb52486124a8c982ab90596fd0e788 2e6e7e62 ba010917 08dc1768

◉ Melakukan hash function (Double-Sha256) pada Block Header, dan hasilnya dianggap sebagai Hash kandidat Block
Dari contoh diatas didapatkan Hash kandidat Block 00000000000000000000a140a8357f92507aef3eb44bb4c468b97cfaf4b447d7

◉ Mem-verifikasi Hash kandidat Block apakah sudah memenuhi kriteria Hash Target (Hash <= Target)
Hash kandidat Block 00000000000000000000a140a8357f92507aef3eb44bb4c468b97cfaf4b447d7 = 6.0331747892522E+52 (dalam bentuk Decimal)
Hash Target 0000000000000000000901ba0000000000000000000000000000000000000000 = 8.6267472546076E+53 (dalam bentuk Decimal)

◉ Karena Hash kandidat Block kurang dari Hash Target, maka Hash Kandidat Block dianggap memenuhi kriteria Hash Target, dan selanjutnya Kandidat Block tersebut di Broadcast oleh node mining yang membuatnya ke dalam Jaringan Bitcoin.

◉ Pada saat kandidat Block tersebut dikenali oleh node-node lain di jaringan dan mendapatkan verifikasi, maka kandidat Block tersebut akan ditambahkan ke Jaringan Blockchain sebagai sebuah Block yang Valid.

◉ Ketika Block tersebut berhasil ditambahkan ke Jaringan Blockchain, maka untuk setiap transaksi yang berada didalam Block tersebut akan mendapatkan 1 konfirmasi Block.

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 08, 2024, 06:10:50 AM
Last edit: February 18, 2024, 01:40:59 PM by punk.zink
Merited by ABCbits (4)
 #3


● Membuat sebuah transaksi


  • Membuat transaksi dengan Bitcoin GUI Wallet
  • Membuat transaksi dengan RPC Commands
  • Membuat transaksi secara manual (Create Transaction from the Scratch)




Membuat transaksi dengan Bitcoin GUI Wallet


◉ Membuat Transaksi melalui Bitcoin Core GUI Client

Ini merupakan cara yang paling mudah dan mayoritas pengguna Bitcoin Core client tidak akan menemui kendala pada prosesnya. Sebagai contoh saya akan mengutip sebuah guide yang pernah diuraikan oleh agan Husna QA


B. Send Bitcoin



- Pay to : Isi dengan Bitcoin Address yang akan dituju; Jika ingin mengirim ke address yang pernah dikirimi sebelumnya klik tombol di samping kanan kolomnya (ikon buku alamat).

- Label : Bisa dikosongkan atau diisi diantaranya untuk memudahkan pencarian pada transaksi berikutnya.

- Amount : Diisi dengan jumlah aset yang akan dikirim, satuannya bisa disesuaikan: BTC ; mBTC ; µBTC (bits) ; Satoshi (Sat)
(Mengenai satuan-satuan bitcoin bisa dipelajari antara lain di sini: https://bitcoinmedia.id/satuan-bitcoin/)

- Klik tombol Use available balance jika ingin mengirim semua aset yang ada.

- Subtract fee from amount : Centang jika fee transaksi ingin diambil dari jumlah transaksi, jika tidak maka fee akan diambil diluar dari jumlah transaksi yang ditentukan.

- Transaction fee : Terdapat dua pilihan: Recommended dan Custom
Pada pilihan Recommended terdapat beberapa opsi fee yang bisa dipilih pada Confirmation time target (sesuaikan dengan kebutuhan).
Sementara pada Custom bisa di setting manual, namun perlu diperhatikan agar tidak terpaut jauh dengan fee rates yang berlaku pada saat transaksi;

Gunakan web semisal https://mempool.space/ untuk mengetahui estimasi berapa saja besaran fee dan waktu transaksinya sampai terkonfirmasi.
Referensi lainnya: List of Bitcoin Mempool Viewers for Reference.


- Enable Replace-By-Fee : Fitur RBF ini berfungsi agar bisa menaikkan fee pada transaksi yang sebelumnya sudah terkirim namun kondisinya masih unconfirmed dengan mengganti tx tersebut menggunakan tx yang baru.
Informasi lebih detail mengenai RBF bisa dilihat di sini: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki.

Note:
Sedikit berbeda dengan di Electrum, saya sarankan agar bisa memanfaatkan fitur RBF di Bitcoin Core usahakan masih ada balance yang cukup di wallet untuk keperluan increase transaction fee, jika tidak cukup balance-nya maka kemungkinan akan muncul notifikasi seperti berikut:



- Add Recipient : berfungsi untuk mengirim ke beberapa address sekaligus.

- Klik Send jika semua parameter yang diinput sudah sesuai atau klik Clear All untuk membatalkan transaksi yang hendak dibuat tersebut.

Berikut ini contoh transaksi yang saya kirim ke beberapa address wallet sekaligus:



Ketika klik Send, maka akan dimunculkan window untuk mereview transaksi (periksa kembali detail transaksinya seperti pada address, amount, fee)



Transaksi ke Address 1 & 2:
https://blockstream.info/testnet/tx/60c7c83c3aa2d103a3702f27bb243dd918178e7a56fe0193eba18107a33c4365

* Credit to Husna QA



◉ Membuat Transaksi melalui Electrum GUI

  • Jalankan Wallet Electrum
  • Pilih Fitur "Send" [1]
  • Masukkan address penerima pada kolom "Pay to" [2]
  • Masukkan jumlah BTC yang akan dikirimkan pada kolom "Amount" [3]
  • Lalu klik Tab "Pay" [4]



  • Setelah itu akan muncul jendela preview "Create Transaction"
  • Untuk mengaktifkan fungsi RBF, berikan checklist pada Tab "Replace by fee" [5]
  • Untuk mengatur fee transaksi, silahkan di-adjust pada Tab "Target fee" [6]
  • Lalu tekan Tab "Finalize" [7]



  • Setelah itu akan muncul jendela preview "Transaction"
  • Untuk menandatangani Transaksi, klik Tab "Sign" [8]



  • Untuk menyebarkan transaksi ke Jaringan Blockchain, tekan Tab "Broadcast" [9]



  • Lalu akan muncul jendela "Information" yang menyatakan transaksi telah dikirimkan (beserta dengan TXID-nya)








Membuat transaksi dengan RPC Commands

Membuat sebuah transaksi menggunakan RPC Commands bisa dilakukan dengan beberapa cara, contoh seperti halnya menggunakan perintah send, sendtoaddress, dan createrawtransaction. Untuk sebuah alasan, saya memilih untuk menggunakan createrawtransaction karena dalam prosesnya kita bisa memilih UTXO yang akan dijadikan input buat transaksi tersebut.

  • Jalankan Bitcoin Core dan buka RPC Console (Pada contoh kali ini saya menggunakan Bitcoin Core Testnet)

  • Untuk mengetahui UTXO yang bisa digunakan, pakai perintah listunspent
Code:
listunspent

  • Didapatkan hasil sebagai berikut

Code: (result)
    "txid": "2675704bb770f99cb0063cf8355da88b5941014e2d883b94d977407626fecd9b",
    "vout": 0,
    "address": "mx2f9C4cL1cABKG6om5eHbvpe6ueXjZCyK",
    "label": "",
    "scriptPubKey": "76a914b5202c46e31f0627702e57a6640545b5048e2c3788ac",
    "amount": 0.00065240,
    "confirmations": 5,
    "spendable": true,
    "solvable": true,

  • Selanjutnya membuat transaksi menggunakan perintah createrawtransaction
Code:
createrawtransaction [{"txid":"hex","vout":n}] [{"address":amount}] ( locktime replaceable )

Code: (Contoh)
createrawtransaction '[{"txid":"2675704bb770f99cb0063cf8355da88b5941014e2d883b94d977407626fecd9b","vout":0}]' '[{"mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB":0.0001},{"n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt":0.0004524}]'
- Karena parameter locktime dan replaceable tidak diisi, maka secara default nilai dari locktime = 0, dan replaceable = true (menyatakan jika transaksi adalah RBF)
- Address pertama pada Output (mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB) merupakan address dari penerima (address testnet milik https://coinfaucet.eu/en/btc-testnet/)
- Address kedua pada Output (n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt) merupakan change address dari pengirim

  • Didapatkan hasil sebagai berikut

Code: (Hex Raw Transaction)
02000000019bcdfe26764077d9943b882d4e0141598ba85d35f83c06b09cf970b74b7075260000000000fdffffff0210270000000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acb8b00000000000001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac00000000

  • Menandatangani Transaksi menggunakan perintah signrawtransactionwithwallet

Code:
signrawtransactionwithwallet "hexstring"

Code: (Contoh)
signrawtransactionwithwallet 02000000019bcdfe26764077d9943b882d4e0141598ba85d35f83c06b09cf970b74b7075260000000000fdffffff0210270000000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acb8b00000000000001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac00000000

  • Didapatkan hasil sebagai berikut

Code: (result of signed_hex)
"hex": "02000000019bcdfe26764077d9943b882d4e0141598ba85d35f83c06b09cf970b74b707526000000006a47304402202261d1a8dd3009427036b569948ece8fb8732d8211770f7405cf3e777a1ed8400220773ab906cba6817fa1da7e9d8077ba1206ba80bd735809f7eb1405bb8486643b012103b0044231eac1e3495cc0a3769cf14dc1fefa5163c40a40b0ea0e9c8ec747e2dffdffffff0210270000000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acb8b00000000000001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac00000000",
"complete": true
Status boolean "complete": true, menyatakan jika transaksi telah memiliki Signature

  • Mengirimkan transaksi yang telah ditandatangani ke jaringan blockchain

Code:
sendrawtransaction "signed_hex"

Code: (Contoh)
sendrawtransaction 02000000019bcdfe26764077d9943b882d4e0141598ba85d35f83c06b09cf970b74b707526000000006a47304402202261d1a8dd3009427036b569948ece8fb8732d8211770f7405cf3e777a1ed8400220773ab906cba6817fa1da7e9d8077ba1206ba80bd735809f7eb1405bb8486643b012103b0044231eac1e3495cc0a3769cf14dc1fefa5163c40a40b0ea0e9c8ec747e2dffdffffff0210270000000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acb8b00000000000001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac00000000

  • Didapatkan hasil sebagai berikut

Code: (result of TXID)
e9fa95bdb80bc780ed92bc865d9b6ec07ba0c42a06d34009d6d0bef84a1ad793

TXID e9fa95bdb80bc780ed92bc865d9b6ec07ba0c42a06d34009d6d0bef84a1ad793 bisa dicek disini
https://tbtc.bitaps.com/e9fa95bdb80bc780ed92bc865d9b6ec07ba0c42a06d34009d6d0bef84a1ad793


Image dari keseluruhan proses dari Cara kedua (Membuat transaksi dengan RPC Commands)






Membuat transaksi secara manual (Create Transaction from the Scratch)

Ini merupakan cara yang paling rumit dan bahkan bisa dibilang jarang sekali yang menggunakan cara ini untuk membuat sebuah transaksi. Namun dalam hal ini, saya akan menguraikan caranya, sehingga bisa diketahui bagaimana sebuah RAW Transaction dibuat, disusun, ditandangani dan dikirimkan ke Jaringan blockchain (ini juga merupakan penjelasan secara detail dari membuat transaksi menggunakan cara kedua).

◉ Membuat Transaksi Non-Segwit

  • Pertama-tama harus diketahui Struktur dan susunan dari Transaksi Non-Segwit

Code:
Version >> Input Count >> Inputs (TXID > Index UTXO > Scriptsig Size > Scriptsig > nSequence) >> Output Count >> Outputs (Value > ScriptPubKey Size > ScriptPubKey) >> Locktime

  • Menentukan Version
    Misal dipilih Versi 2, jika direpresentasikan dalam bentuk Hex (4 bytes) Little-endian Format maka akan seperti ini : 02000000

  • Menentukan Jumlah Input
    Untuk 1 Input jika direpresentasikan ke bentuk Hex : 01

  • Menentukan UTXO (TXID) yang akan digunakan pada Input
    Untuk mengetahui UTXO/TXID beserta value amount dan indeknya bisa menggunakan perintah listunspent

Code: (result of listunspent)
    "txid": "e9fa95bdb80bc780ed92bc865d9b6ec07ba0c42a06d34009d6d0bef84a1ad793",
    "vout": 1,
    "address": "n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt",
    "label": "",
    "scriptPubKey": "76a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac",
    "amount": 0.00045240,

  • In-case kita tidak memiliki Bitcoin Core atau software wallet lainnya, maka untuk mengetahui TXID dari UTXO yang akan digunakan beserta Indeksnya, maka kita bisa melihatnya melalui situs Block Explorer. Yang terpenting kita memiliki Private Key dari address yang related dengan UTXO/TXID tersebut.



  • TXID harus direpresentasikan dalam bentuk format Little-Endian : 93d71a4af8bed0d60940d3062ac4a07bc06e9b5d86bc92ed80c70bb8bd95fae9

  • Menentukan Index UTXO
    Diketahui Index (vout) dari TXID diatas adalah 1, jika direpresentasikan dalam bentuk Hex (4 bytes) Little-endian Format maka akan seperti ini : 01000000

  • Mengisi (sementara) ScriptSig Size dan ScriptSig menggunakan data ScriptPubKey address pengirim
    ScriptPubKey bisa diketahui dari output TXID yang ditampilkan oleh situs Blockchain explorer



  • Diketahui ScriptPubKey adalah 76a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac dengan ukuran 25 bytes, maka
    ScriptSig Size direpresentasikan dengan 19 (bentuk hex dari 25 bytes)
    ScriptSig direpresentasikan dengan 76a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac

  • Menentukan nSequence
    Untuk transaksi RBF gunakan fdffffff, untuk transaksi non-RBF gunakan ffffffff

  • Menentukan jumlah Output
    Jika Output yang dipilih cuma 1 maka direpresentasikan ke bentuk Hex : 01

  • Menentukan jumlah amount pada Output
    Amount yang akan digunakan adalah 0.00033333 BTC = 33333 satoshis, maka harus dirubah ke bentuk 8 bytes Hex dan format Little-Endian : 3582000000000000

  • Mencari ScriptPubKey dan ScriptPubKey size dari address penerima
    Misal Address Penerima adalah mx2f9C4cL1cABKG6om5eHbvpe6ueXjZCyK, maka untuk mengetahui ScriptPubKey dari address tersebut bisa menggunakan perintah getaddressinfo atau mencari informasinya melalui situs Blockchain Explorer



  • Diketahui ScriptPubKey size adalah 25 bytes, maka direpresentasikan ke bentuk Hex : 19
  • Diketahui ScriptPubKey adalah 76a914b5202c46e31f0627702e57a6640545b5048e2c3788ac

  • Menentukan LockTime
    Dipilih Locktime = 0, maka direpresentasikan ke bentuk Hex (4 bytes) : 00000000

  • Menambahkan 4 bytes hash code type 01000000


◉ Menyusun keseluruhan string sesuai dengan urutannya, dan ini masih merupakan Raw Data Temporary

Code: (Raw Data Temporary)
020000000193d71a4af8bed0d60940d3062ac4a07bc06e9b5d86bc92ed80c70bb8bd95fae9010000001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888acfdffffff0135820000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788ac0000000001000000
Note : Untuk Hex String "ScriptSig Size" dan "ScriptSig" pada akhirnya akan diganti dengan data sesungguhnya



◉ Melakukan Hash Function Double-Sha256 pada Raw Data Temporary, agar didapatkan TXID Temporary

Untuk melakukan Double-Sha256 bisa menggunakan bantuan Python atau melalui situs ini https://www.btcschools.net/bitcoin/bitcoin_tool_sha256d.php

Didapatkan hasil sebagai berikut:
Code: (TXID_Temporary)
3b421d80de033cceb6063aaa02ee57bedf208d8c359af79ac4188f6b11fb1707


◉ Mendapatkan Private Key dalam format HEX

Pertama-tama harus diketahui terlebih dahulu WIF Private Key dari address pengirim, lalu untuk mengkonversinya ke bentuk HEX Private key bisa dengan menggunakan node.js (JavaScript runtime environment)
Code:
# Pertama-tama install JavaScript component yang dibutuhkan
npm i --save coinkey
npm install --save coininfo

Lalu eksekusi script dibawah ini
Code:
var CoinKey = require('coinkey')
var ci = require('coininfo')
var ck = CoinKey.fromWif('WIF Private Key dari address pengirim')
console.log(ck.privateKey.toString('hex'))
Hasil langsung dalam bentuk HEX Private Key 6d60xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbc541


Bisa juga dengan menggunakan Python untuk mendapatkan Base85 decode dari WIF Private Key
Code:
#import module yang diperlukan
import base58
import codecs
import binascii
import ecdsa

WIF_PK = "WIF Private Key dari address pengirim"
WIF_decode = base58.b58decode(WIF_private_key)
Prefix_PK_Ext_Checksum = binascii.hexlify(privkey_decode)
print(Prefix_PK_Ext_Checksum)
Misal didapatkan hasil : ef6d60xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbc54101907ef624
Menghilangkan Prefix, Byte Extension, dan Checksum pada Hex string yang didapatkan
ef6d60xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbc54101907ef624
Prefix : ef, Byte Extension : 01, Checksum : 907ef624
Private Key Hex : 6d60xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbc541


◉ Mendapatkan Signature dari TXID Temporary menggunakan Hex Private Key dengan bantuan Python

Code:
# Terlebih dahulu import module yang diperlukan
import bitcoinlib
from bitcoinlib.keys import HDKey, Key, deserialize_address, Address, sign, verify, Signature

HEX_PrivKey = HDKey('6d60xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbc541')
TX_Temp = '3b421d80de033cceb6063aaa02ee57bedf208d8c359af79ac4188f6b11fb1707'
signature = sign(TX_Temp, HEX_PrivKey)
signature.as_der_encoded().hex()

Didapatkan Signature sebagai berikut
Code:
3044022054550fc989e605f8503b5187ebd94264248a9553f1286ac58392d534c465399c02205874ad736f1795fa35824f800af16f0ed386f31eea3692a0efb5897da8d3f49d01


◉ Mendapatkan (Compressed) Public Key dari address pengirim menggunakan Private Key terkait

Untuk mengetahui (Compressed) Public Key bisa menggunakan Python atau melalui situs https://allprivatekeys.com/private-key-to-public-key (putuskan sambungan internet terlebih dahulu)
 
Didapatkan (Compressed) Public Key sebagai berikut
Code:
03c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521


◉ Menentukan ScriptSig dan ScriptSig size yang sesungguhnya berdasarkan data Signature dan Public Key yang didapatkan

P2PKH scriptSig : <sig> <pubKey>
<sig> : [Signature_length] [Signature]
<sig> : 47 3044022054550fc989e605f8503b5187ebd94264248a9553f1286ac58392d534c465399c0220587 4ad736f1795fa35824f800af16f0ed386f31eea3692a0efb5897da8d3f49d01
<pubKey> : [Public_Key_length] [Public_Key]
<pubKey> : 21 03c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521

ScriptSig :
Code:
473044022054550fc989e605f8503b5187ebd94264248a9553f1286ac58392d534c465399c02205874ad736f1795fa35824f800af16f0ed386f31eea3692a0efb5897da8d3f49d012103c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521
ScriptSig Size :
Code:
6a (106 bytes)


◉ Mengganti ScriptSig dan ScriptSig size pada Raw Data Temporary dengan ScriptSig dan ScriptSig size yang sesungguhnya

Diketahui Raw Data Temporary :
020000000193d71a4af8bed0d60940d3062ac4a07bc06e9b5d86bc92ed80c70bb8bd95fae901000 0001976a914df40f4f3462b1e69902f921405e8f2e3bb12005888acfdffffff0135820000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788ac0 000000001000000

ScriptSig size 19 diganti dengan 6a
ScriptSig 76a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac diganti dengan 473044022054550fc989e605f8503b5187ebd94264248a9553f1286ac58392d534c465399c02205 874ad736f1795fa35824f800af16f0ed386f31eea3692a0efb5897da8d3f49d012103c7e7464c64 45ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521

Hasil :
Code: (Final_Transaction_Hex)
020000000193d71a4af8bed0d60940d3062ac4a07bc06e9b5d86bc92ed80c70bb8bd95fae9010000006a473044022054550fc989e605f8503b5187ebd94264248a9553f1286ac58392d534c465399c02205874ad736f1795fa35824f800af16f0ed386f31eea3692a0efb5897da8d3f49d012103c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521fdffffff0135820000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788ac0000000001000000


◉ Broadcast Transaksi


TXID 1cc6c89da80169810eb6270fe308c91a323a296dbf8cceb14652fb66681bd933


* Untuk mendapatkan Private Key dalam format HEX dan ECDSA Signature sebenarnya bisa dilakukan menggunakan Tools Online, namun itu pastinya akan meng-ekspos Private Key pengguna karena harus dilakukan secara online (harus ada sambungan internet)

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 10, 2024, 07:23:25 AM
Last edit: February 18, 2024, 01:46:54 PM by punk.zink
Merited by ABCbits (7)
 #4


● Membuat sebuah Block (Simulasi)



Mendapatkan Block Template

Dengan perintah getblocktemplate yang dijalankan di Bitcoin Core, maka akan didapatkan hasil sebagai berikut :
Code:
 
  "version": 2,
  "previousblockhash": "000000000000026188bd555cc63526a178b203bb25089c92cfec223d80cae879",
  "transactions":    
[{ "hash":"294dda278712c92a93a66a808d2dd165fcd1e594122d1276421a4236f882fd81",
  "depends":[],
  "fee":200000,
  "sigops":8 },
{ "hash":"3a48e391e3ef9725947ca1c5973b602e3ca51e127621a65f43b2cb0455d4e061",
  "depends":[],
  "fee":0,
  "sigops":8 },
{ "hash":"e6c846ba5f855e8d8e6c96051b13cf38cec074cf55c6bd913c4a9322302168c4",
  "depends":[],
  "fee":10000,
  "sigops":8 }],
  "coinbaseaux":{"flags":""},
  "coinbasevalue":2500210000,
  "target":"00000000000002816e0000000000000000000000000000000000000000000000",
  "mintime":1364232079,
  "noncerange":"00000000ffffffff",
  "sigoplimit":20000,
  "sizelimit":1000000,
  "curtime":1364235874,
  "bits":"1a02816e",
  "height":227988



Membuat Coinbase Transaction

  • Input pada Coinbase transaction tidak boleh lebih dari 1
  • Hash dari transaksi yang direferensikan adalah bentuk 32 bytes dari 0x00
  • Index dari transaksi yang direferensikan adalah ffffffff
  • Scriptsig merupakan susunan byte dan tidak harus merupakan valid script seperti pada Transaksi non-Coinbase
  • Scriptsig harus diawali dengan OP_PUSHBYTES dari HEX yang merupakan representasi "Block Height" dalam format Little-Endian

Struktur dari Coinbase Transaction
Version >> Input Count >> Inputs (TXID > Index UTXO > Scriptsig Size > Scriptsig > Sequence) >> Output Count >> Outputs (Value > ScriptPubKey Size > ScriptPubKey) >> Locktime

Version = 1 = 00000001 = 01000000 (4 bytes little-endian)
Input Count = 1 = 01 (1 byte big-endian)
Input TXID = 0000000000000000000000000000000000000000000000000000000000000000 (32 bytes little-endian)
Index UTXO = ffffffff (4 bytes little-endian)
Scriptsig Size = 0e (14 bytes ukuran Scriptsig)
Scriptsig = OP_PUSHBYTES_3 diikuti dengan 947a03 (Hex dari Block height 227988 dalam format little-endian), lalu ditambahkan Hex (data) OP_PUSHBYTES_2 fc0a dan OP_PUSHBYTES_6 2f503253482f
Code:
Scriptsig = OP_PUSHBYTES_3 947a03 OP_PUSHBYTES_2 fc0a OP_PUSHBYTES_6 2f503253482f 
Scriptsig = 03947a0302fc0a062f503253482f
Sequence = ffffffff
Output Count = 1 = 01 (1 byte big-endian)
Output Value = 502d069500000000 (8 bytes Hex little-endian yang merepresentasikan coinbasevalue : 2500210000 satoshis)
ScriptPubKey Size = 23 (35 bytes ukuran ScriptPubKey)
ScriptPubKey = OP_PUSHBYTES PubKey OP_CHECKSIG
Code:
ScriptPubKey = OP_PUSHBYTES_33 03e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67 OP_CHECKSIG
ScriptPubKey = 2103e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67ac
Locktime = 00000000

Hex Array
Code:
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e03947a0302fc0a062f503253482fffffffff01502d069500000000232103e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67ac00000000

Hash Sha256D (Double-Sha256)
Code:
d93de13f941bce3ad4edc68386db523ca6da029f67f865fa615ccd47c7524c5f

Coinbase TXID (Big-Endian)
Code:
5f4c52c747cd5c61fa65f8679f02daa63c52db8683c6edd43ace1b943fe13dd9



Membuat Merkle Root

Untuk mencari Hash Merkle Tree ketentuannya adalah sebagai berikut :

  • Merubah masing-masing Hash transaksi dalam format Little-Endian
  • Memasangkan setiap 2 transaksi lalu dilakukan hash function Double-Sha256, dan dilakukan secara continue sampai didapatkan hash tunggal
  • Transaksi Coinbase harus selalu di urutan pertama
  • Jika pada prosesnya ditemukan transaksi yang tidak mendapatkan pasangan, maka akan dipasangkan dengan hash dari transaksi itu sendiri

Diketahui :
ListHashLittle-Endian
TXID_0 (Coinbase)5f4c52c747cd5c61fa65f8679f02daa63c52db8683c6edd43ace1b943fe13dd9d93de13f941bce3ad4edc68386db523ca6da029f67f865fa615ccd47c7524c5f
TXID_1294dda278712c92a93a66a808d2dd165fcd1e594122d1276421a4236f882fd8181fd82f836421a4276122d1294e5d1fc65d12d8d806aa6932ac9128727da4d29
TXID_2294dda278712c92a93a66a808d2dd165fcd1e594122d1276421a4236f882fd8161e0d45504cbb2435fa62176121ea53c2e603b97c5a17c942597efe391e3483a
TXID_3e6c846ba5f855e8d8e6c96051b13cf38cec074cf55c6bd913c4a9322302168c4c468213022934a3c91bdc655cf74c0ce38cf131b05966c8e8d5e855fba46c8e6


Konsep dari Merkle Root



Untuk mencari Hash Merkle Root bisa dengan menggunakan program Python

Code:
import hashlib
from hashlib import sha256
import binascii
from binascii import unhexlify, hexlify

Code:
TXID_0 = bytes.fromhex('d93de13f941bce3ad4edc68386db523ca6da029f67f865fa615ccd47c7524c5f')
TXID_1 = bytes.fromhex('81fd82f836421a4276122d1294e5d1fc65d12d8d806aa6932ac9128727da4d29')
TXID_2 = bytes.fromhex('61e0d45504cbb2435fa62176121ea53c2e603b97c5a17c942597efe391e3483a')
TXID_3 = bytes.fromhex('c468213022934a3c91bdc655cf74c0ce38cf131b05966c8e8d5e855fba46c8e6')
Double_Sha256_0_1 = hashlib.sha256(hashlib.sha256(TXID_0 + TXID_1).digest()).digest()
Hash_0_1 = hexlify(Double_Sha256_0_1).decode("utf-8")
Double_Sha256_2_3 = hashlib.sha256(hashlib.sha256(TXID_2 + TXID_3).digest()).digest()
Hash_2_3 = hexlify(Double_Sha256_2_3).decode("utf-8")
Hash_4 = bytes.fromhex(Hash_0_1)
Hash_5 = bytes.fromhex(Hash_2_3)
Double_Sha256_4_5 = hashlib.sha256(hashlib.sha256(Hash_4 + Hash_5).digest()).digest()
Merkle_Root = hexlify(Double_Sha256_4_5).decode("utf-8")
print(Merkle_Root)

Hash Merkle Root
Code:
414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8



Membuat Block Header

Menyusun Blockheader dengan urutan : version >> previousblockhash >> merkleroot >> time >> bits >> nonce
* Hex String dalam format Little Endian

version0000000202000000
previousblockhash000000000000026188bd555cc63526a178b203bb25089c92cfec223d80cae87979e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000
merklerootc8adb3649e00341e1a4c5246f3ae2e56beed4b9c8dee06df7e718844aab14e41414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8
time136423587462965051
bits1a02816e6e81021a
nonce00000000 - ffffffff00000000 - ffffffff


◉ Untuk implementasi menggunakan program python dan untuk simulasi pertama digunakan nonce awal 00000000

Code:
version = '02000000'
prevhash = '79e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000'
merkleroot = '414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8'
time = '62965051'
bits = '6e81021a'
nonce = '00000000'
target = '00000000000002816e0000000000000000000000000000000000000000000000'
header_hex = (version + prevhash + merkleroot + time + bits + nonce)
header_bin = unhexlify(header_hex)
header = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()
hash = hexlify(header[::-1]).decode("utf-8")
print(hash)
if not target >= hash:
    print('invalid')
else:
    print('valid')

Hash
Code:
3cefb1c47dec281f17f0e058f708fe63ac33f4bbde0f24c82da35a07031b95d8

Status
Code:
invalid

◉ Simulasi kedua menggunakan nonce terakhir ffffffff

Code:
version = '02000000'
prevhash = '79e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000'
merkleroot = '414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8'
time = '62965051'
bits = '6e81021a'
nonce = 'ffffffff'
target = '00000000000002816e0000000000000000000000000000000000000000000000'
header_hex = (version + prevhash + merkleroot + time + bits + nonce)
header_bin = unhexlify(header_hex)
header = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()
hash = hexlify(header[::-1]).decode("utf-8")
print(hash)
if not target >= hash:
    print('invalid')
else:
    print('valid')

Hash
Code:
0ddb50880c8f9ae61ba9847ed6afb386f9be9f200d7a156276414378ec92f6cb

Status
Code:
invalid

◉ Untuk seterusnya dilakukan hashing dengan cara meningkatkan nilai nonce berdasarkan range-nonce yang diijinkan sampai didapatkan Hash yang memenuhi kriteria Target (Hash <= Target)

◉ Simulasi terakhir menggunakan valid nonce 00c760f8

Code:
version = '02000000'
prevhash = '79e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000'
merkleroot = '414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8'
time = '62965051'
bits = '6e81021a'
nonce = '00c760f8'
target = '00000000000002816e0000000000000000000000000000000000000000000000'
header_hex = (version + prevhash + merkleroot + time + bits + nonce)
header_bin = unhexlify(header_hex)
header = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()
hash = hexlify(header[::-1]).decode("utf-8")
print(hash)
if not target >= hash:
    print('invalid')
else:
    print('valid')

Hash
Code:
0000000000000151e2b1184704de6a16d326d9d3bdb9118d2c8f7756c7aa124c

Status
Code:
Valid



Submit Kandidat Block ke Jaringan Bitcoin

Dengan menggunakan argumen submitblock "hexdata"

hexdata merupakan hex-encoded dari Serialized Blocks

Serialized Blocks
Jumlah BytesDataTipe DataKeterangan
80Block Headerblock_headerBlock Header dalam format RAW
Bervariasitxn_countcompactSize uintTotal jumlah transaksi yang berada didalam Block
BervariasitxnsRAW TransactionSetiap transaksi yang berada didalam Block (disusun berurutan) dalam format RAW Transaction

RAW Block Header
Code:
0200000079e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8629650516e81021a00c760f8

txn_count
Code:
04

◉ Untuk mendapatkan txns, sebelumnya harus diketahui dulu RAW Transaction dari masing-masing transaksi

RAW Coinbase Transaction
Code:
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e03947a0302fc0a062f503253482fffffffff01502d069500000000232103e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67ac00000000

RAW TX_1
Code:
010000000248ef559b0cd287ac51435d457c4f3ad638f9561fa4387bbef0cb90d70259f498000000008a473044022052cf64f2b8f217c815548411fba0ceff10ba1a06854b066b238ef63f6508694902205032f80b1ae7188a7dfc5dc6b5d9400c41df1cc66c331e9de40bd5646786ab80014104960bbf2c298c6f8d341f7ccbad48756bcc1bf717620d885050ecf2fd12ab81ab71ea46cd5bbb86503719c809012cb979bb9601c432d46b8d7dfa0354b9277726ffffffffba314921146eb40aff671dd1e622c400e7d5e38246461b1696c93478cd77b9ed010000008b4830450221008713acb8a82ce43e4acfc932b6400c29a2e0fb56c4b866fc4296325c81cfe65202207569cbfb1897f1dca0599c644139e5f4887d475806519c8e66421f9ea3a115dc014104ba47a0c0579d5dd441552922c3c806953f5da17046a3494373b6bd38dc4bc021f1e0915debd75f6aede9ebb34059ea7b40b72ea8fdbee0b6dfa35e6c288f218cffffffff0200879465010000001976a914242ee683871a2298dbc890a4f6bbb190b0e4f29488ac00d6117e030000001976a9145d0ceb04425118b6bbdde2a0d8df11057a89b7cb88ac00000000

RAW TX_2
Code:
01000000026a5143a8df57ae25c74c8242627025866a116562ea7d800ff5d39f8fea9f1ba4010000008b483045022069a38e18ad17c3eb2d07fc7c3eb81d307aa5c58a72ca085951c8a8b97599e251022100e3f91205232236706118b535a7578c1181174f83e2bca6494c4ccc45f9e0a5320141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff5258d8ffef4b3f172c7f5ce4fc39cd0f17de1fa68b62e8d1901436615101f754000000008b483045022100b449e9b702f9b02211bfec7a958deead6c2a8e085be2022079aa9a480887799c02201118e691e8eb851d226186cae0c54b0ea351245e1868ed620ac2bd9dc3ed550c0141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff0200603826000000001976a914faa68ff33baa0bd76c468f42dd917f8e0757dcbf88acf0eb1c4b020000001976a914ccddcc49ec4ae6a3964f0b49a9626d27f847b57e88ac00000000

RAW TX_3
Code:
01000000019db0016d576919ae4af4ccefb9417cc5fd932ed0c26f4ea2087f3df2bf1550c6010000008c493046022100948abedc526a24299f6358176f9e0f2e62f544001c8225e330308a8ff091540c022100abfa4d03195941872686995f719be7aed7bb6ee40ca438587e9295c66491deb701410442fa242fc9b4de271bbce69fcc52c3e31d8376bc6d38922c968fbbadf76c20a44fb1dc93faf8c06d57fdc5b33eef7ba7b74be3f6d92a96b9f372c214c9b63ee4ffffffff02ce987a65020000001976a914f4ec962c83ab077b9652d0f2a6ae5900e463fac488ac2415f802000000001976a914e83bb134dc0ec4781f28e7f0b6b8dd99bfd0520688ac00000000

txns
Code:
01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e03947a0302fc0a062f503253482fffffffff01502d069500000000232103e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67ac00000000010000000248ef559b0cd287ac51435d457c4f3ad638f9561fa4387bbef0cb90d70259f498000000008a473044022052cf64f2b8f217c815548411fba0ceff10ba1a06854b066b238ef63f6508694902205032f80b1ae7188a7dfc5dc6b5d9400c41df1cc66c331e9de40bd5646786ab80014104960bbf2c298c6f8d341f7ccbad48756bcc1bf717620d885050ecf2fd12ab81ab71ea46cd5bbb86503719c809012cb979bb9601c432d46b8d7dfa0354b9277726ffffffffba314921146eb40aff671dd1e622c400e7d5e38246461b1696c93478cd77b9ed010000008b4830450221008713acb8a82ce43e4acfc932b6400c29a2e0fb56c4b866fc4296325c81cfe65202207569cbfb1897f1dca0599c644139e5f4887d475806519c8e66421f9ea3a115dc014104ba47a0c0579d5dd441552922c3c806953f5da17046a3494373b6bd38dc4bc021f1e0915debd75f6aede9ebb34059ea7b40b72ea8fdbee0b6dfa35e6c288f218cffffffff0200879465010000001976a914242ee683871a2298dbc890a4f6bbb190b0e4f29488ac00d6117e030000001976a9145d0ceb04425118b6bbdde2a0d8df11057a89b7cb88ac0000000001000000026a5143a8df57ae25c74c8242627025866a116562ea7d800ff5d39f8fea9f1ba4010000008b483045022069a38e18ad17c3eb2d07fc7c3eb81d307aa5c58a72ca085951c8a8b97599e251022100e3f91205232236706118b535a7578c1181174f83e2bca6494c4ccc45f9e0a5320141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff5258d8ffef4b3f172c7f5ce4fc39cd0f17de1fa68b62e8d1901436615101f754000000008b483045022100b449e9b702f9b02211bfec7a958deead6c2a8e085be2022079aa9a480887799c02201118e691e8eb851d226186cae0c54b0ea351245e1868ed620ac2bd9dc3ed550c0141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff0200603826000000001976a914faa68ff33baa0bd76c468f42dd917f8e0757dcbf88acf0eb1c4b020000001976a914ccddcc49ec4ae6a3964f0b49a9626d27f847b57e88ac0000000001000000019db0016d576919ae4af4ccefb9417cc5fd932ed0c26f4ea2087f3df2bf1550c6010000008c493046022100948abedc526a24299f6358176f9e0f2e62f544001c8225e330308a8ff091540c022100abfa4d03195941872686995f719be7aed7bb6ee40ca438587e9295c66491deb701410442fa242fc9b4de271bbce69fcc52c3e31d8376bc6d38922c968fbbadf76c20a44fb1dc93faf8c06d57fdc5b33eef7ba7b74be3f6d92a96b9f372c214c9b63ee4ffffffff02ce987a65020000001976a914f4ec962c83ab077b9652d0f2a6ae5900e463fac488ac2415f802000000001976a914e83bb134dc0ec4781f28e7f0b6b8dd99bfd0520688ac00000000

hexdata (Serialized Blocks)
[RAW Block Header] [txn_count] [txns]
Code:
0200000079e8ca803d22eccf929c0825bb03b278a12635c65c55bd886102000000000000414eb1aa4488717edf06ee8d9c4bedbe562eaef346524c1a1e34009e64b3adc8629650516e81021a00c760f80401000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e03947a0302fc0a062f503253482fffffffff01502d069500000000232103e1088f81a94a34eed7103b4d45e21d7425b62ebfaf796196fecc89287a442a67ac00000000010000000248ef559b0cd287ac51435d457c4f3ad638f9561fa4387bbef0cb90d70259f498000000008a473044022052cf64f2b8f217c815548411fba0ceff10ba1a06854b066b238ef63f6508694902205032f80b1ae7188a7dfc5dc6b5d9400c41df1cc66c331e9de40bd5646786ab80014104960bbf2c298c6f8d341f7ccbad48756bcc1bf717620d885050ecf2fd12ab81ab71ea46cd5bbb86503719c809012cb979bb9601c432d46b8d7dfa0354b9277726ffffffffba314921146eb40aff671dd1e622c400e7d5e38246461b1696c93478cd77b9ed010000008b4830450221008713acb8a82ce43e4acfc932b6400c29a2e0fb56c4b866fc4296325c81cfe65202207569cbfb1897f1dca0599c644139e5f4887d475806519c8e66421f9ea3a115dc014104ba47a0c0579d5dd441552922c3c806953f5da17046a3494373b6bd38dc4bc021f1e0915debd75f6aede9ebb34059ea7b40b72ea8fdbee0b6dfa35e6c288f218cffffffff0200879465010000001976a914242ee683871a2298dbc890a4f6bbb190b0e4f29488ac00d6117e030000001976a9145d0ceb04425118b6bbdde2a0d8df11057a89b7cb88ac0000000001000000026a5143a8df57ae25c74c8242627025866a116562ea7d800ff5d39f8fea9f1ba4010000008b483045022069a38e18ad17c3eb2d07fc7c3eb81d307aa5c58a72ca085951c8a8b97599e251022100e3f91205232236706118b535a7578c1181174f83e2bca6494c4ccc45f9e0a5320141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff5258d8ffef4b3f172c7f5ce4fc39cd0f17de1fa68b62e8d1901436615101f754000000008b483045022100b449e9b702f9b02211bfec7a958deead6c2a8e085be2022079aa9a480887799c02201118e691e8eb851d226186cae0c54b0ea351245e1868ed620ac2bd9dc3ed550c0141049881d648d4a8deefbec452f82921bb49a3a86403a749737d41fa7ebb6d6d692eaf0aa2641d62e53d3c500a16492bc059acec51c2fb1f7a06b28576d266f9e04effffffff0200603826000000001976a914faa68ff33baa0bd76c468f42dd917f8e0757dcbf88acf0eb1c4b020000001976a914ccddcc49ec4ae6a3964f0b49a9626d27f847b57e88ac0000000001000000019db0016d576919ae4af4ccefb9417cc5fd932ed0c26f4ea2087f3df2bf1550c6010000008c493046022100948abedc526a24299f6358176f9e0f2e62f544001c8225e330308a8ff091540c022100abfa4d03195941872686995f719be7aed7bb6ee40ca438587e9295c66491deb701410442fa242fc9b4de271bbce69fcc52c3e31d8376bc6d38922c968fbbadf76c20a44fb1dc93faf8c06d57fdc5b33eef7ba7b74be3f6d92a96b9f372c214c9b63ee4ffffffff02ce987a65020000001976a914f4ec962c83ab077b9652d0f2a6ae5900e463fac488ac2415f802000000001976a914e83bb134dc0ec4781f28e7f0b6b8dd99bfd0520688ac00000000

submitblock "hexdata"

Jika hasilnya
Code:
null
Berarti Kandidat Block telah divalidasi oleh node-node lainnya (dianggap valid) dan ditambahkan ke jaringan Blockchain Bitcoin

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
PytagoraZ
Sr. Member
****
Offline Offline

Activity: 336
Merit: 343


Jolly? I think I've heard that name before. hmm


View Profile
February 10, 2024, 12:59:13 PM
 #5

Thread yang bagus gan, cuma sayangnya ane ga nyampe gan.. Keknya kita beda pentium gan. Btw kalo bisa di jelasin dari yang paling simple dulu gan termasuk singkatan atau jenis transaksinya. Ane bener-bener awam tentang hal begituan. UTXO juga ane ga paham itu sebenernya singkatan apa gan..

Keknya member SFI bertambah satu lagi lawan yang imbang buat agan husna, chikito, ama abhi dan lainnya, ntapp


Main di global gan biar gacor dapet meritnya juga  Grin

JOLLYGOOD DT TRUST ABUSE
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 10, 2024, 02:24:42 PM
 #6

Thread yang bagus gan, cuma sayangnya ane ga nyampe gan.. Keknya kita beda pentium gan. Btw kalo bisa di jelasin dari yang paling simple dulu gan termasuk singkatan atau jenis transaksinya. Ane bener-bener awam tentang hal begituan. UTXO juga ane ga paham itu sebenernya singkatan apa gan..
Untuk istilah dan glosarium Bitcoin bisa di lihat disini https://developer.bitcoin.org/glossary.html

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
February 10, 2024, 11:59:56 PM
 #7

-snip-
Membuat transaksi dengan RPC Commands
-snip-
  • Selanjutnya membuat transaksi menggunakan perintah createrawtransaction
Code:
createrawtransaction [{"txid":"hex","vout":n}] [{"address":amount}] ( locktime replaceable )

Code: (Contoh)
createrawtransaction '[{"txid":"2675704bb770f99cb0063cf8355da88b5941014e2d883b94d977407626fecd9b","vout":0}]' '[{"mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB":0.0001},{"n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt":0.0004524}]'
- Karena parameter locktime dan replaceable tidak diisi, maka secara default nilai dari locktime = 0, dan replaceable = true (menyatakan jika transaksi adalah RBF)
- Address pertama pada Output (mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB) merupakan address dari penerima (address testnet milik https://coinfaucet.eu/en/btc-testnet/)
- Address kedua pada Output (n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt) merupakan change address dari pengirim

Sedikit menambahkan mengenai address kedua pada output, sepengetahuan saya, jika tidak ditentukan dalam hal ini hanya menginput satu address maka sisa balance yang ada kemungkinan akan dijadikan fee miner untuk proses transaksi. Koreksi jika keliru.


UTXO juga ane ga paham itu sebenernya singkatan apa gan..

Bisa juga sering-sering mengunjungi website Bitcoin wiki (https://en.bitcoin.it/wiki/) karena disana agan bisa menemui beberapa penjelasan lebih spesifik mengenai Bitcoin.
Contoh penjelasan tentang UTXO : https://en.bitcoin.it/wiki/UTXO

Chikito
Legendary
*
Offline Offline

Activity: 2380
Merit: 2054



View Profile WWW
February 11, 2024, 02:42:27 AM
 #8

Keknya member SFI bertambah satu lagi lawan yang imbang buat agan husna, chikito, ama abhi dan lainnya, ntapp
Kita di sini bukan masalah lawan atau kawan bro, tapi sebagai member yang saling membantu untuk mengatasi masalah. Yang terpenting kita bisa dan dapat melakukan transaksi bitcoin pada dompet yang keynya kita yang pegang, Itu saja. Masalah pengetahuan teknis mah saya masih cetek, ya paling tau sedikit, itu pun kalau ada masalah masih nyari di google bagaimana mengatasinya, bukan dari buku atau dari guru. Di bitcoin ini kalau kita pelajari teori saja tidak cukup, kita harus perlu juga exercise atau praktek langsung, oleh karena itu ada yang namanya testnet biar kalau ada apa-apa tidak berdampak pada balance yang kita punya.

.
.BLACKJACK ♠ FUN.
█████████
██████████████
████████████
█████████████████
████████████████▄▄
░█████████████▀░▀▀
██████████████████
░██████████████
████████████████
░██████████████
████████████
███████████████░██
██████████
CRYPTO CASINO &
SPORTS BETTING
▄▄███████▄▄
▄███████████████▄
███████████████████
█████████████████████
███████████████████████
█████████████████████████
█████████████████████████
█████████████████████████
███████████████████████
█████████████████████
███████████████████
▀███████████████▀
█████████
.
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 11, 2024, 02:51:39 AM
Merited by ABCbits (1)
 #9



Sedikit menambahkan mengenai address kedua pada output, sepengetahuan saya, jika tidak ditentukan dalam hal ini hanya menginput satu address maka sisa balance yang ada kemungkinan akan dijadikan fee miner untuk proses transaksi. Koreksi jika keliru.
Bukan kemungkinan, namun sudah merupakan sebuah ketentuan pada  createrawtransaction, dimana untuk setiap nilai input yang tidak di gunakan dalam output akan dianggap sebagai fee transaksi, terlepas dari berapa banyak address pada output tersebut. (karena supaya transaksi diterima oleh jaringan, maka sesuai dengan ketentuan protokol "tx" messages, input values > sum of output values dan fee transaksi tidak boleh lebih rendah dari mempoolminfee)

Untuk menentukan fee transaksi yang lebih spesifik pada raw transaction, selanjutnya bisa dipergunakan perintah fundrawtransaction, yang mana bisa ditambahkan opsi "fee_rate", "feeRate" dan "subtractFeeFromOutputs".

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
February 11, 2024, 03:34:09 AM
 #10



Sedikit menambahkan mengenai address kedua pada output, sepengetahuan saya, jika tidak ditentukan dalam hal ini hanya menginput satu address maka sisa balance yang ada kemungkinan akan dijadikan fee miner untuk proses transaksi. Koreksi jika keliru.
Bukan kemungkinan, namun sudah merupakan sebuah ketentuan pada  createrawtransaction, dimana untuk setiap nilai input yang tidak di gunakan dalam output akan dianggap sebagai fee transaksi, terlepas dari berapa banyak address pada output tersebut. (karena supaya transaksi diterima oleh jaringan, maka sesuai dengan ketentuan protokol "tx" messages, input values > sum of output values dan fee transaksi tidak boleh lebih rendah dari mempoolminfee)

Untuk menentukan fee transaksi yang lebih spesifik pada raw transaction, selanjutnya bisa dipergunakan perintah fundrawtransaction, yang mana bisa ditambahkan opsi "fee_rate", "feeRate" dan "subtractFeeFromOutputs".

Nah, ketika kita input nilai pada address pertama dan ternyata sisanya (semisal tidak menyertakan change address) lebih rendah dari mempoolminfee, itu artinya transaksi tidak akan dijalankan kan ya?
Namun jika sisa balance tersebut lebih dari mempoolminfee maka transaksi akan dilanjut. Artinya memang fix selama nilai fee transaksi mencukupi batas mempoolminfee, maka sisa balance yang ada akan dianggap untuk fee transaksi.

Saya belum begitu banyak bertransaksi menggunakan raw transaction; Di atas sempat ragu, meskipun sebelumnya pernah belajar (ekspress semalaman karena penasaran) dari salah satu referensi dan belum mencari referensi pembanding lainnya lagi, yang intinya menyatakan bahwa ketika tidak menginput change address, maka sisa balance yang ada akan dianggap untuk fee (di warning untuk bagian ini);

Dan memang ketika saya bertransaksi menggunakan mode raw transaction di Bitcoin Core, mencoba dengan hanya menginput satu address saja dan sisa balance nya benar terpakai semua untuk fee transaksi seperti yang mas z @punk sebutkan di atas.

punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 11, 2024, 04:15:21 PM
Merited by ABCbits (1)
 #11

Nah, ketika kita input nilai pada address pertama dan ternyata sisanya (semisal tidak menyertakan change address) lebih rendah dari mempoolminfee, itu artinya transaksi tidak akan dijalankan kan ya?
Namun jika sisa balance tersebut lebih dari mempoolminfee maka transaksi akan dilanjut. Artinya memang fix selama nilai fee transaksi mencukupi batas mempoolminfee, maka sisa balance yang ada akan dianggap untuk fee transaksi.
Kurang lebih memang seperti itu Om.

Namun ada beberapa hal yang perlu digarisbawahi terkait dengan parameter "fee" pada sebuah transaksi, yakni yang saya tahu ada 2 hal yang bisa menyebabkan transaksi gagal diproses (tidak dibroadcast) atau tidak mendapatkan konfirmasi Block.

[1]. Parameter minrelaytxfee (default: 0.00001 BTC)
Jika fee transaksi nilainya dibawah  minrelaytxfee maka transaksi akan direject oleh node itu sendiri (reject status "min relay fee not met, 0 < 191 (code -26)")

[2]. Parameter mempoolminfee
Parameter ini related dengan parameter maxmempool, dimana saat maxmempool mencapai batasnya maka mempoolminfee akan diberlakukan sehingga untuk setiap transaksi yang berada di mempool, yang memiliki fee dibawah parameter mempoolminfee akan didrop dari mempool, dan secara otomatis nilai mempoolminfee akan naik dengan tujuan tetap menjaga ukuran mempool sesuai dengan konfigurasi maxmempool.


Quote
Saya belum begitu banyak bertransaksi menggunakan raw transaction; Di atas sempat ragu, meskipun sebelumnya pernah belajar (ekspress semalaman karena penasaran) dari salah satu referensi dan belum mencari referensi pembanding lainnya lagi, yang intinya menyatakan bahwa ketika tidak menginput change address, maka sisa balance yang ada akan dianggap untuk fee (di warning untuk bagian ini);

Dan memang ketika saya bertransaksi menggunakan mode raw transaction di Bitcoin Core, mencoba dengan hanya menginput satu address saja dan sisa balance nya benar terpakai semua untuk fee transaksi seperti yang mas z @punk sebutkan di atas.
Jika ditilik dari transaksi tersebut, nampaknya Om Husna mengatur sedemikian rupa, pada output transaksi sebelumnya agar ketika UTXO tersebut digunakan sebagai input baru, maka nilai amount dan fee transaksi sesuai dengan nilai yang diinginkan. Sebenarnya ada opsi yang lebih simpel untuk menentukan jumlah fee transaksi yang dikehendaki dan jumlah amount pada address penerima, yakni dengan cara menambahkan output yang kedua.

Fee yang dikehendaki = Input - Output 1 (amount yang dikehendaki) - Output 2

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 13, 2024, 12:58:21 PM
Last edit: February 18, 2024, 01:42:31 PM by punk.zink
Merited by Husna QA (7), ABCbits (5)
 #12

Membuat transaksi dengan Python

Jika sebelumnya saya pernah mengulas membuat transaksi menggunakan : Bitcoin GUI Wallet, RPC Commands dan secara manual, maka pada kali ini saya akan membuat sebuah transaksi Bitcoin (testnet) yang sepenuhnya menggunakan program Python.

Tujuan dari menggunakan Python adalah untuk membuat transaksi secara offline (memutuskan jaringan internet), dan untuk proses Broadcast bisa dengan melalui situs https://live.blockcypher.com/btc-testnet/pushtx/

Mengumpulkan Data yang dibutuhkan

Data Input
  • TXID / UTXO yang akan digunakan sebagai input
  • Index UTXO (Vout)
  • Nilai amount (jumlah BTC)
  • Private Key yang related dengan UTXO
  • Address yang related dengan UTXO

Data Output
  • Address Penerima
  • Change Address (jika diperlukan)

Menentukan jumlah BTC yang akan dikirim dan nilai fee tranasaksi

Input = Output + fee transaksi
Nilai amount Input = amount Address Penerima + amount Change Address + fee transaksi

Membuat transaksi menggunakan Python

Diketahui UTXO yang bisa digunakan :
TXID : 2b1bf768e6850dc9e847e639fa27bf6fc3f317bc87d629c7a7c8d8167f688080
Vout : 0
Amount : 0.00009300
Address : n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt
PrivKey : cRFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdzumM

Ditentukan :
Address Penerima : mx2f9C4cL1cABKG6om5eHbvpe6ueXjZCyK
Amount : 0.00005
Change Address : mwKu4uuiWTJW8815tLw9vPPe4e9otyu1uT
Amount : 0.00002
Fee Transaksi : 0.000023

Untuk eksekusi digunakan Python bitcoin library https://github.com/karask/python-bitcoin-utils/

Import Modules yang diperlukan
Code:
import bitcoinutils
from bitcoinutils.setup import setup
from bitcoinutils.utils import to_satoshis
from bitcoinutils.transactions import Transaction, TxInput, TxOutput
from bitcoinutils.keys import P2pkhAddress, PrivateKey
from bitcoinutils.script import Script

Create RAW Transaction dengan data-data yang sudah disiapkan
Code:
setup("testnet")
txid = "2b1bf768e6850dc9e847e639fa27bf6fc3f317bc87d629c7a7c8d8167f688080"
vout = 0
txin = TxInput(txid, vout)
out_address = P2pkhAddress("mx2f9C4cL1cABKG6om5eHbvpe6ueXjZCyK")
out_address_txout = TxOutput(to_satoshis(0.00005), Script(["OP_DUP", "OP_HASH160", out_address.to_hash160(), "OP_EQUALVERIFY", "OP_CHECKSIG"]))
change_address = P2pkhAddress("mwKu4uuiWTJW8815tLw9vPPe4e9otyu1uT")
change_address_txout = TxOutput(to_satoshis(0.00002), Script(["OP_DUP", "OP_HASH160", change_address.to_hash160(), "OP_EQUALVERIFY", "OP_CHECKSIG"]))
tx = Transaction([txin], [out_address_txout, change_address_txout])
print("\nRaw unsigned transaction:\n" + tx.serialize())

Hasil Raw unsigned transaction
Code:
02000000018080687f16d8c8a7c729d687bc17f3c36fbf27fa39e647e8c90d85e668f71b2b0000000000fdffffff0288130000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788acd0070000000000001976a914ad6abe59be7288be1253f38b327193ebdfe2954f88ac00000000

Sign RAW Transaction dengan data-data yang sudah disiapkan
Code:
privkey = "cRFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdzumM"
own_address = "n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt"
sk = PrivateKey(privkey)
from_addr = P2pkhAddress(own_address)
sig = sk.sign_input(tx, 0, Script(["OP_DUP", "OP_HASH160", from_addr.to_hash160(), "OP_EQUALVERIFY", "OP_CHECKSIG"]))
pk = sk.get_public_key().to_hex()
txin.script_sig = Script([sig, pk])
signed_tx = tx.serialize()
print("\nRaw signed transaction:\n" + signed_tx)

Hasil RAW signed transaction
Code:
02000000018080687f16d8c8a7c729d687bc17f3c36fbf27fa39e647e8c90d85e668f71b2b000000006a473044022038926630c6e4f8678a425d65786ca4355ca74e9ae4f4eb2d7127329cb86d7ca2022042979b131a82d8eae81e0535bb749e3a43ec0de9fb93ae46e2ae6e01fc599a55012103c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521fdffffff0288130000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788acd0070000000000001976a914ad6abe59be7288be1253f38b327193ebdfe2954f88ac00000000




Mem-Broadcast RAW signed transaction

Untuk mengirimkan RAW Transaction yang sudah ditandatangani ke Jaringan (testnet) Bitcoin, bisa melalui situs https://live.blockcypher.com/btc-testnet/pushtx (atau situs-situs lain yang memiliki layanan sama) atau menggunakan console Bitcoin Core (testnet).

Jika opsi yang dipilih adalah dengan menggunakan console Bitcoin Core (testnet)
- Sambungkan jaringan internet
- Jalankan Bitcoin Core (testnet) dan buka "console"
- Gunakan perintah sendrawtransaction "hexstring"
Code:
sendrawtransaction 02000000018080687f16d8c8a7c729d687bc17f3c36fbf27fa39e647e8c90d85e668f71b2b000000006a473044022038926630c6e4f8678a425d65786ca4355ca74e9ae4f4eb2d7127329cb86d7ca2022042979b131a82d8eae81e0535bb749e3a43ec0de9fb93ae46e2ae6e01fc599a55012103c7e7464c6445ea798683ad4ac5709994e3032be75b92c34fd1b798653d4c6521fdffffff0288130000000000001976a914b5202c46e31f0627702e57a6640545b5048e2c3788acd0070000000000001976a914ad6abe59be7288be1253f38b327193ebdfe2954f88ac00000000

TXID 203066e536d63025ed462dfa298645b5db169df30d6f0e3db250fd5a1a9a1b3d

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 17, 2024, 01:31:11 AM
Last edit: February 18, 2024, 01:48:50 PM by punk.zink
Merited by ABCbits (4)
 #13

Transaction Size

Setelah kemunculan Segregated Witness atau yang lebih familiar dikenal dengan istilah Segwit yang dituangkan dalam BIP-141, maka untuk Transaksi diberikan satuan ukuran baru yang disebut dengan "weight".

"Weight" pada transaksi dikalkulasi secara berbeda tergantung pada jenis transaksi itu sendiri. Secara umum rumus yang digunakan adalah :

  • Transaction weight = (Base transaction size * 3) + Total transaction size
  • Virtual transaction size = Transaction weight / 4

    • Base transaction size adalah Ukuran transaksi tanpa Witness Data
    • Total transaction size adalah Ukuran seluruh transaksi termasuk Witness Data (jika ada)


Sehingga jika diterjemahkan ke dalam Transaksi Non-Segwit, maka
  • Transaction weight (Non-Segwit) = 4 * Total transaction size
  • Virtual transaction size (Non-Segwit) = Total transaction size


Sementara untuk Transaksi Segwit
  • Transaction weight (Segwit) = (Base transaction size * 3) + Total transaction size = (Base transaction size * 4) + (Witness Data Size * 1)
  • Virtual transaction size (Segwit) = Transaction weight / 4




Untuk detail penjelasan bisa dilihat dari 2 contoh transaksi dibawah ini

Legacy (Non-Segwit) Transaction
https://btc.bitaps.com/aca52c2438e504c781f1f7e936e5f5b77dd56dead9121ab50b7144d471d4b42c

  • Raw Transaction
    01000000014c56474c583c4ead9f5d65e0b674c853615ed6cc75d17e47b813464f229880a600000 0006a47304402201d8ad905de0a5e96a6ed6fbd3c8f6fc657f3fb743ecc5859bd1da9fd39d05014 022013969a1cc4daece48aed3d440699ee05410e6da26cfe8746a97977707d677be2012103bab68 a430904734c4f214e0653fd7e8c3fae552230ffc2c7975ceba21215a5b50000008002b434210000 0000001600148f14d1422c160a72562a2e79f078084e8de04cbde7fe0400000000001976a91456c 0bc2f50bc150d4ea122e66db7c48b01b9722988ac00000000
  • Total String (Characters) pada Raw Transaction adalah 444, berarti ini mengindikasikan jika Total Transaction Size adalah 222 bytes
  • Witness Data [empty]
  • Weight = 4 *  Transaction Size = 888 bytes
  • Virtual transaction size = 222 vbytes


Segwit Transaction
https://btc.bitaps.com/55fc28c1ca463fc27c7092d5776d6d78a2607741bb622bd888d0da5cedbd2903

  • Raw Transaction
    0200000000010151ab9ecdaeb374eacdd52ea3c56ef65ab3c1a5017b851e54a55872cf604a144d0100000000fdf fffff02357b140000000000160014cf63468044aedeb9e83d594bf958970951d953ca1147d30000 0000001600144a15270d0f29348f4733b3e8306ed612eadc1c6f024730440220186a25919f4c5c9b24db4296336763ed2a1d6267c97ff13104a42e3bac564723022 078fa2ad2db73a96023df6b482c5c5c7b0599378f224d1e609af7f024d277c2f7012102f264b13d 35294c6bcdea229f229645ad990989816be46605599579a5f947f337dd3b0b00
  • Total Transaction Size 222 bytes
  • Base transaction size 113 bytes
  • Witness Data Size 109 bytes (Hex String dengan warna merah)
  • Weight = (113 * 3) + 222 = (113 * 4) + 109 = 561 bytes
  • Virtual transaction size = 561 bytes / 4 = 140.25 vbytes



Transaction Fee

Fee Transaksi didasarkan pada Virtual transaction size. Oleh karena itu untuk Transaksi Segwit memiliki nilai fee yang lebih murah dibandingkan dengan Transaksi Legacy (Non-Segwit) karena pada dasarnya setiap transaksi Segwit memiliki nilai "weight" yang jauh lebih kecil dibandingkan dengan Transaksi Legacy. Sementara untuk transaksi non-segwit tidak akan mengalami perubahan seperti halnya sebelum Segwit di implementasikan ke jaringan Bitcoin karena Virtual transaction size pada setiap Transaksi Legacy adalah ukuran aktual dari transaksi itu sendiri.

Pada 2 contoh transaksi diatas, meskipun sama-sama memiliki Total Transaction Size sebesar 222 bytes namun untuk Transaksi Segwit hanya memiliki ukuran Virtual transaction sebesar 140.25 vbytes, sementara untuk Transaksi Legacy tetap memiliki ukuran Virtual transaction sebesar 222 vbytes.

Sehingga jika kedua transaksi tersebut diBroadcast ke Jaringan Blockchain menggunakan fee rates yang sama 10 sats/vb, maka

Segwit Transaction
  • Virtual transaction size 140.25 vbytes
  • Transaction Fee = 1403 Satoshis (0.00001403 BTC)

Legacy (Non-Segwit) Transaction
  • Virtual transaction size 222 vbytes
  • Transaction Fee = 2220 Satoshis (0.0000222 BTC)



* Source https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Gaza13
Sr. Member
****
Offline Offline

Activity: 490
Merit: 254



View Profile WWW
February 17, 2024, 03:38:53 AM
 #14


Membuat transaksi secara manual (Create Transaction from the Scratch)

Ini merupakan cara yang paling rumit dan bahkan bisa dibilang jarang sekali yang menggunakan cara ini untuk membuat sebuah transaksi. Namun dalam hal ini, saya akan menguraikan caranya, sehingga bisa diketahui bagaimana sebuah RAW Transaction dibuat, disusun, ditandangani dan dikirimkan ke Jaringan blockchain (ini juga merupakan penjelasan secara detail dari membuat transaksi menggunakan cara kedua).

◉ Membuat Transaksi Non-Segwit

  • Pertama-tama harus diketahui Struktur dan susunan dari Transaksi Non-Segwit

Code:
Version >> Input Count >> Inputs (TXID > Index UTXO > Scriptsig Size > Scriptsig > nSequence) >> Output Count >> Outputs (Value > ScriptPubKey Size > ScriptPubKey) >> Locktime

  • Menentukan Version
    Misal dipilih Versi 2, jika direpresentasikan dalam bentuk Hex (4 bytes) Little-endian Format maka akan seperti ini : 02000000

  • Menentukan Jumlah Input
    Untuk 1 Input jika direpresentasikan ke bentuk Hex : 01

  • Menentukan UTXO (TXID) yang akan digunakan pada Input
    Untuk mengetahui UTXO/TXID beserta value amount dan indeknya bisa menggunakan perintah listunspent

Code: (result of listunspent)
    "txid": "e9fa95bdb80bc780ed92bc865d9b6ec07ba0c42a06d34009d6d0bef84a1ad793",
    "vout": 1,
    "address": "n1sQo7UFrRD5KzjXCUyQCrjQs4zaXuFcgt",
    "label": "",
    "scriptPubKey": "76a914df40f4f3462b1e69902f921405e8f2e3bb12005888ac",
    "amount": 0.00045240,

  • In-case kita tidak memiliki Bitcoin Core atau software wallet lainnya, maka untuk mengetahui TXID dari UTXO yang akan digunakan beserta Indeksnya, maka kita bisa melihatnya melalui situs Block Explorer. Yang terpenting kita memiliki Private Key dari address yang related dengan UTXO/TXID tersebut.
[/b][/i][/u]





tanpa private key apa bisa masih tetap jalan om variabel di console bitcoincore nya, saya heran koq private key saya tidak muncul padahal sudah null

abhiseshakana
Legendary
*
Online Online

Activity: 2226
Merit: 2229


From Zero to 2 times Self-Made Legendary


View Profile WWW
February 17, 2024, 04:17:03 AM
 #15


tanpa private key apa bisa masih tetap jalan om variabel di console bitcoincore nya, saya heran koq private key saya tidak muncul padahal sudah null
Yang agan gunakan adalah Descriptor wallet, jadi sudah pasti tidak akan bisa menjalankan argumen dumpprivkey. Pembahasan mengenai hal tersebut pernah diulas di sini https://bitcointalk.org/index.php?topic=5196950.msg63548916#msg63548916

Jika yang menjadi concern adalah proses Sign Transaction, maka agan bisa tetap melakukannya tanpa menggunakan private key, yakni dengan cara menggunakan argumen signrawtransactionwithwallet

.
.Duelbits.
█▀▀▀▀▀











█▄▄▄▄▄
TRY OUR
  NEW  UNIQUE
GAMES!
.
..DICE...
███████████████████████████████
███▀▀                     ▀▀███
███    ▄▄▄▄         ▄▄▄▄    ███
███   ██████       ██████   ███
███   ▀████▀       ▀████▀   ███
███                         ███
███                         ███
███                         ███
███   ▄████▄       ▄████▄   ███
███   ██████       ██████   ███
███    ▀▀▀▀         ▀▀▀▀    ███
███▄▄                     ▄▄███
███████████████████████████████
.
.MINES.
███████████████████████████████
████████████████████████▄▀▄████
██████████████▀▄▄▄▀█████▄▀▄████
████████████▀ █████▄▀████ █████
██████████      █████▄▀▀▄██████
███████▀          ▀████████████
█████▀              ▀██████████
█████                ██████████
████▌                ▐█████████
█████                ██████████
██████▄            ▄███████████
████████▄▄      ▄▄█████████████
███████████████████████████████
.
.PLINKO.
███████████████████████████████
█████████▀▀▀       ▀▀▀█████████
██████▀  ▄▄███ ███      ▀██████
█████  ▄▀▀                █████
████  ▀                    ████
███                         ███
███                         ███
███                         ███
████                       ████
█████                     █████
██████▄                 ▄██████
█████████▄▄▄       ▄▄▄█████████
███████████████████████████████
10,000x
MULTIPLIER
NEARLY UP TO
.50%. REWARDS
▀▀▀▀▀█











▄▄▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
February 18, 2024, 01:18:47 PM
Last edit: February 18, 2024, 01:49:18 PM by punk.zink
Merited by ABCbits (2)
 #16

Block Size

Pada awalnya limit dari ukuran Block adalah 1.000.000 bytes (1MB)

Quote
/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;

Namun semenjak BIP-141 di implementasikan ke jaringan Blockchain Bitcoin, maximum block size berubah menjadi 4.000.000 bytes (4MB) dengan komposisi Base Data + Witness Data. Sama seperti halnya Transaksi, Block juga memiliki satuan ukuran baru yang disebut dengan "weight"

/** The maximum allowed size for a serialized block, in bytes (only for buffer size limits) */
static const unsigned int MAX_BLOCK_SERIALIZED_SIZE = 4000000;
/** The maximum allowed weight for a block, see BIP 141 (network rule) */
static const unsigned int MAX_BLOCK_WEIGHT = 4000000;

Block Weight didefinisikan sebagai :

  • Block Weight = (Base Size * 3) + Total Size

    • Base Size adalah ukuran Block tanpa mengikutkan Witness data
    • Total Size adalah ukuran keseluruhan Block termasuk Witness data didalamnya


Contoh, didapatkan informasi dari Block 777777 menggunakan argumen getblock "blockhash" ( verbosity = 1), sebagai berikut
Code:
"strippedsize": 557721,
"size": 2320181,
"weight": 3993344,
"strippedsize" merupakan Base Size, "size" adalah Total Size dan "weight" adalah Block Weight, sehingga jika informasi tersebut di kalkulasikan ke dalam rumus Block Weight, maka pemaparannya adalah sebagai berikut :

  • Block Weight = (557.721 * 3) + 2.320.181 = 3.993.344


Block dengan ukuran terbesar sejauh ini adalah Block 786.501
  • Total Size = 3.978.938
  • Base Size = 4.694
  • Block Weight = 3.993.020


* Source https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 02, 2024, 06:23:41 AM
Merited by ABCbits (3), Husna QA (3)
 #17

Membuat Taproot Address dan Transaksi Taproot

Untuk membuat Taproot address serta melakukan sebuah transaksi Taproot hanya bisa dilakukan dengan Descriptor Wallet

GUI Bitcoin Core (Membuat Taproot Address)

- Jalankan Bitcoin Core dan pilih fitur Receive
- Pilih jenis address Bech32m (Taproot)
- Tekan tombol Create new receiving address
- Address (Taproot) baru akan tertampilkan




GUI Bitcoin Core (Membuat Transaksi Taproot)

- (Optional) Pilih UTXO yang akan digunakan sebagai input transaksi
- (Optional) Tentukan Custom change address
- Masukan Address penerima pada kolom Pay to
- Tentukan jumlah BTC yang akan dikirimkan pada kolom Amount
- Tentukan Transaction Fee
- Tekan tombol Send untuk mengirimkan transaksi ke jaringan Bitcoin




Console Bitcoin Core (Membuat Taproot Address)

Code:
getnewaddress "label" "address_type"

Example
Code:
getnewaddress "Taproot-01" "bech32m"

Result
Code:
tb1p40hzwygkq4mmm6ma6e60003wj8ajx5rf2zqgj266zrcz4q573a2qj4uxa2




Console Bitcoin Core (Membuat Transaksi Taproot)

- Mengetahui terlebih dahulu list dari UTXO yang bisa digunakan
Code:
listunspent

Result
Code:
    "txid": "33a1dd004329816abb49e234becaccd4eb187d3582f27427d04c3233204ddba7",
    "vout": 0,
    "address": "tb1p7wwpfr76357xamffhs98tf944s24f45qq2ru4mcg35c9m0p7whesa9n6qg",
    "amount": 0.00050000

- Membuat RAW Transaction
Code:
createrawtransaction "[{\"txid\":\"hex\",\"vout\":n}]" "[{\"address\":amount}]"

Example
Code:
createrawtransaction "[{\"txid\":\"33a1dd004329816abb49e234becaccd4eb187d3582f27427d04c3233204ddba7\",\"vout\":0}]" "[{\"tb1pm4gapzznjhjm95wmv5xc8akkz4789mw4rczfx908xfdqv752fexqed28kf\":0.00049}]"
* Nilai Fee Transaksi = Amount (address penerima) - Amount (UTXO)

Result
Code:
0200000001a7db4d2033324cd02774f282357d18ebd4cccabe34e249bb6a81294300dda1330000000000fdffffff0168bf000000000000225120dd51d0885395e5b2d1db650d83f6d6157c72edd51e049315e7325a067a8a4e4c00000000

- Menandatangani RAW Transaction
Code:
signrawtransactionwithwallet "hexstring"

Example
Code:
signrawtransactionwithwallet "0200000001a7db4d2033324cd02774f282357d18ebd4cccabe34e249bb6a81294300dda1330000000000fdffffff0168bf000000000000225120dd51d0885395e5b2d1db650d83f6d6157c72edd51e049315e7325a067a8a4e4c00000000"

Result
Code:
{
  "hex": "02000000000101a7db4d2033324cd02774f282357d18ebd4cccabe34e249bb6a81294300dda1330000000000fdffffff0168bf000000000000225120dd51d0885395e5b2d1db650d83f6d6157c72edd51e049315e7325a067a8a4e4c01404ed57e0bc059ec06636e79fdfdb3dd03d576cf8a72a85bd599d45a4e9a98012503f838075af00ffd5e60f8f4b93c789333aec81e0283b172d41441eec6562c8100000000",
  "complete": true
}

- Mengirimkan transaksi ke Jaringan Bitcoin
Code:
sendrawtransaction "hexstring"

Example
Code:
sendrawtransaction "02000000000101a7db4d2033324cd02774f282357d18ebd4cccabe34e249bb6a81294300dda1330000000000fdffffff0168bf000000000000225120dd51d0885395e5b2d1db650d83f6d6157c72edd51e049315e7325a067a8a4e4c01404ed57e0bc059ec06636e79fdfdb3dd03d576cf8a72a85bd599d45a4e9a98012503f838075af00ffd5e60f8f4b93c789333aec81e0283b172d41441eec6562c8100000000"

Result
Code:
5d98f0eb7c25c51a54096e88770634ab41fa71bcd2814f11393268faab28cba7


███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 04, 2024, 07:09:43 AM
Merited by Husna QA (3)
 #18

Dalam Taproot ada 2 dasar dalam menggunakan Output Taproot sebagai UTXO didalam Input Transaksi baru (spending a Taproot output), yakni Key path spends dan Script path spends. Pada Key path spends, pengirim transaksi hanya perlu menyediakan Signature yang valid buat Public Key yang ada di UTXO. Sementara jika pada Script path spends, si pengirim perlu menyediakan TapScript sebagai bukti bahwa Output Taproot yang akan digunakan memang di commit dalam Tapscript tersebut.

Contoh Key path spends adalah seperti pada postingan yang telah saya buat diatas https://bitcointalk.org/index.php?topic=5484019.msg63745783#msg63745783. Dan untuk kali ini saya akan membuat contoh Script path spends (Tapscript) yang direpresentasikan ke dalam bentuk descriptor sehingga untuk Taproot Address yang dihasilkan dapat dengan mudah diimplementasikan ke dalam Bitcoin Core.

  • P2TR output dengan 2 Script path
  • P2TR output dengan MultiSig Script


P2TR output dengan 2 Script path

Pattern Script Descriptor

Code:
tr(Internal_Key),{pk(Public_Key_1),pk(Public_Key_2)}
* Berdasarkan Pattern descriptor diatas, berarti untuk menggunakan output Taproot (UTXO) bisa dengan hanya menyediakan salah satu Key dari : Internal_Key, Public_Key_1, atau Public_Key_2.

Bahan (harus merupakan Descriptor Wallet)

Wallet 00 sebagai pemilik Internal_Key
Wallet 11 sebagai pemilik Public_Key_1
Wallet 22 sebagai pemilik Public_Key_2

Mendapatkan informasi mengenai external path dan internal path dari masing-masing Descriptor (wallet) (listdescriptors)

Wallet 00
Code: (External Path)
"desc": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*)#f0czguqf",
"internal": false
Code: (Internal Path)
"desc": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*)#cmar4fs3",
"internal": true

Wallet 11
Code: (External Path)
"desc": "tr([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*)#u82xk78h",
"internal": false
Code: (Internal Path)
"desc": "tr([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*)#dn08tth0",
"internal": true

Wallet 22
Code: (External Path)
"desc": "tr([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*)#rltec0an",
"internal": false
Code: (Internal Path)
"desc": "tr([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*)#jtwc96dt",
"internal": true

Menyusun Script Descriptor

Pola Script : tr(Internal_Key),{pk(Public_Key_1),pk(Public_Key_2)}

External Path Descriptor
Code:
tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*)})

Internal Path Descriptor
Code:
tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*)})

Mendapatkan informasi External Path Descriptor dan Internal Path Descriptor menggunakan perintah getdescriptorinfo

Code: (getdescriptorinfo External Path Descriptor)
"descriptor": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*)})#usknyqrk",
"checksum": "usknyqrk"

Code: (getdescriptorinfo Internal Path Descriptor)
"descriptor": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*)})#6y79uuqu",
"checksum": "6y79uuqu"

Meng-Import kombinasi External Path Descriptor dan Internal Path Descriptor ke Watch-Only Descriptor Wallet

Membuat Watch-Only Descriptor Wallet
Code:
createwallet "wallet_name" disable_private_keys blank
Code:
createwallet "Watch-Only-Descriptor" true true

Import kombinasi External Path Descriptor dan Internal Path
Code:
importdescriptor '[{ "desc": "External Path Descriptor", "active": true, "timestamp": "now", "internal": false },{ "desc": "Internal Path Descriptor", "active": true, "timestamp": "now", "internal": true }]'
Code:
importdescriptor '[{ "desc": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*)})#usknyqrk", "active": true, "timestamp": "now", "internal": false },{ "desc": "tr([92322c00/86h/1h/0h]tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*,{pk([e803af25/86h/1h/0h]tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*),pk([936805e3/86h/1h/0h]tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*)})#6y79uuqu", "active": true, "timestamp": "now", "internal": true }]'

Membuat Taproot Address yang merepresentasikan Script path spends diatas
Code:
getnewaddress "label" "address_type"
Code:
getnewaddress "Nama-Address-bebas" "bech32m"




P2TR output dengan MultiSig Script

Untuk langkah-langkahnya sama dengan membuat Taproot Address (P2TR output dengan 2 Script path), namun yang berbeda hanyalah di pola Script Descriptor yang akan digunakan

Pattern Script Descriptor

Code:
tr(Internal_Key,sortedmulti_a(n,Public_Key_1,...,Public_Key_m))

n = Jumlah Key yang diperlukan untuk melakukan otorisasi
m = Jumlah Public Key yang digunakan dalam Multi-Sig

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
ABCbits
Legendary
*
Offline Offline

Activity: 2870
Merit: 7490


Crypto Swap Exchange


View Profile
March 04, 2024, 09:09:51 AM
Merited by punk.zink (1)
 #19

Block Size

Pada awalnya limit dari ukuran Block adalah 1.000.000 bytes (1MB)

Quote
/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;

Sebagai informasi tambahan, pada awalnya ukuran maksimal block bukan 1MB. Hal tersebut ditambahkan oleh Satoshi pada pertengahan 2010, https://github.com/bitcoin/bitcoin/commit/a30b56eb.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
March 05, 2024, 12:50:32 AM
 #20

Block Size

Pada awalnya limit dari ukuran Block adalah 1.000.000 bytes (1MB)

Quote
/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;

Sebagai informasi tambahan, pada awalnya ukuran maksimal block bukan 1MB. Hal tersebut ditambahkan oleh Satoshi pada pertengahan 2010, https://github.com/bitcoin/bitcoin/commit/a30b56eb.

Saya baca di sini: https://en.bitcoin.it/wiki/Scalability_FAQ, awalnya dirilis dengan dynamic block:

Quote
Bitcoin was initially released with a dynamic block "change" limit equivalent to approximately 500kB worth of normal transactions; there was a "hard" size limit of 32 MiB, but it was effectively impractical to hit unless one crafted a spam block.

Beberapa referensi terkait history dari block size:
2009 — April (email satoshi kepada Mike Hearn): https://bitcointalk.org/index.php?topic=149668.msg1596879#msg1596879
2010 diskusi mengenai pemberlakuan ukuran blok default 1MB: https://bitcointalk.org/index.php?topic=946236.msg10388435#msg10388435


-snip-
In fact, in the very first email he sent me back in April 2009, he said this:

Quote from: satoshi
Hi Mike,

I'm glad to answer any questions you have.  If I get time, I ought to write a FAQ to supplement the paper.

There is only one global chain.

The existing Visa credit card network processes about 15 million Internet purchases per day worldwide.  Bitcoin can already scale much larger than that with existing hardware for a fraction of the cost.  It never really hits a scale ceiling.  If you're interested, I can go over the ways it would cope with extreme size.

By Moore's Law, we can expect hardware speed to be 10 times faster in 5 years and 100 times faster in 10.  Even if Bitcoin grows at crazy adoption rates, I think computer speeds will stay ahead of the number of transactions.

I don't anticipate that fees will be needed anytime soon, but if it becomes too burdensome to run a node, it is possible to run a node that only processes transactions that include a transaction fee.  The owner of the node would decide the minimum fee they'll accept.  Right now, such a node would get nothing, because nobody includes a fee, but if enough nodes did that, then users would get faster acceptance if they include a fee, or slower if they don't.  The fee the market would settle on should be minimal.  If a node requires a higher fee, that node would be passing up all transactions with lower fees.  It could do more volume and probably make more money by processing as many paying transactions as it can.  The transition is not controlled by some human in charge of the system though, just individuals reacting on their own to market forces.

Eventually, most nodes may be run by specialists with multiple GPU cards.  For now, it's nice that anyone with a PC can play without worrying about what video card they have, and hopefully it'll stay that way for a while.  More computers are shipping with fairly decent GPUs these days, so maybe later we'll transition to that.

Satoshi said back in 2010 that he intended larger block sizes to be phased in with some simple if (height > flag_day) type logic, theymos has linked to the thread before.
-snip-

For what it's worth:  

I'm the guy who went over the blockchain stuff in Satoshi's first cut of the bitcoin code.  Satoshi didn't have a 1MB limit in it. The limit was originally Hal Finney's idea.  Both Satoshi and I objected that it wouldn't scale at 1MB.  Hal was concerned about a potential DoS attack though, and after discussion, Satoshi agreed.  The 1MB limit was there by the time Bitcoin launched.  But all 3 of us agreed that 1MB had to be temporary because it would never scale.
-snip-

Chikito
Legendary
*
Offline Offline

Activity: 2380
Merit: 2054



View Profile WWW
March 06, 2024, 03:05:54 AM
 #21

Untuk membuat Taproot address serta melakukan sebuah transaksi Taproot hanya bisa dilakukan dengan Descriptor Wallet
Selain bitcoin core, taproot address bisa juga dibuat menggunakan sparrow wallet, hal ini pernah saya bahas pada april 2022 lalu [1]. Mungkin awal-awal dulu tidak banyak faucet yang bisa nerima taproot address versi testnet, sehingga agak minim untuk melakukan penelitian kayak sekarang. Namun sekarang ini sudah banyak wallet yang support karena banyaknya token-token sempalan di bitcoin blockchain kayak brc20 dan ordinal yang bikin macet lalu lintas jaringan.

[1]. [Introduction] Sparrow for bitcoin Wallet (Taproot Address)
[2]. Taproot

.
.BLACKJACK ♠ FUN.
█████████
██████████████
████████████
█████████████████
████████████████▄▄
░█████████████▀░▀▀
██████████████████
░██████████████
████████████████
░██████████████
████████████
███████████████░██
██████████
CRYPTO CASINO &
SPORTS BETTING
▄▄███████▄▄
▄███████████████▄
███████████████████
█████████████████████
███████████████████████
█████████████████████████
█████████████████████████
█████████████████████████
███████████████████████
█████████████████████
███████████████████
▀███████████████▀
█████████
.
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
March 06, 2024, 04:52:16 AM
 #22

Untuk membuat Taproot address serta melakukan sebuah transaksi Taproot hanya bisa dilakukan dengan Descriptor Wallet
Selain bitcoin core, taproot address bisa juga dibuat menggunakan sparrow wallet, hal ini pernah saya bahas pada april 2022 lalu [1]. Mungkin awal-awal dulu tidak banyak faucet yang bisa nerima taproot address versi testnet, sehingga agak minim untuk melakukan penelitian kayak sekarang. Namun sekarang ini sudah banyak wallet yang support karena banyaknya token-token sempalan di bitcoin blockchain kayak brc20 dan ordinal yang bikin macet lalu lintas jaringan.

[1]. [Introduction] Sparrow for bitcoin Wallet (Taproot Address)
[2]. Taproot


Yang saya pahami dari konteks penyebutan Taproot hanya bisa di Descriptor wallet oleh agan z@punk di atas mengacu jika menggunakan wallet Bitcoin Core.
Dengan kata lain Legacy wallet di Bitcoin Core tidak bisa menghasilkan address Taproot dan tidak bisa digunakan untuk transaksi dengan tipe address Bitcoin tersebut.



Nampak pada screenshot tidak ada opsi Taproot ketika menggunakan Legacy wallet.

Sementara itu, mengenai wallet mana saja yang sudah support transaksi menggunakan Taproot address (Bech32m/P2TR), bisa juga dilihat di sini:
https://en.bitcoin.it/wiki/Bech32_adoption

punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 06, 2024, 08:17:39 AM
Last edit: April 21, 2024, 04:57:37 AM by punk.zink
Merited by Husna QA (2)
 #23

=== Tantangan Taproot === [Ended]

- Jaringan : Bitcoin Testnet
- Membuat MultiSig Taproot Address (2-of-2)
- Import MultiSig Taproot Address (2-of-2) ke Bitcoin Core
- Membuat Transaksi MultiSig (2-of-2) menggunakan UTXO* dari MultiSig Taproot Address (2-of-2)
* Agar MultiSig Taproot Address (2-of-2) memiliki UTXO, maka harus dibuat transaksi (lain) dimana MultiSig Taproot Address (2-of-2) sebagai address penerima

Posting (tanda keikutsertaan terhadap Tantangan Taproot)
1. MultiSig Taproot Address (2-of-2)
2. TXID dari transaksi MultiSig (2-of-2) yang dibuat
3. Proof yang menyatakan MultiSig Taproot Address (2-of-2) berhasil di import ke Bitcoin Core (testnet) (screenshot dari Receiving Address)


Contoh :

1. MultiSig Taproot Address (2-of-2) tb1pup9ut295a0j72hyje8h4ktnk9kls7jegfn5jl6kpun4scqfpe7gsg8m6p2
2. TXID ccac49ac2cdedb60c53e107b8e735790ad0be4968761cb02776dcc68e079522a
3. Proof



- Masing-masing peserta yang bisa menyelesaikan tantangan akan mendapatkan 5 merit

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 06, 2024, 08:55:54 AM
Last edit: March 06, 2024, 09:08:15 AM by punk.zink
 #24

Nampaknya ada yang sedang ber-eksperimen dengan Tantangan Taproot, namun malah salah sasaran dengan mengirimkan tBTC ke address contoh
https://mempool.space/testnet/tx/86564cc1ed6f7c3664f7584ae812c4a4f23e34f141854aa93d1f20066440c4f9

Masing-masing peserta membuat MultiSig Taproot Address (2-of-2) dan import address tersebut ke Bitcoin Core testnet
Setelah itu kirimkan tBTC ke MultiSig Taproot Address (2-of-2) yang anda buat (misal dihasilkan TXID A)
Lalu buat Transaksi MultiSig (2-of-2) dengan input yang menggunakan TXID A sebagai UTXO (transaksi ini akan menghasilkan txid, misal TXID B)

Yang diposting calon peserta:
1. MultiSig Taproot Address (2-of-2) yang dibuat oleh masing-masing peserta
2. TXID B (txid dari Transaksi MultiSig (2-of-2))
3. Screenshoot dari Receiving Address di Wallet Bicoin Core (yang merupakan MultiSig Taproot Address (2-of-2) yang dibuat oleh masing-masing peserta)



edited:

Untuk seseorang : tBTC yang dikirimkan ke address contoh sudah saya kirim balik ke Address tb1qpz42mxgklwkxhefj7ryg25788kftlx6p9xphgh

https://mempool.space/testnet/tx/e9bfad68aca2842cf0347cc1f4689fcc8ae8db12aae51b3626b879ecb3da6e23

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 09, 2024, 07:09:39 AM
 #25

Taproot yang mengimplementasikan MAST Protocol memberikan keuntungan yang cukup besar pada saat membuat sebuah transaksi, dimana dalam hal ini sebuah transaksi jadi memiliki use case dan opsi yang lebih beragam. Dengan adanya MAST Protocol maka untuk setiap penggunaan UTXO (output dari Transaksi yang belum digunakan) bisa didasarkan pada struktur script dari sebuah Merkle Tree (script Tree), sementara script yang disusun dalam script Tree tersebut disebut dengan istilah Tapscript.

Sebelum Taproot direlease, jika kita ingin membuat sebuah Transaksi Multisig pada format transaksi P2SH maupun P2WSH, maka untuk bisa menggunakan UTXO pada transaksi tersebut diperlukan signature dari masing-masing Key yang terkorelasi. Sementara pada Taproot, memungkinkan bagi suatu transaksi yang dalam penggunaan UTXO-nya diwakili oleh proses MultiSig atau menggunakan metode unlocking lainnya yang didasarkan pada Tapscript yang sudah dituliskan di script Tree.

Untuk detail lebih lanjut, maka akan saya berikan contoh pembuatan sebuah Taproot Address yang menggunakan dasar Script path spends, dimana pada struktur script Tree memiliki 2 Tapscript dengan fungsi yang berbeda. Tascript pertama merupakan unlocking-script berdasarkan proses Multisig 2-of-2, sementara untuk Tapscript kedua merupakan unlocking-script yang didasarkan pada signature dari dari sebuah Private Key.

Contoh kasus penggunaan Script path spends diatas bisa dijadikan opsi bagi seseorang (Owner contohnya) yang memiliki 2 wakil terpecaya, dimana untuk setiap transaksi yang dibuat bisa dilakukan oleh 2 wakil tersebut dengan masing-masing melakukan "sign" secara terpisah atau transaksi bisa dilakukan cukup dengan hanya mendapatkan "sign" dari si Owner sendiri. Sementara untuk pembuatan Taproot address dan transaksi, bisa dilakukan oleh pihak ke-4 (sekretaris misalnya  Grin).



Transaksi Taproot dengan 2 opsi Script path spends


Bahan
  • 3 Extended Private Key untuk masing-masing : Owner, Signer 1 dan Signer 2
  • 1 Extended Public Key sebagai Internal Key (dalam bentuk X-Only PubKey)
  • Node JS dan bitcoinjs-lib (serta beberapa library JavaScript lainnya))

Membuat Address

- Untuk masing-masing node harus selalu menampilkan (provide) library dibawah ini, dalam setiap prosesnya
Code:
import * as bitcoin from "bitcoinjs-lib";
import { BIP32Factory } from 'bip32';
import * as bip39 from 'bip39';
import * as ecc from "tiny-secp256k1";
const testnet = bitcoin.networks.testnet;
import pkg from 'bip174/src/lib/interfaces.js';
const { PsbtInput, TapLeaf, TapLeafScript } = pkg;
import { LEAF_VERSION_TAPSCRIPT } from 'bitcoinjs-lib/src/payments/bip341.js';
import { toXOnly, tapTreeToList, tapTreeFromList } from 'bitcoinjs-lib/src/psbt/bip371.js';
bitcoin.initEccLib(ecc);
const bip32 = BIP32Factory(ecc);


- Mendapatkan X-Only PubKey dari masing-masing: Owner, Signer 1 dan Signer 2

  • Owner
Code:
const xprivOwner = 'tprv8ZgxMBicQKsPduxxxxxxxxxxxxxxxxCueWfakJRjEbiJKTwgx';
const OwnerKey = bip32.fromBase58(xprivOwner, bitcoin.networks.testnet);
const ownerPubkeys = toXOnly(OwnerKey.publicKey).toString('hex');

console.log("PubKey Owner: " + ownerPubkeys)

  • Signer 1
Code:
const xprivleafKey1 = 'tprv8ZgxMBicQKsPe9xxxxxxxxxxxxxxxxxx2nLLNwKkpfbPq91W';
const leafKey1 = bip32.fromBase58(xprivleafKey1, bitcoin.networks.testnet);
const leafPubkeys1 = toXOnly(leafKey1.publicKey).toString('hex');

console.log("signerPubkeys1: " + leafPubkeys1);

  • Signer 2
Code:
const xprivleafKey2 = 'tprv8ZgxMBicQKsPeMxxxxxxxxxxxxxABFVfaGRRwz9vqDnwSK2';
const leafKey2 = bip32.fromBase58(xprivleafKey2, bitcoin.networks.testnet);
const leafPubkeys2 = toXOnly(leafKey2.publicKey).toString('hex');

console.log("signerPubkeys2: " + leafPubkeys2);


- Membuat Address di Node Operator
Code:
const xpubKey = 'tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9';
const internalKey = bip32.fromBase58(xpubKey, bitcoin.networks.testnet);

const ownerPubkeys = '6d966f42e1672c8ebd5224f48bb67ae698ee2a11aa84bd8eeebae06457822bb8';
const ownerAsm = `${ownerPubkeys} OP_CHECKSIG`;
const ownerScript = bitcoin.script.fromASM(ownerAsm);

const signerPubkeys1 = '8a30b94ede9dcb8831339b8cd68856b52f745164c944f1b46cb2832b6c3d9468';
const signerPubkeys2 = '5b7955d831a41e5c4d4cf7dc07f4d8463c96f2492e0d2633df2d01d3074de2d2';
const leafScriptAsm = `${signerPubkeys2} OP_CHECKSIG ${signerPubkeys1} OP_CHECKSIGADD OP_2 OP_NUMEQUAL`;
const leafScript = bitcoin.script.fromASM(leafScriptAsm);

const scriptTree = [{ output: leafScript },{ output: ownerScript }];

const { output, address, witness } = bitcoin.payments.p2tr({
 internalPubkey: toXOnly(internalKey.publicKey),
          scriptTree,
          network: testnet,
    });

console.log(address);
Code:
tb1p2dk7yuq5rqt5jt2dr2njjrsdv2g5d6lxszc8c8herd6k2gd00w5ql574z6


MembuatTransaksi dengan opsi spending MultiSig (Signer 1 dan Signer 2)

- Operator
Code:
const xpubKey = 'tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9';
const internalKey = bip32.fromBase58(xpubKey, bitcoin.networks.testnet);

const ownerPubkeys = '6d966f42e1672c8ebd5224f48bb67ae698ee2a11aa84bd8eeebae06457822bb8';
const ownerAsm = `${ownerPubkeys} OP_CHECKSIG`;
const ownerScript = bitcoin.script.fromASM(ownerAsm);

const signerPubkeys1 = '8a30b94ede9dcb8831339b8cd68856b52f745164c944f1b46cb2832b6c3d9468';
const signerPubkeys2 = '5b7955d831a41e5c4d4cf7dc07f4d8463c96f2492e0d2633df2d01d3074de2d2';
const leafScriptAsm = `${signerPubkeys2} OP_CHECKSIG ${signerPubkeys1} OP_CHECKSIGADD OP_2 OP_NUMEQUAL`;
const leafScript = bitcoin.script.fromASM(leafScriptAsm);

const scriptTree = [{ output: leafScript },{ output: ownerScript }];

const redeem = {output: leafScript, redeemVersion: LEAF_VERSION_TAPSCRIPT};
const { output, address, witness } = bitcoin.payments.p2tr({
 internalPubkey: toXOnly(internalKey.publicKey),
          scriptTree,
 redeem,
          network: testnet,
    });

    const psbt = new bitcoin.Psbt({ network: testnet });
      psbt.addInput({
      hash: '503eec63c75856eb07afe77d70d3e2dafbbbf4b79620aecad77bdbcbfe7c64f1',
      index: 0,
      sequence: 0xfffffffd,
      witnessUtxo: { value: 6000, script: output },
    });
    psbt.updateInput(0, {
      tapLeafScript: [
        {
          leafVersion: redeem.redeemVersion,
          script: redeem.output,
          controlBlock: witness[witness.length - 1],
        },
      ],
    });

    psbt.addOutput({ value: 5000, address: 'tb1p40hzwygkq4mmm6ma6e60003wj8ajx5rf2zqgj266zrcz4q573a2qj4uxa2' });

const psbtBaseText = psbt.toBase64();
console.log(psbtBaseText);
Code:
cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hCFcAzSQvwke9DYlTYXfRMck3bo29xvGYMdkl1qrANcfi2Cwy+HkXt24UDL8NETuPjZsq8jWkEXsRTYJIKq88z6B+QRyBbeVXYMaQeXE1M99wH9NhGPJbySS4NJjPfLQHTB03i0qwgijC5Tt6dy4gxM5uM1ohWtS90UWTJRPG0bLKDK2w9lGi6UpzAAAA=

- Signer 1
Code:
const xprivleafKey1 = 'tprv8ZgxMBicQKsPe9xxxxxxxxxxxxxxxxxx2nLLNwKkpfbPq91W';
const leafKey1 = bip32.fromBase58(xprivleafKey1, bitcoin.networks.testnet);
const leafPubkeys1 = toXOnly(leafKey1.publicKey).toString('hex');

const psbtBaseText = 'cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hCFcAzSQvwke9DYlTYXfRMck3bo29xvGYMdkl1qrANcfi2Cwy+HkXt24UDL8NETuPjZsq8jWkEXsRTYJIKq88z6B+QRyBbeVXYMaQeXE1M99wH9NhGPJbySS4NJjPfLQHTB03i0qwgijC5Tt6dy4gxM5uM1ohWtS90UWTJRPG0bLKDK2w9lGi6UpzAAAA=';
const signer1 = bitcoin.Psbt.fromBase64(psbtBaseText);
signer1.signInput(0, leafKey1);
const s1text = signer1.toBase64();
console.log(s1text);
Code:
cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hBFIowuU7encuIMTObjNaIVrUvdFFkyUTxtGyygytsPZRok7gNaaaDtCpJyM5GhvRzAcyKePQaVyILPVPtpGk/yh1AAAkxDsWe8OnaFRJij+PQE8kIgzulwzZp+YawGXz/N2zvWetSDHJNS2SDi/r3y7lGlShsyuA4j//6fjx3fi39mkIVwDNJC/CR70NiVNhd9ExyTdujb3G8Zgx2SXWqsA1x+LYLDL4eRe3bhQMvw0RO4+NmyryNaQRexFNgkgqrzzPoH5BHIFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSrCCKMLlO3p3LiDEzm4zWiFa1L3RRZMlE8bRssoMrbD2UaLpSnMAAAA==

- Signer 2
Code:
const xprivleafKey2 = 'tprv8ZgxMBicQKsPeMxxxxxxxxxxxxxABFVfaGRRwz9vqDnwSK2';
const leafKey2 = bip32.fromBase58(xprivleafKey2, bitcoin.networks.testnet);
const leafPubkeys2 = toXOnly(leafKey2.publicKey).toString('hex');

const psbtBaseText = 'cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hCFcAzSQvwke9DYlTYXfRMck3bo29xvGYMdkl1qrANcfi2Cwy+HkXt24UDL8NETuPjZsq8jWkEXsRTYJIKq88z6B+QRyBbeVXYMaQeXE1M99wH9NhGPJbySS4NJjPfLQHTB03i0qwgijC5Tt6dy4gxM5uM1ohWtS90UWTJRPG0bLKDK2w9lGi6UpzAAAA=';
const signer2 = bitcoin.Psbt.fromBase64(psbtBaseText);
signer2.signInput(0, leafKey2);
const s2text = signer2.toBase64();
console.log(s2text);
Code:
cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hBFFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSk7gNaaaDtCpJyM5GhvRzAcyKePQaVyILPVPtpGk/yh1AS3lC0idY+mWKk5QqyvpyLlNZDCFtAFzVGuzvA8VLsfvQO28bRiw+hjJa6m05sJH4KwQX8GiAX17sfiMjnvNJUEIVwDNJC/CR70NiVNhd9ExyTdujb3G8Zgx2SXWqsA1x+LYLDL4eRe3bhQMvw0RO4+NmyryNaQRexFNgkgqrzzPoH5BHIFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSrCCKMLlO3p3LiDEzm4zWiFa1L3RRZMlE8bRssoMrbD2UaLpSnMAAAA==

- Kembali ke Operator (tuliskan perintah ini dibawah perintah-perintah lain yang sebelumnya sudah dituliskan di atas)
Code:
// const psbtBaseText = psbt.toBase64(); (tanda // bisa ditambahkan agar perintah tidak dieksekusi oleh Node JS)
// console.log(psbtBaseText);

const s1text = 'cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hBFIowuU7encuIMTObjNaIVrUvdFFkyUTxtGyygytsPZRok7gNaaaDtCpJyM5GhvRzAcyKePQaVyILPVPtpGk/yh1AAAkxDsWe8OnaFRJij+PQE8kIgzulwzZp+YawGXz/N2zvWetSDHJNS2SDi/r3y7lGlShsyuA4j//6fjx3fi39mkIVwDNJC/CR70NiVNhd9ExyTdujb3G8Zgx2SXWqsA1x+LYLDL4eRe3bhQMvw0RO4+NmyryNaQRexFNgkgqrzzPoH5BHIFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSrCCKMLlO3p3LiDEzm4zWiFa1L3RRZMlE8bRssoMrbD2UaLpSnMAAAA==';
const s2text = 'cHNidP8BAF4CAAAAAfFkfP7L23vXyq4glrf0u/va4tNwfeevB+tWWMdj7D5QAAAAAAD/////AYgTAAAAAAAAIlEgq+4nERYFd73rfdZ0974ukfsjUGlQgIkrWhDwKoKej1QAAAAAAAEBK3AXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6hBFFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSk7gNaaaDtCpJyM5GhvRzAcyKePQaVyILPVPtpGk/yh1AS3lC0idY+mWKk5QqyvpyLlNZDCFtAFzVGuzvA8VLsfvQO28bRiw+hjJa6m05sJH4KwQX8GiAX17sfiMjnvNJUEIVwDNJC/CR70NiVNhd9ExyTdujb3G8Zgx2SXWqsA1x+LYLDL4eRe3bhQMvw0RO4+NmyryNaQRexFNgkgqrzzPoH5BHIFt5VdgxpB5cTUz33Af02EY8lvJJLg0mM98tAdMHTeLSrCCKMLlO3p3LiDEzm4zWiFa1L3RRZMlE8bRssoMrbD2UaLpSnMAAAA==';

const sign1 = bitcoin.Psbt.fromBase64(s1text);
const sign2 = bitcoin.Psbt.fromBase64(s2text);
psbt.combine(sign1, sign2);
psbt.finalizeAllInputs();
const tx = psbt.extractTransaction();
const rawTx = tx.toBuffer();
const hex = rawTx.toString('hex');
console.log(hex);
Code:
02000000000101f1647cfecbdb7bd7caae2096b7f4bbfbdae2d3707de7af07eb5658c763ec3e500000000000ffffffff018813000000000000225120abee2711160577bdeb7dd674f7be2e91fb2350695080892b5a10f02a829e8f5404400009310ec59ef0e9da1512628fe3d013c908833ba5c33669f986b0197cff376cef59eb520c724d4b64838bfaf7cbb94695286ccae0388ffffa7e3c777e2dfd9a404b7942d22758fa658a93942acafa722e53590c216d005cd51aecef03c54bb1fbd03b6f1b462c3e86325aea6d39b091f82b0417f068805f5eec7e23239ef3495046205b7955d831a41e5c4d4cf7dc07f4d8463c96f2492e0d2633df2d01d3074de2d2ac208a30b94ede9dcb8831339b8cd68856b52f745164c944f1b46cb2832b6c3d9468ba529c41c033490bf091ef436254d85df44c724ddba36f71bc660c764975aab00d71f8b60b0cbe1e45eddb85032fc3444ee3e366cabc8d69045ec45360920aabcf33e81f9000000000

- Selanjutnya tinggal mengirimkan RAW Transaction diatas ke jaringan Bitcoin Testnet

- TXID b402e905a9c323868f8d69fbd3be9061e2fca6a7f0e5ed628cf1bbf8ed8dd1a7

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 09, 2024, 07:32:03 AM
 #26

MembuatTransaksi dengan opsi spending menggunakan Signature Owner Key

- Node Operator

Code:
import * as bitcoin from "bitcoinjs-lib";
import { BIP32Factory } from 'bip32';
import * as bip39 from 'bip39';
import * as ecc from "tiny-secp256k1";
const testnet = bitcoin.networks.testnet;
import pkg from 'bip174/src/lib/interfaces.js';
const { PsbtInput, TapLeaf, TapLeafScript } = pkg;
import { LEAF_VERSION_TAPSCRIPT } from 'bitcoinjs-lib/src/payments/bip341.js';
import { toXOnly, tapTreeToList, tapTreeFromList } from 'bitcoinjs-lib/src/psbt/bip371.js';
bitcoin.initEccLib(ecc);
const bip32 = BIP32Factory(ecc);

const xpubKey = 'tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9';
const internalKey = bip32.fromBase58(xpubKey, bitcoin.networks.testnet);

const ownerPubkeys = '6d966f42e1672c8ebd5224f48bb67ae698ee2a11aa84bd8eeebae06457822bb8';
const ownerAsm = `${ownerPubkeys} OP_CHECKSIG`;
const ownerScript = bitcoin.script.fromASM(ownerAsm);

const signerPubkeys1 = '8a30b94ede9dcb8831339b8cd68856b52f745164c944f1b46cb2832b6c3d9468';
const signerPubkeys2 = '5b7955d831a41e5c4d4cf7dc07f4d8463c96f2492e0d2633df2d01d3074de2d2';
const leafScriptAsm = `${signerPubkeys2} OP_CHECKSIG ${signerPubkeys1} OP_CHECKSIGADD OP_2 OP_NUMEQUAL`;
const leafScript = bitcoin.script.fromASM(leafScriptAsm);

const scriptTree = [{ output: leafScript },{ output: ownerScript }];

const redeem = {output: ownerScript, redeemVersion: LEAF_VERSION_TAPSCRIPT};
const { output, address, witness } = bitcoin.payments.p2tr({
  internalPubkey: toXOnly(internalKey.publicKey),
          scriptTree,
          redeem,
          network: testnet,
    });

// console.log(address);

    const psbt = new bitcoin.Psbt({ network: testnet });
    psbt.addInput({
      hash: '46d95f4c9f40a94f2225f8ec69931615ff673164060a0f1f5b41c112a720d7fb',
      index: 0,
      sequence: 0xfffffffd,
      witnessUtxo: { value: 7878, script: output },
    });
    psbt.updateInput(0, {
      tapLeafScript: [
        {
          leafVersion: redeem.redeemVersion,
          script: redeem.output,
          controlBlock: witness[witness.length - 1],
        },
      ],
    });

    psbt.addOutput({ value: 6000, address: 'tb1p2dk7yuq5rqt5jt2dr2njjrsdv2g5d6lxszc8c8herd6k2gd00w5ql574z6' });
    psbt.addOutput({ value: 1000, address: 'tb1p40hzwygkq4mmm6ma6e60003wj8ajx5rf2zqgj266zrcz4q573a2qj4uxa2' });

const psbtBaseText = psbt.toBase64();
console.log(psbtBaseText);

Hasil PSBT
Code:
cHNidP8BAIkCAAAAAfvXIKcSwUFbHw8KBmQxZ/8VFpNp7PglIk+pQJ9MX9lGAAAAAAD/////AnAXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6joAwAAAAAAACJRIKvuJxEWBXe9633WdPe+LpH7I1BpUICJK1oQ8CqCno9UAAAAAAABASvGHgAAAAAAACJRIFNt4nAUGBdJLU0apykODWKRRuvmgLB8HvkbdWUhr3uoQhXAM0kL8JHvQ2JU2F30THJN26NvcbxmDHZJdaqwDXH4tguTuA1ppoO0KknIzkaG9HMBzIp49BpXIgs9U+2kaT/KHSMgbZZvQuFnLI69UiT0i7Z65pjuKhGqhL2O7rrgZFeCK7iswAAAAA==



- Owner (proses Sign PSBT yang dibuat oleh node Operator)

Code:
import { BIP32Factory } from 'bip32';
import * as bip39 from 'bip39';
import * as ecc from "tiny-secp256k1";
import * as bitcoin from "bitcoinjs-lib";
const testnet = bitcoin.networks.testnet;
import pkg from 'bip174/src/lib/interfaces.js';
const { PsbtInput, TapLeaf, TapLeafScript } = pkg;
import { LEAF_VERSION_TAPSCRIPT } from 'bitcoinjs-lib/src/payments/bip341.js';
import { toXOnly, tapTreeToList, tapTreeFromList } from 'bitcoinjs-lib/src/psbt/bip371.js';
bitcoin.initEccLib(ecc);
const bip32 = BIP32Factory(ecc);

const xprivOwner = 'tprv8ZgxMBicQKsPduxxxxxxxxxxxxxxxxCueWfakJRjEbiJKTwgx';
const OwnerKey = bip32.fromBase58(xprivOwner, bitcoin.networks.testnet);
const ownerPubkeys = toXOnly(OwnerKey.publicKey).toString('hex');

// console.log("PubKey Owner: " + ownerPubkeys); 6d966f42e1672c8ebd5224f48bb67ae698ee2a11aa84bd8eeebae06457822bb8

const psbtBaseText = 'cHNidP8BAIkCAAAAAfvXIKcSwUFbHw8KBmQxZ/8VFpNp7PglIk+pQJ9MX9lGAAAAAAD/////AnAXAAAAAAAAIlEgU23icBQYF0ktTRqnKQ4NYpFG6+aAsHwe+Rt1ZSGve6joAwAAAAAAACJRIKvuJxEWBXe9633WdPe+LpH7I1BpUICJK1oQ8CqCno9UAAAAAAABASvGHgAAAAAAACJRIFNt4nAUGBdJLU0apykODWKRRuvmgLB8HvkbdWUhr3uoQhXAM0kL8JHvQ2JU2F30THJN26NvcbxmDHZJdaqwDXH4tguTuA1ppoO0KknIzkaG9HMBzIp49BpXIgs9U+2kaT/KHSMgbZZvQuFnLI69UiT0i7Z65pjuKhGqhL2O7rrgZFeCK7iswAAAAA==';

const owner = bitcoin.Psbt.fromBase64(psbtBaseText);
const psbt = owner.signInput(0, OwnerKey);

psbt.finalizeAllInputs();
const tx = psbt.extractTransaction();
const rawTx = tx.toBuffer();
const hex = rawTx.toString('hex');
console.log(hex);

Hasil RAW Transaction
Code:
02000000000101fbd720a712c1415b1f0f0a06643167ff15169369ecf825224fa9409f4c5fd9460000000000ffffffff027017000000000000225120536de270141817492d4d1aa7290e0d629146ebe680b07c1ef91b756521af7ba8e803000000000000225120abee2711160577bdeb7dd674f7be2e91fb2350695080892b5a10f02a829e8f5403406b2294c125045c986a207bf60526cd1c0cb9eddc21f0d0d6caefda57c0d6b566cfe4b72267502fa6b3afd57f73c34e494ff540434e6861279f6f5f66568f498622206d966f42e1672c8ebd5224f48bb67ae698ee2a11aa84bd8eeebae06457822bb8ac41c033490bf091ef436254d85df44c724ddba36f71bc660c764975aab00d71f8b60b93b80d69a683b42a49c8ce4686f47301cc8a78f41a57220b3d53eda4693fca1d00000000

TXID 503eec63c75856eb07afe77d70d3e2dafbbbf4b79620aecad77bdbcbfe7c64f1

Kesimpulan
Dengan sebuah Taproot Address tb1p2dk7yuq5rqt5jt2dr2njjrsdv2g5d6lxszc8c8herd6k2gd00w5ql574z6 bisa dilakukan transaksi dengan menggunakan 2 opsi spending output yang berbeda, yakni menggunakan Signature dari Owner Key atau menggunakan prosedur MultiSig 2-of-2.

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 10, 2024, 04:21:26 AM
Last edit: March 10, 2024, 06:43:45 AM by punk.zink
 #27

Pada konsepnya Output pada setiap transaksi Taproot adalah 32_byte_Output_Key, yang bisa saja merupakan kombinasi dari satu buah Public Key (Internal Key) dengan Key Path maupun Script Path, atau hanya berupa kombinasi dari Internal Key (X-Only PubKey) dengan Hash TapTweak dari bytes Internal Key itu sendiri pada base point G (tidak dikombinasikan dengan Key Path dan Script Path). Sehingga dalam hal ini jika 32_byte_Output_Key merupakan kombinasi Internal key dengan Key Path atau Script Path dan Internal Key tersebut merupakan spendable Key, maka untuk pemilik (Private) Key dari Internal Key tersebut bisa menggunakan (dan membelanjakan) UTXO yang terkorelasi dengan Taproot Address tersebut.

Dalam contoh kasus diatas, Internal Key di generate secara random, yang berarti untuk opsi penggunaan Output hanya bisa dilakukan oleh Owner dan proses MultiSig (signer 1 dan signer 2) karena Private Key dari Internal Key tersebut tidak diketahui. Jika Private Key dari Internal Key di ketahui (dan disimpan) maka bisa dibuat sebuah transaksi dengan opsi pembelanjaan output menggunakan Signature dari Internal Key.

Kesimpulannya, Taproot Address merupakan hal yang kompleks karena memang tergantung bagaimana Address tersebut dibuat. Taproot Address tidak hanya bisa merepresentasikan Pay to Key maupun Pay to Script saja, namun juga bisa merepresentasikan 2 opsi itu sekaligus.




Contoh kasus dan implementasi pembuatan Address Taproot beserta transaksinya, yang semua prosesnya dibuat menggunakan JavaScript, mungkin memang terlihat cukup rumit. Dan jika barangkali ada sebuah pertanyaan, "Apakah contoh kasus diatas bisa diproses menggunakan Bitcoin Core ?", maka jawabannya adalah bisa.

Next, jika memang === Tantangan Taproot === tidak mendapatkan peminat dan peserta, maka akan saya coba uraikan bagaimana caranya membuat address Taproot dan transaksi berdasarkan skenario contoh kasus diatas (Owner, Signer 1 + Signer 2 dan Sekretaris), menggunakan Bitcoin Core.

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
abhiseshakana
Legendary
*
Online Online

Activity: 2226
Merit: 2229


From Zero to 2 times Self-Made Legendary


View Profile WWW
March 13, 2024, 12:38:19 PM
 #28

Output dan address Taproot dibuat berdasarkan script expression yang digunakan. Dalam hal ini bisa berupa Key: tr(Key) atau berupa kombinasi Key dan Script Tree: tr(Key, Tree). Jika ingin membuat address dengan penggunaan output yang hanya didasarkan pada Key Spend maka expression yang digunakan adalah tr(Key). Namun jika penggunaan output didasarkan pada Script Spend expression yang digunakan adalah tr(Key, Tree).

Contoh Taproot Multisig 3-of-4 Expression:
tr(Key1,multi_a(3,Key2,Key3,Key4,Key5))

https://github.com/bitcoin/bips/blob/master/bip-0386.mediawiki

.
.Duelbits.
█▀▀▀▀▀











█▄▄▄▄▄
TRY OUR
  NEW  UNIQUE
GAMES!
.
..DICE...
███████████████████████████████
███▀▀                     ▀▀███
███    ▄▄▄▄         ▄▄▄▄    ███
███   ██████       ██████   ███
███   ▀████▀       ▀████▀   ███
███                         ███
███                         ███
███                         ███
███   ▄████▄       ▄████▄   ███
███   ██████       ██████   ███
███    ▀▀▀▀         ▀▀▀▀    ███
███▄▄                     ▄▄███
███████████████████████████████
.
.MINES.
███████████████████████████████
████████████████████████▄▀▄████
██████████████▀▄▄▄▀█████▄▀▄████
████████████▀ █████▄▀████ █████
██████████      █████▄▀▀▄██████
███████▀          ▀████████████
█████▀              ▀██████████
█████                ██████████
████▌                ▐█████████
█████                ██████████
██████▄            ▄███████████
████████▄▄      ▄▄█████████████
███████████████████████████████
.
.PLINKO.
███████████████████████████████
█████████▀▀▀       ▀▀▀█████████
██████▀  ▄▄███ ███      ▀██████
█████  ▄▀▀                █████
████  ▀                    ████
███                         ███
███                         ███
███                         ███
████                       ████
█████                     █████
██████▄                 ▄██████
█████████▄▄▄       ▄▄▄█████████
███████████████████████████████
10,000x
MULTIPLIER
NEARLY UP TO
.50%. REWARDS
▀▀▀▀▀█











▄▄▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 26, 2024, 03:33:16 AM
Merited by ABCbits (8), Husna QA (3)
 #29

Intro

Transaksi Bitcoin secara umum diasumsikan sebagai proses transfer (pemindahan) balance Bitcoin dari satu address ke address lainnya yang disiarkan dan disebarkan ke Jaringan Blockchain Bitcoin. Namun yang sebenarnya menjadi kunci dari prosedur pemindahan Bitcoin dan proses diimplementasikan ke dalam sebuah transaksi adalah penggunaan scripting language. Saat transaksi dibuat maka akan menciptakan pasangan Script yang disebut dengan ScriptSig dan ScriptPubKey.

Jenis transaksi didalam jaringan Bitcoin dibedakan dari model ScriptSig dan ScriptPubKey yang digunakan, dan perlu digaris bawahi untuk setiap pasangan ScriptSig-ScriptPubKey tidak terkandung dalam satu kesatuan transaksi, namun ScriptPubKey dideskripsikan dalam Output transaksi (UTXO) yang akan dijadikan rujukan, sementara ScriptSig pasangannya dideskripsikan dalam Input transaksi yang menggunakan UTXO rujukan tersebut. Dengan kata lain ScriptPubKey merupakan script pengunci UTXO dan ScriptSig pasangannya merupakan Script pembuka untuk mengeklaim UTXO terkait.




Tipe / Jenis Transaksi



P2PK [Pay-to-Public-Key] Transaction

Tipe transaksi yang memiliki locking script berupa public key, sementara untuk unlocking script yang dipergunakan untuk mengeklaim kepemilikan output pada transaksi sebelumnya hanya merupakan signature saja

scriptPubKey:<pubKey> OP_CHECKSIG
scriptSig:<sig>

Contoh Transaksi P2PK
Output dari TXID A (12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba) direferensikan ke Input TXID B (4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79)

TXID A Raw Transaction
010000000173805864da01f15093f7837607ab8be7c3705e29a9d4a12c9116d709f8911e5901000 00049483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb 0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01fffffff f0200e1f50500000000434104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db 18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac009ce4a60000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a 6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac000000 00

TXID B Raw Transaction
0100000001ba91c1d5e55a9e2fab4e41f55b862a73b24719aad13a527d169c1fad3b63b51200000 00048473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd585263402204 7fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01ffffffff0100e1f50500000000434104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f7 41eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40ba e4ac00000000

ScriptPubKey: OP_PUSHBYTES_65 Public_Key OP_CHECKSIG
ScriptPubKey: 41 04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18 fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1 ac

Scriptsig: OP_PUSHBYTES_71 Signature
Scriptsig: 47 3044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047f d6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01





P2PKH [Pay-to-Public-Key-Hash] Transaction

Tipe transaksi yang memiliki locking script berupa hash dari public key, sementara untuk unlocking script merupakan signature dan public key yang terkait dengan UTXO yang digunakan pada Input transaksi tersebut.

scriptPubKey:OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig:<sig> <pubKey>

Contoh Transaksi P2PKH
Output dari TXID C (20ee9981691a2f2c5c92d80b9de271239f36ada3ce6274379c04cc0db13c6294) direferensikan ke Input TXID D (6014a32d1d5240c85f802a7acaca038f3cf1a9580e599c14b5ac6e0445bdf768)

TXID C Raw Transaction
010000000111815508187bfdd8231eb053d7385b3965308cec27db435beb22a8bdfcb7b46301000 0008b48304502200bedd579ec62d120adb144cbac23ae116270dcf077472720a20b88145389e51a 0221009ea2dc38028dfc8e97c612017de07c35b5226474460a9c77948b48dda7b62342014104d3d c9a919108ab1140d74755b7d9d976f9b41259853264f497700b6c9620fe6161809211a9731a431e 380736b48591be31b63ad1b42a9d57f9e4bb243dca8cdcffffffff0140420f00000000001976a914c4eb47ecfdcf609a1848ee79acc2fa49d3caad7088ac00000000

TXID D Raw Transaction
010000000194623cb10dcc049c377462cea3ad369f2371e29d0bd8925c2c2f1a698199ee2000000 0008b4830450221009e9a8d1078e42e826d86233c8afede2ee4083f5dab796b2b40256b8365ba29b4022 07ecf2df88a08bb8683ce28f4e20e97fc2033ea82a09d76892faeb9f4dd18b372014104a7135bfe 824c97ecc01ec7d7e336185c81e2aa2c41ab175407c09484ce9694b44953fcb751206564a9c24dd 094d42fdbfdd5aad3e063ce6af4cfaaea4ea14fbbffffffff0140420f00000000001976a9141a63b9abce33453ff15dc58070021d5ff978111a88ac0 0000000

ScriptPubKey: OP_DUP OP_HASH160 OP_PUSHBYTES_20 Public_Key_Hash OP_EQUALVERIFY OP_CHECKSIG
ScriptPubKey: 76 a9 14 c4eb47ecfdcf609a1848ee79acc2fa49d3caad70 88 ac

Scriptsig: OP_PUSHBYTES_72 Signature OP_PUSHBYTES_65 Public_Key
Scriptsig: 48 30450221009e9a8d1078e42e826d86233c8afede2ee4083f5dab796b2b40256b8365ba29b402207 ecf2df88a08bb8683ce28f4e20e97fc2033ea82a09d76892faeb9f4dd18b37201 41 04a7135bfe824c97ecc01ec7d7e336185c81e2aa2c41ab175407c09484ce9694b44953fcb751206 564a9c24dd094d42fdbfdd5aad3e063ce6af4cfaaea4ea14fbb





P2SH [Pay-to-Script-Hash] Transaction

Unlocking Script pada transaksi tipe ini berisikan redeem script yang merupakan kunci sekaligus akses untuk mempergunakan UTXO dan signature apa saja yang diperlukan agar UTXO tersebut bisa dipergunakan. Sementara pada Locking Script berisikan hash dari script yang diperlukan untuk memeriksa apakah redeem script cocok dengan script asli yang digunakan untuk menghasilkan address.

scriptPubKey:OP_HASH160 <scriptHash> OP_EQUAL
scriptSig:<signatures> <serialized redeem script>
scriptSig:OP_0 <sig1> ... <serialized redeem script>
serialized redeem script:OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG

Contoh Transaksi P2SH (multi-signature 2-of-2)
Output dari TXID E (bd09121f0bb45a6d533836f727fb2eed52365d56739ee4e2a3216f51e9dc20f5) direferensikan ke Input TXID F (9dc562ba2a49a90a4b60c1861d14fb3538963b6d96e08354b8846b9998f7a7a2)

TXID E Raw Transaction
01000000010a25fcd7b0d0ff083e4e291c8bfaa86a33eed10619abd54c776e1012b3960f0c01000 0006a473044022006b6fb3508235b66f3b012cc67299e7b58f81ab7da1ec66e075af8b17b4860d9 02205a1590ad9335fd8c73d78c570f5d117e7263d46f6bb9fb629ad3ccb30fd720b8012103fcf3a defb84c7f3dbbd7d8e9c2c7ad34503126d7e2fe19de9f93207886397359ffffffff020e00040000 0000001976a9141e094c1316f3bb0ac534b78c408d1729de32abb588ac4eda16000000000017a914e65bdc8e84736c97d2319feeadf17da2491fa4638700000000

TXID F Raw Transaction
0100000001f520dce9516f21a3e2e49e73565d3652ed2efb27f73638536d5ab40b1f1209bd01000 000da00483045022100fd9fd3e378b0b8a4beb769ce3e5fcc610271d08ab53fe0edd1052e3d8f26c7b80 2200a19e342dfa746a42e1609e0a6e2ee042c566179e9820611c9ae2b75598ecb9c014730440220 7f9144215e97e772d9a04acfd7d0bf62c2d9e79845215985837d2ea5dffb1631022058959e739f3 797d274db7816e388c5d323e71ffb29606b2ef57d4ecf9cd5cc380147522103cdb3d4fdf47e0a8e 1a89005b613943211abdb9af6346900aa9ca605942e28f0521032074694c1138516bf6009968e39 87c087ab11b55aae343236aa95c6d5b25073452aeffffffff01cef214000000000017a9149a203c5557243a2f2197cd7e5e22bd837967e1da8700000 000

ScriptPubKey: OP_HASH160 OP_PUSHBYTES_20 Script_Hash OP_EQUAL
ScriptPubKey: a9 14 e65bdc8e84736c97d2319feeadf17da2491fa463 87

Scriptsig: OP_0 OP_PUSHBYTES_72 Signature_1 OP_PUSHBYTES_71 Signature_2 OP_PUSHBYTES_71 Serialized_Redeem_Script
Scriptsig: 00 48 3045022100fd9fd3e378b0b8a4beb769ce3e5fcc610271d08ab53fe0edd1052e3d8f26c7b802200 a19e342dfa746a42e1609e0a6e2ee042c566179e9820611c9ae2b75598ecb9c01 47 304402207f9144215e97e772d9a04acfd7d0bf62c2d9e79845215985837d2ea5dffb16310220589 59e739f3797d274db7816e388c5d323e71ffb29606b2ef57d4ecf9cd5cc3801 47 522103cdb3d4fdf47e0a8e1a89005b613943211abdb9af6346900aa9ca605942e28f05210320746 94c1138516bf6009968e3987c087ab11b55aae343236aa95c6d5b25073452ae

Serialized_Redeem_Script: OP_PUSHNUM_2 OP_PUSHBYTES_33 PubKey_1 OP_PUSHBYTES_33 PubKey_2 OP_PUSHNUM_2 OP_CHECKMULTISIG
Serialized_Redeem_Script: 52 21 03cdb3d4fdf47e0a8e1a89005b613943211abdb9af6346900aa9ca605942e28f05 21 032074694c1138516bf6009968e3987c087ab11b55aae343236aa95c6d5b250734 52 ae





P2WPKH [Pay-to-Witness-Public-Key-Hash] Transaction

Locking script berisi 22 bytes dari OP_0  dan diteruskan dengan KeyHash yang merupakan Hash160 dari compressed public key, sementara Unlocking script kosong dan karena hal tersebut maka untuk spending script dideskripsikan kedalam witness yang berisi Signature dan Public Key.

scriptPubKey:OP_0 <20-byte-KeyHash>
scriptSig:<empty>
witness:<signature> <pubkey>

Contoh Transaksi P2WPKH
Output dari TXID G (770f0ab030966a3b6182a9c62d398aa126cc69a66b7d18cb60d12a7650e90883) direferensikan ke Input TXID H (6a040daeadf0a8efc5e324adf4a25512ee1d22dc3e143d5c54c6d9cb5f49f918)

TXID G Raw Transaction
02000000000101f39ceb6561a1356b579fe8be7ba44a82643caf777f0b44f715d5a35171de6f9a0 100000000ffffffff0238810200000000001600141939da05d7f716b705c115d4f117525cc302224500e2040000000000220020f78c983af7bd8579dc7535c820bf96fcbee8afad834ff54e5691f4e74 3a32c3a0247304402205c531763b86e04275172918ebf59986aa02269ab34f25c06d1d6b195578e 118402202e4eadf7e84a4c32b1c1344cfc972800621d0946831d63d25c2fbd14911e7a040121033 1f22e4fb4623d74bae250d5cb49ae192fc989373a27d57627af2bff6b4e97ba00000000

TXID H Raw Transaction
020000000001018308e950762ad160cb187d6ba669cc26a18a392dc6a982613b6a9630b00a0f770 000000000ffffffff012b7c020000000000220020302ef06c6dee8339ba576db99bcc817edeed56 21b9c55abde47afce7066a8f620247304402203e513bb417f88586938a75425ee3b4a2b51ef177b18a8680df50514e63e3649e02207d8 ad26533af6492b4065cb7a3cee6e5462af8ea69a24719b71f4a3d75815a4a0121026277aa6126c212065bb06256fd4a8298d1ab608bff9c0b558fab42d259e2edfc00000000

ScriptPubKey: OP_0 OP_PUSHBYTES_20 Public_Key
ScriptPubKey: 00 14 1939da05d7f716b705c115d4f117525cc3022245

Witness: Signature Public_Key
Witness: 304402203e513bb417f88586938a75425ee3b4a2b51ef177b18a8680df50514e63e3649e02207d8 ad26533af6492b4065cb7a3cee6e5462af8ea69a24719b71f4a3d75815a4a01 026277aa6126c212065bb06256fd4a8298d1ab608bff9c0b558fab42d259e2edfc





P2WSH [Pay-to-Witness-Script-Hash] Transaction

Locking script merupakan 32 bytes dari OP_0  dan diteruskan oleh ScriptHash yang merupakan Hash SHA-256 dari witness script. Sama halnya dengan P2WPKH, Unlocking script juga kosong sehingga untuk spending script juga dideskripsikan ke witness dengan isi data Signature apa saja yang diperlukan dan witness script yang merupakan susunan public key apa saja yang menopangnya.

scriptPubKey:OP_0 <32-byte-ScriptHash>
scriptSig:<empty>
witness:<signature> <serialized witness script>
witness:OP_0 <sig1> ... <serialized witness script>
serialized witness script:OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG

Contoh Transaksi P2WSH
Output dari TXID I (9842805a80de6ebe61caac0ed252120e307e7eab4ec75413fd403dabc3374bd1) direferensikan ke Input TXID J (2185a9e82eb5c5cafd3228c6a727960bc7f7508dea5150dba63ef987c39c57c0)

TXID I Raw Transaction
01000000000101c2d9ffa1c55908661f75a7845472c1596593474f4184d941aee41997684444980 100000000ffffffff02fbcc1d000000000017a914dac59872aa7e904e215ef71aaf400075c01ce5 a087ddc635030000000022002041e21222becb40dac9bcd3092960116f6ecd1ee19b841db254892b5830acc7a80400473044022064a5d596c37a085a87567273ba2f68a9b1ed63c20cb21ee3bcca1fee693557340 22058f8f0a92b95d20a91526cc702067a1b38c4042d3d078a9f408b3cab0f049f54014730440220 41b9eeaceaa35fa566d0c4ae13f87f4e69141dbb549114180cae88fdb841043e02205b6ce9b0fae 6591fc387e16c35d3de575bf768c0da4154e0f28a8a3178e618d00147522103e3ab4fee9dd471f6 6d75d68addcb75ce8e9ba9183c7fc334d8064ae7e87e3b8a2103a3af0f49a21d29106ebeef9b3c3 d69fc375c856a7153d97156a5b7a161ca6c2552ae00000000

TXID J Raw Transaction
01000000000101d14b37c3ab3d40fd1354c74eab7e7e300e1252d20eacca61be6ede805a8042980 100000000ffffffff028348100000000000160014abcfed53e211ab02d63b827a0fdd88904d2e61 16ac6225030000000022002041e21222becb40dac9bcd3092960116f6ecd1ee19b841db254892b5 830acc7a8040047304402202d669b8c894e3ec46119bfab51d9ddca4d793678ab0a3edbccad5e5a76e955710220564 596a448e1985538b8652343d462d04140c197398d5ae157c98ff07b8860dd014730440220454547538099b60b8c117861d714e1a7e84f8e1ea40eb613138174cf1c66e2ed0220267 34cdbbcb6b00281a49567861d1eaffb2d646e807a5bca26ad5381ae1831a10147522103e3ab4fee9dd471f66d75d68addcb75ce8e9ba9183c7fc334d8064ae7e87e3b8a2103a3af0 f49a21d29106ebeef9b3c3d69fc375c856a7153d97156a5b7a161ca6c2552ae00000000

ScriptPubKey: OP_0 OP_PUSHBYTES_32 Script_Hash
ScriptPubKey: 00 20 41e21222becb40dac9bcd3092960116f6ecd1ee19b841db254892b5830acc7a8

Witness: OP_0 Signature_1 Signature_2 Serialized_Witness_Script
Witness: [empty] 304402202d669b8c894e3ec46119bfab51d9ddca4d793678ab0a3edbccad5e5a76e955710220564 596a448e1985538b8652343d462d04140c197398d5ae157c 30440220454547538099b60b8c117861d714e1a7e84f8e1ea40eb613138174cf1c66e2ed0220267 34cdbbcb6b00281a49567861d1eaffb2d646e807a5bca26a 522103e3ab4fee9dd471f66d75d68addcb75ce8e9ba9183c7fc334d8064ae7e87e3b8a2103a3af0 f49a21d29106ebeef9b3c3d69fc375c856a7153d97156a5b7a161ca6c2552ae

Serialized_Witness_Script: OP_PUSHNUM_2 OP_PUSHBYTES_33 Public_Key_1 OP_PUSHBYTES_33 Public_Key_2 OP_PUSHNUM_2 OP_CHECKMULTISIG
Serialized_Witness_Script: 52 21 03e3ab4fee9dd471f66d75d68addcb75ce8e9ba9183c7fc334d8064ae7e87e3b8a 21 03a3af0f49a21d29106ebeef9b3c3d69fc375c856a7153d97156a5b7a161ca6c25 52 ae





P2SH-P2WPKH Nested Segwit [P2WPKH nested in P2SH] Transaction

Merupakan transaksi P2WPKH yang tertanam didalam script P2SH. Locking script berisikan 20 bytes Script Hash yang merupakan Hash160 dari redeem script, dan Unlocking script hanya berisikan redeem script yang didahului dengan push OpCode didepannya. Sementara untuk Signature dan Public Key dideskripsikan kedalam witness

scriptPubKey:OP_HASH160 <20-byte-ScriptHash> OP_EQUAL
scriptSig:OP_PUSHBYTES_22 <RedeemScript>
RedeemScript:OP_0 <20-byte-KeyHash>
witness:<signature> <pubkey>

Contoh Transaksi P2SH-P2WPKH (Nested Segwit)
Output dari TXID K (e5afe05bc2b520cf705bae1812ffbe9c9055fae69f18b8569a2879c5eccb47aa) direferensikan ke Input TXID L (b4dfc84812fee9712f775a9a0f6758308c17e6c46166e4ea2c39e905f0b25a2c)

TXID K Raw Transaction
01000000000101181acc4570bbedeec2603694d68baeb8a8e84395335f32f5a0c07e5959791d800 2000000171600146b78b5b0b4a048b4cec7bc6fc2c4bbaf71ddbe58000000000456800400000000 0017a914825002e5f55d73321efcee11d06314cf93db9cdc87fe6801000000000017a9147f3d538 37eb9be92c8a2eed51c477d2faf2811388770ff03000000000017a914d6914001b1c7de1c254b9a 5b08e83f01ab29fe6b8782d00b000000000017a914a4414f4a525bbf12374d5147e82a3a78fdf3b31d87024730440220236148389372e3f187b0a6a9fec36aa04c44e10f84624b59603e6c24fad09363022 0508379e500727c5ccdfd27c92a6770d263a47fd22ee8cd52a47f7cb1b75fa8a7012103cd0a2046 4b3d0d303c7b7ac2664a84f9bc05c77c8d6dbb465d58b3a26ebd7f9b00000000

TXID L Raw Transaction
01000000000101aa47cbecc579289a56b8189fe6fa55909cbeff1218ae5b70cf20b5c25be0afe50 30000001716001411f8b6a737b7bcfc4cc28a527ba02f743db66cb90000000002483405000000000017a914a45f53a86cd940fdab18ae7f3a461387b9560320872a750 6000000000017a914a4414f4a525bbf12374d5147e82a3a78fdf3b31d870247304402203650f274c88f78beb4a7f4a2dd301bad0484d5170107625d8c91b070f0b14a500220218 52bf82324d2422d1260ecb2575e4db1b0216f0865e07b80dfbdb9cfd25cdc012102955c36e9db30738d16c2f0ea443326dc7b9c3c443bed4c835b508972fb62709900000000

ScriptPubKey: OP_HASH160 OP_PUSHBYTES_20 Script_Hash OP_EQUAL
ScriptPubKey: a9 14 a4414f4a525bbf12374d5147e82a3a78fdf3b31d 87

Witness: Signature Public_Key
Witness: 304402203650f274c88f78beb4a7f4a2dd301bad0484d5170107625d8c91b070f0b14a500220218 52bf82324d2422d1260ecb2575e4db1b0216f0865e07b80dfbdb9cfd25cdc01 02955c36e9db30738d16c2f0ea443326dc7b9c3c443bed4c835b508972fb627099

ScriptSig: OP_PUSHBYTES_22 Redeem_Script
ScriptSig: 16 001411f8b6a737b7bcfc4cc28a527ba02f743db66cb9

Redeem_Script: OP_0 OP_PUSHBYTES_20 Public_Key_Hash
Redeem_Script: 00 14 11f8b6a737b7bcfc4cc28a527ba02f743db66cb9





P2TR [Pay-to-Taproot] Transaction

Input pada transaksi Taproot tidak memiliki ScriptSig, melainkan hanya berupa witness yang ditafsirkan sebagai spend method, yang berisi konten Signature (Schnorr signature). Sementara Locking script pada P2TR berisikan 32 byte Witness Program yang merupakan representasi dari Tweaked X-only Public Key dan selalu diawali dengan OP_1 yang merupakan representasi dari Version Number (SegWit Version 1).

scriptPubKey:OP_1 <32-byte-WitnessProgram>
scriptSig:<empty>
witness:<signature>

Contoh Transaksi P2TR (Taproot)
Output dari TXID O (a559cd58bb9bbd15f3603adf9e25034e9b26829e56ff68a54600479d57c6f9fa) direferensikan ke Input TXID P (1ff60ccd4fa0fb4436ba1ef3b01b2c8c7c6bb200aaf36b93dce52746d2ab71f8)

TXID O Raw Transaction
020000000001012be00531204175d5a3d075df9ebaa416ea0a32d254a9c9eb6e9813061ebed1890 400000000010000800220a1070000000000160014419a04f8f1f34d939ad766168c54a5b3af433b dd700a7b000000000022512058cca56ea9c201e15f3c3e8f6cd1f959d729496222755af152c57a39253e48dd01402f2a5e9d353c81d76ed94738d351c5528c0c1a9117edfb8474416576805fe2f746db3eda6b8 45dfd9a3505e8a84a548e7a0539b09685c2c1818d0ce5516d9b6900000000

TXID P Raw Transaction
02000000000101faf9c6579d470046a568ff569e82269b4e03259edf3a60f315bd9bbb58cd59a50 100000000010000800280841e0000000000160014419a04f8f1f34d939ad766168c54a5b3af433b dda4275c000000000022512058cca56ea9c201e15f3c3e8f6cd1f959d729496222755af152c57a3 9253e48dd01408b7f8fc3cd7648e07ee00c61c9923611c84bc7077f2a95f5e552a1d379e1cebc63ef611913be2eb f9fdd690ffe38a70e958d929c5f679cfe67ba51dd8eb435ed00000000

ScriptPubKey: OP_1 OP_PUSHBYTES_32 Witness_Program
ScriptPubKey: 51 20 58cca56ea9c201e15f3c3e8f6cd1f959d729496222755af152c57a39253e48dd

Witness: Signature
Witness: 8b7f8fc3cd7648e07ee00c61c9923611c84bc7077f2a95f5e552a1d379e1cebc63ef611913be2eb f9fdd690ffe38a70e958d929c5f679cfe67ba51dd8eb435ed

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Chikito
Legendary
*
Offline Offline

Activity: 2380
Merit: 2054



View Profile WWW
March 27, 2024, 01:01:00 AM
 #30

Jenis transaksi didalam jaringan Bitcoin dibedakan dari model ScriptSig dan ScriptPubKey yang digunakan, dan perlu digaris bawahi untuk setiap pasangan ScriptSig-ScriptPubKey tidak terkandung dalam satu kesatuan transaksi, namun ScriptPubKey dideskripsikan dalam Output transaksi (UTXO) yang akan dijadikan rujukan, sementara ScriptSig pasangannya dideskripsikan dalam Input transaksi yang menggunakan UTXO rujukan tersebut. Dengan kata lain ScriptPubKey merupakan script pengunci UTXO dan ScriptSig pasangannya merupakan Script pembuka untuk mengeklaim UTXO terkait.
Nah jadi transaksi menggunakan apa yang cepat dan efisien?, maksud saya apakah transaksi segwit bisa lebih cepat dari legacy?, karena dalam segi ukuran, transaksi segwit bisa memuat banyak transaksi (pemisahan tanda tangan) dalam setiap blocknya jika dibanding legacy. Atau yang baru-baru ini softfork, Taproot, apakah lebih baik dari segwit berdasarkan kecepatan dan muatan transaksi?

Karena saya lihat dari kesemua jenis transaksi di atas (P2PK,P2PKH,... dsb), kesimpulannya tidak ada, cuma ada data raw yang siapa pun pasti mumet ngebacanya.  Smiley

.
.BLACKJACK ♠ FUN.
█████████
██████████████
████████████
█████████████████
████████████████▄▄
░█████████████▀░▀▀
██████████████████
░██████████████
████████████████
░██████████████
████████████
███████████████░██
██████████
CRYPTO CASINO &
SPORTS BETTING
▄▄███████▄▄
▄███████████████▄
███████████████████
█████████████████████
███████████████████████
█████████████████████████
█████████████████████████
█████████████████████████
███████████████████████
█████████████████████
███████████████████
▀███████████████▀
█████████
.
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
March 27, 2024, 08:00:13 AM
 #31

Nah jadi transaksi menggunakan apa yang cepat dan efisien?, maksud saya apakah transaksi segwit bisa lebih cepat dari legacy?, karena dalam segi ukuran, transaksi segwit bisa memuat banyak transaksi (pemisahan tanda tangan) dalam setiap blocknya jika dibanding legacy. Atau yang baru-baru ini softfork, Taproot, apakah lebih baik dari segwit berdasarkan kecepatan dan muatan transaksi?

Kayaknya persepsi anda masih salah, dari sekian banyak jenis format transaksi tidak ada yang lebih cepat satu sama lain, karena kecepatan transaksi bukan tergantung pada jenis transaksi melainkan tergantung pada seberapa cepat block dibuat dan potensi dari sebuah transaksi untuk bisa masuk ke dalam block (terkait pemilihan fee transaksi).

Kalo efisiensi dari masing-masing transaksi mungkin bisa saja berbeda karena tiap-tiap jenis transaksi memang memiliki ciri dan kriteria script yang berbeda (dan inilah yang saya ingin bagikan informasinya melalui thread ini)


Quote
Karena saya lihat dari kesemua jenis transaksi di atas (P2PK,P2PKH,... dsb), kesimpulannya tidak ada, cuma ada data raw yang siapa pun pasti mumet ngebacanya.  Smiley

Kenapa harus Raw Data, karena hanya dengan cara itulah kita bisa melihat bagaimana scriptsig dan scriptpubkey pada sebuah transaksi dikodekan, dan bisa kita ketahui keduanya berada di posisi mana, karena secara umum Transaksi memiliki struktur yang sama.

Sekali lagi yang saya tekankan bukanlah kesimpulan atau apalah itu, namun hanyalah perbedaan dari script yang digunakan oleh masing-masing jenis transaksi.

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
April 05, 2024, 05:26:50 PM
 #32

=== Tantangan Taproot ===

- Jaringan : Bitcoin Testnet
- Membuat MultiSig Taproot Address (2-of-2)
- Import MultiSig Taproot Address (2-of-2) ke Bitcoin Core
- Membuat Transaksi MultiSig (2-of-2) menggunakan UTXO* dari MultiSig Taproot Address (2-of-2)
* Agar MultiSig Taproot Address (2-of-2) memiliki UTXO, maka harus dibuat transaksi (lain) dimana MultiSig Taproot Address (2-of-2) sebagai address penerima

Sedikit bocoran bagi siapa saja yang mungkin masih tertarik untuk mengikuti tantangan ini dan mendapatkan 5 merit

* 3 Descriptor wallet sebagai (Internal Key/XPUB_1, Cosigner 1/XPUB_2, Cosigner 2/XPUB_3)

Taproot Expression yang digunakan adalah :
Code:
tr(XPUB_1,sortedmulti_a(2,XPUB_2,XPUB_3))
atau
Code:
tr(XPUB_1,multi_a(2,XPUB_2,XPUB_3))

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
April 06, 2024, 07:00:31 PM
Merited by punk.zink (2)
 #33

Karena saya lihat dari kesemua jenis transaksi di atas (P2PK,P2PKH,... dsb), kesimpulannya tidak ada, cuma ada data raw yang siapa pun pasti mumet ngebacanya.  Smiley

Kenapa harus Raw Data, karena hanya dengan cara itulah kita bisa melihat bagaimana scriptsig dan scriptpubkey pada sebuah transaksi dikodekan, dan bisa kita ketahui keduanya berada di posisi mana, karena secara umum Transaksi memiliki struktur yang sama.

Sebagaimana di atas, saya lihat agan z@punk memberikan pada warna-warna tertentu dan juga abbreviation ketika mouseover pada bagian tertentu di TXID untuk menunjukkan mana ScriptPubKey (teks berwarna merah), Scriptsig (teks berwarna biru), Serialized_Redeem_Script (teks berwarna hijau).

Jika hanya melihat TXID seperti ini saja tentu tidak bisa dilihat detail dari scriptSig (hex) atau scriptPubKey (hex):
https://mempool.space/tx/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba

Berbeda ketika melihat melalui Raw Transaction sebagaimana di contohkan di atas dan di tandai dengan warna tertentu oleh OP.
https://btc.bitaps.com/raw/transaction/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba
atau https://mempool.space/api/tx/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba/hex


Btw, untuk Contoh Transaksi P2PK (Pay-to-Public-Key), tadi saya coba melihat melalui Trezor Bitcoin Explorer (https://btc2.trezor.io/)
- Output dari TXID A: https://btc2.trezor.io/tx/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba

Quote
{
  "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "hash": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "version": 1,
  "size": 276,
  "vsize": 276,
  "weight": 1104,
  "locktime": 0,
  "vin": [
    {
      "txid": "591e91f809d716912ca1d4a9295e70c3e78bab077683f79350f101da64588073",
      "vout": 1,
      "scriptSig": {
        "asm": "3045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009 984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb[ALL]",
        "hex": "483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb02210 09984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1,
      "n": 0,
      "scriptPubKey": {
        "asm": "04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18 fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1 OP_CHECKSIG",
        "desc": "pk(04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18 fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1)#h9nu6585",
        "hex": "4104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db 18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac",
        "type": "pubkey"
      }
    },
    {
      "value": 28,
      "n": 1,
      "scriptPubKey": {
        "asm": "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84c cf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3 OP_CHECKSIG",
        "desc": "pk(0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84c cf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3)#u7qfa49l",
        "hex": "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb8 4ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac",
        "type": "pubkey"
      }
    }
  ],
  "hex": "010000000173805864da01f15093f7837607ab8be7c3705e29a9d4a12c9116d709f8911e5901000 00049483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb 0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01fffffff f0200e1f50500000000434104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db 18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac009ce4a60000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a 6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac000000 00",
  "blockhash": "00000000f46e513f038baf6f2d9a95b2a28d8a6c985bcf24b9e07f0f63a29888",
  "confirmations": 837824,
  "time": 1231742062,
  "blocktime": 1231742062
}

Code:
{
  "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "hash": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "version": 1,
  "size": 276,
  "vsize": 276,
  "weight": 1104,
  "locktime": 0,
  "vin": [
    {
      "txid": "591e91f809d716912ca1d4a9295e70c3e78bab077683f79350f101da64588073",
      "vout": 1,
      "scriptSig": {
        "asm": "3045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb[ALL]",
        "hex": "483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1,
      "n": 0,
      "scriptPubKey": {
        "asm": "04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1 OP_CHECKSIG",
        "desc": "pk(04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1)#h9nu6585",
        "hex": "4104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac",
        "type": "pubkey"
      }
    },
    {
      "value": 28,
      "n": 1,
      "scriptPubKey": {
        "asm": "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3 OP_CHECKSIG",
        "desc": "pk(0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3)#u7qfa49l",
        "hex": "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac",
        "type": "pubkey"
      }
    }
  ],
  "hex": "010000000173805864da01f15093f7837607ab8be7c3705e29a9d4a12c9116d709f8911e590100000049483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01ffffffff0200e1f50500000000434104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac009ce4a60000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac00000000",
  "blockhash": "00000000f46e513f038baf6f2d9a95b2a28d8a6c985bcf24b9e07f0f63a29888",
  "confirmations": 837824,
  "time": 1231742062,
  "blocktime": 1231742062
}

- Input TXID B: https://btc2.trezor.io/tx/4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79

Quote
{
  "txid": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "hash": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "version": 1,
  "size": 199,
  "vsize": 199,
  "weight": 796,
  "locktime": 0,
  "vin": [
    {
      "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
      "vout": 0,
      "scriptSig": {
        "asm": "3044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047f d6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b[ALL]",
        "hex": "473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd585263402204 7fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1,
      "n": 0,
      "scriptPubKey": {
        "asm": "04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a5 13bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4 OP_CHECKSIG",
        "desc": "pk(04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a5 13bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4)#hr2tlzup",
        "hex": "4104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6 a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4ac",
        "type": "pubkey"
      }
    }
  ],
  "hex": "0100000001ba91c1d5e55a9e2fab4e41f55b862a73b24719aad13a527d169c1fad3b63b51200000 00048473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd585263402204 7fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01ffffffff0100e1f50500000000434104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f7 41eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40ba e4ac00000000",
  "blockhash": "00000000b2cde2159116889837ecf300bd77d229d49b138c55366b54626e495d",
  "confirmations": 837821,
  "time": 1231744600,
  "blocktime": 1231744600
}

Code:
{
  "txid": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "hash": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "version": 1,
  "size": 199,
  "vsize": 199,
  "weight": 796,
  "locktime": 0,
  "vin": [
    {
      "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
      "vout": 0,
      "scriptSig": {
        "asm": "3044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b[ALL]",
        "hex": "473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1,
      "n": 0,
      "scriptPubKey": {
        "asm": "04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4 OP_CHECKSIG",
        "desc": "pk(04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4)#hr2tlzup",
        "hex": "4104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4ac",
        "type": "pubkey"
      }
    }
  ],
  "hex": "0100000001ba91c1d5e55a9e2fab4e41f55b862a73b24719aad13a527d169c1fad3b63b5120000000048473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01ffffffff0100e1f50500000000434104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4ac00000000",
  "blockhash": "00000000b2cde2159116889837ecf300bd77d229d49b138c55366b54626e495d",
  "confirmations": 837821,
  "time": 1231744600,
  "blocktime": 1231744600
}

Dengan menggunakan bantuan fitur search/find bisa lebih mudah mencari letak scriptSig (hex) atau scriptPubKey (hex) pada Transaction hex-nya.

punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
April 07, 2024, 04:42:28 AM
 #34

Sebagaimana di atas, saya lihat agan z@punk memberikan pada warna-warna tertentu dan juga abbreviation ketika mouseover pada bagian tertentu di TXID untuk menunjukkan mana ScriptPubKey (teks berwarna merah), Scriptsig (teks berwarna biru), Serialized_Redeem_Script (teks berwarna hijau).

Terima kasih sudah dibantu untuk menjelaskan Om Husna. Tujuan saya memberikan code warna berbeda untuk masing-masing scriptsig, scriptpubkey, reedemscript maupun witness, memang agar mudah diidentifikasi oleh orang awam sekalipun. Begitu juga dengan fungsi mouseover, selain untuk mendeskripsikan letak script, juga sebagai penunjuk informasi pada setiap variabel yang dituliskan pada sebuah script menggunakan OP Code apa saja.

Quote
Btw, untuk Contoh Transaksi P2PK (Pay-to-Public-Key), tadi saya coba melihat melalui Trezor Bitcoin Explorer (https://btc2.trezor.io/)
- Output dari TXID A: https://btc2.trezor.io/tx/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba

Informasi RAW Transaction yang ditunjukan oleh Trezor Bitcoin Explorer, mirip-mirip dengan fungsi getrawtransaction pada client bitcoin core dengan verbosity 1
Code:
getrawtransaction "txid" ( verbosity "blockhash" )

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Husna QA
Legendary
*
Offline Offline

Activity: 2268
Merit: 2882


#SWGT CERTIK Audited


View Profile WWW
April 07, 2024, 09:12:37 AM
 #35

Btw, untuk Contoh Transaksi P2PK (Pay-to-Public-Key), tadi saya coba melihat melalui Trezor Bitcoin Explorer (https://btc2.trezor.io/)
- Output dari TXID A: https://btc2.trezor.io/tx/12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba

Informasi RAW Transaction yang ditunjukan oleh Trezor Bitcoin Explorer, mirip-mirip dengan fungsi getrawtransaction pada client bitcoin core dengan verbosity 1
Code:
getrawtransaction "txid" ( verbosity "blockhash" )

Ya, saya lihat hasil informasinya sama dengan ketika menggunakan fungsi getrawtransaction tersebut di atas pada client Bitcoin Core dengan nilai verbosity-nya 1.
Berikut ini screenshot contoh kedua transaksi Output TXID A dan Input TXID B dilihat Bitcoin Core sebagaimana sebelumnya di atas dilihat menggunakan Trezor Bitcoin Explorer:

Code:
getrawtransaction "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba" 1



Code:
getrawtransaction "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79" 1



Sementara itu jika verbosity-nya diinput 2 maka lebih detail lagi dengan tambahan informasi: prevout dan fee:

Code:
{
  "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "hash": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
  "version": 1,
  "size": 276,
  "vsize": 276,
  "weight": 1104,
  "locktime": 0,
  "vin": [
    {
      "txid": "591e91f809d716912ca1d4a9295e70c3e78bab077683f79350f101da64588073",
      "vout": 1,
      "scriptSig": {
        "asm": "3045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb[ALL]",
        "hex": "483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01"
      },
      "prevout": {
        "generated": false,
        "height": 182,
        "value": 29.00000000,
        "scriptPubKey": {
          "asm": "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3 OP_CHECKSIG",
          "desc": "pk(0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3)#u7qfa49l",
          "hex": "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac",
          "type": "pubkey"
        }
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1.00000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1 OP_CHECKSIG",
        "desc": "pk(04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1)#h9nu6585",
        "hex": "4104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac",
        "type": "pubkey"
      }
    },
    {
      "value": 28.00000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3 OP_CHECKSIG",
        "desc": "pk(0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3)#u7qfa49l",
        "hex": "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac",
        "type": "pubkey"
      }
    }
  ],
  "fee": 0.00000000,
  "hex": "010000000173805864da01f15093f7837607ab8be7c3705e29a9d4a12c9116d709f8911e590100000049483045022052ffc1929a2d8bd365c6a2a4e3421711b4b1e1b8781698ca9075807b4227abcb0221009984107ddb9e3813782b095d0d84361ed4c76e5edaf6561d252ae162c2341cfb01ffffffff0200e1f50500000000434104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac009ce4a60000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac00000000",
  "blockhash": "00000000f46e513f038baf6f2d9a95b2a28d8a6c985bcf24b9e07f0f63a29888",
  "confirmations": 836728,
  "time": 1231742062,
  "blocktime": 1231742062
}

Code:
{
  "txid": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "hash": "4385fcf8b14497d0659adccfe06ae7e38e0b5dc95ff8a13d7c62035994a0cd79",
  "version": 1,
  "size": 199,
  "vsize": 199,
  "weight": 796,
  "locktime": 0,
  "vin": [
    {
      "txid": "12b5633bad1f9c167d523ad1aa1947b2732a865bf5414eab2f9e5ae5d5c191ba",
      "vout": 0,
      "scriptSig": {
        "asm": "3044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b[ALL]",
        "hex": "473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01"
      },
      "prevout": {
        "generated": false,
        "height": 183,
        "value": 1.00000000,
        "scriptPubKey": {
          "asm": "04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1 OP_CHECKSIG",
          "desc": "pk(04baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1)#h9nu6585",
          "hex": "4104baa9d36653155627c740b3409a734d4eaf5dcca9fb4f736622ee18efcf0aec2b758b2ec40db18fbae708f691edb2d4a2a3775eb413d16e2e3c0f8d4c69119fd1ac",
          "type": "pubkey"
        }
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 1.00000000,
      "n": 0,
      "scriptPubKey": {
        "asm": "04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4 OP_CHECKSIG",
        "desc": "pk(04fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4)#hr2tlzup",
        "hex": "4104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4ac",
        "type": "pubkey"
      }
    }
  ],
  "fee": 0.00000000,
  "hex": "0100000001ba91c1d5e55a9e2fab4e41f55b862a73b24719aad13a527d169c1fad3b63b5120000000048473044022041d56d649e3ca8a06ffc10dbc6ba37cb958d1177cc8a155e83d0646cd5852634022047fd6a02e26b00de9f60fb61326856e66d7a0d5e2bc9d01fb95f689fc705c04b01ffffffff0100e1f50500000000434104fe1b9ccf732e1f6b760c5ed3152388eeeadd4a073e621f741eb157e6a62e3547c8e939abbd6a513bf3a1fbe28f9ea85a4e64c526702435d726f7ff14da40bae4ac00000000",
  "blockhash": "00000000b2cde2159116889837ecf300bd77d229d49b138c55366b54626e495d",
  "confirmations": 837109,
  "time": 1231744600,
  "blocktime": 1231744600
}

punk.zink (OP)
Sr. Member
****
Offline Offline

Activity: 364
Merit: 380


trustdice.win (The Top of Crypto Casinos)


View Profile
April 21, 2024, 04:55:26 AM
Merited by ABCbits (8)
 #36

Saya pernah membuat tutorial Transaksi Taproot dengan 2 opsi Script path spends yang semuanya diproses menggunakan Node.JS. Pada kali ini saya akan memberikan tutorial masih dengan seputaran "Transaksi Taproot dengan 2 opsi Script path spends", namun untuk semua prosesnya dilakukan menggunakan Client Bitcoin Core.

1 Transaksi taproot dengan 2 opsi script pembelanjaan
  • Sign Transaksi melalui proses Multisig 2-of-2
  • Sign Transaksi menggunakan Private Key terpisah

Bahan (harus merupakan Descriptor Wallet)
  • Descriptor Wallet sebagai Internal Key
  • Descriptor Wallet sebagai cosigner 1
  • Descriptor Wallet sebagai cosigner 2
  • Descriptor Wallet sebagai alternatif sign Key Path spend

Mendapatkan informasi mengenai external path dan internal path dari masing-masing Descriptor wallet
- Menggunakan perintah listdescriptors

Internal Key
Code: (External Path)
tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*
Code: (Internal Path)
tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*

Cosigner 1
Code: (External Path)
tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*
Code: (Internal Path)
tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*

Cosigner 2
Code: (External Path)
tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*
Code: (Internal Path)
tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*

Alternative Key
Code: (External Path)
tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/0/*
Code: (Internal Path)
tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/1/*

Taproot Expression yang digunakan adalah
Code:
tr(Internal_Key,{sortedmulti_a(2,Cosigner_1,Cosigner_2),pk(Alternative_Key)})

Mendapatkan informasi Checksum dari masing-masing External Path Descriptor dan Internal Path Descriptor
- Menggunakan perintah getdescriptorinfo

Code: (External Path)
getdescriptorinfo "tr(tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*,{sortedmulti_a(2,tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*,tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*),pk(tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/0/*)})"
Code: (Checksum)
"checksum": "f5ccjfm9"

Code: (Internal Path)
getdescriptorinfo "tr(tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*,{sortedmulti_a(2,tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*,tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*),pk(tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/1/*)})"
Code: (Checksum)
"checksum": "vnp4m97n"

Membuat Watch-Only Descriptor Wallet dan selanjutnya mengimport Descriptor diatas ke wallet tersebut
Code:
createwallet "wallet_name" disable_private_keys blank

Meng-Import kombinasi External Path Descriptor dan Internal Path
Code:
importdescriptor '[{ "desc": "External Path Descriptor", "active": true, "timestamp": "now", "internal": false },{ "desc": "Internal Path Descriptor", "active": true, "timestamp": "now", "internal": true }]'
Code:
importdescriptor '[{ "desc": "tr(tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/0/*,{sortedmulti_a(2,tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/0/*,tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/0/*),pk(tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/0/*)})#f5ccjfm9", "active": true, "timestamp": "now", "internal": false },{ "desc": "tr(tpubDDZ5pBsWWhiMrucNG4m2HV2XkgXwzz3oYtsvnvPu8k82ovn516WGwMorrTZCesFMJrd5XCmCV6Ffo9tQbPM6JkHA7sBBAfhvmpRqHgvxd1M/1/*,{sortedmulti_a(2,tpubDCxrQyKF3UYvGeq69sMFE42QHmPoDc5JEEkbdbY5RzwQcnW2X8e9aVeDcy2EhFq1jZFhnMo3w73hDXD44uZB28zDiJCKyHAn5aH6bdpnhCH/1/*,tpubDCmDHgRMG5Cet6zwCtAZutocNLpumsaWm4HdEQWJu34HTVYwzZqXWavgxkTkp1xF7JpRhsda8KSudN5fJTyN5nyRg49sUMH3HBPpUKVheFL/1/*),pk(tpubDDSaWvfLpFMfH119pbvNV9z5mXob2pJ4XiTLeXv3nSsBi2JSCrhc1hy7EoFFwGu4LYHSsgRzqZ5ho4MbtL53qQyKvw7ioVFKkYRVRXcE8L9/1/*)})#vnp4m97n", "active": true, "timestamp": "now", "internal": true }]'

Membuat Taproot Address dengan 2 opsi script pembelanjaan
Code:
getnewaddress "label" "bech32m"
Code:
tb1psys7t6cq60wgfqjr7lraq7r9n8np3vx37g9d75zu4sr9gqfgr03sjafefk



MembuatTransaksi dengan opsi spending MultiSig (Cosigner 1 dan Cosigner 2)

Membuat Unsigned Transaction melalui Watch-Only Wallet





Menyimpan file PSBT dari unsigned transaction yang dibuat



Membuka file PSBT dari Wallet Cosigner 1



Cosigner 1 melakukan sign transaction dan menyimpan file PSBT yang telah ditandangani tersebut



Wallet Cosigner 2 melakukan Sign PSBT yang sebelumnya telah ditandangani oleh Cosigner 1 dan selanjutnya tinggal mem-Broadcast transaksi ke Jaringan Bitcoin



TXID yang telah terkirimkan ke jaringan Bitcoin (testnet)
https://mempool.space/testnet/tx/59268f7b0b8480a6ccae7de1b4fa0ef5207cbaaaaafeffa46ecfc792be41b821



MembuatTransaksi dengan opsi spending Alternative Key

Membuat Unsigned Transaction melalui Watch-Only Wallet dan menyimpan file PSBT dari Unsigned TX tersebut





Wallet Alternative Key melakukan Sign PSBT dan mem-Broadcast transaksi ke jaringan Bitcoin



TXID yang telah terkirimkan ke jaringan Bitcoin (testnet)
https://mempool.space/testnet/tx/b3afb47a45c1059b340d93a7a15d00fa63597a59c6b0bb6aae7269b1f5af2165



Kesimpulan

Dengan adanya Taproot, fleksibilitas dalam membuat Address dan transaksi menjadi lebih beragam. Seperti halnya contoh tutorial diatas, dengan hanya menggunakan 1 Taproot address yang memiliki model Descriptor sedemikian rupa, bisa dilakukan transaksi dengan 2 opsi pembelanjaan, yakni menggunakan proses Multisig 2-of-2 (Cosigner 1 dan Cosigner 2), atau menggunakan otorisasi dari Wallet Alternative Key.

Selain itu untuk taproot address diatas, dalam pembuatannya juga melibatkan adanya Internal Key. Sehingga jika Internal Key yang digunakan merupakan Spendable Key, maka juga bisa dibuat sebuah transaksi dengan opsi pembelanjaan melalui proses Sign TX yang diotorisasi menggunakan Internal Key tersebut. Namun jika Internal Key merupakan Unspendable Key, maka opsi pembelanjaan hanya bisa dilakukan melalui Multisig 2-of-2, atau Sign TX dari Alternative Key.

███████████████████████████████▀▀▀▀
███████████████████████████████
█████████▀▀▀▀▀█▀█▀▀▀▀▀█████████
███▄▀▀▀   ▄▄▄▄   ▄▄▄▄   ▀▀▀▄███
███████▀▀▀████▌ ▐████▀▀▀███████
█████▀███▀█▀██▌ ▐██▀█▀███▀█████
███████▀▄▀▄███▌ ▐███▄▀▄▀███████
█████▄██▄██▄██   ██▄██▄██▄█████
███████▄▄▄████   ████▄▄▄███████
██████████▀▀▀▀   ▀▀▀▀██████████
██████████▄▄▄▄▄▄▄▄▄▄▄██████████
███████████████████████████████
███████████████████████████████▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
TRUST DICE
.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
█▀▀▀











█▄▄▄
#1 RATED CRYPTO
CASINO IN THE WORLD
██ ██ ██ ██ █Trustpilot
▀▀▀█











▄▄▄█
▄█████████████████████████████
██████████████████▀▀█████▀▀████
█████████████████▀█████████▀███
██████████████████████████████
███████████████████████████▄███
█████████████████████████▄▄████
███████████████████████████████
█████████████░░░███████████████
███████████░░░█████████████████
█████████░░████████████████████
█████░░░██████████████████████
███░░█████████████████████████
▀░░░█████████████████████████▀
█▀▀▀











█▄▄▄
▀▀▀█











▄▄▄█
Pages: 1 2 [All]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!