Apa masalah pembelanjaan ganda?
Masalah pembelanjaan ganda merupakan masalah potensial dalam sistem kas digital di mana dana yang sama dibayarkan kepada dua penerima pembayaran pada saat yang bersamaan. Tanpa tindakan pencegahan yang tepat, protokol saja tidak dapat menyelesaikan masalah ini sepenuhnya, karena pengguna tidak memiliki cara untuk memverifikasi apakah dana yang mereka terima telah dibayarkan kepada orang lain.
Dalam dunia uang digital, penting untuk memastikan bahwa unit mata uang tertentu tidak dapat disalin. Jika Alice dapat menerima 10 unit mata uang, menyalin dan menempelkannya 10 kali, dan kemudian memiliki 100 unit mata uang sendiri, seluruh sistem akan berantakan. Demikian pula, jika dia dapat mengirim 10 unit mata uang yang sama kepada Bob dan Carol pada saat yang sama, sistemnya juga tidak akan berfungsi. Oleh karena itu, harus ada mekanisme untuk mencegah hal ini terjadi guna memastikan mata uang digital berfungsi dengan baik.
Bagaimana cara mencegah masalah pembelanjaan ganda?
Pendekatan terpusat
Pendekatan terpusat lebih mudah diterapkan dibandingkan solusi desentralisasi, yang biasanya memerlukan pengawas untuk mengelola sistem dan mengendalikan penerbitan dan penerbitan unit mata uang. eCash milik David Chaum memecahkan masalah pembelanjaan ganda melalui pendekatan terpusat.
Bank dapat menggunakan tanda tangan buta untuk menerbitkan aset digital seperti uang tunai kepada pengguna (yang memungkinkan transaksi peer-to-peer anonim). Hal ini dirinci dalam makalah tahun 1982 "Teknik Tanda Tangan Buta untuk Pembayaran yang Tidak Dapat Dilacak" oleh kriptografer David Chaum.
Dalam hal ini, jika pengguna Dan ingin menerima uang digital sebesar $100, ia harus memberi tahu bank terlebih dahulu. Jika ada saldo di akunnya, maka akan dihasilkan nomor acak (lebih banyak jika pecahannya lebih kecil). Misalkan lima angka acak dihasilkan, masing-masing bernilai $20. Untuk mencegah bank melacak unit mata uang tertentu, Dan mengacaukan situasi dengan menambahkan faktor pembutakan ke setiap nomor acak.
Dia kemudian memberikan data ini ke bank, yang memotong saldo $100 dari rekeningnya dan menandatangani pesan tersebut, membuktikan bahwa masing-masing dari lima pesan tersebut dapat ditukarkan dengan $20. Saat ini Dan sudah bisa menggunakan uang digital yang dikeluarkan bank. Dia pergi ke restoran Erin untuk makan dan menghabiskan $40.
Dan menghilangkan faktor yang membutakan dan memperlihatkan nonce yang terkait dengan setiap “uang kertas” digital, yang merupakan pengidentifikasi unik untuk setiap unit mata uang (kira-kira setara dengan nomor seri). Dia mengungkapkan dua nomor acak tersebut kepada Erin, yang harus segera menukarkan dana tersebut dengan bank untuk mencegah Dan membayar ke pedagang lain. Bank akan memverifikasi apakah tanda tangan tersebut valid, dan jika benar, bank akan menyetor $40 ke rekening Erin.
"Uang kertas" bekas tersebut kemudian dimusnahkan, dan jika Erin ingin menggunakan saldo rekeningnya dengan cara yang sama, lebih banyak uang kertas harus dikeluarkan.
Mekanisme Chaumian eCash sangat berharga untuk transfer pribadi. Namun, mekanisme eCash sendiri tidak memiliki perlawanan. Karena bank adalah pusat yang tersentralisasi, begitu sistemnya bermasalah, semua orang akan menderita. Uang kertas yang diterbitkan oleh bank tidak memiliki nilai; nilainya sepenuhnya berasal dari kesediaan bank untuk menukar uang kertas tersebut dengan dolar AS. Nasabah tunduk pada bank dan harus mengandalkan reputasi bank untuk mengoperasikan dana. Inilah masalah yang ingin dipecahkan oleh cryptocurrency.
Pendekatan terdesentralisasi
Menghindari masalah pembelanjaan ganda dalam suatu ekosistem tanpa mekanisme pengawasan bahkan lebih menantang lagi. Peserta dengan kekuasaan yang sama harus berkoordinasi satu sama lain sesuai dengan seperangkat aturan yang sama untuk mencegah penipuan dan memberikan insentif kepada semua pengguna untuk bertindak dengan integritas.
Inovasi terbesar yang disajikan dalam buku putih Bitcoin adalah solusi terhadap masalah pembelanjaan ganda. Satoshi Nakamoto mengusulkan struktur data yang belum pernah ada sebelumnya yang sekarang dikenal sebagai blockchain.
Blockchain sebenarnya hanyalah sebuah database dengan beberapa properti unik. Peserta jaringan (disebut node) menjalankan perangkat lunak khusus yang memungkinkan mereka menyinkronkan salinan database mereka satu sama lain. Dengan cara ini, seluruh jaringan dapat mengaudit riwayat transaksi sejak blok genesis. Karena blockchain dapat dilihat oleh publik, maka akan lebih mudah untuk mendeteksi dan mencegah penipuan, seperti mengidentifikasi upaya transaksi pembelanjaan ganda.
Saat pengguna memublikasikan transaksi, transaksi tersebut tidak langsung ditambahkan ke blockchain dan harus ditambang terlebih dahulu sebelum blok dapat dimuat. Oleh karena itu, hanya ketika blok tersebut dimasukkan ke dalam rantai, penerima pembayaran dapat mengonfirmasi bahwa transaksi tersebut valid. Jika tidak, penerima akan berisiko kehilangan dana jika pengirim membayar token yang sama di tempat lain.
Setelah transaksi dikonfirmasi, kepemilikan token diberikan kepada pengguna baru dan diverifikasi oleh seluruh jaringan, sehingga token tidak lagi dapat dibelanjakan dua kali. Oleh karena itu, banyak orang menyarankan untuk menunggu beberapa konfirmasi sebelum menerima pembayaran yang valid. Setiap blok berikutnya secara signifikan meningkatkan jumlah pekerjaan yang diperlukan untuk memodifikasi atau menulis ulang rantai (seperti dalam kasus serangan 51%).
Mari kita kembali ke situasi restoran. Dan kembali ke restoran dan kali ini melihat stiker di jendela bertuliskan "Toko ini mendukung pembayaran Bitcoin". Dia tidak bisa melupakan makanan terakhirnya dan memesan makanan yang sama lagi, seharga 0,005 Bitcoin.
Erin menunjukkan alamat publik kepada Dan, yang merupakan alamat transfer. Pengumuman Dan tentang transaksi tersebut pada dasarnya adalah pesan bertanda tangan yang mengumumkan bahwa 0,005 Bitcoin yang dimilikinya kini dimiliki oleh Erin. Tanpa menjelaskan terlalu banyak detail, siapa pun yang melihat transaksi yang ditandatangani Dan dapat memastikan bahwa token tersebut memang miliknya, dan oleh karena itu Dan memiliki wewenang untuk mengirimkannya.
Namun, seperti yang disebutkan sebelumnya, transaksi tersebut hanya valid setelah dimuat ke dalam blok dan dikonfirmasi. Menerima transaksi yang belum dikonfirmasi sama seperti menerima $40 dalam bentuk eCash sebelumnya. Jika tidak segera dicairkan melalui bank, pengirim dapat membelanjakan dananya di tempat lain. Oleh karena itu, Erin harus menunggu minimal 6 konfirmasi blok (kurang lebih satu jam) sebelum menerima pembayaran dari Dan.
Masalah Pembelanjaan Ganda Bitcoin
Bitcoin dirancang dengan cermat untuk mencegah serangan pembelanjaan ganda, setidaknya jika protokolnya digunakan sebagaimana mestinya. Artinya, jika seseorang sedang menunggu suatu transaksi untuk mendapatkan konfirmasi pemblokiran, maka pengirim tidak akan dapat dengan mudah membalikkan transaksi tersebut. Hanya dengan “membalikkan” blockchain maka suatu transaksi dapat dibatalkan, yang memerlukan kekuatan hashing yang sangat besar.
Namun, beberapa serangan pembelanjaan ganda secara khusus menargetkan pengguna yang menerima transaksi yang belum dikonfirmasi. Misalnya, dengan pembelian dalam jumlah kecil, merchant tidak mau menunggu hingga transaksinya masuk dalam blok. Restoran cepat saji yang sibuk mungkin tidak dapat menunggu selama yang dibutuhkan jaringan untuk memproses setiap transaksi. Oleh karena itu, jika pedagang mengaktifkan pembayaran "instan", mereka mungkin menghadapi masalah pembelanjaan ganda. Seseorang dapat memesan burger dan membayarnya, lalu segera mengirimkan dana yang sama kembali ke alamatnya sendiri. Selama biaya penanganan transaksi selanjutnya lebih tinggi, maka dapat dikonfirmasi terlebih dahulu sehingga menyebabkan transaksi sebelumnya menjadi tidak valid.
Saat ini ada tiga serangan pembelanjaan ganda yang umum:
Serangan 51%: Satu entitas atau organisasi berhasil mengendalikan lebih dari 50% tingkat hash untuk menghapus atau mengubah urutan transaksi. Jenis serangan ini sangat kecil kemungkinannya terjadi pada jaringan Bitcoin, namun bisa juga terjadi pada jaringan lain.
Serangan balapan: Dua transaksi yang bertentangan dipublikasikan secara berurutan menggunakan dana yang sama, namun hanya satu transaksi yang dikonfirmasi. Tujuan penyerang adalah membatalkan pembayaran lain dengan memvalidasi transaksi yang menguntungkan mereka. Misalnya saja mengirimkan dana ke alamat yang dikuasainya. Serangan ras biasanya melibatkan penerima yang menerima transaksi yang belum dikonfirmasi sebagai pembayaran.
Serangan Finney: Penyerang melakukan pra-penambangan suatu transaksi dan memblokirnya, namun tidak segera mempublikasikannya ke jaringan. Sebaliknya, dia membayar token yang sama ke dalam transaksi lain sebelum menerbitkan blok yang sebelumnya ditambang, sehingga pembayarannya menjadi tidak valid. Kondisi yang diperlukan untuk serangan Fenney adalah bahwa peristiwa terjadi dalam urutan tertentu, dan keberhasilannya juga bergantung pada apakah penerima menerima transaksi yang belum dikonfirmasi.
Seperti yang bisa kita lihat, pedagang dapat mengurangi risiko mereka dan menghindari menjadi korban pembelanjaan ganda hanya dengan menunggu dengan sabar konfirmasi pemblokiran.
Meringkaskan
Pengguna dapat menggunakan serangan pembelanjaan ganda untuk merusak sistem uang elektronik peer-to-peer dan menggunakan dana yang sama beberapa kali untuk mencari keuntungan yang tidak adil. Dulu, karena permasalahan ini harus diselesaikan dengan baik, perkembangan bidang ini mengalami stagnasi.
Untungnya, penggunaan tanda tangan buta telah menjadi solusi menarik dalam solusi keuangan terpusat. Selanjutnya, pengembangan mekanisme bukti kerja dan teknologi blockchain melahirkan Bitcoin, suatu bentuk mata uang terdesentralisasi yang kuat, yang pada gilirannya memberikan inspirasi bagi ribuan proyek mata uang kripto.

