Apa itu pembelanjaan ganda?
Pembelanjaan ganda merupakan potensi masalah dalam sistem uang digital di mana dana yang sama dikirim ke dua penerima sekaligus. Tanpa adanya tindakan penanggulangan yang memadai, sebuah protokol yang tidak mengatasi masalah ini pada dasarnya akan mengalami kegagalan. Pengguna tidak memiliki cara untuk memverifikasi bahwa dana yang mereka terima belum dibelanjakan di tempat lain.
Terkait uang digital, penting untuk memastikan bahwa unit tertentu tidak dapat diduplikasi. Seluruh sistem akan dikompromikan jika Alice dapat menerima 10 unit, menyalin dan menempelkannya 10 kali, dan berakhir dengan 100 unit. Demikian pula, sistem seperti itu tidak dapat berfungsi jika dapat mengirimkan 10 unit yang sama kepada Bob dan Carol secara bersamaan. Agar uang digital dapat berfungsi, harus ada mekanisme untuk mencegah perilaku ini.
Bagaimana cara menghindari pembelanjaan ganda?
Pendekatan terpusat
Pendekatan terpusat jauh lebih mudah diterapkan dibandingkan pendekatan desentralisasi. Hal ini biasanya melibatkan seorang supervisor yang mengelola sistem dan mengendalikan penerbitan dan distribusi unit. Contoh yang baik dari solusi terpusat terhadap masalah pembelanjaan ganda adalah eCash milik David Chaum.
Untuk menerbitkan aset digital yang meniru uang kepada pengguna (dapat digunakan untuk melakukan pertukaran anonim dan peer-to-peer), bank dapat menggunakan tanda tangan buta, seperti yang dijelaskan secara rinci oleh kriptografer David Chaum dalam makalahnya tahun 1982, Blind Signatures for Untraceable Payments.
Dalam konteks seperti itu, jika pengguna (sebut saja Dan) ingin menerima uang digital sebesar 100 dolar, ia harus memberi tahu bank terlebih dahulu. Jika mereka memiliki saldo di akun mereka, mereka kemudian akan menghasilkan nomor acak (atau beberapa, untuk denominasi kecil). Misalkan dia menghasilkan lima angka, yang masing-masing diberi nilai $20. Untuk mencegah bank mengenali unit tertentu, Dan mengacak angka acak dengan menambahkan faktor pembutakan pada masing-masing unit.
Dia kemudian memberikan data ini ke bank, yang mendebit rekeningnya sebesar 100 dolar dan menandatangani pesan yang menyatakan bahwa masing-masing dari lima koin tersebut dapat ditukar dengan 20 dolar. Dan kini bisa membelanjakan dana yang dikeluarkan bank. Dia pergi ke restoran Erin dan membeli makanan seharga $40.
Dan dapat menghilangkan faktor yang membutakan untuk mengekspos nomor acak yang terkait dengan setiap “uang kertas” digital, yang berfungsi sebagai pengidentifikasi unik untuk setiap unit (seperti nomor seri). Dia mengungkapkan dua kepada Erin, yang sekarang harus segera menukarkannya dengan bank untuk mencegah Dan membelanjakannya di pedagang lain. Bank akan memverifikasi bahwa tanda tangan tersebut valid, dan jika semuanya terlihat baik, mereka akan mengkredit rekening Erin sebesar $40.
Tiket bekas sekarang pada dasarnya tidak berguna, dan lebih banyak lagi yang harus dikeluarkan jika Erin ingin menghabiskan saldo barunya dengan cara yang sama.
Sistem eCash Chaumian dapat berguna untuk transfer pribadi. Namun hal ini gagal dalam hal ketahanan karena bank merupakan titik utama kegagalan. Surat utang yang diterbitkan tidak mempunyai nilai apa pun, karena nilainya semata-mata berasal dari kesediaan bank untuk menukarnya dengan dolar. Nasabah bergantung pada kekuasaan bank, dan harus bergantung pada itikad baik bank agar uang dapat berfungsi. Inilah masalah yang ingin dipecahkan oleh cryptocurrency.
Pendekatan desentralisasi
Lebih sulit untuk memastikan bahwa dana tidak dapat dibelanjakan dua kali dalam suatu ekosistem tanpa adanya pengawas. Peserta yang memiliki kekuasaan yang sama harus berkoordinasi dalam menetapkan seperangkat aturan yang mencegah penipuan dan memberikan insentif kepada semua pengguna untuk bertindak jujur.
Inovasi terbesar yang disajikan dalam buku putih Bitcoin adalah solusi terhadap masalah pembelanjaan ganda. Meski tidak disebutkan, Satoshi mengusulkan struktur data yang sekarang dikenal sebagai blockchain.
Blockchain sebenarnya hanyalah sebuah database dengan properti unik tertentu. Peserta jaringan (disebut node) menjalankan perangkat lunak khusus, yang memungkinkan mereka menyinkronkan salinan database dengan rekan-rekan mereka. Hasilnya seluruh jaringan dapat memeriksa riwayat transaksi dan melacaknya kembali ke blok genesis. Karena blockchain tersedia untuk umum, maka mudah untuk mendeteksi dan mencegah aktivitas penipuan, seperti transaksi yang mencoba menggandakan pembelanjaan.
Ketika pengguna menyiarkan suatu transaksi, transaksi tersebut tidak langsung ditambahkan ke blockchain, transaksi tersebut harus dimasukkan terlebih dahulu ke dalam blok melalui penambangan. Oleh karena itu, penerima hanya boleh menganggap transaksi tersebut valid setelah blok mereka ditambahkan ke rantai. Jika tidak, mereka berisiko kehilangan dana, karena pengirim dapat membelanjakan unit yang sama di tempat lain.
Setelah transaksi dikonfirmasi, unit tidak dapat dibelanjakan dua kali, karena kepemilikan diberikan kepada pengguna baru, dan seluruh jaringan dapat memverifikasinya. Karena alasan inilah banyak orang menyarankan untuk menunggu beberapa konfirmasi sebelum menganggap pembayaran itu sah. Setiap blok berikutnya secara signifikan meningkatkan upaya yang diperlukan untuk memodifikasi atau menulis ulang string (yang dapat terjadi pada serangan 51%).
Mari kembali ke skenario restoran. Dan kembali ke restoran, dan kali ini, ada stiker Bitcoin Accepted di jendela. Dia menikmati makanan yang dia makan terakhir kali, jadi dia memesannya lagi. Harganya 0,005 BTC.
Erin menunjukkan kepadanya alamat umum ke mana ia harus mengirim dana. Dan menyiarkan transaksi tersebut, yang pada dasarnya adalah pesan bertanda tangan yang menyatakan bahwa 0,005 BTC yang dimiliki Dan sekarang menjadi milik Erin. Tanpa banyak perincian, siapa pun yang diberikan transaksi yang ditandatangani Dan dapat memverifikasi bahwa dia benar-benar memiliki dana tersebut, dan oleh karena itu memiliki wewenang untuk mengirimkannya.
Namun seperti yang telah disebutkan, transaksi tersebut hanya sah jika termasuk dalam blok yang dikonfirmasi. Menerima transaksi yang belum dikonfirmasi sama seperti menerima $40 dalam bentuk eCash dari contoh sebelumnya, tanpa segera mencairkannya di bank sehingga pengirim dapat membelanjakannya di tempat lain untuk sementara waktu. Oleh karena itu disarankan agar Erin menunggu setidaknya 6 konfirmasi blok (sekitar satu jam) sebelum menerima pembayaran dari Dan.
Pembelanjaan ganda dan Bitcoin
Bitcoin dirancang dengan hati-hati untuk mencegah serangan pembelanjaan ganda, setidaknya ketika protokolnya digunakan sebagaimana mestinya. Artinya, jika masyarakat menunggu konfirmasi transaksi dalam satu blok, tidak ada cara mudah bagi pengirim untuk membatalkannya. Untuk melakukan hal ini, mereka harus “membalikkan” blockchain, yang memerlukan jumlah kekuatan hashing yang tidak realistis.
Namun, sejumlah serangan pembelanjaan ganda menargetkan pihak-pihak yang menerima transaksi yang belum dikonfirmasi. Untuk pembelian bernilai rendah, misalnya, pedagang mungkin tidak ingin menunggu transaksi dimasukkan ke dalam blok. Restoran cepat saji yang sibuk mungkin tidak bisa menunggu jaringan memproses setiap pembelian. Jadi, jika sebuah bisnis memperbolehkan pembayaran “instan”, maka ia akan membuka peluang pembelanjaan ganda. Seseorang dapat memesan hamburger, membayarnya, dan kemudian segera mengirimkan dana yang sama ke alamatnya sendiri. Dengan biaya yang lebih tinggi, transaksi baru ini berisiko dikonfirmasi terlebih dahulu, sehingga transaksi sebelumnya menjadi tidak valid.
Ada tiga metode populer untuk pembelanjaan ganda:
Serangan 51%: Ketika satu entitas atau organisasi memperoleh kendali atas lebih dari 50% tingkat hash, memungkinkan mereka mengecualikan atau mengubah urutan transaksi. Serangan semacam itu sangat kecil kemungkinannya terjadi pada Bitcoin, tetapi telah terjadi di jaringan lain.
Serangan ras: dua transaksi yang bertentangan disiarkan secara berurutan, menggunakan dana yang sama, namun hanya satu transaksi yang dikonfirmasi. Tujuan penyerang adalah membatalkan pembayaran dengan hanya memvalidasi transaksi yang menguntungkan mereka (misalnya, mengirimkan dana yang sama ke alamat yang mereka kendalikan). Serangan ras memaksa penerima untuk menerima transaksi yang belum dikonfirmasi sebagai pembayaran.
Serangan Finney: penyerang menempatkan transaksi dalam satu blok tanpa segera menyiarkannya ke jaringan. Sebaliknya, dia membelanjakan koin yang sama dalam transaksi lain dan hanya menyiarkan blok yang telah ditambang sebelumnya, yang dapat membatalkan pembayaran. Serangan Finney memerlukan rangkaian peristiwa tertentu dan juga bergantung pada penerimanya yang menerima transaksi yang belum dikonfirmasi.
Seperti yang bisa kita lihat, pedagang yang menunggu konfirmasi pemblokiran akan secara signifikan mengurangi kemungkinan menjadi korban pembelanjaan ganda.
Untuk menyimpulkan
Pembelanjaan ganda memungkinkan pengguna memanipulasi sistem uang elektronik untuk tujuan mereka sendiri, menggunakan dana yang sama lebih dari satu kali. Secara tradisional, kurangnya solusi yang memadai terhadap masalah ini telah menghambat kemajuan lebih lanjut.
Untungnya, penggunaan tanda tangan buta menawarkan solusi menarik untuk sistem keuangan terpusat. Belakangan, penciptaan mekanisme bukti kerja dan teknologi blockchain memunculkan Bitcoin, suatu bentuk mata uang terdesentralisasi yang, pada gilirannya, menginspirasi ribuan proyek mata uang kripto lainnya.

