Apa itu pembelanjaan ganda?

Pembelanjaan ganda merupakan potensi masalah dalam sistem moneter digital dimana dana yang sama dapat dibelanjakan dua kali dalam interval waktu yang sama. Tanpa tindakan penanggulangan yang memadai, protokol yang tidak mengatasi masalah ini akan rentan terhadap jenis aktivitas ini—pengguna tidak dapat yakin bahwa dana mereka tidak dibelanjakan di tempat lain.

Di dunia kripto, membatasi duplikasi unit tertentu adalah hal yang paling penting. Jika Alice dapat menerima 10 unit dan kemudian menyalin dan menempelkannya 10 kali untuk mendapatkan 100 unit, seluruh sistem akan macet jika 10 unit yang sama dikirim ke Boris dan Katya pada saat yang bersamaan. Oleh karena itu, agar uang digital dapat berfungsi, mekanisme harus diciptakan untuk membatasi kemungkinan tersebut.


Bagaimana cara mencegah pembelanjaan ganda?

Pendekatan terpusat

Jenis sistem yang tersentralisasi jauh lebih mudah diterapkan dibandingkan dengan sistem alternatif yang terdesentralisasi. Pada dasarnya, ini melibatkan kehadiran satu entitas atau organisasi yang mengelola sistem dan mengendalikan penerbitan dan distribusi unit baru. Contoh yang baik dari solusi terpusat terhadap masalah pembelanjaan ganda adalah eCash milik David Chaum. 

Untuk memberikan aset digital kepada pengguna yang meniru uang tunai (yang mampu melakukan pertukaran anonim dan peer-to-peer), bank dapat menggunakan tanda tangan buta—seperti yang dijelaskan oleh kriptografer David Chaum dalam makalahnya tahun 1982 “Blind Signatures for Untraceable Payments.”

Misalnya, jika pengguna (sebut saja dia Denis) ingin menerima $100 dalam mata uang digital, dia harus memberi tahu bank terlebih dahulu tentang hal ini. Jika ada saldo di akun, maka akan dihasilkan satu nomor acak atau beberapa nomor untuk pecahan yang lebih kecil. Katakanlah ini menghasilkan lima angka, masing-masing diberi nilai $20. Untuk mencegah bank melacak unit mata uang, Denis menyembunyikan nomor acak dengan menambahkan faktor pembutakan pada masing-masing unit.

Dia kemudian mengirimkan informasi tersebut ke bank, yang mendebit rekeningnya sebesar $100 dan kemudian menandatangani pesan yang mengonfirmasi bahwa masing-masing dari lima informasi tersebut dapat ditukarkan dengan $20. Kini Denis bisa membelanjakan dana yang dikeluarkan bank. Dia pergi ke restoran Irina dan membeli makanan, yang harganya $40. 

Denis dapat menghilangkan faktor yang membutakan dengan menggunakan nomor acak yang terkait dengan mata uang digital pada cek, yang akan berfungsi sebagai pengidentifikasi unik untuk setiap item (mirip dengan nomor seri). Dia mengungkapkan dua di antaranya kepada Irina, yang kini harus segera mengaktifkannya di bank agar Denis tidak bisa membelanjakan uang yang sama di tempat lain. Bank akan memeriksa tanda tangan tersebut dan, jika semuanya berjalan lancar, akan mengkredit rekening Irina sejumlah $40.

Setelah diaktifkan, cek bekas akan dibakar, dan jika Erin ingin membelanjakan saldo barunya lagi, dia perlu mendapatkan cek baru dengan cara yang sama.

eCash Chaum mungkin cocok untuk transaksi keuangan pribadi, namun pendekatan ini tidak terlalu dapat diandalkan karena bank adalah titik pusat kegagalan. Cek yang diterbitkan itu sendiri tidak ada nilainya, karena nilainya hanya ditentukan oleh kesediaan bank untuk menukarkan cek tersebut dengan dolar. Pada saat yang sama, nasabah bergantung pada bank dan harus bergantung pada bank untuk dapat membelanjakan uangnya, yang merupakan masalah yang ingin diperbaiki oleh cryptocurrency.


Pendekatan terdesentralisasi

Memastikan bahwa dana tidak dapat dibelanjakan ganda dalam suatu ekosistem tanpa badan pengawas pihak ketiga merupakan tantangan yang lebih besar. Dalam hal ini, peserta yang sama-sama berkuasa harus menyetujui aturan tertentu untuk mencegah penipuan dan memberikan insentif kepada semua pengguna untuk bertindak jujur.

Inovasi terbesar yang disajikan dalam whitepaper Bitcoin adalah solusi terhadap masalah pembelanjaan ganda. Meskipun tidak disebutkan seperti itu, struktur data yang diusulkan Satoshi kini dikenal luas sebagai blockchain.

Blockchain adalah database dengan serangkaian properti unik. Peserta jaringan (disebut node) menggunakan perangkat lunak khusus untuk menyinkronkan salinan database dengan peserta lain. Hasilnya, seluruh peserta jaringan dapat memeriksa riwayat setiap transaksi, mulai dari blok genesis. Berkat sifat publik dari blockchain, aktivitas penipuan seperti transaksi pembelanjaan ganda dapat dengan mudah dideteksi dan dicegah.

Saat pengguna menyiarkan suatu transaksi, transaksi tersebut tidak langsung ditambahkan ke blockchain: pertama, transaksi tersebut harus dimasukkan ke dalam blok melalui penambangan. Penerima akan menganggap transfer tersebut valid hanya setelah menambahkan blok dengan transaksi ke rantai. Jika tidak, penerima berisiko tidak menerima dana yang dijanjikan, karena pengirim dapat membelanjakan koin yang sama di tempat lain. 

Setelah transaksi dikonfirmasi, koin tidak dapat dibelanjakan dua kali, karena kepemilikan dialihkan ke pengguna baru dan seluruh jaringan dapat memverifikasinya. Karena alasan inilah banyak yang menyarankan menunggu hingga Anda menerima beberapa konfirmasi sebelum menerima pembayaran. Setiap blok berikutnya meningkatkan jumlah upaya yang diperlukan untuk mengubah atau menulis ulang rantai (seperti dalam serangan 51%).

Mari kita ambil contoh restoran lagi. Denis kembali ke restoran dan melihat iklan bahwa tempat ini menerima pembayaran layanan dalam Bitcoin. Dia menyukai hidangan yang dia makan terakhir kali, jadi dia memesannya lagi. Biayanya 0,005 BTC. 

Irina memberikan alamat publiknya ke mana dia harus mengirimkan dana. Denis menyiarkan transaksi tersebut, yang pada dasarnya adalah pesan yang ditandatangani bahwa 0,005 BTC Denis sekarang sedang ditransfer ke Irina. Siapa pun yang diberikan transaksi yang ditandatangani Denis dapat memverifikasi bahwa dia memang pemilik koin tersebut dan oleh karena itu berhak mengirimkannya.

Seperti yang telah kami katakan, suatu transaksi hanya valid jika termasuk dalam blok yang dikonfirmasi. Menerima transaksi yang belum dikonfirmasi sama seperti menerima $40 dalam bentuk eCash dari contoh sebelumnya tanpa mencairkan cek di bank tepat waktu, sehingga pengirim dapat membelanjakan jumlah yang sama di tempat lain. Oleh karena itu, Irina harus menunggu setidaknya enam konfirmasi blok (sekitar satu jam) sebelum menerima pembayaran Denis.


Pembelanjaan Ganda di Jaringan Bitcoin

Mekanisme Bitcoin mencegah serangan pembelanjaan ganda, setidaknya selama protokolnya berfungsi dengan baik. Artinya, jika seseorang sedang menunggu transaksi dalam suatu blok untuk dikonfirmasi, maka tidak akan mudah bagi pengirim untuk membalikkannya. Untuk mencapai hal ini, blockchain perlu dibalik, namun hal ini memerlukan kekuatan hashing yang sangat besar.

Namun, ada beberapa serangan pembelanjaan ganda yang menargetkan transaksi yang belum dikonfirmasi. Misalnya, saat melakukan pembelian dengan harga murah, penjual mungkin tidak mau menunggu transaksi dimasukkan ke dalam blok. Restoran cepat saji yang dipenuhi pesanan juga tidak akan bisa berfungsi dengan baik dengan waktu pemrosesan setiap pembelian yang begitu lama. Oleh karena itu, jika suatu bisnis bergantung pada pembayaran instan, maka bisnis tersebut rentan terhadap pembelanjaan ganda. Seseorang dapat memesan hamburger, membayarnya, dan kemudian segera mengirimkan dana yang sama ke alamatnya. Transaksi baru dengan biaya lebih tinggi kemungkinan besar akan dikonfirmasi terlebih dahulu dan kemudian membatalkan validasi transaksi sebelumnya.

Ada tiga metode populer untuk menerapkan pembelanjaan ganda:

  • Serangan 51% terjadi ketika suatu entitas atau organisasi berhasil mengendalikan lebih dari 50% dari keseluruhan hashrate jaringan, sehingga transaksi dapat dihilangkan atau urutannya diubah. Serangan seperti itu tidak mungkin terjadi pada kasus Bitcoin, namun dapat terjadi pada jaringan blockchain lainnya.

  • Serangan balapan terjadi ketika dua transaksi yang bertentangan disiarkan secara bersamaan menggunakan dana yang sama, namun hanya satu yang dikonfirmasi. Tujuan penyerang adalah membatalkan validasi dengan hanya mengonfirmasi transaksi yang diinginkannya (misalnya mengirimkan dana yang sama ke alamatnya). Syarat penyerangan tersebut adalah izin penjual untuk membayar barang melalui transaksi yang belum dikonfirmasi.

  • Serangan Finney terjadi ketika penyerang melakukan pra-penambangan sebuah blok dengan transaksinya tanpa segera menyiarkannya ke jaringan. Sebaliknya, ia membelanjakan koinnya lagi, tetapi sebagai bagian dari transaksi yang berbeda, dan baru kemudian menyiarkan blok sebelumnya, membatalkan transfer ke penjual. Serangan Finney memerlukan rangkaian kejadian tertentu dan juga bergantung pada kesediaan penerima untuk menerima transaksi yang belum dikonfirmasi.

Seperti yang bisa kita lihat, penjual yang menunggu blok dikonfirmasi memiliki risiko lebih rendah menjadi korban pembelanjaan ganda.


Ringkasan

Pembelanjaan ganda memungkinkan Anda menggunakan sistem uang digital untuk keuntungan finansial dengan membelanjakan jumlah yang sama lebih dari satu kali. Kurangnya solusi yang memadai terhadap masalah ini menghambat kemajuan lebih lanjut di bidang ini.

Untungnya, munculnya tanda tangan buta telah memecahkan banyak permasalahan sistem keuangan terpusat. Dan penciptaan mekanisme Proof of Work dan teknologi blockchain melahirkan Bitcoin, suatu bentuk uang terdesentralisasi yang kuat yang telah menginspirasi banyak pengguna untuk membuat ribuan proyek mata uang kripto lainnya.