Ilusi Tingkat Konsensus

Ethereum adalah platform terdesentralisasi yang berfungsi sebagai dasar untuk kontrak pintar - aplikasi yang bekerja persis sesuai dengan kode program mereka, tanpa kemungkinan downtime, sensor, gangguan oleh penipu atau agen pihak ketiga.
- Ethereum.org



Kami pengembang senang untuk percaya pada tingkat konsensus yang berkomitmen untuk menyelesaikan semua masalah kompleks dari sistem terdistribusi, memungkinkan kami untuk menulis aplikasi. Penambang hidup pada tingkat konsensus, melakukan urusan penambang mereka. Pengembang duduk di level aplikasi dan menulis kontrak pintar - program yang bekerja di dalam Ethereum Virtual Machine (EVM). Aplikasi terdesentralisasi kami berinteraksi dengan komputer, dengan mengandalkan integritas dan keamanannya.

Kami tahu bahwa EVM bekerja berdasarkan konsensus, dan kami tidak perlu memikirkan mekanisme ini selama itu berhasil. Kami tidak memikirkan penambang, karena pada akhirnya, tidak perlu memahami prinsip pengoperasian semikonduktor atau fitur desain microchip komputer modern. Tetapi, sayangnya, pemisahan yang nyaman dan dapat diprediksi antar level ini tidak lebih dari ilusi. Ilusi tingkat konsensus yang membantu kita melupakan bahwa penambang bukanlah teman kita.

Dalam praktiknya, transisi dari kontrak ke konsensus adalah fenomena yang jauh lebih tidak mulus, dan tidak semudah yang diyakini secara umum. Penciptaan blok mempengaruhi keadaan EVM, yang pada gilirannya mempengaruhi tantangan kontrak pintar dan, sebagai akibatnya, mempengaruhi operasi aplikasi yang didesentralisasi dan penggunanya. Semakin lambat blok, semakin lambat aplikasi terdesentralisasi. Semakin cepat blok, semakin cepat aplikasi. Blok kosong menyebabkan aplikasi berhenti bekerja.

Dari waktu ke waktu, tingkat konsensus secara tidak sengaja mengganggu aplikasi yang didesentralisasi. Tetapi mungkin ada kasus di mana perwakilan dari tingkat ini dapat melakukan intervensi dengan sengaja. Penambang mengendalikan tingkat konsensus. Mereka bekerja demi uang, dan karenanya akan mempertahankan level aplikasi hanya selama itu akan memberi mereka keuntungan. Jika mereka dapat menghasilkan lebih banyak uang dengan mengganggu tingkat aplikasi, mereka akhirnya akan mulai melakukannya.

Penambang treadmill


Penambang bukan temanmu. Namun, bukan musuh. Mereka tidak ingin melukaimu, mereka tidak bisa menghindarinya. Ini adalah persyaratan Bukti Kerja. Penambang harus masuk ke dalam persaingan ketat untuk mendapatkan margin yang sangat kecil. Mereka terjebak di treadmill para penambang, tempat pelari tercepat mengatur langkahnya.



Setiap kali mereka berhasil menemukan cara lain untuk mempercepat atau mengurangi biaya komputasi hash, kompleksitasnya meningkat. Dengan pertumbuhannya, setiap hash individu menjadi semakin signifikan bagi saya. Rasio hash Anda mungkin tetap tidak berubah, tetapi Anda secara bertahap mulai menerima semakin sedikit. Dalam hal ini, Bukti Kerja memaksa para penambang untuk terus-menerus menginvestasikan kembali laba. Mereka menghasilkan keuntungan hanya melalui pengeluaran konstan, optimalisasi, dan mempertahankan daya saing. Mereka yang tidak mampu bersaing keluar dari perlombaan .



Jika margin Anda adalah 1%, maka penurunan pendapatan 1% merampas keuntungan Anda. Jika hashrate dari penambang menjadi setidaknya sedikit kurang dari norma saat ini, itu tertinggal dari sisa rekan-rekannya. Di sisi lain, peningkatan 1% dalam pendapatan menyebabkan penggandaan keuntungan. Bahkan sedikit margin dalam efisiensi memungkinkan penambang untuk mendapatkan lebih banyak uang untuk berinvestasi kembali dalam peralatan. Dan pemisahan peserta semacam itu semakin meningkat, akibatnya pesaing yang kurang berhasil tidak dapat lagi menentang mereka. Proof-of-Work memprovokasi penambang untuk mencari keuntungan kecil, meningkatkan semua aspek proses dan menggunakannya untuk membuang pesaing dari treadmill.

Ada dua cara untuk meningkatkan profitabilitas pertambangan - meningkatkan profitabilitas atau mengurangi biaya. Keuntungan terdiri dari hadiah untuk blok yang disetujui dan komisi untuk transaksi yang termasuk di dalamnya. Biaya timbul dari kebutuhan untuk membayar listrik, peralatan, gaji karyawan, sewa kantor dan sejenisnya.



Penambang saat ini bersaing karena peningkatan besar yang sangat jelas, seperti menemukan tarif listrik yang lebih rendah atau meningkatkan peralatan. Sayangnya, pendekatan ini mengarah pada penurunan laba yang semakin besar di masa depan. Semakin sulit bagi perusahaan untuk menemukan listrik yang lebih murah. Penambangan dengan bantuan kartu grafis bertumpu pada batasan bandwidth memori, dan ASIC, pada gilirannya, dibatasi oleh ukuran fisik minimum dari transistor yang digunakan dalam sirkuit mikro mereka. Sekarang semua jalur pengembangan ini masih tetap relevan, tetapi pada satu titik potensi mereka akan habis, dan penambang akan dipaksa untuk mencari opsi optimasi yang kurang jelas , lebih canggih .

Ada beberapa cara yang sangat efektif dan tidak jelas. Sayangnya, mereka berbahaya bagi pengguna sistem lainnya. Saya ingin fokus pada cara-cara di mana penambang dapat meningkatkan laba dan mengurangi biaya dengan mengambil uang dari orang-orang dan sistem yang bergantung pada pekerjaan blockchain. Saat Anda membaca materi ini, cobalah untuk tidak lupa bahwa para penambang tidak ingin mengambil uang Anda, mereka harus melakukannya. Bukti Kerja menuntut mereka untuk meningkatkan daya saing.

Bagaimana penambang bisa melakukan intervensi


Penambang memiliki banyak cara untuk mengganggu operasi EVM dan aplikasi yang berjalan di dalamnya. Karena setiap penambang memiliki kemampuan untuk mengontrol blok yang dihasilkannya, ia juga dapat mengontrol perubahan status di blok ini. Mari kita membahas beberapa metode paling sederhana tanpa terlalu jauh ke dalam rinciannya. Untuk masing-masing dari mereka, kami akan mencoba untuk menentukan strategi intervensi, siapa yang akan menderita dan bagaimana penambang dapat menghasilkan uang.

Susun Ulang Transaksi

Transaksi diproses dalam blok. Setiap blok memiliki urutan kanonik untuk memproses perubahan status transaksi. Penambang menerapkan setiap transaksi pada status EVM secara berurutan dan menentukan hash root dari status akhir yang terletak di header blok. Penambang yang menghasilkan blok memiliki kendali atas urutan transaksi dalam blok. Kemampuan untuk mengontrol urutan transaksi di blok sebenarnya memungkinkan Anda untuk mengontrol urutan perubahan keadaan.



Misalkan saya ingin mengirim pembayaran ke teman. Saya akan membuat kontrak sederhana dengan tiga fungsi: deposit , unlock dan retrieve . Panggilan deposit mentransfer dana ke penyimpanan. Setiap kali saya ingin mengiriminya uang, saya unlock 5 eter. Teman saya memanggil fungsi retrieve , yang mengirimnya semua dana yang tidak diblokir dengan deposit . Jika penambang melihat unlock dan retrieve transaksi dalam satu blok, ia dapat menukar mereka dan retrieve akan dipanggil lebih awal. Panggilan retrieve akan memungkinkan Anda untuk mendapatkan semua yang gratis, bukan dalam dana penyimpanan. Setelah itu, unlock akan dipanggil. Akibatnya, teman saya akan dipaksa untuk mengirim transaksi pengambilan lagi, setelah membayar komisi untuk itu lagi.



Dengan mengubah urutan kontrak ekspor, penambang dapat memengaruhi hasil pelaksanaan kontrak. Ini berarti bahwa mereka dapat, dalam batas-batas tertentu, memonitor status EVM. Situasi ini secara khusus diperburuk oleh kontrak publik besar yang mengatur interaksi antara sejumlah besar pengguna. Semakin luas kumpulan transaksi yang tersedia untuk penambang, semakin banyak kontrol yang dimilikinya terhadap keadaan akhir.

Pengembang kontrak harus menyediakan upaya tersebut untuk mengubah urutan transaksi secara acak. Jika tidak, penambang dapat memprovokasi pembayaran komisi tambahan atau menyebabkan kerugian lain yang tidak disengaja bagi pengguna aplikasi.

Penyisipan transaksi


Ketika membentuk urutan transaksi dalam satu blok, para penambang tidak terbatas hanya pada kemampuan untuk memanipulasi transaksi orang lain. Mereka dapat membuat transaksi sendiri. Mereka memiliki ETH. Dan seperti kita semua, mereka dapat bermain dengannya di kasino blockchain dan membeli atau menjualnya di pasar blockchain. Namun, kemampuan untuk menentukan urutan pemrosesan transaksi dalam beberapa kasus dapat memungkinkan mereka untuk menjadi yang pertama dalam antrian pemrosesan.

Mari kita datang dengan kontrak pintar sederhana lainnya. Kali ini, Alice ingin memainkan permainan tebak-tebakan. Dia menempatkan 5 eter dalam kontrak. Jumlah ini dikirim ke orang yang menyebutkan nomor yang paling dekat dengan nomor yang ditebak. Panggilan Alice commit dengan hash nomor, sehingga menjamin kekekalannya. Semua orang dapat memanggil guess dan berpartisipasi dalam menebak. Setelah 2 blok, panggilan Alice reveal agar semua orang tahu nomor yang dibuat.



Alice tidak bisa menipu, karena ini disediakan oleh kontrak. Tetapi penambang memiliki kesempatan seperti itu. Dia bisa menunggu dan memanggil nomornya setelah dia melihat panggilan mengungkapkan. Dia akan tahu hasilnya bahkan sebelum pembentukan blok! Bahkan jika David juga memanggil 4, penambang dapat mengubah urutan, sehingga mengalahkannya.

Ketika pengguna biasa membuat transaksi, ia mengirimkannya ke penambang untuk dimasukkan dalam blok. Pengguna harus memberikan persetujuan yang tidak dapat dibatalkan terhadap transaksi sebelum ia melihat hasil eksekusi. Penambang, sebaliknya, bisa menunggu dalam proses membuat blok dan hanya kemudian memutuskan apakah mereka harus memasukkan transaksi tertentu. Ini berarti bahwa mereka memiliki akses ke informasi lebih dari pengguna biasa, serta kekuatan untuk mengubah urutan transaksi. Ini memberi mereka keuntungan serius dalam sistem berbasis blockchain.

Setiap kali pengguna dan penambang berinteraksi di blockchain melalui kontrak pintar, ada risiko bahwa penambang akan memasukkan transaksi dan mengubah pesanan mereka untuk keuntungan mereka sendiri. Sebagai aturan, ini berarti bahwa mereka akan menerima uang, yang seharusnya masuk ke kantong pengguna biasa. Pengembang kontrak yang cerdas harus merancang sistem mereka untuk mengatasi ketidaksetaraan ini.

Kesalahan Paksa

Penambang dapat memanfaatkan pemesanan ulang dan memasukkan untuk campur tangan dalam tantangan kontrak pintar. Kadang-kadang mereka bahkan dapat sepenuhnya mengganggu tantangan. Kami menyebut kasus-kasus seperti itu kesalahan yang dipaksakan. Ini terjadi ketika penambang mengubah negara menjadi semacam panggilan tak terduga, yang mengakibatkan gagal. Mereka dapat melakukan ini dengan memasukkan transaksi yang akan mempengaruhi keadaan.

Mari kita buat kontrak pintar sederhana untuk pasar. Saya ekspor sell untuk memasang token untuk dijual dengan harga tertentu. Siapa pun dapat menelepon buy untuk membeli beberapa token saya.



Dalam situasi ini, penambang dapat memeriksa panggilan masuk Bob untuk buy dan mempertimbangkan opsi pembelian tokennya. Dia dapat membeli sebanyak yang diperlukan Bob untuk menyelesaikan transaksi dengan kesalahan. Jika Bob ingin membeli 2,5 GNT, penambang dapat mencapai kekurangan ini. Transaksi Bob akan berakhir dengan kesalahan, tetapi penambang akan menerima komisi untuk itu. Dengan demikian, Bob, bertentangan dengan keinginannya, akan membayar pembelian token GNT oleh penambang, tanpa menerima imbalan apa pun.

Serangan ini sangat berbahaya di versi Solidity yang lebih lama. Versi lama kata kunci assert dan throw akan mentransfer semua gas yang terpasang ke penambang, yang akan menyebabkan mereka menerima komisi yang sangat tinggi karena kurangnya pekerjaan apa pun. Kata kunci yang lebih baru require dan revert pembatasan penggunaan gas berdasarkan pekerjaan aktual yang dilakukan.

Galat paksa memungkinkan penambang menerima komisi karena menolak melakukan pekerjaan. Jika transaksi berakhir dengan kesalahan, negara kembali ke keadaan semula. Jika penambang menemukan cara yang dapat diandalkan untuk memprovokasi panggilan yang salah, ia bahkan tidak perlu memproses perubahan negara. Blok ideal menurut versi penambang adalah blokir yang diblokir oleh kegagalan dengan transaksi dan pembayaran yang salah dengan transfer komisi untuk pemrosesan mereka, tanpa perubahan negara lainnya.

Pengembang kontrak pintar sebagian dapat mencegah perilaku ini dengan memeriksa dengan hati-hati revert dan require ekspresi. Jika penambang berhasil menemukan cara yang tepat untuk membuat kontrak menjadi salah, mereka akan dapat mengumpulkan komisi tambahan dari pengguna Anda. Aturan nomor satu dalam kasus tersebut: jika panggilan bergantung pada negara yang dapat diubah oleh pengguna lain, maka itu rentan terhadap kesalahan yang dipaksakan.

Sensor

Ketika memutuskan urutan transaksi dalam satu blok, para penambang juga dapat secara selektif mengabaikan transaksi tertentu. Mereka dapat melakukan ini karena alasan politik atau keuangan. Pengguna umumnya tidak memiliki jaminan bahwa penambang akan pernah memasukkan transaksi tertentu dalam satu blok.

Katakanlah Alice ingin membuat celengan untuk dirinya sendiri. Dia dapat meluncurkan kontrak sederhana, yang memungkinkannya untuk menarik uang tidak lebih awal dari 10 ribu blok. Alice adalah orang yang baik dan karena itu dia ingin memastikan bahwa jika kematiannya yang mendadak, uang itu akan dikirim kepada setidaknya orang lain. Oleh karena itu, dia memastikan bahwa kontrak memungkinkan penambang untuk menarik uang setelah 50 ribu blok.



Setiap penambang individu memiliki motivasi yang kuat untuk tidak memasukkan transaksi penarikan dalam bloknya. Mereka tidak akan rugi: jika dia tidak pernah dapat mengambil uang, mereka dapat mencoba keberuntungan mereka dan mendapatkannya di masa depan. Selain itu, ia akan dapat menarik uang hanya jika para penambang mengizinkannya melakukan ini. Bahkan jika mereka tidak berkonspirasi dan mengabaikan transaksinya, atau melakukan serangan 51%, mereka masih dapat menolak untuk secara kolektif menerima transaksinya untuk diproses.

Ini berarti bahwa tidak ada kontrak untuk menjamin 100% pengiriman transaksi yang tepat waktu! Anda harus merancang aplikasi mengingat kemungkinan sensor yang tidak terduga oleh para penambang. Dan karena kontrak tidak dapat meramalkan keinginan mereka untuk campur tangan, itu harus menyediakan kemungkinan penundaan waktu sewenang-wenang.

Meningkatnya masalah


Semakin banyak uang masuk ke dalam sistem, semakin besar kemungkinan para penambang ingin ikut campur dalam pekerjaannya. Ketika pertukaran meningkat, kasino menjadi lebih kompleks dan nilai blockchain meningkat, demikian pula motivasi para penambang untuk melakukan intervensi.

Konsensus bukan hanya tingkat di mana aplikasi desentralisasi kami diadakan. Bahkan, mereka terkait erat dengan lapisan aplikasi. Ketika kami menulis program, kami tidak berpikir tentang sifat fisik silikon, karena kami tahu bahwa itu tidak akan secara aktif mencoba mengambil uang kami. Sayangnya, antara EVM dan silikon ada lapisan dalam bentuk penambang, dan jika mereka tidak dapat dipercaya, maka EVM tidak dapat dipercaya.

Pengembang soliditas harus memprogram komputer yang bekerja melawan mereka. EVM adalah "sistem Bizantium." Setiap bagian dari itu yang rentan terhadap hasil yang tidak berhasil akan sampai pada saat yang paling buruk. Saat ini, kami masih berada pada tahap yang sangat awal dalam memahami cryptocurrency, penambangan, dan kontrak pintar. Sekarang, penambang tidak menunjukkan keinginan aktif untuk mengoptimalkan kegiatan mereka dengan mengorbankan pengguna, tetapi ini hanya untuk saat ini. Ethereum akan tumbuh dan suatu hari, kita masih akan mengingat saat ini sebagai zaman keemasan aplikasi yang terdesentralisasi.

Penambang bukan teman dan bukan musuh. Mereka adalah semacam bencana alam yang tak terkendali yang beroperasi dalam sistem konsensus kami. Mereka yang tidak belajar mengelola elemen ini pada akhirnya akan menjadi korban penambang tingkat lanjut.

gambar

Source: https://habr.com/ru/post/id409735/


All Articles