Պատահական թվեր և ապակենտրոնացված ցանցեր. գործնական կիրառություններ

Ներածություն

«Պատահական թվերի ստեղծումը չափազանց կարևոր է պատահականությանը թողնելու համար»:
Ռոբերտ Քավու, 1970 թ

Այս հոդվածը նվիրված է լուծումների գործնական կիրառմանը, օգտագործելով կոլեկտիվ պատահական թվերի ստեղծումը անվստահելի միջավայրում: Մի խոսքով, ինչպես և ինչու է պատահականությունն օգտագործվում բլոկչեյններում, և մի փոքր այն մասին, թե ինչպես կարելի է տարբերել «լավ» պատահականը «վատից»: Իսկապես պատահական թվի ստեղծումը չափազանց բարդ խնդիր է, նույնիսկ մեկ համակարգչի վրա, և այն երկար ժամանակ ուսումնասիրվել է կրիպտոգրաֆիստների կողմից: Դե, ապակենտրոնացված ցանցերում պատահական թվերի ստեղծումն էլ ավելի բարդ և կարևոր է:

Հենց ցանցերում, որտեղ մասնակիցները միմյանց չեն վստահում, անվիճելի պատահական թվեր ստեղծելու ունակությունը մեզ թույլ է տալիս արդյունավետորեն լուծել շատ կարևոր խնդիրներ և զգալիորեն բարելավել առկա սխեմաները: Ընդ որում, խաղամոլությունն ու վիճակախաղն այստեղ թիվ մեկ նպատակը չեն, ինչպես դա սկզբում կարող է թվալ անփորձ ընթերցողին։

Պատահական թվերի ստեղծում

Համակարգիչներն իրենք չեն կարող պատահական թվեր ստեղծել, նրանք դա անելու համար արտաքին օգնության կարիք ունեն: Համակարգիչը կարող է որոշակի պատահական արժեք ստանալ, օրինակ, մկնիկի շարժումներից, օգտագործվող հիշողության քանակից, պրոցեսորի կապում գտնվող շեղվող հոսանքներից և շատ այլ աղբյուրներից, որոնք կոչվում են էնտրոպիայի աղբյուրներ: Այս արժեքներն իրենք ամբողջովին պատահական չեն, քանի որ դրանք գտնվում են որոշակի տիրույթում կամ ունեն փոփոխությունների կանխատեսելի օրինաչափություն: Նման թվերը տվյալ տիրույթում իսկապես պատահական թվի վերածելու համար դրանց վրա կիրառվում են կրիպտոտրանսֆորմացիաներ՝ էնտրոպիայի աղբյուրի անհավասար բաշխված արժեքներից միատեսակ բաշխված կեղծ պատահական արժեքներ ստանալու համար: Ստացված արժեքները կոչվում են կեղծ պատահական, քանի որ դրանք իրականում պատահական չեն, այլ դետերմինիստականորեն բխում են էնտրոպիայից: Ցանկացած լավ գաղտնագրային ալգորիթմ, երբ գաղտնագրում է տվյալները, արտադրում է գաղտնագրային տեքստեր, որոնք վիճակագրորեն պետք է չտարբերվեն պատահական հաջորդականությունից, այնպես որ պատահականություն ստեղծելու համար կարող եք վերցնել էնտրոպիայի աղբյուր, որն ապահովում է արժեքների միայն լավ կրկնելիություն և անկանխատեսելիություն նույնիսկ փոքր միջակայքում: աշխատանքի մնացած մասը ցրում և խառնում է բիթերը: Ստացված արժեքը կվերցվի գաղտնագրման ալգորիթմի կողմից:

Համառոտ կրթական ծրագիրն ավարտելու համար կավելացնեմ, որ նույնիսկ մեկ սարքի վրա պատահական թվեր ստեղծելը մեր տվյալների անվտանգության ապահովման հիմնասյուներից մեկն է:Գեներացված կեղծ պատահական թվերն օգտագործվում են տարբեր ցանցերում անվտանգ կապեր հաստատելիս՝ գեներացնելու համար: գաղտնագրման բանալիներ՝ բեռի հավասարակշռման, ամբողջականության մոնիտորինգի և շատ այլ ծրագրերի համար: Շատ արձանագրությունների անվտանգությունը կախված է հուսալի, արտաքինից անկանխատեսելի պատահականություն ստեղծելու, այն պահելու և մինչև արձանագրության հաջորդ քայլը չբացահայտելու կարողությունից, հակառակ դեպքում անվտանգությունը կվտանգի: Կեղծ պատահական արժեքների գեներատորի վրա հարձակումը չափազանց վտանգավոր է և անմիջապես սպառնում է բոլոր ծրագրային ապահովմանը, որոնք օգտագործում են պատահականության ստեղծում:

Այս ամենը դուք պետք է իմանաք, եթե կրիպտոգրաֆիայի հիմնական դասընթաց եք անցել, ուստի եկեք շարունակենք ապակենտրոնացված ցանցերի մասին:

Պատահական բլոկչեյններում

Առաջին հերթին ես կխոսեմ խելացի պայմանագրերի աջակցությամբ բլոկչեյնների մասին, նրանք են, ովքեր կարող են լիովին օգտվել բարձրորակ, անհերքելի պատահականության ընձեռած հնարավորություններից։ Ավելին, հակիրճության համար ես այս տեխնոլոգիան կանվանեմ «Հանրային ստուգվող պատահական փարոսներ» կամ PVRB: Քանի որ բլոկչեյնները ցանցեր են, որոնցում տեղեկատվությունը կարող է ստուգվել ցանկացած մասնակցի կողմից, անվանման հիմնական մասը «Հանրային ստուգելի» է, այսինքն. Յուրաքանչյուրը կարող է օգտագործել հաշվարկներ՝ ապացույց ստանալու համար, որ բլոկչեյնում տեղադրված համարը ունի հետևյալ հատկությունները.

  • Արդյունքը պետք է ունենա ապացուցելի միատեսակ բաշխում, այսինքն՝ հիմնված լինի ապացուցելիորեն ուժեղ ծածկագրության վրա:
  • Հնարավոր չէ վերահսկել արդյունքի որևէ բիթ: Արդյունքում, արդյունքը հնարավոր չէ նախապես կանխատեսել։
  • Դուք չեք կարող սաբոտաժի ենթարկել գեներացման արձանագրությունը՝ չմասնակցելով արձանագրությանը կամ ցանցը ծանրաբեռնելով հարձակման հաղորդագրություններով
  • Վերոնշյալ բոլորը պետք է դիմացկուն լինեն արձանագրության անբարեխիղճ մասնակիցների թույլատրելի քանակի (օրինակ՝ մասնակիցների 1/3-ի) համաձայնության:

Անվտանգության անցք է, որ մասնակիցների աննշան խմբի համաձայնության գալը նույնիսկ վերահսկվող զույգ/կենտ պատահականություն առաջացնելու ցանկացած հնարավորություն: Խմբի ցանկացած հնարավորություն՝ կասեցնել պատահականության թողարկումը, անվտանգության անցք է: Ընդհանուր առմամբ, խնդիրները շատ են, և այս գործը հեշտ գործ չէ...

Թվում է, թե PVRB-ի համար ամենակարևոր հավելվածը տարբեր խաղերն են, վիճակախաղերը և ընդհանրապես ցանկացած տեսակի մոլախաղերը բլոկչեյնում։ Իսկապես, սա կարևոր ուղղություն է, բայց բլոկչեյններում պատահականությունն ավելի կարևոր կիրառություններ ունի։ Եկեք նայենք նրանց:

Համաձայնության ալգորիթմներ

PVRB-ն հսկայական դեր է խաղում ցանցային կոնսենսուսի կազմակերպման գործում: Բլոկչեյններում գործարքները պաշտպանված են էլեկտրոնային ստորագրությամբ, ուստի «գործարքի վրա հարձակումը» միշտ բլոկում (կամ մի քանի բլոկում) գործարքի ներառում/բացառում է: Իսկ կոնսենսուսի ալգորիթմի հիմնական խնդիրն է համաձայնեցնել այդ գործարքների հերթականությունը և այդ գործարքները ներառող բլոկների կարգը։ Նաև իրական բլոկչեյնների համար անհրաժեշտ հատկությունը վերջնականությունն է՝ ցանցի կարողությունը համաձայնելու, որ շղթան մինչև վերջնական բլոկը վերջնական է և երբեք չի բացառվի նոր պատառաքաղի հայտնվելու պատճառով: Սովորաբար, որպեսզի համաձայնվենք, որ բլոկը վավեր է և, որ ամենակարևորը, վերջնական է, անհրաժեշտ է ստորագրություններ հավաքել բլոկ արտադրողների մեծամասնությունից (այսուհետ՝ BP՝ բլոկ արտադրողներ), ինչը պահանջում է առնվազն բլոկ շղթայի առաքում։ բոլոր BP-ներին և ստորագրությունների բաշխում բոլոր BP-ների միջև: Քանի որ BP-ների թիվը մեծանում է, ցանցում անհրաժեշտ հաղորդագրությունների քանակը աճում է էքսպոնենցիայով, հետևաբար, վերջնականություն պահանջող կոնսենսուսի ալգորիթմները, որոնք օգտագործվում են, օրինակ, Hyperledger pBFT կոնսենսուսում, չեն աշխատում պահանջվող արագությամբ՝ սկսած մի քանի տասնյակ BP-ներից, որոնք պահանջում են. հսկայական թվով կապեր.

Եթե ​​ցանցում կա անհերքելի և ազնիվ PVRB, ապա նույնիսկ ամենապարզ մոտարկումով կարելի է դրա հիման վրա ընտրել բլոկ արտադրողներից մեկին և նրան նշանակել որպես «առաջնորդ» արձանագրության մեկ փուլի ընթացքում։ Եթե ​​ունենք N բլոկ արտադրողները, որոնցից M: M > 1/2 N ազնիվ են, մի գրաքննեք գործարքները և մի շեղեք շղթան «կրկնակի ծախսում» հարձակում իրականացնելու համար, այնուհետև միատեսակ բաշխված չվիճարկվող PVRB-ի օգտագործումը թույլ կտա ազնիվ առաջնորդ ընտրել հավանականությամբ: M / N (M / N > 1/2). Եթե ​​յուրաքանչյուր առաջնորդի նշանակվի իր ժամանակային միջակայքը, որի ընթացքում նա կարող է ստեղծել բլոկ և հաստատել շղթան, և այդ միջակայքերը ժամանակի մեջ հավասար են, ապա ազնիվ BP-ների բլոկ շղթան ավելի երկար կլինի, քան չարամիտ BP-ների կողմից ձևավորված շղթան և կոնսենսուսը: Ալգորիթմը հիմնված է շղթայի երկարության վրա, պարզապես կվերացնի «վատը»: Յուրաքանչյուր BP-ին հավասար ժամանակ հատկացնելու այս սկզբունքը առաջին անգամ կիրառվել է Graphene-ում (EOS-ի նախորդը) և թույլ է տալիս բլոկների մեծ մասը փակել մեկ ստորագրությամբ, ինչը զգալիորեն նվազեցնում է ցանցի ծանրաբեռնվածությունը և թույլ է տալիս այս կոնսենսուսին աշխատել չափազանց արագ և անշեղորեն. Այնուամենայնիվ, EOS ցանցն այժմ ստիպված է օգտագործել հատուկ բլոկներ (Last Irreversible Block), որոնք հաստատվում են 2/3 BP-ի ստորագրություններով: Այս բլոկները ծառայում են վերջնականության ապահովմանը (շղթայական պատառաքաղի անհնարինությունը, որը սկսվում է վերջին Վերջին անշրջելի բլոկից առաջ):

Նաև իրական իրականացումներում արձանագրության սխեման ավելի բարդ է. առաջարկվող բլոկների համար քվեարկությունն իրականացվում է մի քանի փուլով՝ ցանցը պահպանելու համար՝ բացակայող բլոկների և ցանցի հետ կապված խնդիրների դեպքում, բայց նույնիսկ դա հաշվի առնելով՝ PVRB օգտագործող կոնսենսուսի ալգորիթմները պահանջում են. զգալիորեն ավելի քիչ հաղորդագրություններ BP-ների միջև, ինչը հնարավորություն է տալիս դրանք ավելի արագ դարձնել, քան ավանդական PVFT-ն կամ դրա տարբեր փոփոխությունները:

Նման ալգորիթմների ամենահայտնի ներկայացուցիչը. Մերոնք Կարդանոյի թիմից, որն ասում են, որ մաթեմատիկորեն ապացուցելի է BP-ի համաձայնության դեմ:

Ouroboros-ում PVRB-ն օգտագործվում է այսպես կոչված «BP · ժամանակացույցը» սահմանելու համար՝ ժամանակացույց, ըստ որի յուրաքանչյուր BP-ին հատկացվում է բլոկի հրապարակման իր սեփական ժամանակացույցը: PVRB-ի օգտագործման մեծ առավելությունը BP-ների ամբողջական «հավասարությունն» է (ըստ դրանց հաշվեկշռի չափի): PVRB-ի ամբողջականությունը երաշխավորում է, որ վնասակար BP-ները չեն կարող վերահսկել ժամանակի ժամանակացույցի պլանավորումը և, հետևաբար, չեն կարող շահարկել շղթան՝ նախապես պատրաստելով և վերլուծելով շղթայի պատառաքաղները, և պատառաքաղ ընտրելու համար բավական է պարզապես ապավինել երկարության վրա: շղթա՝ առանց BP-ի «օգտակարությունը» և դրա բլոկների «քաշը» հաշվարկելու բարդ եղանակներ օգտագործելու:

Ընդհանուր առմամբ, բոլոր այն դեպքերում, երբ պատահական մասնակիցը պետք է ընտրվի ապակենտրոնացված ցանցում, PVRB-ն գրեթե միշտ լավագույն ընտրությունն է, այլ ոչ թե որոշիչ տարբերակ, որը հիմնված է, օրինակ, բլոկի հեշի վրա: Առանց PVRB-ի, մասնակցի ընտրության վրա ազդելու կարողությունը հանգեցնում է հարձակումների, որոնցում հարձակվողը կարող է ընտրել մի քանի ֆյուչերսներից՝ ընտրել հաջորդ կոռումպացված մասնակցին կամ միանգամից մի քանիսին, որպեսզի ապահովի որոշման մեջ ավելի մեծ մասնաբաժին: PVRB-ի օգտագործումը վարկաբեկում է այս տեսակի հարձակումները:

Սանդղակավորում և բեռի հավասարակշռում

PVRB-ն կարող է նաև մեծ օգուտ բերել այնպիսի առաջադրանքներում, ինչպիսիք են բեռի կրճատումը և վճարման մասշտաբը: Սկզբից իմաստ ունի ծանոթանալ հոդվածներ Rivesta «Էլեկտրոնային վիճակախաղի տոմսերը որպես միկրովճարումներ»: Ընդհանուր գաղափարն այն է, որ վճարողից ստացողին 100 1c վճարումներ կատարելու փոխարեն, դուք կարող եք խաղալ ազնիվ վիճակախաղ՝ 1$ = 100c մրցանակով, որտեղ վճարողը բանկին տալիս է իր 1 «վիճակախաղի տոմսերից» մեկը յուրաքանչյուրի համար։ 100c վճարում. Այս տոմսերից մեկը շահում է 1 դոլարանոց բանկա, և հենց այս տոմսը ստացողը կարող է գրանցել բլոկչեյնում: Ամենակարևորն այն է, որ մնացած 99 տոմսերը փոխանցվում են ստացողի և վճարողի միջև առանց որևէ արտաքին մասնակցության, մասնավոր ալիքով և ցանկացած ցանկալի արագությամբ։ Emercoin ցանցում այս սխեմայի վրա հիմնված արձանագրության լավ նկարագրությունը կարելի է կարդալ այստեղ.

Այս սխեման ունի մի քանի խնդիրներ, օրինակ՝ ստացողը կարող է դադարեցնել վճարողին սպասարկումը շահող տոմս ստանալուց անմիջապես հետո, սակայն շատ հատուկ հավելվածների դեպքում, ինչպիսիք են րոպեավճարը կամ ծառայությունների էլեկտրոնային բաժանորդագրությունը, դրանք կարող են անտեսվել: Հիմնական պահանջը, իհարկե, վիճակախաղի ամբողջականությունն է, և դրա իրականացման համար բացարձակապես անհրաժեշտ է PVRB:

Պատահական մասնակցի ընտրությունը չափազանց կարևոր է նաև փոխանակման արձանագրությունների համար, որոնց նպատակն է հորիզոնական մասշտաբել բլոկային շղթան՝ թույլ տալով տարբեր BP-ներին մշակել միայն իրենց գործարքների շրջանակը: Սա չափազանց բարդ խնդիր է, հատկապես բեկորների միաձուլման ժամանակ անվտանգության առումով: Պատահական BP-ի արդար ընտրությունը որոշակի հատվածի համար պատասխանատուներին նշանակելու նպատակով, ինչպես կոնսենսուսային ալգորիթմներում, նույնպես PVRB-ի խնդիրն է: Կենտրոնացված համակարգերում բեկորները նշանակվում են հավասարակշռողի կողմից, այն պարզապես հաշվարկում է հեշը հարցումից և ուղարկում այն ​​պահանջվող կատարողին: Բլոկչեյններում այս հանձնարարության վրա ազդելու ունակությունը կարող է հանգեցնել կոնսենսուսի վրա հարձակման: Օրինակ, գործարքների բովանդակությունը կարող է վերահսկվել հարձակվողի կողմից, նա կարող է վերահսկել, թե որ գործարքներն են գնում դեպի իր վերահսկած բեկորը և մանիպուլյացիայի ենթարկում դրա բլոկների շղթան: Դուք կարող եք կարդալ Ethereum-ում առաջադրանքների փոխանակման համար պատահական թվերի օգտագործման խնդրի քննարկում այստեղ
Sharding-ը բլոկչեյնի ոլորտում ամենահավակնոտ և լուրջ խնդիրներից է, որի լուծումը թույլ կտա կառուցել ֆանտաստիկ կատարողականությամբ և ծավալով ապակենտրոնացված ցանցեր: PVRB-ն այն լուծելու կարևոր բլոկներից մեկն է միայն:

Խաղեր, տնտեսական արձանագրություններ, արբիտրաժ

Պատահական թվերի դերը խաղերի ոլորտում դժվար է գերագնահատել: Բացահայտ օգտագործումը առցանց կազինոներում և անուղղակի օգտագործումը խաղացողի գործողությունների հետևանքները հաշվարկելիս բոլորը չափազանց բարդ խնդիրներ են ապակենտրոնացված ցանցերի համար, որտեղ հնարավոր չէ հույս դնել պատահականության կենտրոնական աղբյուրի վրա: Բայց պատահական ընտրությունը կարող է նաև լուծել բազմաթիվ տնտեսական խնդիրներ և օգնել ստեղծել ավելի պարզ և արդյունավետ արձանագրություններ: Ենթադրենք, որ մեր արձանագրության մեջ կան վեճեր որոշ էժան ծառայությունների համար վճարման վերաբերյալ, և այդ վեճերը բավականին հազվադեպ են տեղի ունենում: Այս դեպքում, եթե կա անվիճելի PVRB, հաճախորդները և վաճառողները կարող են պայմանավորվել վեճերը լուծել պատահականորեն, բայց տվյալ հավանականությամբ: Օրինակ՝ 60% հավանականությամբ հաճախորդը շահում է, իսկ 40% հավանականությամբ՝ վաճառողը։ Այս մոտեցումը, որն առաջին տեսանկյունից անհեթեթ է, թույլ է տալիս ավտոմատ կերպով լուծել վեճերը՝ շահումների/կորուստների ճշգրիտ կանխատեսելի մասնաբաժնով, ինչը երկու կողմերին էլ հարմար է առանց երրորդ կողմի մասնակցության և ժամանակի ավելորդ վատնման: Ավելին, հավանականության հարաբերակցությունը կարող է դինամիկ լինել և կախված լինել որոշ գլոբալ փոփոխականներից: Օրինակ, եթե ընկերությունը լավ է աշխատում, ունի վեճերի քիչ քանակ և բարձր շահութաբերություն, ընկերությունը կարող է ավտոմատ կերպով փոխել վեճի լուծման հավանականությունը դեպի հաճախորդակենտրոնություն, օրինակ՝ 70/30 կամ 80/20, և հակառակը, եթե վեճերը մեծ գումարներ են խլում և խարդախ կամ անբավարար են, կարող եք հավանականությունը տեղափոխել այլ ուղղությամբ:

Բազմաթիվ հետաքրքիր ապակենտրոնացված արձանագրություններ, ինչպիսիք են խորհրդանշական կառավարվող գրանցամատյանները, կանխատեսման շուկաները, կապի կորերը և շատ ուրիշներ, տնտեսական խաղեր են, որոնցում լավ վարքագիծը պարգևատրվում է, իսկ վատ վարքագիծը պատժվում է: Նրանք հաճախ պարունակում են անվտանգության խնդիրներ, որոնց դեպքում պաշտպանությունները հակասում են միմյանց: Այն, ինչը պաշտպանված է միլիարդավոր նշաններով «կետերի» հարձակումից («մեծ խաղադրույք») խոցելի է փոքր մնացորդներով հազարավոր հաշիվների հարձակումներից («սիբիլ ցց») և մեկ հարձակման դեմ ձեռնարկված միջոցների, ինչպիսիք են՝ ոչ գծային վճարները, որոնք ստեղծվում են մեծ մասնաբաժնի հետ աշխատանքը ոչ շահավետ դարձնելու համար, սովորաբար վարկաբեկվում են մեկ այլ հարձակման պատճառով: Քանի որ խոսքը տնտեսական խաղի մասին է, կարելի է նախօրոք հաշվարկել համապատասխան վիճակագրական կշիռները, և պարզապես հանձնաժողովները փոխարինել պատահականությամբ՝ համապատասխան բաշխմամբ։ Նման հավանականական հանձնաժողովներն իրականացվում են չափազանց պարզ, եթե բլոկչեյնն ունի պատահականության հուսալի աղբյուր և չի պահանջում որևէ բարդ հաշվարկ, ինչը դժվարացնում է կյանքը ինչպես կետերի, այնպես էլ սիբիլների համար:
Միևնույն ժամանակ, անհրաժեշտ է շարունակել հիշել, որ այս պատահականության մեջ մեկ բիթային հսկողությունը թույլ է տալիս խաբել՝ նվազեցնելով և կիսով չափ մեծացնելով հավանականությունները, ուստի ազնիվ PVRB-ն նման արձանագրությունների ամենակարևոր բաղադրիչն է:

Որտեղ գտնել ճիշտ պատահական:

Տեսականորեն, ապակենտրոնացված ցանցերում արդար պատահական ընտրությունը դարձնում է գրեթե ցանկացած արձանագրություն, որը ապացուցված է, որ ապահով է դավադրության դեմ: Հիմնավորումը բավականին պարզ է. եթե ցանցը համաձայնում է մեկ 0 կամ 1 բիթին, և մասնակիցների կեսից պակասն անազնիվ է, ապա, եթե բավարար կրկնություններ լինեն, ցանցը երաշխավորված է կոնսենսուսի հասնել այդ բիթում ֆիքսված հավանականությամբ: Պարզապես այն պատճառով, որ ազնիվ պատահականը կընտրի 51 մասնակիցներից 100-ին ժամանակի 51%-ը: Բայց սա տեսականորեն, քանի որ... իրական ցանցերում անվտանգության այնպիսի մակարդակ ապահովելու համար, ինչպիսին հոդվածներում է, պահանջվում են բազմաթիվ հաղորդագրություններ հոսթների միջև, բարդ բազմաբաց գաղտնագրություն, և արձանագրության ցանկացած բարդություն անմիջապես ավելացնում է նոր հարձակման վեկտորներ:
Այդ իսկ պատճառով մենք դեռ չենք տեսնում ապացուցված դիմացկուն PVRB բլոկչեյններում, որը բավական ժամանակ կօգտագործվեր իրական հավելվածների, բազմաթիվ աուդիտների, բեռների և, իհարկե, իրական հարձակումների միջոցով փորձարկվելու համար, առանց որոնց դժվար է անվանել արտադրանքը իսկապես անվտանգ է:

Այնուամենայնիվ, կան մի քանի խոստումնալից մոտեցումներ, դրանք տարբերվում են շատ մանրամասներով, և դրանցից մեկը անպայման կլուծի խնդիրը։ Ժամանակակից հաշվողական ռեսուրսների շնորհիվ կրիպտոգրաֆիկ տեսությունը կարող է բավականին խելամտորեն վերածվել գործնական կիրառությունների: Ապագայում մենք ուրախ կլինենք խոսել PVRB-ի ներդրման մասին. այժմ դրանցից մի քանիսը կան, որոնցից յուրաքանչյուրն ունի իր կարևոր հատկությունները և իրականացման առանձնահատկությունները, և յուրաքանչյուրի հետևում կա լավ գաղափար: Պատահականության մեջ ներգրավված շատ թիմեր չկան, և նրանցից յուրաքանչյուրի փորձը չափազանց կարևոր է բոլորի համար: Հուսով ենք, որ մեր տեղեկատվությունը թույլ կտա մյուս թիմերին ավելի արագ առաջ շարժվել՝ հաշվի առնելով իրենց նախորդների փորձը։

Source: www.habr.com

Добавить комментарий