Penambangan tinggi: opsi terbaru untuk melindungi blockchain PoW dari “serangan 51%”

gambar

Pengembang garpu Litecoin Cash mempresentasikan cetakan dokumen teknis ' The Hive: Penambangan berbasis agen di Litecoin Cash ', di mana mereka menggambarkan proposal mereka untuk melindungi blockchain cryptocurrency berdasarkan pada algoritma proof-of-work dari “51% serangan”. Solusi mereka menggabungkan penambangan menggunakan perangkat ASIC yang menua (SHA-256) dan penambangan virtual yang demokratis menggunakan "lebah yang bekerja" (HiveMine). Dalam kasus implementasi blockchain yang tepat, LCC akan menyelesaikan salah satu masalah terbesar dari proyek blockchain modern (dari Bitcoin ke Ethereum): ancaman serangan ketika lebih dari setengah dari total kekuatan jaringan terkonsentrasi di tangan penyerang.

51% Masalah Serangan


Mereka yang memantau pasar cryptocurrency tidak dapat gagal untuk mencatat wabah baru-baru ini serangan 51% pada proyek-proyek PoW yang relatif kecil (proof-of-work - "bukti pekerjaan yang dilakukan"), ketika penyerang menulis ulang transaksi dan mentransfer dana secepat mungkin melalui pertukaran. "Relatif" dalam hal ini berarti bahwa sebagian kecil perangkat yang mendukung keamanan kriptografi dari blockchain besar (Bitcoin atau Ethereum, misalnya) akan cukup untuk memecah konsensus dari blockchain kecil yang bekerja pada algoritma hashing yang sama (masing-masing Bitcoin Cash atau Bitcoin Gold) .

Dalam kasus cryptocurrency yang menggunakan algoritma SHA-256 (LCC atau BCH) sebagai dasar untuk enkripsi, risikonya diperparah oleh fakta bahwa cryptocurrency terbesar dan paling aman di dunia bekerja pada algoritma yang sama - Bitcoin (BTC).

Dalam artikel ini, kami akan fokus pada model matematika perlindungan terhadap serangan 51% dan secara dangkal menyoroti istilah dan konsep terkait utama yang digunakan dalam kriptografi blockchain.

Pengantar Penambangan Tinggi


Dalam skema keamanan blockchain PoW klasik, penambang bersaing dengan menghitung sejumlah besar hash blok potensial untuk menemukan yang memenuhi kondisi kompleksitas yang ditentukan oleh konsensus jaringan. Jika kompleksitasnya nol dan hash apa pun diterima oleh jaringan sebagai valid, proof-of-work tidak akan berfungsi dan setiap node jaringan dapat dengan mudah menambang blok.

Pada pandangan pertama, ini tidak buruk: penambangan akan menjadi demokratis dan berbiaya rendah dalam hal energi. Namun dalam praktiknya, semua orang akan menambang blok murah dan mendorong mereka ke dalam jaringan, yang berarti akan ada banyak kandidat untuk kelanjutan rantai blok. Karena penambang tidak akan lagi mengerti blok mana yang akan membangun kelanjutan dari blockchain, banyak rantai anak yatim akan muncul. Akan ada kekacauan, yang diamati oleh PoW-koin dengan algoritma yang tidak memadai untuk menyesuaikan kompleksitas penambangan.

Jika kompleksitasnya nol dan produksi blok tidak menimbulkan biaya, tidak ada yang bisa menentukan rantai kandidat mana yang lebih bernilai, yang berarti tidak akan ada prioritas. Penambang juga akan dapat bekerja pada berbagai rantai tanpa kehilangan apa pun.

Eksperimen pemikiran ini hanya menunjukkan bahwa tujuan utama dari algoritma proof-of-work, proof-of-stake, atau umumnya proof-of-anything adalah untuk menyediakan jaringan dengan cara deterministik untuk menentukan hak untuk menambang, mencetak atau menempa blok, yang akan disetujui oleh peserta lain dengan . Selain itu, kondisi penting lainnya bagi semua pencari blok adalah tidak bekerja pada banyak rantai secara bersamaan dengan impunitas. Dalam sistem bukti kepemilikan, pendekatan semacam itu dihukum oleh perampasan sebagian atau seluruh pasak.

Penambangan tinggi adalah bentuk alternatif dari perjuangan blok ketika hak untuk memproduksi blok diamankan oleh agen yang bekerja atas nama pengguna. Agen ini - "lebah yang bekerja" - berada di blockchain itu sendiri. Mereka sepenuhnya terdesentralisasi dan dibuat ketika pengguna melakukan transaksi khusus untuk membuat agen.

Setelah penciptaan, lebah yang bekerja mulai bertindak sebagai perangkat virtual untuk menambang (rig), dan pemiliknya menjadi "peternak lebah". Ketika lebah pekerja berhasil mendapatkan blok, upah untuk blok (termasuk komisi terlampir di blok) dibayarkan kepada peternak lebah. Lebah yang bekerja membutuhkan energi yang sangat sedikit dan tidak memerlukan peralatan khusus untuk produksi balok. Juga, masa hidup mereka terbatas dan penciptaan lebah adalah tindakan spekulatif dengan harga tertentu; ini mencegah upaya untuk bekerja pada banyak rantai sekaligus. Keberhasilan seekor lebah bergantung hanya pada populasi lebah yang hidup di seluruh jaringan. Beberapa lebah tidak akan pernah menemukan blok, sementara yang lain akan sangat beruntung (mirip dengan penambangan solo).

gambar

Fig. 1: lebah yang bekerja ditambahkan ke blockchain melalui transaksi penciptaan lebah (BCT) dan blok tambang selama masa pakainya

Pembuatan agen (lebah yang bekerja)


Untuk membuat lebah yang berfungsi, pengguna mengirim transaksi ke alamat "mati" khusus, misalnya: CReateLitecoinCashWorkerBeeXYs19YQ . Perhatikan bahwa setiap orang menggunakan alamat yang sama untuk membuat lebah. Alamat ini diuraikan sebagai ada dan benar, tetapi tidak ada yang memiliki kunci pribadi untuk itu; Utilitas vanitygen menentukan bahwa mencari kunci pribadi menggunakan inti 24 * 2 GHz akan memakan waktu sekitar 1,7 * 10 ^ 31 tahun (dengan peluang keberhasilan 50 persen).

Transaksi yang menciptakan lebah harus memiliki setidaknya dua keluaran. Yang pertama mendefinisikan biaya tetap untuk membuat lebah, yang dikirim ke alamat yang tidak dapat diakses. Meskipun harga pembuatan lebah akan ditentukan secara dinamis, diasumsikan bahwa itu akan menjadi persentase dari hadiah blok. Perhitungan ini termasuk biaya minimum, sehingga pada saat semua koin ditambang, masuk akal untuk menggunakan penambangan tinggi untuk menerima biaya transaksi.

Kesimpulan kedua tidak memiliki biaya, tetapi menentukan alamat pangkalan, yang akan menerima hadiah apa pun untuk blok yang ditemukan oleh lebah di masa depan. Anda bisa menyebutnya "alamat peternak lebah masa depan." Jika diinginkan, pengguna sendiri dapat mengklarifikasi; secara default, alamat baru akan dibuat setiap kali di dompetnya.

Contoh:

 "vout": [ { // Bee creation fee "addr": "CReateLitecoinCashWorkerBeeXYs19YQ" "value": 1.0000000 }, { // Address to receive block rewards for any blocks this bee mines "addr": "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" "value": 0.0000000 }, { // Change address for change from creation fee "addr": "Cd6CRuWCu6p4NLR6XG7BKyC8hzvEoYuKbn" "value": 123.5274346 } ] 

Lebah menjadi dewasa dan menjadi mampu menghasilkan balok setelah 576 blok muncul di blockchain sejak lebah diciptakan. Ini adalah jumlah yang diharapkan dari blok baru yang ditambahkan ke blockchain Litecoin Cash dalam 24 jam. Setelah lebah dewasa, ada 4032 blok (sekitar 1 minggu) dan mencari blok, kemudian mereka mati.

Lebah dibuat dalam dompet QT. Sesuatu seperti ini terlihat seperti ini:

gambar

Fig. 2: Tata letak dompet LCC dengan lebah yang bekerja

Lebah di Tempat Kerja: Blokir Pencarian


Misalnya, misalkan tinggi blockchain = 1000, dan jaringan harus menentukan lebah mana yang ditugaskan untuk menemukan blok 1001. Peternak lebah Alice sekarang memiliki 4 lebah (dibuat antara 576 dan 4608 blok).

Ketika blok 1000 muncul, dompet Alice menghitung dua nilai.

Yang pertama adalah nilai deterministik yang tidak dapat diprediksi tetapi mudah diverifikasi. Ini mudah dilakukan dengan menambahkan hash blok pada kedalaman berbeda (hard-coded) antara, katakanlah, 0 dan 500000 blok, memastikan bahwa nilai acak kami berakar dengan baik di blockchain:

 string deterministicRandString = blocks[blockHeight].hash + blocks[blockHeight-13].hash + blocks[blockHeight-173].hash + blocks[blockHeight-1363].hash + blocks[blockHeight-27363].hash + blocks[blockHeight-496393].hash; 

Selanjutnya, dompetnya menghitung hash target bee, beeTargetHash . Nilai ini ditentukan oleh rata-rata bergerak eksponensial dengan rentang dinamis yang sangat tinggi, yang menetapkan beeTargetHash sehingga untuk populasi lebah tertentu, frekuensi blok yang diperoleh selama proses penambangan ditentukan. Di sisi positifnya, semakin banyak blok PoW telah ditambang sejak blok tambang tinggi terakhir, semakin tinggi (sederhana) beeTargetHash . Algoritma didefinisikan sebagai berikut; nilai-nilai maxTarget , emaWindowsSize dan emaDesiredSpacing akan ditentukan selama simulasi.

 beeHashTarget = previousBeeHashTarget (default to highest (easiest) target maxTarget) numPowBlocks = number of pow blocks since the previous hive mined block; emaInterval = emaWindowSize / emaDesiredSpacing; beeHashTarget *= (interval - 1) * emaDesiredSpacing + numPowBlocks + numPowBlocks; beeHashTarget /= (interval + 1) * emaDesiredSpacing; 

Baik deterministicRandString dan beeHashTarget dapat dihitung dengan simpul apa pun di jaringan.

Dompet Alice sekarang melewati masing-masing lebahnya melalui rantai acak deterministik, menggabungkan transaksi BCT dari lebah dan hashing mereka untuk mendapatkan hash baru - beeHash dari lebah individual. Oleh karena itu, setiap lebah menghasilkan satu hash per blok. Hash ini mirip dengan hash terbaik yang dihasilkan oleh rig penambangan PoW selama periode waktu yang sama.

 hash beeHash = sha256(deterministicRandString + bee.creationTransaction.ID); 

Karena dompet Alice melacak lebah, yang masing-masing menghitung beeHash , beeHash ini menyimpan catatan hash terbaik (terendah) yang ditemukan. Jika, sebagai hasilnya, hash terbaik yang ditemukan oleh dompet Alice memenuhi persyaratan beeHash < beeTargetHash , Alice berhak untuk menambahkan blokir.

Misalkan Alice memiliki lebah hidup, hash yang lebih rendah dari target, dan pengidentifikasi transaksi BCT dari lebah yang sukses adalah sebagai berikut:

 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841. 

Mengetahui bahwa dompet Alice memiliki hak untuk menandatangani blok, jaringan menghasilkan blok dengan transaksi khusus dengan dua output:

 "vout": [ { // Zero-value output identifies the bee and proves it's really minting for Alice "value": 0, "n": 0, "scriptPubKey": { "asm": "OP_RETURN OP_BEE 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a4I=" } }, { // Block reward (subsidy + fees) - must pay to bee's correct coinbase address "value": 250.0001125, "n": 1, "scriptPubKey": { "addresses": [ "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" ] } } 

vout[0] adalah output bernilai nol yang tidak dapat dihabiskan. Ini digunakan baik untuk mengidentifikasi lebah yang mendapat blok, dan untuk membuktikan bahwa dia mendapatkannya untuk Alice.

vout[1] adalah hasil yang memberi Alice hadiah blok.

Blokir Konfirmasi


Dompet Bob, menerima blok Alice, sekarang harus memastikan bahwa ia memenuhi konsensus. Pertama, ia memastikan bahwa transaksi mencakup dua input, yang pertama adalah nol, dan bahwa skrip dimulai dengan OP_RETURN OP_BEE . Dia kemudian mengambil id transaksi lebah Alice:

 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841. 

Digresi: Karena transaksi pembuatan lebah dipindahkan ke alamat yang tidak dapat diakses, output dari transaksi yang tidak digunakan (UTXO) tetap ada di dalamnya. Akibatnya, dompet Bob tidak perlu mengaktifkan opsi baris perintah txindex (yang sepenuhnya mengindeks semua transaksi karena verifikasi yang tertunda dan peningkatan penggunaan disk) untuk dengan mudah memeriksa output BCT Alice. Karena penggunaan UTXO, dompet QT tidak memerlukan database atau modifikasi apa pun untuk mendukung penambangan tinggi. Tab lebah juga terintegrasi secara dinamis.


Dengan memvalidasi blok tambang tinggi, dompet Bob mengimplementasikan setara dengan RPC (panggilan prosedur jarak jauh):

 gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 0 

Ini memberinya output BTC pertama, vout [0] , dan memastikan bahwa 1) kedalaman transaksi terletak pada rentang umur lebah; 2) komisi dibayarkan untuk penciptaan seekor lebah; 3) dikirim ke alamat jalan buntu yang benar.

Jika verifikasi lolos, dompet Bob akan menghasilkan:

 gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 1 

Dengan demikian memperoleh output BCT kedua, vout [1] , mengkonfirmasikan bahwa 1) nilainya nol; 2) alamatnya sama dengan alamat untuk menerima transfer koin di blok (dalam contoh CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR ).

Pemeriksaan berikut memverifikasi tanda tangan pesan dari bagian terakhir vout [0] . Pesan tersebut harus berisi nomor blok saat ini, ditandatangani oleh alamat untuk menerima transfer koin, oleh karena itu dompet Bob menghasilkan:

 verifymessage CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR "IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a 4I=" "1001" 

Akhirnya, Bob menghitung deterministicRandString dan beeHashTarget untuk blok saat ini, kemudian menghitung beeHash Alice dan memeriksa terhadap beeHashTarget . Jika semua pemeriksaan dilewati, blok dianggap sah dan diverifikasi. Proses validasi blok cepat dan tidak memerlukan verifikasi mahal atas blok historis.

Pairing Hi-Mining dan PoW Mining


Diasumsikan bahwa penambangan tinggi bukan satu-satunya metode untuk memastikan keamanan jaringan. Pengembang Litecoin Cash tidak hanya ingin menyelamatkan komunitas pertambangan, tetapi juga tidak mengganggu dengan cara apa pun. Penambangan tinggi harus dipasangkan dengan penambangan PoW pada satu blockchain.

Saat ini, operasi rangkaian dihitung sebagai berikut:

gambar

Artinya, operasi sirkuit terakumulasi sebagai fungsi kompleksitas di setiap blok sirkuit. Pengembang mengusulkan mengubah definisi ini sebagai berikut:

gambar

Dengan demikian, setiap blok sarang-tambang akan dihargai tergantung pada jumlah pekerjaan yang disimpulkan dalam blok-PoW sebelumnya, dan konstanta k ditentukan secara eksperimental.

Kesimpulan: penambangan tinggi sebagai pertahanan terhadap serangan 51%


Menurut kepala pengembang Litecoin Cash, Jane 'Tanner' Craig, gagasan HiveMine tidak hanya untuk memberikan perlindungan yang andal terhadap serangan 51%, tetapi juga untuk mendemokratisasikan dan mendesentralisasikan pertambangan. Tidak seperti blockchains PoS, ketika "orang kaya semakin kaya", mengakumulasi bagiannya, HiveMine masih membutuhkan biaya untuk menciptakan lebah yang mungkin tidak membayar. Penambangan berbasis agen memenuhi tiga tugas utama tim: menyulitkan serangan 51% secara signifikan, mendemokrasikan penambangan dan kebebasan bagi penambang menggunakan algoritma SHA-256, yang memastikan keamanan tinggi dari jaringan Bitcoin yang sama. Untuk serangan yang berhasil, penyerang perlu mengambil alih 51% dari kekuatan jaringan, serta 51% dari populasi lebah di jaringan, dan mengingat proses pembuatan lebah, ini akan segera menjadi jelas.

Menurut Craig, setelah menguji dan menerapkan model HiveMine dalam jaringan Litecoin Cash, yang tidak dilengkapi dengan tingkat hash SHA-256 yang sama dengan Bitcoin Cash yang sama, namun akan lebih cepat dan lebih dapat diandalkan daripada jaringan Bitcoin Cash atau Bitcoin .

Referensi:
1. ' Sarang: Penambangan berbasis Agen di Litecoin Cash ', Iain CRAIG, Sebastian CLARKE, Michał WYSZYŃSKI dan Federico DE GONZÁLEZ-SOLER. (2018)

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


All Articles