ایا دا ممکنه ده چې تصادفي شمیرې رامینځته کړو که چیرې موږ په یو بل باور ونه کړو؟ 1 برخه

اې حبره!

په دې مقاله کې به زه د هغو ګډونوالو لخوا چې په یو بل باور نه کوي د سیډو - تصادفي شمیرو د نسل په اړه وغږیږم. لکه څنګه چې موږ به لاندې وګورو، د "تقریبا" ښه جنراتور پلي کول خورا ساده دي، مګر یو ډیر ښه ستونزمن دی.

ولې دا اړینه ده چې د ګډون کونکو ترمنځ تصادفي شمیرې رامینځته کړي چې په یو بل باور نلري؟ د غوښتنلیک یوه ساحه غیر متمرکز غوښتنلیکونه دي. د مثال په توګه، یو غوښتنلیک چې د ګډون کونکي څخه شرط مني او یا د 49٪ احتمال سره مقدار دوه چنده کوي یا د 51٪ احتمال سره لیرې کوي یوازې هغه وخت به کار وکړي چې دا په بې طرفه توګه یو تصادفي شمیر ترلاسه کولی شي. که یو برید کونکی کولی شي د تصادفي شمیرې جنراتور پایلې اغیزه وکړي ، او حتی په غوښتنلیک کې د تادیې ترلاسه کولو چانس یو څه ډیر کړي ، نو هغه به په اسانۍ سره ویجاړ کړي.

کله چې موږ د توزیع شوي تصادفي شمیر تولید پروتوکول ډیزاین کوو، موږ غواړو چې دا درې ځانګړتیاوې ولري:

  1. هغه باید بې طرفه وي. په بل عبارت، هیڅ ګډون کوونکی باید په هیڅ ډول د تصادفي شمیرې جنراتور په پایله اغیزه ونکړي.

  2. هغه باید غیر متوقع وي. په بل عبارت، هیڅ ګډون کوونکی باید د دې توان ونلري چې وړاندوینه وکړي چې کوم شمیر به تولید شي (یا د هغې کوم ملکیت معلوم کړي) مخکې له دې چې تولید شي.

  3. پروتوکول باید د اعتبار وړ وي، دا د دې حقیقت په وړاندې مقاومت لري چې د ګډون کوونکو یو ټاکلی سلنه له شبکې څخه جلا کیږي یا په قصدي توګه د پروتوکول د بندولو هڅه کوي.

پدې مقاله کې به موږ دوه طریقې وګورو: RANDAO + VDF او د پاکولو کوډونو طریقه. په راتلونکې برخه کې، موږ به د حد د لاسلیکونو پراساس طریقه په تفصیل سره وڅیړو.

مګر لومړی، راځئ چې یو ساده او عام کارول شوي الګوریتم وګورو چې د اعتبار وړ، غیر متوقع، مګر تعصب دی.

RANDAO

RANDAO خورا ساده دی او له همدې امله د تصادفي تولید لپاره خورا عام کارول کیږي. د شبکې ټول برخه اخیستونکي لومړی په محلي ډول یو غیر منظم شمیره غوره کوي، بیا هر ګډونوال د ټاکل شوي شمیره هش لیږي. بیا، ګډونوال په وار وار سره خپل غوره شوي شمیرې څرګندوي او په ښکاره شوي شمیرو کې د XOR عملیات ترسره کوي، او د دې عملیاتو پایله د پروتوکول پایله کیږي.

د شمیرو څرګندولو دمخه د هشونو خپرولو مرحله اړینه ده ترڅو برید کونکی نشي کولی د نورو ګډون کونکو شمیرو لیدلو وروسته خپله شمیره غوره کړي. دا به هغه ته اجازه ورکړي چې په حقیقت کې په واحد لاس د تصادفي شمیر جنراتور محصول وټاکي.

د پروتوکول په جریان کې، برخه اخیستونکي باید دوه ځله یوې ګډې پریکړې ته راشي (د توافق په نامه یادیږي): کله چې د ټاکل شوي شمیرو څرګندول پیل کړي، او له همدې امله د هشونو منل ودروي، او کله چې د ټاکل شوي شمیرو منل بند کړي او د تصادفي پایلې محاسبه کړي. شمیره د ګډونوالو تر منځ دا ډول پریکړې کول چې په یو بل باور نلري په خپل ځان کې یو اسانه کار نه دی، او موږ به یې په راتلونکو مقالو کې بیرته راګرځوو؛ پدې مقاله کې به موږ فرض کړو چې دا ډول توافق الګوریتم شتون لري.

کوم ملکیتونه چې موږ پورته تشریح کړل RANDAO لري؟ دا د وړاندوینې وړ نه دی، د اساسي توافق پروتوکول په څیر ورته حیاتي لري، مګر دا تعصب دی. په ځانګړې توګه، یو برید کوونکی کولی شي شبکه وڅاري، او وروسته له دې چې نور ګډون کوونکي خپلې شمیرې ښکاره کړي، هغه کولی شي خپل XOR محاسبه کړي، او پریکړه وکړي چې آیا د هغه شمیره ښکاره کړي یا نه چې پایلې یې اغیزمنې کړي. پداسې حال کې چې دا برید کونکي په یو لاس د تصادفي شمیرې جنراتور محصول ټاکلو مخه نیسي ، دا لاهم هغه ته 1 بټ نفوذ ورکوي. او که بریدګر څو ګډونوال کنټرول کړي، نو د بټونو شمیر چې دوی یې کنټرولوي د دوی تر کنټرول لاندې برخه اخیستونکو شمیر سره مساوي وي.

ایا دا ممکنه ده چې تصادفي شمیرې رامینځته کړو که چیرې موږ په یو بل باور ونه کړو؟ 1 برخه

د برید کونکو نفوذ د دې اړتیا سره خورا کم کیدی شي چې ګډون کونکي شمیرې په ترتیب سره ښکاره کړي. بیا برید کونکی به وتوانیږي یوازې په پایله اغیزه وکړي که چیرې وروستی خلاص شي. پداسې حال کې چې نفوذ د پام وړ کم دی، الګوریتم لاهم متعصب دی.

RANDAO+VDF

د RANDAO د بې طرفه کولو یوه لاره دا ده: وروسته له دې چې ټولې شمیرې څرګندې شي او XOR محاسبه شي ، د هغې پایله د فنکشن ان پټ کې تغذیه کیږي ، کوم چې محاسبه کولو لپاره خورا اوږد وخت نیسي ، مګر تاسو ته اجازه درکوي د درستیت چیک کړئ. ډیر ژر محاسبه.

(vdf_output, vdf_proof) = VDF_compute(input) // это очень медленно
correct = VDF_verify(input, vdf_output, vdf_proof) // это очень быстро

دا فنکشن د تصدیق وړ ځنډ فعالیت یا VDF په نوم یادیږي. که د وروستۍ پایلې محاسبه د شمیرې افشا کولو مرحلې څخه ډیر وخت ونیسي ، نو برید کونکی به ونشي کولی د خپل شمیر ښودلو یا پټولو اغیزې وړاندوینه وکړي ، او له همدې امله به په پایله کې د تاثیر کولو فرصت له لاسه ورکړي.

د ښه VDFs رامینځته کول خورا ستونزمن دي. پدې وروستیو کې ډیری پرمختګونه شتون لري، د بیلګې په توګه دا и دا کوم چې VDF په عمل کې ډیر عملي کړی، او Ethereum 2.0 پالن لري چې RANDAO د VDF سره په اوږد مهال کې د تصادفي شمیرې سرچینې په توګه وکاروي. د دې حقیقت سربیره چې دا طریقه غیر متوقع او غیر جانبداره ده، دا د عملي کیدو اضافي ګټې لري که چیرې لږترلږه دوه ګډون کوونکي په شبکه کې شتون ولري (فرض کړئ چې د توافق پروتوکول کارول کیږي کله چې د دومره لږ شمیر ګډون کونکو سره معامله وشي).

د دې تګلارې ترټولو لویه ننګونه د VDF داسې ترتیب کول دي چې حتی یو ګډون کوونکی د خورا ګران ځانګړي هارډویر سره به د کشف مرحلې پای ته رسیدو دمخه د VDF محاسبه کولو توان ونلري. په عین حال کې، الګوریتم باید حتی د پام وړ خوندیتوب حاشیه ولري، ووایه 10x. لاندې انځور د یو لوبغاړی لخوا برید ښیې چې یو ځانګړی ASIC لري چې هغه ته اجازه ورکوي چې د RANDAO تایید څرګندولو لپاره د ټاکل شوي وخت په پرتله ګړندی VDF پرمخ بوځي. دا ډول برخه اخیستونکی لاهم کولی شي د خپلې شمیرې په کارولو یا نه کارولو سره وروستۍ پایله محاسبه کړي ، او بیا د محاسبې پراساس ، غوره کړي چې دا وښیې یا نه.

ایا دا ممکنه ده چې تصادفي شمیرې رامینځته کړو که چیرې موږ په یو بل باور ونه کړو؟ 1 برخه

د پورته ذکر شوي VDF کورنۍ لپاره، د وقف شوي ASIC فعالیت د دودیز هارډویر په پرتله 100+ ځله لوړ کیدی شي. نو که د افشا کولو مرحله 10 ثانیې دوام وکړي، نو بیا په داسې ASIC کې حساب شوی VDF باید د 100 ثانیو څخه ډیر وخت ونیسي ترڅو د 10x خوندیتوب حاشیه ولري، او پدې توګه ورته VDF د اجناسو هارډویر کې حساب شوی باید 100x 100 ثانیې = ~ 3 ساعته وخت ونیسي.

د ایتیریم فاؤنڈیشن پالن لري چې دا ستونزه د خپل عامه، وړیا ASICs په جوړولو سره حل کړي. یوځل چې دا پیښ شي، نور ټول پروتوکولونه هم کولی شي د دې ټیکنالوژۍ څخه ګټه پورته کړي، مګر تر هغه وخته پورې به د RANDAO + VDF طریقه د پروتوکولونو لپاره د اعتبار وړ نه وي چې نشي کولی د خپلو ASICs په پراختیا کې پانګونه وکړي.

د VDF په اړه ډیری مقالې، ویډیوګانې او نور معلومات راټول شوي دا سایټ.

موږ د پاکولو کوډونه کاروو

پدې برخه کې، موږ به د تصادفي شمیرې تولید پروتوکول وګورو چې کاروي د کوډونو پاکول. دا کولی شي تر ⅓ برید کونکو برداشت کړي پداسې حال کې چې د عمل وړ پاتې کیږي، او تر ⅔ برید کونکو ته اجازه ورکوي مخکې له دې چې دوی د پایلو وړاندوینه وکړي یا اغیزه وکړي.

د پروتوکول اصلي مفکوره په لاندې ډول ده. د سادگي لپاره، راځئ چې فرض کړو چې په سمه توګه 100 ګډون کوونکي شتون لري. راځئ دا هم فرض کړو چې ټول ګډونوال په سیمه ایزه توګه ځینې شخصي کیلي لري، او د ټولو ګډون کوونکو عامه کیلي ټولو ګډونوالو ته پیژندل کیږي:

  1. هر ګډونوال په محلي توګه د اوږد تار سره راځي، دا په 67 برخو ویشي، د 100 ونډو ترلاسه کولو لپاره د پاکولو کوډونه رامینځته کوي لکه کوم 67 چې د تار بیرته ترلاسه کولو لپاره کافي وي، هر یو له 100 ونډو څخه یوه برخه اخیستونکي ته ورکوي، او دوی یې کوډ کوي. د ورته ګډون کونکي عامه کیلي. ټول کوډ شوي ونډې بیا خپریږي.

  2. برخه اخیستونکي د ځانګړو 67 ګډون کونکو څخه د کوډ شوي سیټونو موافقې ته د رسیدو لپاره یو ډول توافق کاروي.

  3. یوځل چې توافق ته ورسیږي، هر ګډون کوونکی د 67 سیټونو په هر یو کې کوډ شوي ونډې اخلي چې د دوی عامه کیلي سره کوډ شوي، ټول دا ډول ونډې ډیکرپټ کوي، او ټول دا ډول کوډ شوي ونډې خپروي.

  4. یوځل چې 67 برخه اخیستونکو مرحله (3) بشپړه کړه ، ټول موافقه شوي سیټونه د پاکولو کوډونو ملکیتونو له امله په بشپړ ډول کوډ شوي او بیا رغول کیدی شي ، او وروستۍ شمیره د لومړنیو قطارونو د XOR په توګه ترلاسه کیدی شي چې برخه اخیستونکي په (1) کې پیل کړي. .

ایا دا ممکنه ده چې تصادفي شمیرې رامینځته کړو که چیرې موږ په یو بل باور ونه کړو؟ 1 برخه

دا پروتوکول غیر جانبدار او غیر متوقع ښودل کیدی شي. نتیجه تصادفي شمیره د موافقې له رسیدو وروسته ټاکل کیږي، مګر هیڅوک ته نه پوهیږي تر هغه چې ⅔ برخه اخیستونکي د دوی عامه کیلي سره کوډ شوي برخې ډیکوډ کړي. په دې توګه، تصادفي شمیره مخکې له دې چې د بیا رغونې لپاره کافي معلومات خپاره شي ټاکل کیږي.

څه پیښیږي که چیرې په مرحله (1) کې یو برخه اخیستونکي نورو ګډون کونکو ته کوډ شوي ونډې لیږلي وي چې د ځینې تار لپاره سم د پاکولو کوډ نه وي؟ د اضافي بدلونونو پرته، مختلف برخه اخیستونکي به ونشي کولی په بشپړ ډول تار بیرته ترلاسه کړي، یا دوی به مختلف تارونه بیرته ترلاسه کړي، چې په پایله کې به مختلف ګډون کونکي مختلف تصادفي شمیره ترلاسه کړي. د دې د مخنیوي لپاره، تاسو کولی شئ لاندې کارونه ترسره کړئ: هر ګډون کوونکی، د کوډ شوي ونډو سربیره، هم حساب کوي د میرکلا ونه ټول دا ډول ونډې، او هر ګډون کوونکي ته د کوډ شوي ونډې پخپله او د مرکل د ونې ریښه، او د مرکل په ونې کې د ونډې شاملولو ثبوت لیږي. په (2) مرحله کې د اجماع په برخه کې، ګډونوال نه یوازې د سیټونو په یوه سیټ، بلکې د داسې ونو د ځانګړو ریښو په یوه ټولګه باندې موافق دي (که چیرې ځینې ګډون کوونکي د پروتوکول څخه انحراف وکړي، او د مرکل د ونې مختلف ریښې مختلف ګډون کونکو ته واستول شي، او دا ډول دوه ریښې د توافق په وخت کې ښودل شوي، د هغه قطار د پایلې په مجموعه کې شامل ندي). د توافق په پایله کې، موږ به 67 کوډ شوي لینونه او د مرکل د ونې ورته ریښې ولرو چې لږترلږه 67 برخه اخیستونکي ولري (ضروري نه وي چې ورته لینونه وړاندیز کړي)، څوک چې د هر 67 لینونو لپاره لري. د پاکولو کوډ د ونډې سره یو پیغام، او په اړونده ونې کې د دوی د ونډې پیښې ثبوت.

کله چې په (4) مرحله کې ګډون کوونکی د یو ټاکلي تار لپاره 67 بیټونه تشریح کوي او د اصلي تار د بیا جوړولو هڅه کوي، یو له اختیارونو څخه ممکن دی:

  1. تار بیرته راګرځول کیږي، او که دا بیا له منځه یوړل شي - کوډ شوی، او د مرکل ونه د محلي حساب شوي ونډو لپاره محاسبه کیږي، ریښه د هغه چا سره سمون لري چې توافق ته رسیدلی و.

  2. قطار بیا رغول شوی، مګر په محلي توګه محاسبه شوې ریښه د هغه سره سمون نلري چې په کوم کې اتفاق ته رسیدلی و.

  3. قطار بحال شوی نه دی.

دا په اسانۍ سره ښودل کیږي چې که چیرې اختیار (1) لږ تر لږه د یو ګډون کونکي لپاره پیښ شي، نو بیا اختیار (1) د ټولو ګډون کوونکو لپاره واقع شوی، او برعکس، که اختیار (2) یا (3) لږترلږه د یو ګډون کونکي لپاره پیښ شي، بیا د ټولو ګډون کونکو لپاره اختیار (2) یا (3) به پیښ شي. په دې توګه، په سیټ کې د هر قطار لپاره، یا به ټول ګډونوال په بریالیتوب سره بیرته ترلاسه کړي، یا ټول ګډون کونکي به د هغې په بیرته ترلاسه کولو کې پاتې راشي. نتیجه تصادفي شمیره بیا یوازې د قطارونو XOR ده چې ګډون کونکي یې بیرته ترلاسه کولو توان درلود.

د تختې لاسلیکونه

د تصادفي لپاره بله لاره د هغه څه کارول دي چې د BLS حد لاسلیکونو په نوم یادیږي. د حد لاسلیکونو پراساس یو تصادفي شمیره جنریټر په بشپړ ډول ورته تضمینونه لري لکه څنګه چې پورته بیان شوي د پاکولو کوډ پراساس الګوریتم ، مګر د هرې تولید شوي شمیرې لپاره د شبکې له لارې لیږل شوي پیغامونو کې د پام وړ ټیټ اسیمپټوټیک شمیر لري.

د BLS لاسلیکونه یو ډیزاین دی چې ډیری برخه اخیستونکو ته اجازه ورکوي چې د پیغام لپاره یو عام لاسلیک رامینځته کړي. دا لاسلیکونه ډیری وختونه د ځای او بینډ ویت خوندي کولو لپاره کارول کیږي د څو لاسلیکونو لیږلو ته اړتیا نلري. 

د بلاکچین پروتوکولونو کې د BLS لاسلیکونو لپاره یو عام غوښتنلیک ، د تصادفي شمیرو رامینځته کولو سربیره ، د BFT پروتوکولونو کې د بلاک لاسلیک کول دي. راځئ چې ووایو 100 برخه اخیستونکي بلاکونه جوړوي، او یو بلاک حتمي ګڼل کیږي که چیرې 67 یې لاسلیک کړي. دوی ټول کولی شي د BLS لاسلیک خپلې برخې وسپاري او ځینې موافق الګوریتم وکاروي ترڅو د دوی په 67 موافقه وکړي او بیا یې په یو BLS لاسلیک کې ضمیمه کړي. هر 67 (یا ډیرې) برخې د وروستي لاسلیک رامینځته کولو لپاره کارول کیدی شي ، کوم چې به پدې پورې اړه ولري چې 67 لاسلیکونه یوځای شوي او له همدې امله ممکن توپیر ولري ، که څه هم د 67 ګډون کونکو لخوا مختلف انتخابونه به مختلف لاسلیک رامینځته کړي ، هر ډول لاسلیک به د اعتبار وړ وي. د بلاک لپاره لاسلیک. پاتې برخه اخیستونکي بیا په شبکه کې د 67 پرځای په هر بلاک کې یوازې یو لاسلیک ترلاسه کولو او تصدیق کولو ته اړتیا لري، کوم چې په شبکه کې د پام وړ بار کموي.

دا معلومه شوه چې که هغه شخصي کلیدونه چې برخه اخیستونکي یې کاروي په یو مشخص ډول تولید شوي، نو مهمه نده چې د 67 لاسلیکونه (یا ډیر، مګر لږ نه) راټول شوي وي، پایله شوي لاسلیک به ورته وي. دا د تصادفي سرچینې په توګه کارول کیدی شي: برخه اخیستونکي لومړی په یو پیغام باندې موافقه کوي چې دوی به لاسلیک کړي (دا د RANDAO محصول یا یوازې د وروستي بلاک هش وي ، دا واقعیا مهمه نده تر هغه چې دا هر ځل بدل شي. او ثابت دی) او د دې لپاره د BLS لاسلیک جوړ کړئ. د نسل پایله به د اټکل وړ نه وي تر هغه چې 67 برخه اخیستونکي خپلې برخې چمتو کړي، او له هغې وروسته محصول مخکې له مخکې ټاکل شوی وي او نشي کولی د کوم ګډون کونکي په کړنو پورې اړه ولري.

د تصادفي لپاره دا چلند تر هغه وخته پورې د اعتبار وړ دی چې لږترلږه ⅔ آنلاین ګډون کونکي دواړه پروتوکول تعقیبوي، او بې طرفه او غیر متوقع دی تر هغه چې لږترلږه ⅓ برخه اخیستونکي پروتوکول تعقیب کړي. دا مهمه ده چې په یاد ولرئ چې یو برید کونکی چې د ⅓ څخه ډیر مګر د ⅔ څخه لږ برخه اخیستونکي کنټرولوي کولی شي پروتوکول ودروي، مګر نشي کولی د دې تولید اټکل یا اغیزه وکړي.

د تختې لاسلیکونه پخپله یوه ډیره زړه پورې موضوع ده. د مقالې په دویمه برخه کې، موږ به په تفصیل سره تحلیل کړو چې دوی څنګه کار کوي، او په حقیقت کې دا څنګه اړینه ده چې د ګډون کونکي کیلي تولید کړي ترڅو د حد لاسلیکونه د تصادفي شمیرې جنریټر په توګه وکارول شي.

په پای کې

دا مقاله د تخنیکي بلاګ مقالو لړۍ کې لومړۍ ده نژدې. NEAR د غیر متمرکز غوښتنلیکونو رامینځته کولو لپاره د بلاکچین پروتوکول او پلیټ فارم دی چې د پراختیا په اسانۍ او د پای کاروونکو لپاره د کارولو اسانتیا باندې ټینګار کوي.

د پروتوکول کوډ خلاص دی، زموږ تطبیق په Rust کې لیکل شوی، دا موندل کیدی شي دلته.

تاسو کولی شئ وګورئ چې د NEAR لپاره پرمختګ څه ډول ښکاري او په آنلاین IDE کې تجربه وکړئ دلته.

تاسو کولی شئ ټول خبرونه په روسیه کې تعقیب کړئ د ټیلیګرام ګروپ او په ګروپ په VKontakte کې، او په رسمي کې په انګلیسي ژبه ټویټر.

встреч скорых встреч!

سرچینه: www.habr.com

Add a comment