Dua hari yang lalu, pembuktian double spending Bitcoin diperagakan oleh Hayden Otto Pendiri Bitcoinbch.com, melalui videonya di Youtube. Otto juga dikenal sebagai pendukung Bitcoin Cash (BCH).
OLEH Dimaz Ankaa Wijaya
Peneliti teknologi blockchain Universitas Monash, Australia
Otto mengklaim “sukses” membeli beberapa botol bir secara gratis di sebuah kafe di Australia, karena Bitcoin yang telah dipakai sebelumnya bisa dikembalikan lagi ke wallet Bitcoin Otto. Menurut Otto, Bitcoin yang telah kembali itu bisa digunakan kembali untuk transaksi yang berbeda berkat adanya fitur Replace-by-Fee (RBF) pada wallet Electrum yang digunakannya.
Bitcoin, pada banyak kesempatan, didaulat sebagai sistem keuangan alternatif terhadap model perbankan yang saat ini sudah ada. Ketiadaan otoritas sentralistik pada blockchain publik seperti yang ada pada Bitcoin menjadi pembeda yang amat mencolok jika dibandingkan dengan sistem keuangan yang dijalankan pihak-pihak “terpercaya”. Meskipun, tentu saja, tidak jarang pihak yang diberi kepercayaan tersebut justru tidak dapat dipercaya.
Alih-alih menunjuk seseorang (atau beberapa orang) untuk “memutar koin”, Satoshi Nakamoto sang pencipta Bitcoin mempersilakan siapapun untuk bergabung dan berkontribusi pada jalannya sistem melalui sistem konsensus, atau yang kemudian dikenal sebagai sistem penambangan (mining).
Kontributor konsensus atau penambang ini bertugas untuk menjalankan aplikasi Bitcoin berisi protokol untuk memilih informasi (dalam hal ini transaksi) mana yang dapat dipercaya, maupun informasi mana yang harus disingkirkan.
Transaksi-transaksi yang dipilih sebagai sumber informasi terpercaya, oleh para penambang disusun ke dalam sebuah blok, kemudian disimpan ke dalam struktur logis yang bernama blockchain.
Butuh waktu bertahun-tahun sejak Satoshi pertama kali memperkenalkan sistem revolusioner ini hingga jumlah transaksi pada Bitcoin membludak, jauh melebihi kapasitasnya.
Satoshi, atas saran Hal Finney dan seseorang yang menyebut dirinya sebagai “Cryddit”, membatasi ukuran blok pada Bitcoin, sehingga penambang manapun hanya boleh membuat blok dengan ukuran maksimum 1 MB saja.
Dengan sebuah transaksi membutuhkan ruang hingga 300 byte, maka jumlah transaksi yang dapat disimpan ke dalam sebuah blok hanya sekitar 4.000 transaksi saja. Tidak hanya itu, sebuah blok dalam Bitcoin tercipta sekali dalam sepuluh menit. Jika dirata-rata, maka Bitcoin hanya mampu menampung beberapa transaksi saja per detik!
Pada tahun 2015, kapasitas blok dalam Bitcoin terlihat mulai penuh. Para pemikir dalam lingkup Bitcoin maupun akademisi mulai menawarkan solusi alternatif untuk mengatasi persoalan yang sudah di depan mata.
Mike Hearn menawarkan Bitcoin XT yang memperbesar ukuran blok hingga delapan kali lipat (menjadi 8 MB), Ittay Eyal dan tim dari Cornell University yang menulis tentang Bitcoin-NG (Bitcoin Next Generation), maupun Peter Todd yang asyik mengeksplorasi ide Replace By Fee (RBF) demi mengantisipasi masalah yang sudah di depan mata.
RBF memang bukanlah solusi untuk mengatasi skalabilitas Bitcoin. RBF hanyalah memberikan fleksibilitas bagi pengguna Bitcoin yang sedang terburu-buru untuk memastikan bahwa transaksi miliknya bisa segera terkonfirmasi ke dalam sebuah blok.
Analoginya seperti ini. Bayangkan Anda masuk ke sebuah taman hiburan yang baru saja dibuka. Karena sedang musim libur dan orang-orang berbondong-bondong ingin menikmati suasana dan fasilitas dalam taman hiburan ini, maka taman liburan ini penuh, ditambah lagi banyak orang masih mengular di gerbang.
Anda, meskipun sudah mengantre berjam-jam, belum dapat masuk ke taman hiburan tersebut. Akhirnya Anda memutuskan untuk membatalkan tiket taman hiburan yang telah Anda beli, dan menggantinya dengan tiket VIP yang lebih mahal. Dengan tiket VIP, Anda akan diprioritaskan masuk ke taman hiburan tanpa harus mengantre lama.
RBF dalam hal ini umpamanya memfasilitasi penggantian tiket biasa menjadi tiket VIP. Artinya, Anda memutuskan untuk membayar ongkos transaksi yang lebih tinggi ketimbang ongkos normal.
Masalahnya, sebelum adanya RBF, transaksi Anda akan tetap berada dalam antrean tanpa bisa dibatalkan atau ditarik kembali, sampai transaksi tersebut akhirnya masuk ke dalam sebuah blok, entah kapan.
RBF memungkinkan transaksi yang telah ada dalam antrean diganti dengan transaksi serupa, dengan perubahan berupa jumlah ongkos transaksi yang bertambah.
Meskipun RBF bermanfaat pada situasi antrean panjang, RBF juga diasosiasikan dengan serangan double spending atas transaksi zero-confirmation (mari kita singkat dengan istilah DS-0-conf).
Tipe serangan DS-0-conf cukup masyur di awal-awal Bitcoin diluncurkan. Hal Finney sendiri mencetuskan istilah Finney attack, yang merupakan salah satu jenis serangan bertipe DS-0-conf.
Tipe serangan DS-0-conf cukup populer di awal-awal bitcoin diluncurkan. Hal Finney sendiri mencetuskan istilah Finney attack, yang merupakan salah satu jenis serangan bertipe DS-0-conf.
Langkah-langkah dari DS-0-conf adalah sebagai berikut:
- Alice memiliki Bitcoin dan hendak membeli kopi. Ia menyimpan koin K di dalam alamat Bitcoin A. Ia juga memiliki sebuah alamat lain, A’.
- Bob sebagai vendor kafe menerima pembayaran Bitcoin untuk kopi yang ia jual. Bob memiliki alamat B sebagai alamat tujuan pembayaran.
- Alice memesan kopi kepada Bob. Alice membuat transaksi Bitcoin T yang mengirim koin K miliknya seharga kopi yang dibeli dari alamat A ke alamat B (T(K):=A->B).
- Bob tidak menunggu transaksi hingga terkonfirmasi ke dalam blok. Begitu Bob melihat transaksi terkirim dalam antrean, Bob langsung memberikan kopi kepada Alice.
- Alice memang telah berencana untuk berbuat licik dan mencari keuntungan dengan menggunakan DS-0-conf.
- Alice ternyata telah mempersiapkan transaksi lain T’(K):=A->A’. Transaksi T’ merupakan transaksi double spending yang mentransaksikan koin K yang sama kembali ke alamat milik Alice yang lain, A’, bukan ke alamat B milik Bob.
- Begitu Alice menerima kopi, Alice mengirim transaksi T’ (broadcast) tersebut ke jaringan Bitcoin.
- Transaksi T dan T’ berada dalam antrean; sistem bitcoin mendeteksi adanya double spending, dan jaringan akan memutuskan transaksi mana yang akan terkonfirmasi.
- “Serangan Alice” akan berhasil jika transaksi T’ terkonfirmasi ke dalam blok, dan transaksi T ditolak, dan serangan dianggap gagal jika transaksi T terkonfirmasi. Sistem Bitcoin tidak akan pernah mengkonfirmasi kedua transaksi T dan T’.
RBF bisa berperan dalam skema DS-0-conf di atas. Apabila pada langkah ke-6 Alice memastikan bahwa transaksi T menggunakan fitur RBF, dan transaksi T’ membayar ongkos transaksi lebih besar dibanding T, maka probabilitas keberhasilan serangan pada langkah ke-9 akan lebih besar.
Meskipun RBF tampak mendukung serangan DS-0-conf, namun faktanya masyarakat pengguna Bitcoin telah teredukasi dengan baik tentang celah DS-0-conf yang dapat dieksploitasi.
Memang tidak seharusnya vendor menerima pembayaran jika transaksi masih berada dalam antrean (belum terkonfirmasi, konfirmasi nol atau zero-confirmation). Bahkan, praktik terbaik (best practice) atas bisnis yang menerima pembayaran Bitcoin adalah menunggu hingga enam konfirmasi, lebih kurang satu jam.
RBF pun akan bisa berperan tiap kali sistem Bitcoin memproses transaksi jauh lebih besar dibandingkan kapasitasnya. Namun, dengan fitur-fitur skalabilitas yang kini tersemat dalam Bitcoin Core (ataupun Bitcoin Cash dan variannya), aplikasi lapis kedua seperti Lightning Network, maupun transaksi luar rantai (off-chain transaction).
Mudah-mudahan kita tidak lagi memerlukan RBF. Namun jika suatu saat kita memanggil kembali RBF, ia akan sanggup memenuhi kebutuhan pengguna Bitcoin dalam memastikan transaksinya segera masuk dalam blok. [*]