Transaksi
Last updated
Last updated
(Mastering Bitcoin) Transaksi adalah bagian terpenting dari sistem bitcoin. Segala sesuatu yang lain di bitcoin dirancang untuk dapat memastikan bahwa transaksi itu dapat dilakukan, disebar ke dalam jaringan, divalidasi, dan kemudian ditambahkan ke ledger (Blockchain). Transaksi adalah struktur data yang menyandikan transfer nilai antar pengguna di dalam sistem bitcoin. Setiap transaksi merupakan entri publik di blockchain bitcoin ini. Menjadi sebuah pembukuan transaksi besar secara global.
Sebuah transaksi mungkin tidak punya penerima, atau bahkan mempunyai penerima lebih dari satu. Begitu juga halnya dengan pengirim. Pada Blockchain, pengirim dan penerima diabstraksikan dengan ScriptPubKey, seperti yang telah ditunjukkan pada bab sebelumnya.
Jika anda menggunakan Bitcoin Core, transaksi anda akan menampilkan seperti ini:
Sekarang, kita jadi tertarik dengan munculnya Transaction ID pada transaksi diatas. Transaksi ID tersebut diatas adalah:
f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94
Catatan: TransactionId is didefinisikan oleh SHA256(SHA256(txbytes))
Catatan: JANGAN menggunakan TransactionId untuk menangani transaksi yang belum dikonfirmasi. TransactionId dapat dimanipulasi sebelum transaksi itu dikonfirmasi. Hal ini disebut dengan “Transaction Malleability.”
Anda dapat melihat transaksi itu pada blockexplorer seperti di blockchain.info: https:\/\/blockchain.info\/tx\/f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94 Namun sebagai seorang developer, anda mungkin menginginkan layanan yang lebih mudah untuk query dan parse. Sebagai developer C# dan pengguna NBitcoin, Nicolas Dorier's di QBit Ninja akan menjadi pilihan terbaik anda. Ini adalah layanan web API open source, untuk query blockchain dan melacak wallet. QBit Ninja tergantung pada NBitcoin.Indexer di relay dari Microsoft Azure Storage. Developer C# diharapkan menggunakan NuGet client package.
Jika anda melihat di sini: http:\/\/api.qbit.ninja\/transactions\/f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94 Anda akan melihat raw bytes dari transaksi anda.
Anda dapat parse hex transaksi itu dengan kode berikut:
Lalu cepatlah menutup tab tersebut, sebelum membuat anda ketakutan. QBit Ninja melakukan queri dari API dan memparse informasi tersebut, jadi anda bisa melanjutkannya dan install QBitNinja.Client NuGet package.
Query transaksi by id:
Tipe transactionResponse adalah GetTransactionResponse. Dijalankan melalui QBitNinja.Client.Models namespace. Anda bisa mendapatkan jenis NBitcoin.Transaction tersebut di sini:
Sekarang mari kita lihat contoh untuk mendapat kembali ID transaksi itu dengan kedua _classes _ini:
GetTransactionResponse memiliki informasi tambahan tentang transaksi, seperti nilai dan scriptPubKey pada inputs yang akan dibelanjakan dalam sebuah transaksi.
Jadi yang paling beralasi pada hal ini adalah tentang inputs dan outputs. Anda dapat melihat sejumlah 13.19683492 Bitcoin telah terkirim pada ScriptPubKey:
Kami juga menulis beberapa informasi tentang RECEIVED COINS menggunakan QBitNinja's class GetTransactionResponse. Latihan: Tuliskan informasi yang sama tentang SPENT COINS menggunakan class QBitNinja's GetTransactionResponse!
Lalu mari kita lihat bagaimana kita bisa mendapatkan informasi yang sama tentang RECEIVED COINS menggunakan _class _NBitcoin's Transaction.
Sekarang mari kita periksa di inputs. Jika anda melihatnya, maka disana akan ada referensi output sebelumnya. Jadi pada setiap input dapat menunjukkan pengeluaran sebelumnya yang telah ditransaksikan pada transaksi ini.
Istilah TxOut, Output dan out maknanya sama. Jadi tidak perlu bingung dengan OutPoint, akan dijelaskan lebih lanjut.
Singkatnya, TxOut merupakan jumlah bitcoin dan ScriptPubKey. (Penerima)
Setiap TxOut secara unik menunjuk address di level blockchain oleh ID transaksi yang meliputinya, dan juga index di dalamnya. kami menyebut referensi tersebut dengan Outpoint.
Sebagai contoh, Outpoint dari TxOut dengan 13.19683492 BTC pada transaksi kami adalah (4788c5ef8ffd0463422bcafdfab240f5bf0be690482ceccde79c51cfce209edd, 0).
Sekarang mari kita lihat lebih dekat pada input (di TxIn) dari transaksi itu:
TxIn terdiri dari Outpoint pada TxOut yang telah dikeluarkan atau dibelanjakan dari ScriptSig ( kita dapat melihat disini bahwa ScriptSig berfungsi sebagai “Proof of Ownership”) Pada transaksi kami yang sebenarnya, ada 9 input.
Dengan ID transaksi outpoint sebelumnya, kita bisa melihat informasi yang berkaitan dengan transaksi tersebut.
Kita bisa untuk terus melanjutkan melacak ID transaksi hingga kembali sampai kepada transaksi coinbase, transaksi koin baru yang ditambang oleh penambang. Latihan: Ikuti input pertama pada transaksi ini sampai anda mencapai transaksi coinbase! Petunjuk: Setelah mencoba mengikuti hingga 30-40 transaksi, saya menyerah. Ya, tebakan anda benar, hal itu bukanlah cara yang efektif untuk melakukannya, namun menjadi sebuah latihan yang baik.
Pada contoh kami, jumlah output adalah 13.19703492 BTC.
Pada transaksi tersebut, sejumlah 13.19683492 BTC telah diterima.
Latihan: Dapatkan jumlah total yang diterima, seperti yang telah saya lakukan dengan sejumlah pengeluaran.
Artinya, sejumlah 0.0002 BTC (atau 13.19703492 - 13.19683492) tidak dihitung! Perbedaan antara input dan output disebut dengan Transaction Fees (biaya transaksi) atau Miner’s Fees (biaya miner). Biaya ini adalah sejumlah ongkos yang diberikan kepada penambang untuk memproses transaksi itu, hingga memasukkannya ke dalam sebuah block.
Perlu dicatat disini, transaksi coinbase adalah satu-satunya transaksi yang nilai outpunya lebih superior dibandingkan dengan nilai input. Karena transaksi itu adalah transaksi penciptaan koin baru. Artinya, tidak ada biaya pada transaksi coinbase tersebut. Transaksi coinbase ini, adalah transaksi pertama yang ada dalam setiap block. Dikatakan nilai output lebih istimewa dari nilai input, karena berdasarkan aturan konsensus yang ada, jumlah nilai output dalam transaksi coinbase tidak melebihi jumlah total biaya transaksi, ditambah dengan reward block.
Sebagai ilustrasinya, mari kita membuat sebuah txout dengan 21 bitcoin dari ScriptPubKey pertama dalam transaksi kami saat ini: