Konsensus dalam cryptocurrency dengan penambangan hybrid dan Multi-PoW

Saya kebetulan berpartisipasi dalam pengembangan mekanisme penambangan untuk cryptocurrency, memungkinkan Anda untuk menggunakan algoritma hashing yang berbeda untuk membangun blockchain. Tujuannya adalah untuk memungkinkan penambang dengan peralatan apa pun (ASIC, GPU, CPU) untuk mendukung jaringan, yang mencakup seluruh audiens yang mungkin dari peserta jaringan. Dalam artikel ini, saya akan memberi tahu Anda apa hasil yang kami dapatkan, tentang penambangan bitcoin dan beberapa cryptocurrency lainnya menggunakan penambangan hibrida.



Terlepas dari kenyataan bahwa penambangan dihargai dan hadiah adalah sumber utama penerbitan koin di sebagian besar cryptocurrency, fungsi paling signifikan dari mekanisme ini adalah untuk mencapai konsensus di antara para peserta jaringan. Konsensus dijamin oleh undang-undang sederhana - ketika bercabang blockchain (garpu), rantai dianggap benar, selama pembangunan yang dilakukan hash (pekerjaan) dalam jumlah terbesar.

Untuk membangun penambangan multi-hybrid, Anda perlu menyelesaikan dua masalah - menghitung target untuk masing-masing algoritma dan menemukan mekanisme perbandingan yang memungkinkan Anda untuk melakukan hal yang paling sulit - untuk membandingkan rantai yang terdiri dari blok dengan algoritma yang berbeda dan, sebagai hasilnya, sangat berbeda dalam besarnya pekerjaan.


Penambangan multihibrid adalah istilah yang tidak ditentukan, dalam artikel ini digunakan untuk menunjukkan bukti penambangan (POW) pada beberapa algoritma. Dalam komunitas crypto berbahasa Inggris dan Rusia, nama yang diterima secara umum adalah Multi-PoW. Ini akan dipertimbangkan pada contoh cryptocurrency Verge dengan lima algoritma . Penambangan hibrida adalah istilah yang diterima secara umum yang diterapkan pada cryptocurrency menggunakan POW dan penyimpanan bukti deposito / ekuitas. Kami akan mempertimbangkannya pada contoh salah satu pelopor solusi semacam itu - Novacoin.

Untuk memahami mekanisme penambangan, Anda perlu memahami konsep dasar berikut dalam cryptocurrency - pekerjaan dan tujuan (target). Tujuannya adalah nilai numerik yang mendefinisikan batas atas hash yang cocok untuk membuat blok dalam rantai. Bekerja - secara statistik jumlah rata-rata pencarian yang diperlukan untuk menemukan hash target yang lebih kecil atau sama.

Kerjakan dan bidik jari
Pertimbangkan contoh gulungan kubus D & D 20 sisi. Kami akan mendistribusikan dadu ke setiap pemain D & D di planet ini dan meminta mereka untuk melempar. Setengah dari dadu akan memiliki nilai dari 1 hingga 10, yang kedua dari 11 hingga 20. Asumsikan bahwa untuk peristiwa yang diinginkan dalam nilai permainan harus dari 1 hingga 10. Biarkan para pemain terus bergulir sampai semua orang melempar nilai yang diinginkan. Dengan setiap lemparan, jumlah pemain yang tersisa dibelah dua dan ternyata jumlah rata-rata gulungan dadu per pemain akan dihitung sesuai dengan rumus berikut:

 operatornamecountthrows= frac operatornamecountmungkinnilai operatornamecountcocoknilai

Dengan asumsi 500 juta bermain di planet ini, pemain yang paling β€œberuntung” harus melempar dadu sekitar 29 kali, tetapi jumlah rata-rata tembakan per pemain adalah 2. Jumlah gulungan dalam formula identik dengan jumlah tindakan generasi hash dan sesuai untuk bekerja. Dengan demikian, jumlah nilai hash yang cocok sama dengan nilai target + 1. Rumus lengkap untuk bekerja dengan hash 256 bit adalah:

w o r k = f r a c 2 256 t a r g e t + 1 

Bitcoin menggunakannya dengan tepat dan kode yang menggunakan rumus ini ada di sini . Dan di sini, pekerjaan digunakan untuk mencapai konsensus - membandingkan garpu blockchain dan memilih rantai terbaik.

Tujuan utama dari target harus ditetapkan ke nilai sedemikian rupa sehingga waktu rilis blok terjadi dalam interval waktu tertentu. Untuk bitcoin, intervalnya adalah 10 menit. Penghitungan ulang target dalam bitcoin terjadi setiap 2016 blok. Untuk menetapkan target baru, Bitcoin menentukan tingkat hash rata-rata - jumlah kerja jaringan per unit waktu untuk blok 2016 sebelumnya. Hitung pekerjaan yang diharapkan dalam 10 menit dan ambil target untuknya, tetapkan nilainya untuk blok 2016 mendatang. Untuk bitcoin, perhitungan target, mengingat kesetaraan target (dan karenanya pekerjaan) dari blok 2016 sebelumnya, setelah pengurangan dan perkiraan, diberikan dalam formula yang agak sederhana.

targetnew= frac2256worknextβˆ’1= frac225610min cdothashrateaverβˆ’1= frac2256 frac10min cdotwork2016time2016βˆ’1=

= frac2256 cdottime201610min cdot2016 cdot frac2256targetprev+1βˆ’1= fractime2016 cdot left(targetprev+1 kanan)10min cdot2016βˆ’βˆ’1 approx fractime2016 cdottargetprev10min cdot2016



Selain cryptocurrency, tugas target, kerja dan tingkat hash (kecepatan generasi hash) diselesaikan oleh kumpulan . Kelompok ini tidak tahu nilai hash langsung dari penambang individual. Mendapatkan semua hash tidak mungkin karena keterbatasan bandwidth dan tidak berguna - memeriksa mereka untuk biaya sama dengan menambang. Kelompok ini menerima tanggapan dari penambang dengan target yang tidak mencukupi untuk membentuk blok, menentukan bagian dari penambang di kelompok tersebut, hashrate dan menetapkan target seperti itu untuk setiap penambang sehingga tanggapan dari mereka tidak mengambil semua lalu lintas.


Melempar grafik 12 dadu segi oleh pemain dengan hashrate 1 roll / detik dalam 100 detik. Setiap titik adalah nilai dari wajah yang ditarik, sumbu Y yang tepat adalah jumlah nilai yang jatuh ke dalam target. Dapat dilihat bahwa 20 tembakan masuk ke dalam target 2 - lemparan dengan nilai 1 dan 2. Cocok untuk pekerjaan itu. Evaluasi pekerjaan adalah 20 * 12/2 = 120 tembakan, dengan target 6 pekerjaan adalah 53 * 12/2 = 106. Properti utama yang digunakan adalah untuk setiap Target dalam kondisi statistik yang memadai menerima dekat dengan nilai tepat pekerjaan dan hashrate dari peserta.

Cryptocurrency dengan beberapa algoritma, seperti kumpulan, harus mengevaluasi hash dari algoritma partisipan dan memilih target yang akan memberikan interval waktu yang diinginkan antara blok. Mekanisme perhitungan target yang benar, selain interval, harus menyediakan bagian yang tepat dari berbagai blok di blockchain.

Penting untuk menyimpang ke dalam sejarah untuk memahami fitur penghitungan target dalam cryptocurrency yang diluncurkan setelah bitcoin. Di masa lalu yang gagah, para pelopor altcoinstruction yang berani mengambil kode Bitcoin, membuat sedikit perubahan dan meluncurkan "pembunuh Bitcoin". Bahkan ada generator online repositori kode altcoin baru. Pendekatan ini menyebabkan sejumlah masalah, salah satunya menyangkut perhitungan target dan muncul dalam skenario berikut. Seorang penambang yang tingkat hash-nya secara signifikan lebih besar daripada peserta lain terhubung ke penambangan cryptocurrency. Karena target jarang dihitung, penambang seperti itu menciptakan blok dengan interval yang sangat singkat dan berhasil membuat jumlah blok mingguan dalam beberapa jam, dan karenanya mengumpulkan hadiah mingguan. Setelah mencapai blok di mana target dihitung ulang, penambang pergi ke altcoin lain dengan tingkat hash yang cocok. Dengan meningkatnya target, penambang yang tersisa tidak dapat menghasilkan satu blok pada waktu yang wajar, belum lagi generasi semua blok sebelum perhitungan ulang target yang baru dan meninggalkan altcoin. Koin blockchain akhirnya berhenti. Solusi utama untuk masalah ini adalah menghitung ulang target setiap blok.

Sepintas, perhitungan target di Novacoin tidak jauh berbeda dengan perhitungan dalam bitcoin. Novacoin memisahkan perhitungan POS dan POW dengan benar. Rumus terakhir untuk menghitung target blok POS di Novacoin adalah sebagai berikut

targetnew=targetlast cdot frac7dayβˆ’10min+2 cdottimepos intrerval7day+10min

yang sama sekali tidak masuk akal dibandingkan dengan menghitung hash rata-rata dalam bitcoin dan perkiraannya. Setiap statistik dalam rumus ini terlibat secara tidak langsung - semua sama, nilai target sebelumnya dihitung sebagai hasil dari hasil sebelumnya di blockchain. Mekanisme secara keseluruhan mirip dengan menjaga jarak dengan mobil, intervalnya kurang dari 10 menit - kami melepaskan pedal gas, lebih - kami menekan.

Perhitungan POW hampir sama, kecuali bahwa Novacoin mengklaim frekuensi yang berbeda untuk blok POW dan POS dan dihitung pada interval 10 menit hingga 30 tergantung pada posisi di blockchain. Anda dapat melihat bahwa jika jaringan kehilangan POW atau POS hashnya tajam, target akan tetap valid sampai blok baru muncul pada mekanisme penambangan yang telah kehilangan daya.

Perhitungan target di Verge menggunakan mekanisme Dark Gravity Wave, yang merupakan pengembangan dari ide-ide yang diajukan oleh Kimoto Gravity Well. Tanpa masuk ke dalam matematika dari semua metode ini, tujuan dari ini, tidak diragukan lagi mekanisme yang disebut secara puitis, adalah satu - untuk memastikan konversi target cukup cepat untuk menanggapi perubahan dalam tingkat hash jaringan. Meskipun beberapa kecerdikan kode , matematika turun ke rumus yang cukup sederhana. Verge menghitung target rata-rata 12 blok dari algoritma yang dipilih, di mana blok terakhir dihitung dua kali:

target_ {aver} = \ frac {2 \ cdot {target_ {last}} + {target_ {last-1}} + {...} + {target_ {last-11}}}} {13}

target_ {aver} = \ frac {2 \ cdot {target_ {last}} + {target_ {last-1}} + {...} + {target_ {last-11}}}} {13}

Pertanyaan yang segera muncul tentang keabsahan penambahan target, bagaimanapun, memiliki pembenaran matematis. Target yang dihasilkan adalah target untuk kerja rata-rata harmonik.

 frac13 cdot(targetaver+1)2256= frac2 cdot(targetterakhir+1)2256+ fractargetlastβˆ’1+12256+...+ fractargetlastβˆ’11+12256

Sisanya dari perhitungan persis bertepatan dengan perhitungan melalui tingkat hash rata-rata untuk bitcoin.

targetnew approx fractime12 cdottargetaver0.5min cdot5 cdot12

Perlu dicatat bahwa hashrate di Verge dihitung dari rata-rata kerja harmonik dan waktu rata-rata aritmatika, dan sebagai hasilnya, ketidaksetaraan rata-rata akan memiliki nilai yang lebih rendah jika waktu dan pekerjaan diambil dengan cara yang sama.

Matematika menghitung target dalam proyek dengan bukti campuran / algoritma berbeda dari aslinya dalam bitcoin. Sisi kedua dari koin mekanisme target dan pekerjaan adalah solusi dari masalah konsensus - definisi cabang blockchain yang diambil sebagai yang benar jika terjadi perselisihan. Masalah mendasar untuk blockchain campuran adalah ketidakmungkinan pilihan ketika menggunakan perbandingan jumlah pekerjaan blok untuk semua algoritma / bukti. Jelas, algoritma / bukti yang secara inheren hashrate lebih tinggi dengan logika primitif akan mendominasi blockchain.

Di Novacoin, meskipun menggunakan skor kepercayaan tertentu dalam komentar dan penamaan variabel, analisis rinci dari logika ternyata tidak lebih dari sebuah pekerjaan. Perhitungan untuk POS bertepatan dengan formula kerja yang tepat, dan perhitungan untuk POW dapat dianggap bekerja dengan beberapa jenis penurunan koefisien konstan. Sisa dari perhitungan tambahan terlihat seperti urutan penyeimbangan blok untuk mekanisme target. Perlu dicatat bahwa ini bukan solusi terbaik. Seperti yang akan ditampilkan nanti, hanya target yang cukup untuk menyeimbangkan blok. Selain itu, blok POS dan POW dengan orang tua yang sama dapat tidak sama, meskipun fakta penampilan blok yang valid dengan orang tua yang sama harus didefinisikan sebagai persamaan.

Sebelum mempertimbangkan keadaan mekanisme konsensus saat ini, Verge akan informatif untuk melihat masa lalunya. Pada musim semi 2018, Verge selamat dari beberapa serangan. Tanpa merinci mekanisme serangan, kode waktu itu , yang bertanggung jawab untuk memilih garpu, mengandung logika yang meragukan. Dengan asumsi bahwa fungsi IsProofOfStake () dalam cryptocurrency POW dapat mengembalikan nilai sebenarnya, maka penambahan algoritma yang berbeda akan, seperti yang ditunjukkan di atas, mengarah pada dominasi suatu algoritma dengan hashrate yang lebih tinggi. Jika tidak, pilihan dibuat hanya dengan panjang rantai, yang dengan target yang dihitung dengan benar (yang tujuannya adalah tampilan blok yang seragam) dapat menyebabkan kesetaraan cabang dengan karya yang sangat berbeda.

Dalam kode saat ini, Verge menggunakan koefisien konstan untuk perbandingan. Dengan asumsi bahwa koefisien-koefisien ini memperhitungkan relevansi kapasitas peralatan pertambangan, kelemahan yang jelas dari pilihan ini adalah hilangnya relevansi ketika peralatan baru muncul.

Sifat asli dari matematika dan pekerjaan target memungkinkan kita untuk membangun model perhitungan yang lebih sederhana dan lebih dimengerti di blockchain. Pertimbangkan model dan kode yang meniru perhitungan target untuk blockchain dengan empat algoritma. Biarkan dua dari mereka menempati sepertiga dari blok. Untuk kesederhanaan pemodelan, kita dapat mengasumsikan bahwa blok dengan interval terkecil dari yang sebelumnya adalah yang terbaik untuk membangun sirkuit. Dalam cryptocurrency nyata, pilihan seperti itu sesuai dengan skenario yang paling umum. Model ini juga menguji kenaikan dan penurunan tingkat hash dari salah satu algoritma.

Perhitungan target akan dihitung dari rata-rata aritmatika kerja dan waktu pada statistik dari 300 blok terakhir. Rumus perhitungan akhir:

target = \ frac {2 ^ {256}} {k \ cdot {60} \ cdot {hashrate_ {aver}}}} - 1

target = \ frac {2 ^ {256}} {k \ cdot {60} \ cdot {hashrate_ {aver}}}} - 1

di mana k adalah jumlah interval untuk satu blok algoritma yang harusnya target dihitung.

Mari kita meringkas dalam tabel nilai awal dan dihitung untuk 10.000 blok.
algo1234
hashrate4080indeks <4000: 20
4000> indeks <6000: 150
indeks> 6000: 20
100
interval60
blok3333333316661666
bekerja24000000480000002760000060.000.000
Saya ingin mencatat bahwa nilai rangkaian dihitung oleh rumus:

workalgo=hashratealgo cdottimeallblock

Perhitungan hash dalam jaringan terjadi dari waktu ke waktu blok semua algoritma, dan tidak hanya pada interval algoritma individu. Seperti dalam contoh dengan kubus dua sisi - terlepas dari target yang dipilih, evaluasi pekerjaan akan sama. Untuk perhitungan perlu memperhitungkan ini, dengan koefisien k untuk menghitung target blok baru melalui tingkat hash, dan mengambil semua waktu untuk menghitung pekerjaan.
algo1234
interval59595759
blok3306332016911683
bekerja23847014470854872702827260499076
Seperti yang Anda lihat, hasil emulasi cukup baik bertepatan dengan perhitungan menurut sumber data.

Blokir Bagan 3850-4650

Blokir Bagan 5599-6399

Pada grafik perubahan dalam pekerjaan dari waktu ke waktu, terlihat bagaimana kepadatan blok meningkat dan berkurang dengan perubahan dalam tingkat hash. Pada prinsipnya, ini adalah perilaku logis dan logis, tetapi juga cukup tepat untuk mengaturnya menggunakan teknik seperti Gelombang Gravitasi Gelap - meningkatkan pengaruh blok terakhir, dan lainnya.

Beralih ke pertanyaan menentukan konsensus fork dari blok dengan algoritma yang berbeda, perlu dicatat properti dasar berikut - blok dengan blok umum sebelumnya setara satu sama lain. Target dan penilaian kinerja mereka memberikan hak yang sama untuk mengambil tempat dalam rantai. Pengamatan ini langsung mengarah pada ide menggunakan kesetaraan - menggunakan jumlah pekerjaan, koefisien bervariasi dari rasio target, dll. Menghilangkan pertimbangan kekurangan semua ide tersebut, kami akan beralih ke metode yang paling sepenuhnya memenuhi persyaratan blockchain.

Jika kita mempertimbangkan prediksi rerata geometris dari semua algoritma blok, maka jumlah pekerjaan yang setara tersebut adalah karakteristik terbaik untuk membandingkan garpu.

workequal= sqrt[k1]workalgo1 cdot sqrt[k2]workalgo2 cdot... cdot sqrt[kn]workalgon

Di mana k adalah jumlah interval di mana satu blok algoritma harus jatuh, di mana target dihitung.

Pekerjaan yang sepadan seperti itu memiliki sifat-sifat berikut:

  • ketika laju hash dari semua algoritma diubah n kali, estimasi konsensus rantai juga akan berubah n kali
  • dengan meningkatkan hashrate dari salah satu algoritma dan mengurangi n kali lainnya dengan bagian yang sama dalam penambangan, estimasi konsensus rantai akan sama
  • dengan proporsi algoritma yang sama dan laju hash yang sama dari algoritma ini, operasi dan operasi yang setara dari algoritma apa pun akan sama

Mekanisme operasi yang setara menyulitkan serangan secara signifikan pada blockchain. Formula untuk pekerjaan yang setara, dinyatakan melalui tingkat hash, memungkinkan Anda untuk memperkirakan kekuatan yang diperlukan untuk serangan.

workequal= sqrt[k1]k1 cdott cdothashratealgo1 cdot sqrt[k2]k2 cdott c d o t h a s h r a t e a l g o 2 c d o t . . . c d o t s q r t [ k n ] k n c d o t t c d o t h a s h r a t e a l g o n     

Jika penyerang memutuskan untuk melakukan serangan sesuai dengan salah satu algoritma dan tidak akan dapat menghitung sisanya, maka hashrate yang diperlukan harus secara signifikan melebihi hashrate jaringan.
Misalnya, tabel serangan, waktu antara blok adalah 60. Misalkan penyerang hanya dapat menyediakan 50% dari hashrate dalam tiga algoritma.
algo1234sama
bagian3366
hashrate bersih40802010011862
penyerang hashrate16040105011862

Untuk mencapai kesetaraan dengan jaringan, ia harus memiliki hashrate 4 kali lebih tinggi dari hashrate jaringan menurut algoritma pertama.

Grafik berikut menunjukkan hasil meniru serangan di blockchain.



Serangan dimulai pada blok 1000. Jumlah pekerjaan yang setara dalam persaingan untuk kedua cabang sedikit berbeda dan menunjukkan kesetaraan cabang.

Ringkasnya, dapat dicatat bahwa mekanisme konsensus dalam cryptocurrency dengan algoritma campuran / bukti dapat dibenarkan secara matematis dan cryptocurrency seperti itu lebih sulit untuk menyerang 51.

Selamat blockchain untuk semua orang dan terima kasih atas perhatian Anda pada topik ini.

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


All Articles