Окончателност на транзакциите в PoS мрежата

Пост за гости на HodlX  Изпратете вашата публикация

Сигурността на транзакциите в блокчейна е често взаимосвързани с проблема за окончателността на блока.

Получателят на транзакция трябва да е сигурен, че транзакцията няма да бъде обърната и изпращачът не може да извърши двойно харчене. В случай на фиатни валути окончателността е ограничена от закона, като валутата става законно платежно средство. В проектите, базирани на PoW (доказателство за работа), блокът никога не е окончателен.

Сатоши Накамото показа, че вероятността от спонтанно късо разклонение с дължина N>6 блока е незначителен, така че човек може да твърди, че биткойн има вероятностна окончателност. Изследователите обаче имат показани че блоковата окончателност всъщност е икономическа: транзакцията е окончателна, когато разходите, необходими за нейното реверсиране, са по-големи от потенциалната печалба от атаката с двойно харчене.

Понякога експертите по блокчейн твърдят, че някои блок вериги, базирани на PoS (доказателство за залог), нямат проблема с окончателността на блока, тъй като блоковете в тях са „незабавно окончателни“. Това твърдение е невярно. Форкирането е неизбежен проблем на всяка блокчейн, независимо какви правила за консенсус са избрани.

Добър пример е скорошният история с блокчейна Steem. Мрежовата общност се раздели на два взаимно враждебни лагера. Въпреки правилата за консенсус, блокчейнът беше раздвоен. Всяка група поддържаше свой собствен форк и блокираше баланси в портфейлите на своите противници. Очевидно форкът, който следваше правилата на оригиналния протокол, беше загубил дуела, тъй като пазарната му капитализация стана по-малка от пазарната капитализация на форка. По този начин можем да заключим, че окончателността в PoS blockchain има икономическа основа, подобна на тази на PoW blockchain. Разработчици на Ethereum 2.0 дял същата визия.

Те обаче твърдят, че механизмът за нарязване на протокола Casper не само предотвратява атаки с нищо, но и оскъпява двойните разходи. Независимо от това, сложната логика на протокола отваря вратата за по-сложни атаки с двойно харчене.

Опростена атака с двойно харчене

Най-простата форма на атака с двойно изразходване на PoS блокчейн за злонамерения нападател е да заключи в залози два пъти повече средства, отколкото имат честните участници. Ако злонамереният актьор Б успее да направи това в мрежа, подобна на Ethereum 2.0, тогава е вероятно, че в рамките на конкретния комитет за парчета той ще получи два пъти повече залози, отколкото честните валидатори. Така злонамереният актьор контролира ⅔ от гласовете в комитета за парчета. В Ethereum 2.0 този брой гласове е достатъчен, за да „финализира“ блока. Да предположим, че той иска да удвои да похарчи известно количество монети в този къс Той обявява транзакция, при която B изпраща монети на потребителя A. Тази транзакция попада в блока, подписан от честни валидатори. Б добавя част от гласовете си, така че блокът да бъде избран.

В консенсуса, основан на PoS, ⅔ от гласовете в комисията трябва да бъде положително, за да „финализира“ блока. Според нашето предположение половината от гласовете на нападателите са ⅓ от гласовете в комисията. Заедно с честните валидатори добавя to. Това е праг, необходим за „финализиране“ на блока. Така A научава, че транзакцията се „финализира“ и пуска стоки на B. След това B връща транзакцията, като създава вилица и я валидира, използвайки всичките си гласове в комисията. Съгласно протокола на Каспър половината от дела на Б в парчето, използвано в двете вилици, трябва да бъде намалено. Дизайнерите на протокола Casper твърдят, че това е цената на атаката.

В този опростен сценарий нападателят губи половината от дела си в парчето. Също така тази сума се равнява на дела на честните валидатори в този парче. Да приемем, че в мрежата има N парчета. Тогава нападателят губи 1 / 2N от общия си дял или 1 / N от общия залог на честните заинтересовани страни. И така, колкото повече парчета в мрежата, толкова по-евтина е атаката с двойно харчене за нападателя. Ако някой разглежда тази стойност като мярка за мрежовата сигурност, тогава защитата спада с множител N. Забележете, че това не е свойството, което се твърди, че е възможно решение на трилемата за скалируемост. Разработчиците на Ethereum 2.0 обаче твърдят, че цената на тази атака е толкова голяма, че фактор 1 / N не я влияе.

Сложни атаки с двойно харчене

Сценарият за атака, описан в предишния раздел, не е уникален. Злонамереният актьор може да извърши още по-сложни атаки с двойно харчене. Авторите на протокола Casper твърдят, че част от залога на нападателите винаги се нарязва. Вярно ли е? Отговорът е „не“. Всичко, което се случва в мрежата, се записва в блокчейна. Ако блокчейнът не съдържа никакви записи за злонамерени действия, как тогава някой може да обвини някого в злонамерено поведение?

В следващата версия на двойната атака злонамереният актьор предотвратява нарязването на залога си. За да се намали залогът, честните възли трябва да включват съответния запис на конкретната верига, който се използва за координиране на заинтересованите страни. Нарича се верига Beacon. Ако веригата Beacon следва безразрешен PoS консенсус, тогава ⅔ от гласовете на валидатора са необходими, за да включите записа в блокчейна. По този начин, докато злонамереният актьор контролира ⅓ на комитета на веригата Beacon, той може да избегне нарязване. Ако той предотврати нарязването до момента, в който залогът му се отключи, тогава атаката му е почти безплатна. Въпросът е: колко време трябва да държи залога си заключен?

В настоящата спецификация на Ethereum 2.0 залогът е заключен за половин година. Нападателят обаче може да започне атаката си в самия край на интервала за заключване на залога. Възможна корекция е задаването на интервал от време преди освобождаването, през което време залогът не може да бъде избран в комитета за парчета и след това да се използва в атака с двойно харчене. Това противодействие обаче намалява разходната ефективност на залагането. През този интервал от време всички засегнати заинтересовани страни трябва да получат компенсация за заключените си средства. И все пак тези средства са „деактивирани“ и следователно не участват в проверка на блока. Освен това злонамереният актьор може да използва тази корекция в своя полза, тъй като може внимателно да избере време за атаката си. Той може да заключва своите залози едновременно, така че залозите му да се „активират“ и „деактивират“ едновременно. За разлика от това, честните заинтересовани страни често деактивират част от своя дял и следователно се изключват от процеса на валидиране. Така че получаването на ⅔ гласа в комисиите става още по-лесно.

Може да се твърди, че в тази версия на атаката честните възли могат да забележат, че ⅓ от залога на комитета на веригата Beacon се използва за изпълнение на атаката. Те биха могли да предприемат действия, които не са изброени в протокола на Каспър, за да накажат нападателя. Първият вариант би бил опитът да се заключат повече средства в залога. Второто е да стартирате нова вилица. Първият вариант не е жизнеспособен случай, тъй като нападателят може да проведе „цензура“.

Той може да използва гласовете си в комитета на веригата Beacon, за да предотврати разпределянето на нови залози. По този начин той може да държи ⅔ от гласовете в комисиите за парчета, колкото иска. Вторият вариант е жизнеспособен, но това е злоупотреба с мрежовия протокол, приет от участниците в самото начало. Ако независим наблюдател се опита да разбере какво се случва в мрежата въз основа на данните, записани в блокчейна, тогава той няма да успее да разграничи злонамерени участници от честни валидатори.

Преди да сложим край на тази дискусия, нека разгледаме модифицирана версия на последната атака. Новата версия е комбинация от атака от далечен обсег и от атака, която не е заложена на нищо. За пореден път злонамереният актьор използва част от залога си, за да разклони парче верига. В този случай обаче той не разкрива нова верига на честни възли. След това изчаква, докато компрометираният му залог се отключи. Сега той продава своя компрометиран залог на безразсъдните участници, спира честната верига от парчета, използвайки гласовете си в комисията, и след това разкрива вилицата си пред други участници в парчето. Според протокола веригата, поддържана от честни валидатори, трябва да бъде изоставена. Така че модифицираната версия на атаката е успешна. Забележете, че залогът, използван за разклоняване на веригата, се продава. По този начин злонамереният актьор отново е избегнал нарязването. Освен това в тази версия на атаката неговият залог във веригата Beacon не е компрометиран.

Може да предложите поправка на модифицираната версия на атаката въз основа на използването на контролни точки. Според тази корекция веригата съдържа блокове на контролни точки, които „не могат да бъдат върнати“. Тази корекция обаче е противоречива, тъй като понятието „контролна точка“ не работи при настройката на блокчейн. Както знаем, блоковете в блокчейна никога не са напълно финализирани. Форкирането е естествената собственост на блокчейна и всяка вилка ще има свои „напълно финализирани контролни точки“. Следователно използването на понятието „контролен пункт“ често е объркващо и подвеждащо. Ако възелът трябва да разчита на контролната точка, тогава трябва да разчита на „доставчиците на контролни точки“. Изисква се въвеждане на елемент на доверие в уж ненадеждна мрежа.

Нашето заключение е, че нападателят, който е разпределил значително количество енергия под формата на залози, може да предприеме опустошителни атаки в мрежата, като същевременно избягва нарязване на механиката. Тази форма на атака е много подобна на 51% атака, която може да бъде извършена в блокчейн, базирана на PoW.

Vinod Manoharan е технологичен предприемач и основател и главен изпълнителен директор на Jax Multiversal Holdings, холдингова компания, чието портфолио включва компании за онлайн игри, платежни шлюзове и технологични компании Blockchain. Манохаран е и основателят на JAX.Мрежа, технологичен стартъп в Украйна, фокусиран върху технологията Blockchain и по-конкретно, решаването на скандалната трилема за скалируемост на Blockchain.

Написано в сътрудничество с Юрий Шишацки, главен научен директор в JAX.Network.

Препоръчано изображение: Shutterstock / Lopyryev Artem / Kuklos

About the author