Bitcoin Forum
May 03, 2024, 03:40:32 PM *
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 661 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: 373


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
▀▀▀█











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











█▄▄▄
▀▀▀█











▄▄▄█
Every time a block is mined, a certain amount of BTC (called the subsidy) is created out of thin air and given to the miner. The subsidy halves every four years and will reach 0 in about 130 years.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714750832
Hero Member
*
Offline Offline

Posts: 1714750832

View Profile Personal Message (Offline)

Ignore
1714750832
Reply with quote  #2

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

Activity: 364
Merit: 373


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: 373


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: 373


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: 373


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: 2861


#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: 373


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: 2861


#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: 373


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: 373


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: 373


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
*
Offline Offline

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: 373


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: 373


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: 373


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: 7463


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: 2861


#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-

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!