Tasodifiy raqamlar va markazlashtirilmagan tarmoqlar: amalga oshirish

kirish

function getAbsolutelyRandomNumer() {
        return 4; // returns absolutely random number!
}

Kriptografiyadan mutlaqo kuchli shifr kontseptsiyasida bo'lgani kabi, haqiqiy "Ommaviy tekshirilishi mumkin bo'lgan tasodifiy mayoq" (keyingi o'rinlarda PVRB) protokollari faqat ideal sxemaga iloji boricha yaqinlashishga harakat qiladi, chunki. haqiqiy tarmoqlarda bu sof shaklda qo'llanilmaydi: qat'iy bir bit bo'yicha kelishib olish kerak, ko'p turlar bo'lishi kerak va barcha xabarlar juda tez va har doim etkazib berilishi kerak. Albatta, haqiqiy tarmoqlarda bunday emas. Shu sababli, zamonaviy blokcheynlarda aniq vazifalar uchun PVRB-larni loyihalashda, natijada paydo bo'lgan tasodifiylik va kriptografik kuchni nazorat qilishning mumkin emasligidan tashqari, yana ko'plab sof me'moriy va texnik muammolar paydo bo'ladi.

PVRB uchun blokcheynning o'zi asosan xabarlar = tranzaktsiyalar bo'lgan aloqa vositasidir. Bu sizga tarmoq muammolaridan, xabarlarni etkazib bermaslikdan, o'rta dastur bilan bog'liq muammolardan qisman xalos bo'lishga imkon beradi - bu barcha xavflarni markazlashtirilmagan tarmoq o'z zimmasiga oladi va PVRB uchun uning asosiy qiymati allaqachon yuborilgan tranzaksiyani bekor qilish yoki buzish mumkin emas - bu qiladi agar ular konsensusga muvaffaqiyatli hujum qilmagan bo'lsa, ishtirokchilarga protokolda ishtirok etishdan bosh tortishlariga yo'l qo'ymaslik. Ushbu xavfsizlik darajasi maqbuldir, shuning uchun PVRB asosiy blok zanjiri bilan bir xil darajada ishtirokchilarning til biriktirishiga chidamli bo'lishi kerak. Bundan tashqari, bu PVRB konsensusning bir qismi bo'lishi kerakligiga ishora qiladi, agar tarmoq asosiy blokcheynga rozi bo'lsa, hatto u yagona adolatli tasodifiy natijaga rozi bo'lsa ham. Yoki PVRB oddiygina blokcheyn va bloklarga nisbatan asinxron ishlaydigan aqlli shartnoma tomonidan amalga oshirilgan mustaqil protokoldir. Ikkala usulning ham afzalliklari va kamchiliklari bor va ular orasidagi tanlov juda ahamiyatsiz.

PVRBni amalga oshirishning ikkita usuli

Keling, PVRBni amalga oshirishning ikkita variantini batafsil tavsiflab beraylik - blokcheyndan mustaqil aqlli shartnoma yordamida ishlaydigan mustaqil versiya va protokolga o'rnatilgan konsensus-integratsiyalangan versiya, unga ko'ra tarmoq blokcheyn va protokolga rozi bo'ladi. kiritilishi kerak bo'lgan operatsiyalar. Barcha holatlarda men mashhur blokcheyn dvigatellarini nazarda tutaman: Ethereum, EOS va aqlli shartnomalarni joylashtirish va qayta ishlash usulida ularga o'xshash.

Mustaqil shartnoma

Ushbu versiyada PVRB aqlli shartnoma bo'lib, u tasodifiy ishlab chiqaruvchilarning tranzaktsiyalarini (keyingi o'rinlarda RP deb yuritiladi), ularni qayta ishlaydi, natijalarni birlashtiradi va natijada har qanday foydalanuvchi ushbu shartnomadan olishi mumkin bo'lgan ma'lum bir qiymatga etadi. Ushbu qiymat to'g'ridan-to'g'ri shartnomada saqlanishi mumkin emas, balki faqat ma'lumotlar bilan ifodalanishi mumkin, ulardan faqat bitta va natijada tasodifiy qiymat aniqlanishi mumkin. Ushbu sxemada RP blokcheyn foydalanuvchilari bo'lib, har kimga ishlab chiqarish jarayonida ishtirok etishga ruxsat berilishi mumkin.

Mustaqil shartnoma bilan variant yaxshi:

  • portativlik (shartnomalarni blokcheyndan blokcheynga sudrab borish mumkin)
  • amalga oshirish va sinovdan o'tkazish qulayligi (shartnomalarni yozish va sinovdan o'tkazish oson)
  • iqtisodiy sxemalarni amalga oshirishda qulaylik (mantiqi PVRB maqsadlariga xizmat qiladigan o'z tokeningizni qilish oson)
  • allaqachon ishlayotgan blokcheynlarda ishga tushirish imkoniyati

Uning kamchiliklari ham bor:

  • hisoblash resurslari, tranzaktsiyalar hajmi va saqlash bo'yicha kuchli cheklovlar (boshqacha aytganda, cpu/mem/io)
  • shartnoma doirasidagi operatsiyalarga cheklovlar (barcha ko'rsatmalar mavjud emas, tashqi kutubxonalarni ulash qiyin)
  • xabar almashishni blokcheynga kiritilgan tranzaktsiyalarga qaraganda tezroq tashkil eta olmaslik

Ushbu parametr mavjud tarmoqda ishlashi kerak bo'lgan, murakkab kriptografiyani o'z ichiga olmaydi va ko'p sonli shovqinlarni talab qilmaydigan PVRBni amalga oshirish uchun javob beradi.

Konsensusga asoslangan

Ushbu versiyada PVRB blokcheyn tugunlari kodida amalga oshiriladi, o'rnatilgan yoki blokcheyn tugunlari o'rtasida xabarlar almashinuvi bilan parallel ravishda ishlaydi. Protokol natijalari to'g'ridan-to'g'ri ishlab chiqarilgan bloklarga yoziladi va protokol xabarlari tugunlar o'rtasida p2p tarmog'i orqali yuboriladi. Protokol natijasida bloklarda yozilishi kerak bo'lgan raqamlar paydo bo'lganligi sababli, tarmoq ular bo'yicha konsensusga erishishi kerak. Bu shuni anglatadiki, tranzaktsiyalar kabi PVRB xabarlari tugunlar tomonidan tekshirilishi va bloklarga kiritilishi kerak, shunda har qanday tarmoq ishtirokchisi PVRB protokoliga muvofiqligini tekshirishi mumkin. Bu bizni avtomatik ravishda aniq yechimga olib boradi - agar tarmoq blok va undagi tranzaktsiyalar bo'yicha konsensusga rozi bo'lsa, PVRB mustaqil protokol emas, balki konsensusning bir qismi bo'lishi kerak. Aks holda, konsensus nuqtai nazaridan blok haqiqiy bo'lishi mumkin, ammo PVRB protokoliga rioya qilinmaydi va PVRB nuqtai nazaridan blokni qabul qilib bo'lmaydi. Shunday qilib, agar "konsensus-integratsiya" varianti tanlansa, PVRB konsensusning muhim qismiga aylanadi.

PVRB tatbiqlarini tarmoq konsensus darajasida tavsiflashda, hech qanday tarzda yakuniy muammolardan qochib bo'lmaydi. Yakuniylik deterministik konsensuslarda qo'llaniladigan mexanizm bo'lib, u yakuniy bo'lgan blokni (va unga olib boradigan zanjirni) qulflaydi va hatto parallel vilkalar paydo bo'lsa ham, hech qachon tashlanmaydi. Misol uchun, Bitcoin-da bunday mexanizm yo'q - agar siz murakkabroq zanjirni nashr qilsangiz, u zanjirlar uzunligidan qat'i nazar, har qanday kamroq murakkablikni almashtiradi. Va, masalan, EOS-da, oxirgi bo'lganlar o'rtacha har 432 blokda paydo bo'ladigan Oxirgi qaytarib bo'lmaydigan bloklardir (12 * 21 + 12 * 15, oldindan ovoz berish + oldindan bajarish). Bu jarayon asosan blok ishlab chiqaruvchilarning (bundan buyon matnda BP deb yuritiladi) 2/3 imzolarini kutmoqda. Oxirgi LIBdan kattaroq vilkalar paydo bo'lganda, ular shunchaki tashlanadi. Bu mexanizm tajovuzkor qanday resurslarga ega bo'lishidan qat'i nazar, tranzaksiya blokcheynga kiritilganligini va hech qachon qaytarib olinmasligini kafolatlashga imkon beradi. Shuningdek, yakuniy bloklar Hyperledger, Tendermint va boshqa pBFT-ga asoslangan konsensuslarda 2/3 BP tomonidan imzolangan bloklardir. Bundan tashqari, yakuniylikni ta'minlash uchun protokolni konsensusga qo'shimcha qilish mantiqiy, chunki u bloklarni ishlab chiqarish va nashr etish bilan sinxron ishlashi mumkin. Mana yaxshisi maqola Ethereumdagi yakuniylik haqida.

Yakuniylik foydalanuvchilar uchun juda muhim, ularsiz o'zlarini "ikki marta sarf qilish" hujumi qurboni bo'lishlari mumkin, bu erda BP bloklarni "ushlab turadi" va tarmoq yaxshi tranzaksiyani "ko'rgandan" keyin ularni nashr etadi. Agar yakuniylik bo'lmasa, u holda nashr etilgan vilka blokni "yaxshi" tranzaksiya bilan almashtiradi, "yomon" vilkadan, bunda xuddi shu mablag'lar tajovuzkorning manziliga o'tkaziladi. PVRB holatida, yakuniy talablar yanada qattiqroq, chunki PVRB uchun vilkalar qurish tajovuzkorga eng foydalisini nashr qilish uchun bir nechta tasodifiy variantlarni tayyorlash imkoniyatini anglatadi va mumkin bo'lgan hujum vaqtini cheklash yaxshi yechim.

Shuning uchun, eng yaxshi variant PVRB va yakuniylikni bitta protokolga birlashtirishdir - keyin yakunlangan blok = yakunlangan tasodifiy va biz aynan shu narsani olishimiz kerak edi. Endi o'yinchilar N soniya ichida kafolatlangan tasodifni olishadi va uni orqaga qaytarish yoki qayta o'ynash mumkin emasligiga amin bo'lishlari mumkin.

Konsensusga asoslangan variant yaxshi:

  • bloklarni ishlab chiqarishga nisbatan asinxron amalga oshirish imkoniyati - bloklar odatdagidek ishlab chiqariladi, ammo bunga parallel ravishda PVRB protokoli ishlashi mumkin, bu har bir blok uchun tasodifiylikni keltirib chiqarmaydi.
  • aqlli shartnomalar bo'yicha cheklovlarsiz, hatto og'ir kriptografiyani ham amalga oshirish qobiliyati
  • tranzaktsiyalar blokcheynga kiritilganidan ko'ra tezroq xabarlar almashinuvini tashkil qilish qobiliyati, masalan, protokolning bir qismi tarmoq bo'ylab xabarlarni tarqatmasdan tugunlar o'rtasida ishlashi mumkin.

Uning kamchiliklari ham bor:

  • Sinov va ishlab chiqishdagi qiyinchiliklar - siz tarmoq xatolarini, etishmayotgan tugunlarni, tarmoq qattiq vilkalarini taqlid qilishingiz kerak bo'ladi.
  • Amalga oshirish xatolari uchun tarmoq qattiq fork kerak

PVRBni amalga oshirishning ikkala usuli ham yashash huquqiga ega, ammo zamonaviy blokcheynlarda aqlli shartnomalar bo'yicha amalga oshirish hali ham hisoblash resurslarida juda cheklangan va jiddiy kriptografiyaga o'tish ko'pincha imkonsizdir. Va quyida ko'rsatilgandek, bizga jiddiy kriptografiya kerak bo'ladi. Garchi bu muammo aniq vaqtinchalik bo'lsa-da, ko'plab muammolarni hal qilish uchun shartnomalarda jiddiy kriptografiya kerak va u asta-sekin paydo bo'ladi (masalan, Ethereum-dagi zkSNARKs uchun tizim shartnomalari)

Shaffof va ishonchli protokol xabar almashish kanalini ta'minlovchi blokcheyn buni bepul qilmaydi. Har qanday markazlashtirilmagan protokol Sybil hujumi ehtimolini hisobga olishi kerak; har qanday harakat bir nechta hisoblarning kelishilgan kuchlari tomonidan amalga oshirilishi mumkin, shuning uchun loyihalashda tajovuzkorlarning ixtiyoriy sonli protokollarni yaratish qobiliyatini hisobga olish kerak. til biriktirgan ishtirokchilar.

PVRB va blok o'zgaruvchilari.

Hech kim hali blokcheynlarda ko'plab qimor ilovalari tomonidan sinovdan o'tgan yaxshi PVRBni amalga oshirmaganligini aytganimda yolg'on gapirmadim. Ethereum va EOS-da juda ko'p qimor ilovalari qayerdan keladi? Bu sizni hayratda qoldirganidek, meni ham hayratda qoldiradi, ular butunlay deterministik muhitda juda ko'p "doimiy" tasodiflarni qaerdan olishgan?

Blokcheynda tasodifiylikni olishning eng sevimli usuli - bu blokdan qandaydir "bashoratsiz" ma'lumotni olish va uning asosida tasodifiy ma'lumotni yaratish - shunchaki bir yoki bir nechta qiymatlarni xeshlash. Bunday sxemalarning muammolari haqida yaxshi maqola shu yerda. Siz blokdagi har qanday "bashoratsiz" qiymatlarni olishingiz mumkin, masalan, blok xeshi, tranzaktsiyalar soni, tarmoq murakkabligi va oldindan noma'lum bo'lgan boshqa qiymatlar. Keyin ularni bir yoki bir nechta xash qiling va nazariy jihatdan siz haqiqiy tasodifiy olishingiz kerak. Siz hatto qog'ozga sizning sxemangiz "kvantdan keyingi xavfsiz" ekanligini qo'shishingiz mumkin (chunki kvantga chidamli xesh funktsiyalari mavjud :)).

Afsuski, kvantdan keyingi xavfsiz xeshlar ham etarli emas. Buning siri PVRB talablarida yotadi, ularni oldingi maqoladan eslatib o'taman:

  1. Natija isbotlanadigan yagona taqsimotga ega bo'lishi kerak, ya'ni ishonchli kuchli kriptografiyaga asoslangan bo'lishi kerak.
  2. Natijaning biron bir qismini nazorat qilish mumkin emas. Natijada, natijani oldindan aytib bo'lmaydi.
  3. Protokolda qatnashmaslik yoki tarmoqni hujum xabarlari bilan ortiqcha yuklash orqali siz avlod protokolini sabotaj qila olmaysiz.
  4. Yuqoridagilarning barchasi halol bo'lmagan protokol ishtirokchilarining ruxsat etilgan sonining til biriktirishiga chidamli bo'lishi kerak (masalan, ishtirokchilarning 1/3 qismi).

Bunday holda, faqat 1-talab bajariladi va 2-talab bajarilmaydi.Blokdan oldindan aytib bo'lmaydigan qiymatlarni xeshlash orqali biz bir xil taqsimot va yaxshi tasodiflarni olamiz. Ammo BP hech bo'lmaganda "blokni nashr etish yoki bermaslik" variantiga ega. Shunday qilib, BP hech bo'lmaganda ikkita tasodifiy variantdan birini tanlashi mumkin: "o'zining" va agar kimdir blokirovka qilsa, chiqadi. BP, agar u blokni nashr etsa, nima bo'lishini oldindan "ko'rib chiqishi" mumkin va shunchaki buni qilish yoki qilmaslikka qaror qiladi. Shunday qilib, masalan, ruletda "juft-g'al" yoki "qizil/qora" o'ynaganida, u faqat g'alaba qozonganini ko'rsa, blokni nashr qilishi mumkin. Bu, shuningdek, masalan, "kelajakdan" blokli xeshni ishlatish strategiyasini yaroqsiz holga keltiradi. Bunday holda, ular "tasodifiy foydalaniladi, bu joriy ma'lumotlar va kelajakdagi blokning balandligi, masalan, N + 42, bu erda N - joriy blok balandligi bilan xeshlash orqali olinadi. Bu sxemani biroz kuchaytiradi, lekin baribir BPga kelajakda bo'lsa ham, blokni ushlab turish yoki nashr etishni tanlash imkonini beradi.

Bu holda BP dasturi yanada murakkablashadi, lekin unchalik emas. Sodda qilib aytganda, tranzaktsiyani blokirovka qilishda tasdiqlash va kiritishda yutuq bo'ladimi yoki yo'qligini aniqlash uchun tezkor tekshiruv mavjud va, ehtimol, g'alaba qozonish ehtimoli yuqori bo'lishi uchun bitta tranzaksiya parametrlarini tanlash. Shu bilan birga, bunday manipulyatsiyalar uchun aqlli BPni qo'lga kiritish deyarli mumkin emas, har safar siz yangi manzillardan foydalanishingiz va shubhalarni uyg'otmasdan asta-sekin yutib olishingiz mumkin.

Shunday qilib, blokdan ma'lumotni ishlatadigan usullar PVRBning universal qo'llanilishi sifatida mos kelmaydi. Cheklangan versiyada, tikish o'lchamlari bo'yicha cheklovlar, o'yinchilar soni bo'yicha cheklovlar va/yoki KYC ro'yxatdan o'tish (bir o'yinchining bir nechta manzillardan foydalanishiga yo'l qo'ymaslik uchun) bu sxemalar kichik o'yinlar uchun ishlashi mumkin, ammo boshqa hech narsa yo'q.

PVRB va majburiyatni oshkor qilish.

Yaxshi, xeshlash va hech bo'lmaganda blok xesh va boshqa o'zgaruvchilarning nisbatan oldindan aytib bo'lmaydiganligi tufayli. Agar siz oldingi konchilar muammosini hal qilsangiz, siz ko'proq mos keladigan narsani olishingiz kerak. Keling, ushbu sxemaga foydalanuvchilarni qo'shamiz - ular tasodifiylikka ham ta'sir qilsin: har qanday texnik yordam xodimi sizga IT tizimlarida eng tasodifiy narsa foydalanuvchilarning harakatlari ekanligini aytadi :)

Foydalanuvchilar shunchaki tasodifiy raqamlarni yuborganda va natija, masalan, ularning yig'indisi xesh sifatida hisoblangan sodda sxema mos kelmaydi. Bunday holda, oxirgi o'yinchi o'zining tasodifiy tanlovini tanlab, natija qanday bo'lishini nazorat qilishi mumkin. Shuning uchun juda keng qo'llaniladigan commit-reveal naqsh ishlatiladi. Ishtirokchilar birinchi navbatda o'zlarining tasodifiy (commits) dan xeshlarni yuboradilar, so'ngra tasodiflarni o'zlari ochadilar (oshkor qiladi). "Oshkora qilish" bosqichi faqat kerakli majburiyatlar to'planganidan keyin boshlanadi, shuning uchun ishtirokchilar oldindan yuborgan tasodifiy xeshni yuborishlari mumkin. Endi keling, bularning barchasini blok parametrlari bilan birlashtiramiz va kelajakda olinganidan yaxshiroq (tasodifiylikni faqat kelajakdagi bloklardan birida topish mumkin) va voila - tasodifiylik tayyor! Endi har qanday o'yinchi paydo bo'lgan tasodifiylikka ta'sir qiladi va zararli BPni o'ziga xos, oldindan noma'lum, tasodifiyligi bilan bekor qilish orqali "engishi" mumkin... Shuningdek, siz protokolni ochish bosqichida ochmasdan, uni sabotaj qilishdan himoya qo'shishingiz mumkin - oddiygina tranzaktsiyani amalga oshirishda ma'lum miqdorni qo'shib qo'yishni talab qilish orqali - garov depoziti, faqat oshkor qilish jarayonida qaytariladi. Bunday holda, sodir etish va oshkor qilmaslik foydasiz bo'ladi.

Bu yaxshi urinish edi va bunday sxemalar o'yin DApps-da ham mavjud, ammo afsuski, bu yana etarli emas. Endi nafaqat konchi, balki protokolning har qanday ishtirokchisi ham natijaga ta'sir qilishi mumkin. Hali ham qiymatning o'zini, kamroq o'zgaruvchanlik va xarajat bilan nazorat qilish mumkin, ammo konchi misolida bo'lgani kabi, agar chizma natijalari PVRB protokolida ishtirok etish uchun to'lovdan qimmatroq bo'lsa, unda tasodifiy -produser (RP) ochish yoki yo'qligini hal qilishi mumkin va kamida ikkita tasodifiy variantdan birini tanlashi mumkin.
Ammo sodir etgan va oshkor etmaganlarni jazolash mumkin bo'ldi va bu sxema foydali bo'ladi. Uning soddaligi jiddiy afzallikdir - jiddiyroq protokollar ancha kuchli hisob-kitoblarni talab qiladi.

PVRB va deterministik imzolar.

RPni psevdo-tasodifiy raqam berishga majburlashning yana bir yo'li bor, agar u "preimage" bilan ta'minlangan bo'lsa, u ta'sir qila olmaydi - bu deterministik imzo. Bunday imzo, masalan, RSA hisoblanadi va ECS emas. Agar RP bir juft kalitga ega bo'lsa: RSA va ECC va u o'zining shaxsiy kaliti bilan ma'lum bir qiymatga imzo cheksa, RSA holatida u BIR VA FAQAT BITTA imzo oladi va ECS holatida u istalgan sonni yaratishi mumkin. turli xil haqiqiy imzolar. Buning sababi, ECS imzosini yaratishda tasodifiy raqamdan foydalaniladi, uni imzolagan shaxs tanlaydi va u istalgan usulda tanlanishi mumkin, bu imzolovchiga bir nechta imzolardan birini tanlash imkoniyatini beradi. RSA holatida: "bitta kirish qiymati" + "bitta kalit juftligi" = "bitta imzo". Boshqa RP qanday imzo olishini oldindan aytib bo'lmaydi, shuning uchun deterministik imzolarga ega PVRB bir xil qiymatni imzolagan bir nechta ishtirokchilarning RSA imzolarini birlashtirish orqali tashkil etilishi mumkin. Misol uchun, oldingi tasodifiy. Ushbu sxema ko'p resurslarni tejaydi, chunki imzolar protokol bo'yicha to'g'ri xatti-harakatning tasdiqlanishi va tasodifiylik manbai.

Biroq, deterministik imzolar bilan ham, sxema hali ham "oxirgi aktyor" muammosiga qarshi himoyasiz. Oxirgi ishtirokchi hali ham imzoni nashr etish yoki bermaslik to'g'risida qaror qabul qilishi mumkin va shu bilan natijani nazorat qiladi. Siz sxemani o'zgartirishingiz, unga blok xeshlarini qo'shishingiz, natijani oldindan bashorat qilib bo'lmasligi uchun aylanmalar qilishingiz mumkin, ammo bu usullarning barchasi, hatto ko'plab o'zgartirishlarni hisobga olgan holda, bitta ishtirokchining jamoaga ta'siri muammosini hal qilmasdan qoldiradi. ishonchsiz muhitga olib keladi va faqat iqtisodiy va vaqt cheklovlari ostida ishlashi mumkin. Bundan tashqari, RSA kalitlarining hajmi (1024 va 2048 bit) juda katta va blokcheyn tranzaktsiyalari uchun o'lcham juda muhim parametrdir. Ko'rinib turibdiki, muammoni hal qilishning oddiy usuli yo'q, keling, davom etamiz.

PVRB va maxfiy almashish sxemalari

Kriptografiyada tarmoqqa bitta va faqat bitta PVRB qiymati bo'yicha kelishish imkonini beradigan sxemalar mavjud, bunday sxemalar esa ba'zi ishtirokchilarning har qanday zararli harakatlariga chidamli. Siz bilan tanishishga arziydigan foydali protokollardan biri bu Shamirning maxfiy almashish sxemasi. U sirni (masalan, maxfiy kalitni) bir necha qismlarga ajratish va bu qismlarni N ishtirokchiga tarqatish uchun xizmat qiladi. Sir shunday taqsimlanganki, uni qayta tiklash uchun N dan M qism yetarli bo'ladi va bu har qanday M qism bo'lishi mumkin. Agar barmoqlarda noma'lum funktsiyaning grafigi bo'lsa, ishtirokchilar grafikdagi nuqtalarni almashadilar va M ball olgandan so'ng butun funktsiyani tiklash mumkin.
Yaxshi tushuntirish berilgan Wiki lekin protokolni boshingizda o'ynash uchun u bilan amalda o'ynash foydalidir demo sahifa.

Agar FSSS (Fiat-Shamir Secret Sharing) sxemasi sof shaklda qo'llanilsa, bu buzilmas PVRB bo'lar edi. Eng oddiy shaklda protokol quyidagicha ko'rinishi mumkin:

  • Har bir ishtirokchi o'zining tasodifiy qismini yaratadi va undan aktsiyalarni boshqa ishtirokchilarga tarqatadi
  • Har bir ishtirokchi boshqa ishtirokchilarning sirlaridan o'z qismini ochib beradi
  • Agar ishtirokchi M dan ortiq aktsiyaga ega bo'lsa, unda ushbu ishtirokchining sonini hisoblash mumkin va u aniqlangan ishtirokchilar to'plamidan qat'i nazar, noyob bo'ladi.
  • Ochilgan tasodiflarning kombinatsiyasi kerakli PVRB hisoblanadi

Bu erda individual ishtirokchi endi protokol natijalariga ta'sir qilmaydi, tasodifiylikni oshkor qilish chegarasiga erishish faqat unga bog'liq bo'lgan hollar bundan mustasno. Shuning uchun, ushbu protokol, agar protokolda ishlaydigan va mavjud bo'lgan RPlarning kerakli nisbati mavjud bo'lsa, kriptografik kuch talablarini amalga oshiradigan va "oxirgi aktyor" muammosiga chidamli bo'lib ishlaydi.

Bu ideal variant bo'lishi mumkin, masalan, Fiat-Shamir maxfiy almashinuviga asoslangan PVRB sxemasi bu maqola. Ammo, yuqorida aytib o'tilganidek, agar siz uni blokcheynda qo'llashga harakat qilsangiz, texnik cheklovlar paydo bo'ladi. Bu erda EOS smart-kontraktidagi protokolni sinovdan o'tkazish misoli va uning eng muhim qismi - nashr etilgan ulush ishtirokchisini tekshirish: kodi. Koddan ko'rishingiz mumkinki, isbotni tekshirish bir nechta skalyar ko'paytirishni talab qiladi va ishlatiladigan raqamlar juda katta. Shuni tushunish kerakki, blokcheynlarda verify blok ishlab chiqaruvchisi tranzaktsiyani qayta ishlayotgan paytda sodir bo'ladi va umuman olganda, har qanday ishtirokchi protokolning to'g'riligini osongina tekshirishi kerak, shuning uchun tekshirish funktsiyasi tezligiga qo'yiladigan talablar juda jiddiy. . Ushbu variantda variant samarasiz bo'lib chiqdi, chunki tekshirish tranzaksiya chegarasiga to'g'ri kelmagan (0.5 soniya).

Tasdiqlash samaradorligi, umuman olganda, blokcheyndagi har qanday ilg'or kriptografik sxemalardan foydalanish uchun eng muhim talablardan biridir. Dalillarni yaratish, xabarlarni tayyorlash - bu protseduralar zanjirdan tashqarida olib tashlanishi va yuqori unumdor kompyuterlarda bajarilishi mumkin, ammo tekshirishni chetlab o'tib bo'lmaydi - bu PVRB uchun yana bir muhim talabdir.

PVRB va chegara imzolari

Yashirin almashish sxemasi bilan tanishib, biz "osta" kalit so'zi bilan birlashtirilgan protokollarning butun sinfini topdik. Ba'zi ma'lumotlarni oshkor qilish N dan M halol ishtirokchilarning ishtirokini talab qilganda va halol ishtirokchilar to'plami N ning ixtiyoriy kichik to'plami bo'lishi mumkin bo'lsa, biz "bo'sagi" sxemalari haqida gapiramiz. Aynan ular bizga "oxirgi aktyor" muammosi bilan shug'ullanishga imkon beradi, endi agar hujumchi o'z sirini oshkor qilmasa, boshqa, halol ishtirokchi buni amalga oshiradi. Ushbu sxemalar, hatto ba'zi ishtirokchilar tomonidan protokol sabotaj qilingan taqdirda ham, bitta va faqat bitta ma'no bo'yicha kelishuvga imkon beradi.

Deterministik imzolar va chegara sxemalarining kombinatsiyasi PVRBni amalga oshirish uchun juda qulay va istiqbolli sxemani ishlab chiqishga imkon berdi - bular deterministik chegara imzolari. Bu yerga maqola chegara imzolarining turli xil qo'llanilishi haqida va bu erda yana bir yaxshi narsa uzoq o'qish Dashdan.

Oxirgi maqolada BLS imzolari tasvirlangan (BLS Boneh-Lynn-Shacham, ko'raylik maqola), dasturchilar uchun juda muhim va o'ta qulay sifatga ega - ochiq, maxfiy, ochiq kalitlar va BLS imzolari oddiy matematik operatsiyalar yordamida bir-biri bilan birlashtirilishi mumkin, shu bilan birga ularning kombinatsiyasi haqiqiy kalit va imzo bo'lib qoladi, bu sizga ko'plab kalitlarni osongina jamlash imkonini beradi. imzolarni bittaga va bir nechta ochiq kalitlarni bittaga. Ular, shuningdek, deterministik va bir xil kirish ma'lumotlari uchun bir xil natijani beradi. Ushbu sifat tufayli, BLS imzolarining kombinatsiyasi o'z-o'zidan haqiqiy kalitlar bo'lib, u N ishtirokchi Mth tomonidan ochilgunga qadar deterministik, ommaviy tekshirilishi mumkin bo'lgan va oldindan aytib bo'lmaydigan bitta va faqat bitta imzo ishlab chiqaradigan variantni amalga oshirish imkonini beradi. ishtirokchi.

Chegaraviy BLS imzolari bo'lgan sxemada har bir ishtirokchi BLS (masalan, oldingi tasodifiy) yordamida biror narsaga imzo chekadi va umumiy chegara imzosi kerakli tasodifiy hisoblanadi. BLS imzolarining kriptografik xususiyatlari tasodifiy sifat talablariga javob beradi, chegara qismi "oxirgi aktyor" dan himoya qiladi va kalitlarning noyob kombinatsiyasi, masalan, protokol xabarlarini samarali yig'ish imkonini beradigan ko'plab qiziqarli algoritmlarni amalga oshirishga imkon beradi. .

Shunday qilib, agar siz blokcheyningizda PVRB qurayotgan bo'lsangiz, ehtimol siz BLS chegara imzolari sxemasiga ega bo'lasiz, bir nechta loyihalar allaqachon undan foydalanmoqda. Masalan, DFinity (shu yerda sxemani amalga oshiradigan etalon va shu yerda tasdiqlanadigan maxfiy almashishni amalga oshirish misoli) yoki Keep.network (bu yerda ularning tasodifiy mayoqchasi sariq qog'oz, lekin misol protokolga xizmat qiluvchi aqlli shartnoma).

PVRBni amalga oshirish

Afsuski, biz hali ham PVRB blokcheynlarida o'z xavfsizligi va barqarorligini isbotlagan tayyor protokolni ko'rmayapmiz. Protokollarning o'zi tayyor bo'lsa ham, ularni mavjud echimlarga texnik jihatdan qo'llash oson emas. Markazlashtirilgan tizimlar uchun PVRB mantiqiy emas va markazlashtirilmaganlar barcha hisoblash resurslarida qat'iy cheklangan: protsessor, xotira, saqlash, kiritish/chiqarish. PVRBni loyihalash - bu hech bo'lmaganda ba'zi hayotiy blokcheyn uchun barcha talablarga javob beradigan narsalarni yaratish uchun turli xil protokollarning kombinatsiyasi. Bitta protokol yanada samarali hisoblaydi, lekin RPlar o'rtasida ko'proq xabarlarni talab qiladi, ikkinchisi esa juda kam xabarlarni talab qiladi, ammo dalil yaratish o'nlab daqiqalar yoki hatto soatlar davom etadigan vazifa bo'lishi mumkin.

Men sifatli PVRBni tanlashda e'tiborga olishingiz kerak bo'lgan omillarni sanab o'taman:

  • Kriptografik kuch. Sizning PVRB qat'iy xolis bo'lishi kerak, bitta bitni boshqarish qobiliyati yo'q. Ba'zi sxemalarda bunday emas, shuning uchun kriptografni chaqiring
  • "Oxirgi aktyor" muammosi. Sizning PVRB bir yoki bir nechta RPni boshqaradigan tajovuzkor ikkita natijadan birini tanlashi mumkin bo'lgan hujumlarga chidamli bo'lishi kerak.
  • Protokolni sabotaj qilish muammosi. Sizning PVRB hujumlarga chidamli bo'lishi kerak, bunda bir yoki bir nechta RPni boshqaruvchi tajovuzkor tasodifiy yoki yo'qligini hal qiladi va kafolatlangan yoki unga ta'sir qilish ehtimoli berilgan bo'lishi mumkin.
  • Xabarlar soni muammosi. Sizning RP-laringiz blokcheyn-ga minimal xabarlar yuborishi va "Men ba'zi ma'lumotlarni yubordim, ma'lum bir ishtirokchidan javob kutyapman" kabi holatlar kabi sinxron harakatlardan iloji boricha qochishi kerak. P2p tarmoqlarida, ayniqsa geografik jihatdan tarqoq tarmoqlarda siz tezkor javobga ishonmasligingiz kerak
  • Hisoblashning murakkabligi muammosi. PVRB zanjirining istalgan bosqichini tekshirish juda oson bo'lishi kerak, chunki u tarmoqning barcha to'liq mijozlari tomonidan amalga oshiriladi. Agar amalga oshirish aqlli shartnoma yordamida amalga oshirilsa, unda tezlik talablari juda qattiq
  • Foydalanish imkoniyati va jonlilik muammosi. Sizning PVRB tarmoqning bir qismi ma'lum vaqt davomida ishlamay qolgan va RPning bir qismi shunchaki ishlashni to'xtatadigan vaziyatlarga chidamli bo'lishga intilishi kerak.
  • Ishonchli sozlash va kalitlarni dastlabki taqsimlash muammosi. Agar sizning PVRB protokolning asosiy sozlamalaridan foydalansa, bu alohida katta va jiddiy hikoyadir. Bu yerga misol. Agar ishtirokchilar protokolni boshlashdan oldin bir-birlariga kalitlarini aytishlari kerak bo'lsa, ishtirokchilar tarkibi o'zgarsa, bu ham muammodir.
  • Rivojlanish muammolari. Kerakli tillardagi kutubxonalarning mavjudligi, ularning xavfsizligi va ishlashi, ommabopligi, kompleks testlar va boshqalar.

Masalan, chegara chegarasidagi BLS imzolari muhim muammoga ega - ish boshlashdan oldin ishtirokchilar kalitlarni bir-birlariga tarqatishlari kerak, bunda chegara ishlayotgan guruhni tashkil qilishlari kerak. Bu shuni anglatadiki, markazlashtirilmagan tarmoqda kamida bitta almashinuv raundini kutish kerak bo'ladi va ishlab chiqarilgan rand, masalan, o'yinlarda deyarli real vaqtda zarur ekanligini hisobga olsak, bu ushbu bosqichda protokolni sabotaj qilish mumkinligini anglatadi. , va pol sxemasining afzalliklari yo'qoladi. Bu muammo avvalgilariga qaraganda ancha sodda, ammo baribir omonat qo'yish va talablarga rioya qilmagan ishtirokchilardan mablag'larni olib qo'yish (kesish) orqali iqtisodiy jihatdan himoya qilinishi kerak bo'lgan chegara guruhlarini shakllantirishning alohida tartibini ishlab chiqishni talab qiladi. protokol. Bundan tashqari, maqbul darajadagi xavfsizlik bilan BLS tekshiruvi, masalan, standart EOS yoki Ethereum tranzaksiyalariga mos kelmaydi - tekshirish uchun vaqt etarli emas. Shartnoma kodi virtual mashina tomonidan bajariladigan WebAssembly yoki EVM. Kriptografik funktsiyalar mahalliy (hali) amalga oshirilmagan va odatiy kriptografik kutubxonalarga qaraganda o'nlab marta sekinroq ishlaydi. Ko'pgina protokollar oddiygina kalit hajmiga asoslangan talablarga javob bermaydi, masalan, RSA uchun 1024 va 2048 bit, Bitcoin va Ethereumdagi standart tranzaksiya imzosidan 4-8 baravar katta.

Turli xil dasturlash tillarida ilovalarning mavjudligi ham muhim rol o'ynaydi - ular kam, ayniqsa yangi protokollar uchun. Konsensusga integratsiyalashuv varianti platforma tilida protokol yozishni talab qiladi, shuning uchun siz kodni Go for geth, Rust for Parity, EOS uchun C++ da qidirishingiz kerak bo'ladi. Har bir inson JavaScript kodini izlashi kerak bo'ladi va JavaScript va kriptografiya unchalik yaqin do'st emasligi sababli, WebAssembly yordam beradi, bu endi shubhasiz navbatdagi muhim Internet standarti ekanligini da'vo qiladi.

xulosa

Umid qilamanki, avvalgisida maqola Men sizni blokcheynda tasodifiy raqamlarni yaratish markazlashtirilmagan tarmoqlar hayotining ko'p jihatlari uchun juda muhim ekanligiga ishontirishga muvaffaq bo'ldim va ushbu maqola bilan men bu vazifa juda ambitsiyali va qiyin ekanligini ko'rsatdim, ammo yaxshi echimlar allaqachon mavjud. Umuman olganda, protokolning yakuniy dizayni faqat sozlashdan tortib nosozlik emulyatsiyasigacha bo'lgan barcha jihatlarni hisobga olgan katta sinovlarni o'tkazgandan so'ng mumkin, shuning uchun siz tayyor retseptlarni jamoaviy hujjatlar va maqolalarda topa olmaysiz va biz buni albatta qilmaymiz. Keyingi yoki ikki yil ichida qaror qabul qiling, "buni shunday qiling, to'g'ri" deb yozing.

Xayr, ishlab chiqilayotgan blokcheyndagi PVRB uchun hayo, biz chegaraviy BLS imzolaridan foydalanishga qaror qildik, biz PVRBni konsensus darajasida amalga oshirishni rejalashtirmoqdamiz, chunki aqlli shartnomalarda maqbul darajadagi xavfsizlikni tekshirish hali mumkin emas. Biz bir vaqtning o'zida ikkita sxemadan foydalanishimiz mumkin: birinchidan, uzoq muddatli random_seed yaratish uchun qimmat maxfiy almashish, keyin biz uni deterministik chegara BLS imzolari yordamida yuqori chastotali tasodifiy yaratish uchun asos sifatida ishlatamiz, ehtimol biz o'zimizni faqat shu bilan cheklaymiz. sxemalardan biri. Afsuski, protokol qanday bo'lishini oldindan aytishning iloji yo'q; yagona yaxshi narsa shundaki, fanda bo'lgani kabi, muhandislik muammolarida ham salbiy natija ham natijadir va muammoni hal qilish uchun har bir yangi urinish bu uchun yana bir qadamdir. muammoga aloqador har bir kishining tadqiqoti. Biznes talablariga javob berish uchun biz aniq amaliy muammoni hal qilamiz - o'yin ilovalarini ishonchli entropiya manbai bilan ta'minlash, shuning uchun biz blokcheynning o'ziga, xususan, zanjirning yakuniyligi va tarmoqni boshqarish masalalariga ham e'tibor qaratishimiz kerak.

Va biz hali blokcheynlarda tasdiqlangan chidamli PVRBni ko'rmagan bo'lsak ham, u haqiqiy ilovalar, bir nechta tekshiruvlar, yuklar va, albatta, haqiqiy hujumlar tomonidan sinovdan o'tish uchun etarli vaqt davomida ishlatilgan, ammo mumkin bo'lgan yo'llar soni buni tasdiqlaydi. yechim mavjud va bu algoritmlardan qaysi biri muammoni oxir-oqibat hal qiladi. Natijalarni baham ko'rishdan va muhandislarga bir xil rake ikki marta qadam bosmaslikka imkon beruvchi maqolalar va kodlar uchun ushbu masala ustida ishlayotgan boshqa jamoalarga minnatdorchilik bildirishdan xursand bo'lamiz.

Shunday qilib, markazlashtirilmagan tasodifiy dizaynni yaratadigan dasturchi bilan uchrashganingizda, diqqatli va g'amxo'r bo'ling va agar kerak bo'lsa, psixologik yordam ko'rsating :)

Manba: www.habr.com

a Izoh qo'shish