Apa itu pengeluaran ganda?

Pengeluaran ganda merupakan masalah potensial dalam sistem uang digital di mana dana yang sama dikirimkan ke dua penerima pada saat yang sama. Tanpa tindakan pencegahan yang memadai, protokol yang tidak menyelesaikan masalah tersebut pada dasarnya tidak akan berfungsi – pengguna tidak memiliki cara untuk memverifikasi bahwa dana yang mereka terima belum pernah dibelanjakan di tempat lain.

Terkait uang digital, memastikan bahwa unit tertentu tidak dapat diduplikasi merupakan hal yang sangat penting. Seluruh sistem akan rusak jika Alice dapat menerima 10 unit, menyalin dan menempelkannya 10 kali, dan mendapati dirinya memiliki 100 unit. Demikian pula, skema semacam itu tidak dapat berhasil jika dia dapat mengirim 10 unit yang sama kepada Bob dan Carol secara bersamaan. Jadi, agar uang digital dapat berfungsi, harus ada mekanisme yang diterapkan untuk mencegah perilaku ini.


Bagaimana pengeluaran ganda dapat dicegah?

Pendekatan terpusat

Rute terpusat jauh lebih mudah diimplementasikan daripada alternatif terdesentralisasi. Ini biasanya melibatkan satu pengawas yang mengelola sistem dan mengendalikan penerbitan serta distribusi unit. Contoh baik dari solusi terpusat untuk masalah pengeluaran ganda adalah eCash milik David Chaum.

Untuk menerbitkan aset digital kepada pengguna yang meniru uang tunai (yang mampu melakukan pertukaran anonim dan peer-to-peer), sebuah bank dapat menggunakan tanda tangan buta – seperti yang dijelaskan oleh kriptografer David Chaum dalam makalahnya tahun 1982, Tanda Tangan Buta untuk Pembayaran yang Tidak Dapat Dilacak.

Dalam konteks ini, jika seorang pengguna (mari kita sebut dia Dan) ingin menerima $100 dalam uang digital, ia diwajibkan untuk memberi tahu bank terlebih dahulu. Dengan syarat ia memiliki saldo di akun, ia kemudian akan menghasilkan nomor acak (atau banyak, untuk denominasi yang lebih kecil). Mari kita anggap ia menghasilkan lima nomor, masing-masing akan diberikan nilai $20. Untuk mencegah bank melacak unit tertentu, Dan menyembunyikan nomor acak tersebut dengan menambahkan faktor pembelajaran ke masing-masing dari mereka.

Ia kemudian menyerahkan data ini kepada bank, yang mendebit akunnya sebesar $100, dan menandatangani pesan yang mengesahkan bahwa masing-masing dari lima informasi tersebut dapat ditukarkan dengan $20. Dan sekarang dapat membelanjakan dana yang diterbitkan oleh bank. Ia pergi ke restoran Erin, dan membeli makanan yang menghabiskannya $40.

Dan dapat menghapus faktor pembelajaran untuk mengekspos nomor acak yang terkait dengan setiap "tagihan" uang digital, yang berfungsi sebagai pengidentifikasi unik untuk setiap unit (mirip dengan nomor seri). Ia mengungkapkan dua dari ini kepada Erin, yang sekarang harus menukarkannya segera dengan bank untuk mencegah Dan membelanjakannya dengan pedagang lain. Bank akan memeriksa apakah tanda tangan valid, dan jika semuanya tampak benar, bank akan mengkredit akun Erin dengan $40.

Tagihan yang digunakan sekarang pada dasarnya dibakar, dan lebih banyak yang harus diterbitkan jika Erin ingin membelanjakan saldo barunya dengan cara yang sama.

Pengaturan eCash Chaumian mungkin berharga untuk transfer pribadi. Namun, itu gagal dalam ketahanan karena bank adalah titik kegagalan pusat. Sebuah tagihan yang diterbitkan tidak bernilai apa-apa dengan sendirinya, karena nilainya hanya berasal dari kesediaan bank untuk menukarnya dengan dolar. Pelanggan berada di bawah belas kasihan bank, dan harus bergantung pada niat baiknya agar uang dapat berfungsi. Inilah masalah yang ingin diatasi oleh cryptocurrency.


Pendekatan terdesentralisasi

Memastikan bahwa dana tidak dapat dikeluarkan ganda dalam ekosistem tanpa pengawas lebih menantang. Peserta yang sama kuat harus berkoordinasi di sekitar seperangkat aturan yang mencegah penipuan dan memberikan insentif kepada semua pengguna untuk bertindak jujur.

Inovasi terbesar yang disajikan dalam makalah putih Bitcoin adalah solusi untuk masalah pengeluaran ganda. Meskipun tidak disebutkan sebagai demikian, Satoshi mengusulkan struktur data yang sekarang dikenal luas sebagai blockchain.

Blockchain sebenarnya hanyalah basis data dengan beberapa sifat unik. Peserta di jaringan (disebut sebagai node) menjalankan perangkat lunak khusus, yang memungkinkan mereka untuk menyinkronkan salinan basis data mereka dengan rekan-rekan mereka. Hasilnya adalah bahwa seluruh jaringan dapat mengaudit sejarah transaksi yang berasal dari blok genesis. Dengan memiliki blockchain yang dapat dilihat secara publik, mudah untuk mendeteksi dan mencegah aktivitas penipuan, seperti transaksi yang mencoba untuk mengeluarkan ganda.

Ketika seorang pengguna menyiarkan transaksi, transaksi tersebut tidak segera ditambahkan ke blockchain – ia harus terlebih dahulu disertakan dalam sebuah blok melalui penambangan. Oleh karena itu, penerima hanya boleh menganggap transaksi tersebut valid setelah bloknya ditambahkan ke rantai. Jika tidak, mereka berisiko kehilangan dana, karena pengirim bisa saja membelanjakan koin yang sama di tempat lain.

Setelah transaksi dikonfirmasi, koin tidak dapat dikeluarkan ganda, karena kepemilikan diberikan kepada pengguna baru – dan seluruh jaringan dapat memverifikasi ini. Itulah sebabnya banyak yang merekomendasikan untuk menunggu beberapa konfirmasi sebelum menerima pembayaran sebagai valid. Setiap blok berikutnya secara drastis meningkatkan jumlah usaha yang diperlukan untuk memodifikasi atau menulis ulang rantai (yang mungkin terjadi selama serangan 51%).

Mari kita tinjau kembali skenario restoran. Dan kembali ke restoran, dan kali ini melihat stiker Bitcoin Diterima Di Sini di jendela. Ia menikmati makanan yang ia miliki sebelumnya, jadi memesan lagi. Itu menghabiskannya 0.005 BTC.

Erin memberinya alamat publik yang harus ia kirimkan dananya. Dan menyiarkan transaksi, yang pada dasarnya adalah pesan yang ditandatangani yang menyatakan bahwa 0.005 BTC yang berada di tangan Dan sekarang ada di tangan Erin. Tanpa menjelaskan terlalu rinci, siapa pun yang diberi transaksi yang ditandatangani Dan dapat memverifikasi bahwa dia memang memiliki koin tersebut, dan oleh karena itu memiliki wewenang untuk mengirimkannya.

Namun, transaksi hanya valid jika termasuk dalam blok yang dikonfirmasi. Menerima transaksi yang belum dikonfirmasi sangat mirip dengan menerima $40 dalam eCash dari contoh sebelumnya, tanpa segera menukarkannya di bank – itu memungkinkan pengirim untuk membelanjakannya di tempat lain. Jadi, disarankan agar Erin menunggu setidaknya 6 konfirmasi blok (sekitar satu jam) sebelum menerima pembayaran Dan.


Pengeluaran ganda dalam Bitcoin

Bitcoin dirancang dengan hati-hati untuk mencegah serangan pengeluaran ganda, setidaknya ketika protokol digunakan sesuai harapan. Artinya, jika individu menunggu transaksi dikonfirmasi dalam sebuah blok, tidak ada cara mudah bagi pengirim untuk membatalkannya. Untuk melakukannya, mereka perlu "membalikkan" blockchain, yang memerlukan jumlah daya hashing yang tidak realistis.

Namun, ada segelintir serangan pengeluaran ganda yang menargetkan pihak yang menerima transaksi yang belum dikonfirmasi. Untuk pembelian dengan nilai rendah, misalnya, seorang pedagang mungkin tidak ingin menunggu transaksi dimasukkan ke dalam sebuah blok. Restoran cepat saji yang sibuk mungkin tidak mampu menunggu saat jaringan memproses setiap pembelian. Jadi, jika sebuah bisnis mengizinkan pembayaran "instan", mereka membuka diri terhadap pengeluaran ganda. Seseorang mungkin memesan burger, membayarnya, lalu segera mengirimkan dana yang sama ke alamat mereka sendiri. Dengan biaya yang lebih tinggi, transaksi baru ini kemungkinan akan dikonfirmasi terlebih dahulu, dan akan membatalkan transaksi sebelumnya.

Ada tiga metode populer untuk melakukan pengeluaran ganda:

  • Serangan 51%: ketika satu entitas atau organisasi berhasil mengendalikan lebih dari 50% dari laju hash, yang memungkinkan mereka untuk mengecualikan atau memodifikasi urutan transaksi. Serangan semacam itu sangat tidak mungkin terjadi pada Bitcoin, tetapi telah terjadi di jaringan lain.

  • Serangan balapan: dua transaksi yang bertentangan disiarkan secara berurutan, menggunakan dana yang sama – tetapi hanya satu transaksi yang dikonfirmasi. Tujuan penyerang adalah untuk membatalkan pembayaran dengan hanya memvalidasi transaksi yang menguntungkan mereka (misalnya, mengirimkan dana yang sama ke alamat yang mereka kendalikan). Serangan balapan mengharuskan penerima untuk menerima transaksi yang belum dikonfirmasi sebagai pembayaran.

  • Serangan Finney: seorang penyerang menambang satu transaksi ke dalam sebuah blok tanpa langsung menyiarkannya ke jaringan. Sebagai gantinya, ia membelanjakan koin yang sama dalam transaksi lain dan hanya kemudian menyiarkan blok yang telah ditambang sebelumnya, yang mungkin membatalkan pembayaran. Serangan Finney memerlukan urutan peristiwa tertentu untuk terjadi dan juga tergantung pada penerimaan penerima terhadap transaksi yang belum dikonfirmasi.

Seperti yang kita lihat, seorang pedagang yang menunggu konfirmasi blok akan sangat mengurangi risiko menjadi korban pengeluaran ganda.


Pikiran penutup

Pengeluaran ganda memungkinkan pengguna untuk memanfaatkan sistem uang elektronik untuk keuntungan finansial, menggunakan dana yang sama lebih dari sekali. Secara tradisional, kurangnya solusi yang memadai terhadap masalah ini telah menghalangi kemajuan di area ini.

Untungnya, penggunaan tanda tangan buta mengusulkan solusi menarik untuk skema keuangan terpusat. Kemudian, penciptaan mekanisme Bukti Kerja dan teknologi blockchain melahirkan Bitcoin sebagai bentuk uang terdesentralisasi yang kuat – yang, pada gilirannya, menginspirasi ribuan proyek cryptocurrency lainnya.