Ethereum Roulette adalah permainan yang berbasis blockchain, di mana pemain dapat memasang taruhan dan menangkan hadiah. Namun, untuk membuat permainan ini aman dan adil, kita harus melindungi sistem dari serangan sampingan. Dalam artikel ini, kita akan membahas bagaimana Ethereum Roulette melindungi dirinya dari serangan sampingan.

Menanggulangi Serangan Sampingan

Ethereum Roulette memiliki beberapa fitur keamanan yang dirancang untuk melindungi sistem dari serangan sampingan. Salah satu contohnya adalah penggunaan algoritma acak untuk menghasilkan nomor random. Jika seorang pemain memasang taruhan pada nomor 13, maka ia dapat berubah hasilnya sehingga jenis serangan ini tidak efektif.

Namun, penyerang sampingan dapat melakukan serangan balik, yakni dengan memasang taruhan pada sebuah nomor dan menunggu keadaan blockchain menjadi satu yang menghasilkan nomor tersebut. Untuk serangan ini bekerja, penyerang harus memenuhi dua syarat:

  1. Dapat mengontrol kapan putaran roda roulette;
  2. Dapat tepat menebak nomor random berikutnya.

Syarat pertama sulit dijamin, karena siapa pun dapat memutar roda roulette, tetapi ada waktu ketika penyerang akan menjadi satu-satunya yang berada di dalam roulette, sehingga memungkinkan. Dengan rata-rata waktu per block sebesar 14,4 detik dan untuk taruhan dengan hadiah 36, maka penyerang harus memiliki waktu sendiri selama 9 menit.

Syarat kedua, jauh lebih sulit. Dua faktor yang digunakan dalam menghitung nomor random berkenaan dengan timestamp dan difficulty blok yang sedang aktif, sehingga membuat mustahil untuk menebak nomor random tersebut. Masalahnya adalah bahwa nilai-nilai timestamp dan difficulty dapat diprediksi dan bahkan diatur oleh penambang.

Solusi

Untuk menyelesaikan masalah ini, Ethereum Roulette telah menambahkan fitur keamanan tambahan. Salah satunya adalah batasan balance cap. Setiap kali roda roulette diputar, sistem akan memverifikasi apakah balance roulette lebih tinggi dari 2 ether. Jika demikian, maka sistem akan mengirimkan sisa-sisa ke pemilik kontrak (saya). Dengan cara ini, maksimum jumlah ether yang dapat di-stole oleh penyerang adalah 3 ether (sebuah roda roulette penuh dengan 2 ether, plus 100 taruhan sebesar 0.01 ether).

Perlu diingat bahwa akun pribadi pemain (winnings) tidak ikut terhitung dalam menghitung balance. Dalam arti, pemain dapat memiliki lebih dari 2 ether dalam akun winningsnya, tetapi tidak dapat mencairkan sebab roulette tidak memiliki cukup dana untuk membayar.

Tujuan dari fitur ini adalah untuk mencegah serangan Denial of Service (DoS), di mana pemain dapat memiliki semua uang roulette dalam akun winningsnya, sehingga mencegah pemain lain untuk bermain. Itu tanggung jawab pemain untuk menjadi aware akan hal ini dan mencairkan secara teratur.

Clone Repo

Anda dapat mengkloning repo dan menjalankan di atas jaringan pribadi Anda sendiri.

Apa yang diperlukan:

  • Ganache: Anda dapat mendownload binary Ganache prebuilt yang self-contained untuk platform Anda menggunakan tombol "Download" pada website Ganache. Kemudian, jalankan dan pertahankan berjalan, ini akan mengaktifkan jaringan Ethereum pribadi di atas mesin Anda, port 7545.
  • npm: Ikuti petunjuk untuk menginstal npm
  • Metamask Chrome extension yang terinstal dan berjalan

Bagaimana menjalankan Ethereum Roulette di atas mesin Anda:

  1. Jalankan Ganache dan pertahankan berjalan.

  2. Mengkloning repo dari GitHub: git clone https://github.com/bordalix/ethereum-roulette.git cd ethereum-roulette npm install

  3. Deploy kontrak ke jaringan blockchain pribadi (terfungsikan oleh Ganache):

  4. Jalankan webserver:

Sekarang Anda memiliki Ethereum Roulette di http://localhost:3000. Nikmati!


Keterangan Lain

Kami juga menawarkan fitur lainnya, seperti:

  • Penggunaan algoritma acak untuk menghasilkan nomor random
  • Fitur keamanan tambahan, seperti batasan balance cap dan penggunaan Metamask
  • Pengintegrasian dengan jaringan blockchain Ethereum
  • Kemampuan untuk menambahkan fitur-fitur baru

Jika Anda ingin mengetahui lebih lanjut tentang bagaimana kita melindungi sistem dari serangan sampingan, silakan hubungi kami!