Menengah Pelajaran 1 Baca 4 menit

Anatomi dari sebuah transaksi: input, output, dan UTXO

Bitcoin tidak memiliki saldo. Ada potongan yang belum digunakan, dan setiap pembayaran dilakukan dengan potongan utuh.

Buka dompet Anda dan Anda akan melihat saldo. Angka itu tidak ada di jaringan. Tidak ada tempat di blockchain yang menyimpan berapa banyak yang Anda miliki: yang ada adalah potongan uang, masing-masing dengan pemilik dan nilai sendiri, dan saldo adalah penjumlahan yang dilakukan aplikasi Anda sebelum menampilkan layar.

Setiap potongan disebut UTXO, singkatan dari Unspent Transaction Output (keluaran transaksi yang belum terpakai). Ketika seseorang membayar Anda, transaksi tersebut menciptakan keluaran dengan nilai dan kunci yang hanya dapat dibuka oleh kunci Anda. Selama tidak ada yang menggunakannya, itu tetap ada, utuh, menunggu. Jaringan tidak tahu menjumlahkan milik Anda: ia hanya tahu, dari setiap potongan, apakah sudah digunakan atau belum.

Jaringan tidak menyimpan saldo. Ia menyimpan potongan, dan masing-masing utuh.

Dari situ muncul aturan yang menjelaskan hampir semua yang mengikuti: sebuah UTXO digunakan secara utuh. Tidak bisa menggunakan setengahnya, seperti halnya tidak bisa membayar sepuluh dengan setengah dari uang kertas dua puluh. Jika Anda memiliki potongan 0,05 dan perlu membayar 0,03, transaksi tersebut menghabiskan seluruh 0,05 dan menciptakan dua keluaran baru: satu sebesar 0,03 untuk penerima dan satu lagi, dengan sisa uang, kembali ke alamat Anda. Ini adalah kembalian yang dijanjikan oleh jalur pemula untuk dijelaskan secara mendalam, dan itu bukanlah kemurahan hati dari program: itu adalah satu-satunya cara agar perhitungan seimbang.

Setiap transaksi, oleh karena itu, adalah daftar dari masukan dan daftar dari keluaran. Masukan menunjuk ke keluaran sebelumnya, menunjukkan dari mana uang itu berasal, dan masing-masing disertai dengan tanda tangan yang membuktikan hak untuk menggunakannya. Keluaran menunjukkan ke mana uang itu pergi. Nilai selalu berupa angka bulat dalam satoshi — seperseratus juta bagian dari satu bitcoin — karena angka bulat tidak pernah membulatkan dengan salah.

Dan inilah detail yang paling mengejutkan bagi yang melihatnya pertama kali: biaya tidak tertulis di mana pun. Tidak ada kolom biaya dalam transaksi. Yang ada adalah selisih: jika masukan lebih besar dari keluaran, sisanya menjadi milik penambang yang memasukkan transaksi ke dalam blok.

Biaya tidak tertulis. Itu adalah sisa antara apa yang masuk dan apa yang keluar.

Pilihan desain ini elegan dan tak kenal ampun. Pada 10 Februari 2023, perusahaan Amerika Paxos mengirimkan transaksi yang memindahkan setara dengan beberapa dolar dan membayar biaya 19,8 bitcoin — setengah juta dolar pada saat itu. Tidak ada yang mengetikkan nilai tersebut. Seseorang menyusun masukan dan lupa keluaran kembalian, dan jaringan melakukan persis seperti yang diperintahkan oleh aturan: apa yang tidak masuk ke keluaran menjadi milik penambang. Dompet biasa melindungi Anda dari hal ini dengan pemeriksaan; transaksi yang disusun secara manual, tidak.

Dengan model ini dalam pikiran, dua masalah sehari-hari menjadi jelas. Yang pertama adalah debu: potongan yang begitu kecil sehingga menggunakannya menghabiskan biaya lebih dari nilainya. Mereka tetap diam di dompet selamanya, dan bahkan ada sebagai teknik pelacakan — mengirim debu ke ribuan alamat dan mengamati siapa yang menggunakannya bersama dengan sisanya.

Ada potongan yang begitu kecil sehingga membawanya menghabiskan lebih dari nilainya.

Yang kedua adalah konsolidasi. Siapa pun yang menerima banyak pembayaran kecil mengumpulkan puluhan UTXO, dan masing-masing memakan ruang saat digunakan — transaksi dengan tiga puluh masukan tiga puluh kali lebih mahal daripada yang dengan satu. Mengonsolidasikan adalah menggabungkannya dalam satu transaksi, dilakukan pada saat biaya rendah, untuk membayar murah hari ini apa yang akan mahal besok. Sebagai gantinya, konsolidasi mengungkapkan secara publik bahwa semua potongan tersebut milik orang yang sama, yang merupakan topik pelajaran tentang privasi, lebih lanjut dalam kursus.

Itulah sebabnya node lengkap tidak menyimpan saldo siapa pun: ia menyimpan kumpulan semua keluaran yang belum digunakan dari seluruh jaringan, beberapa gigabyte yang menjawab satu-satunya pertanyaan yang penting saat memvalidasi — apakah potongan ini masih ada?

Tinggal membuka kunci. Setiap keluaran membawa program kecil yang menentukan kondisi untuk menggunakannya, ditulis dalam bahasa khusus. Pada pelajaran berikutnya, Script.