Обобщение: Делегиране и стимули на ДЗЗ/PoS (Ларс Брюнес)

Д-р Ларс Брюнес, Директор по образованието в „IOHK“, наскоро беше в Хамбург на среща на „Blockchain Mania“, където изнесе технически доклад за стимулите на „Кардано“. В следващите редове ще намерите резюме на представената от него презентация.

Въпреки че взима участие в образователните усилия на „IOHK“, чрез курсове по „Haskell“ и т.нар. : „вътрешно/външно обучение“ /internal/ external training/, той също така ръководи работния поток по „стимули“ /“incentives”/ в Кардано, като работи заедно с професор Киайас, професор Куцупиас и Аикатерини. Подробности за членовете на екипа на „IOHK“ може да намерите тук.

Какъв е смисълът на стимулите?

В един блокчейн, целта е да се стимулират участниците в него да правят „правилното нещо“. За „Кардано“ това означава постигане на определено разпределение на залога в системата. Това разпределение трябва да се постигне, чрез т.нар. “stake pools” /басейни от залози; групи от залози/, в които не искаме твърде много или твърде малко групиране на залога. По-голямата част от залога трябва да бъде съсредоточена в групи от залози /“stake pools”/ и тези групи от залози трябва да бъдат онлайн и да участват активно в протокола.

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

Какво представляват стимулите?

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

В случая с „Биткойн“ – това означава „копаене“ на блокове и включване на възможно най-много валидни транзакции в тези „изкопани“ блокове.

При „Кардано“, това означава да сте онлайн, и когато сте избрани за слот лидер – да създадете „блок“ и да участвате в изборния процес на протокола.

Участието в протокола на „Кардано“ изисква много по-малко разходи за изчислителна мощност, отколкото участието в протокола на „Биткойн“. Въпреки това наличието на слот лидери, които да са онлайн, когато е настъпил техният ред, е важно, както за сигурността, така и за ефективността на протокола на „Кардано“. Лидерите на тези слотове трябва все пак да направят определена инвестиция, за да участват в протокола (под формата на хардуер, време и др.), така че е справедливо те да бъдат поощрени за усилията, които са вложили.

Стимулите в нашия случай се отнасят до парични стимули под формата на „АДА“ /виртуален жетон/ монета или просто т.нар. „токен“ на „Кардано“, който системата използва за валута/.

Трябва да се отбележи, че съществуват и други видове стимули, които трябва да се вземат под внимание, като:

  • идеализъм
  • нравственост /морал/
  • общо желание да „правиш правилното нещо“

Това не бива да се подценява… Например, когато басейнът за копаене /mining pool/ на „Биткойн“ – „Ghash“ натрупа 42% от общата мощност на копаене, хората доброволно започнаха да напускат „басейна“ и го намалиха до 38% за два дни. Това беше направено не по финансови причини, тъй като хората, които напуснаха „Ghash“, не получиха никакви парични стимули. Те го направиха, защото вярваха в „Биткойн“ и децентрализацията, и заради желанието да направят правилното нещо. /повече информация за този инцидент може да намерите тук/

Целта на „Кардано“ е да подреди тези две неща на една координатна ос: ако максимизирате печалбата си, то вие автоматично правите правилното нещо за себе си и за протокола.

Какво искаме да стимулираме?

  • участниците в протокола да бъдат онлайн
  • участие в протокола: когато от някой от участниците /шеърхолдърите/ са избрани лидери на слотове и им е зачислен индивидуално определен слот, то тогава, те трябва да са онлайн в този слот в определено време, за да създадат „блока“

От друга страна, може да има хора, които не се интересуват или нямат техническото познание да настроят нужния софтуер, или просто не разполагат с времето да бъдат онлайн в определените дата и час → но те все пак могат да участват в протокола, като делегират своя дял в басейна от залози /stake pool/!

Желана конфигурация

  • 80% от целия дял /залог/ трябва да бъде делегиран на определен брой (k) басейни от залози
  • k трябва да е число в порядъка на 100
  • и тези басейни от залози трябва да са управлявани от опитни потребители на протокола, които е необходимо да са онлайн, когато се наложи
  • също така те трябва да осигурят допълнителна мрежова инфраструктура (релейни възли/relay nodes)
  • не е пречка за работата на системата, ако останалите 20% от потребителите участват сами в протокола или просто стоят безучастно

Екипът конфигурира стимулите по начин, по който да постигне точно този резултат.

Механизъм за упълномощаване/делегиране

„Кардано“ е система, базирана на метода „Доказателство за залог“. Притежанието на неин дял (притежаването на „Х“ количество от нейния токен – „Ада“) има по-голямо предназначение за вас като собственик, отколкото ако притежавате дадена единица от „Биткойн“. „Ада“ може да се използва за закупуване на стоки или услуги, тъй като е криптовалута, но освен способността, чрез нея да се извършват покупко-продажби, нейните капиталовложители получават правото редом със задължението да участват в протокола и да създават „блокове“.

Тези две форми на употреба на токените могат да бъдат разграничени от механизма на делегиране – което означава, че притежател на „Ада“, може да запази способността на покупко-продажба на токените си, като същевременно, чрез тях, получава правомощията за участие в протокола на избран от него басейн от залози /stake pool/. Важно е да се отбележи за капиталовложителите, че средствата преобразувани в „Ада“-токени могат да се изразходват нормално по всяко време.

Адреси

Съществуват три разграничаващи се типа „адреса“ или регистрации/акаунти. Всеки от тях се асоциира с два ключа (чифт). Единият ключ е за разплащане, а другия е за делегиране в басейн от залози.

Три вида адреса:

  • Основен адрес: ключът за залагане е директно свързан с адреса
  • Адресът на показалеца: е по-индиректен. Той сочи към точка в блокчейна → в която има дадени метаданни, които дефинират ключа за делегиране в басейн за залози.
  • Фирмен адрес/адрес на предприятие – от такъв адрес не могат да се делегират средства в басейн за залози. Такива адреси се назначават само на борси за обмен. Блокчейнът разглежда тези борси за обмен, като изключително състоятелни /системата възприема, количеството акумулирана „Ада“ в дадената борса за обмен, като изключително висока стойност/. Но тази „Ада“ на дадения адрес (акумулирана от дадената борса за обмен) всъщност принадлежи на редица отделни лица, които са депозирали в борсата и тъй като не е желателно борсата да използва парите на своите клиенти /закупили и държащи на неин портфейл „Ада“/, за да участва с тях в протокола и съответно да получава правата за делегиране и създаване на блокове в него, подобен тип „адреси“ са лимитирани от блокчейна само до функцията да превеждат средства от един адрес на друг.

Какво представлява сертификатът за упълномощаване/делегиране?

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

Сертификатът за делегиране може да бъде публикуван в блокчейна, като в този случай той получава названието /сертификат от/ „тежка категория“. Тази транзакция ще се запише в блокчейна и част от използваните метаданни ще бъдат употребени за сертифициране на това делегиране. Това действие ще доведе до такси за транзакция (същите, като нормална такса).

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

Ако се появи случай, в който има конфликтни сертификати (т.е. делегирате права на някого и непосредствено след това на някой друг), което означава да се породят два сертификата за делегиране, тогава се намесва правило на протокола за прекъсване на равенството, което гласи, че който е последен на блокчейн веригата печели /по-късната или последната извършена транзакция в блокчейна-печели/.

Регистрация в басейна от залози

Ако някой иска да основе басейн от залози, то той трябва да създаде официален регистър, чрез който да бъде записан в регистъра на блокчейна. Басейнът от залози ще създаде сертификат за регистрация. Това също ще бъде внедрено в специален вид транзакция (следователно ще има такса за създаване на „басейна“) в системата. Този сертификат съдържа в себе си ключа за залог, притежаван от лидера на „басейна“. Хората, желаещи да делегират към този „басейн“, трябва да създадат сертификат за делегиране, чрез който да прехвърлят правата си на залог към този ключ за залагане.

Регистрацията за създаване на басейн от залози все още е отворена (до 31 май 2018). При интерес можете да посетите този линк.

Пояснение от преводача - трябва да се вземе под внимание, че статията е публикувана на 3 май 2018 година и информацията в нея може да не е актуална.

Механизъм за стимули: Откъде идват парите за стимули?

Тук разглеждаме два източника на средства за стимули.

1.Транзакционни такси

Има две основни причини за таксите за транзакция:

  • Предотвратяване на DDos (Distributed Denial of Service/Разпределен отказ на услугата) атака или т.нар. Атака за отказ на услугата. При DDoS атака, нападателят се опитва да наводни мрежата с фиктивни транзакции, за да претовари системата. Ако нападателят трябва да плаща висока такса за всяка от тези фиктивни транзакции, то тази форма на атака се превръща в непосилно скъпа за него
  • За осигуряване на средства за стимули

Следващият раздел ще съдържа обяснение за това как се изчисляват таксите.

2. Парична/монетарна експанзия

Общият циркулиращ обмен на токените „Ада“ в света е приблизително 31 милиарда „Ада“. А максималният брой, който блокчейнът предвижда да бъдат създадени е 45 милиарда „Ада“. Следователно съществува разлика от 14 милиарда „Ада“. Тези средства могат да бъдат използвани и за стимули.

Пояснение от преводача – трябва да се вземе под внимание, че статията е публикувана на 3 май 2018 година и информацията в нея може да не е актуална.

Въпреки че това е една голяма сума, това не означава, че средствата са неограничени.

Идеята е да се създаде нещо, което да наподобява системата на „Биткойн“, това означава с течение на времето да има експоненциално намаляване на средствата за стимули (процентът, който се използва за стимули ще става все по-малък). Целта и надеждата на проекта е, че по подразбиране „Кардано“ до голяма степен ще бъде увенчан с успех. Ако това се случи, все повече и повече хора ще го използват и сумата, която блокчейнът ще акумулира, чрез таксите за извършени транзакции, ще се увеличи. Това ще намали нуждата от тази допълнителна монетарна експанзия на средства в тази насока.

Как работят таксите?

Съществува уреждащо правило, което е твърдо закодирано в блокчейна - Какви трябва да бъдат минималните стойности на таксите за всяка транзакция? Всяка транзакция трябва да включва поне минималните такси, определени от блокчейна. Това означава, че входните стойности на транзакциите трябва да са с по-големи стойности от изходните стойности на транзакцията и разликата трябва да бъде равна на минималната такса, определена от системата за дадения момент (има възможност да заплатите повече от минималната такса за транзакция, само при Ваше желание).

Формулата, изчисляваща минималните такси:

Това е линейна функция:

a + b x размера

(„размерът“ е този на транзакцията, в байтове, а не количеството трансферирана „Ада“)

a = константата, към този момент е 0,155381 „Ада“ (от датата на публикация – 3 май 2018 година )

Това е необходимото количество за предотвратяване на DDoS атаки → така че без значение колко малка е транзакцията, тя трябва да е достатъчно скъпа, за да навреди на атака, която се опитва да генерира хиляди фиктивни транзакции.

b = константата, към този момент е 0,000043946 „Ада“/байт (от дата на публикация - 3 май 2018 година)

Тази стойност е с цел да се допринесе за справедливост в системата. Идеята, която стои зад нея е, че трябва да се плаща за напрежението, под което се поставя системата. Ако извършвате голяма транзакция, хората, които я изпълняват ще трябва да съхраняват вашите данни на компютър, който да разполага с достатъчно компютърна памет. От там произлиза и логичният извод, че колкото е по-голяма транзакцията, толкова по-скъпа трябва да бъде.

Като пример: Вземете транзакция с доста типичен размер от 200 байта. При въвеждане на константите и „размера“, таксата за транзакция ще изглежда по следния начин:

0,155381 Ада + 0,000043946 Ада/байт x 200 байта = 0,1641702 Ада

Тук Д-р Брюнес също отбелязва, че може да се добавят и допълнителни условия в бъдещето. Предложени са идеи, като тази да се следи броя на UTxO /Важно: предоставеният линк е добавка за пояснение от преводача и все още не е преведен от английски език/ (което води до усложняване на портфейла), това също така ще засегне и количеството данни, а друга идея е да се разглежда действителният размер на „Ада“ (когато се работи с големи количества „Ада“, разглеждани не само в байтове).

Разпределение на стимули

В блокчейна на „Кардано“ има строго разпределение на времето (разделя се на т.нар „Епохи“ и „Слотове“ /места/).

Слотовете /местата/запазените места/ са с продължителност от 20 секунди. За всеки слот се избира една монета на случаен принцип и собственикът на тази монета придобива правото да създаде „блок“ в този слот.
Епохите съдържат 21,600 слота, което е точно 5 дни. Епохата е време-пространството, където се провежда изборният процес/процесът на рандомизация = процес на разбъркване на случаен принцип. На всеки 5 дни участниците „хвърлят заровете си“, като в дадения момент се избират лидери на слотовете за следващата епоха.

В блокчейна на „Биткойн“ разпределението се извършва на принципа – блок по блок. Планът на „Кардано“ обаче е да се разпределят стимулите на принципа – епоха по епоха. Всички такси за транзакции (от всички блокове на дадена епоха) плюс монетарен стимул ще бъдат поставени в един награден басейн за цялата епоха. Тогава целият награден фонд/басейн ще бъде разпределен между хората, които са били активни/важни през тази конкретна епоха.

Основна идея за разпространение: Обяснено в две стъпки:

1. Как целият награден басейн се разпределя между останалите „басейни“?

Основната идея е да го направите пропорционално на залога, за да можете да разгледате залога и да направите изчислението или може да разгледате дадения брой слотове в тази Епоха, в която определени басейни са били избрани за лидери на слотове (а не броят на действителните блокове, които е създал).

Тези два подхода изглеждат по различен начин в началото, но вероятността да бъдете избран за слот лидер е пропорционална на контролирания дял (поради начина на работа на „Кардано“ протокола). В следствие и двата метода възнаграждават по един и същ начин участниците.

Има две уточнения, както следва:

Уточнение 1:

Максималния дял от наградния фонд, който може да получи басейн от залози, ще бъде ограничен с 1/k (k е броят на желаните басейни, вероятно около 100). Ако тази мярка не съществува, басейните ще имат желанието да се окрупняват все повече и повече, защото ще получават същите стимули, но на по-ниска цена, тъй като режийните разходи няма да са толкова по-високи от тези на по-малък басейн.

Пример:
Ако k = 100
A и B със съответно 0,3% и 1,2% дял/залог.
А ще получи 0,3% от наградния фонд, но Б ще получи 1/100 = 1%

В този пример се илюстрира, че без значение, колко висок ще е вашият залог, никога не можете да получите повече от 1% от наградния фонд. Чрез това, проектът се надява, че ще афектира басейните по такъв начин, че да им попречи да се окрупняват.

Уточнение 2:

Досега всичко това е зависело само от дяловете/залозите, които са в басейна от залози, а не от реалната работа, която те извършват. Произлиза нужда от създаването на механизъм, който да проверява дали се създават реално блокове, когато се изберат слот лидери. Произхождайки от това, трябва да бъдат санкционирани всички басейни от залози, които не следват правилата на протокола и не са на линия, когато им дойде редът.

Този предикат ще прецени дали басейнът от залози отговаря на изискванията, за да получи своя дял от наградния фонд, като разгледа слотовете, за които даден басейн от залози е избран за лидер и броя на блоковете, които всъщност е създал. Това не бива да е толкова просто, колкото „създаването на х% от блоковете, които е трябвало да бъдат произведени“ → Да кажем, че е необходимо да създадете поне „90%“ от блоковете, за които сте избрани от системата да възпроизведете, за да получите наградата си. В такъв случай, ако басейн от залози е избран за 100 слота в дадената „Епоха“ и той вече е създал 90 блока, тогава най-вероятно неговите оператори просто ще изключат компютъра и ще игнорират последните 10 блока, които трябва да възпроизведат. Ако всеки участник в системата направи това, тогава в края на „Епохите“, всеки би изключил компютъра си, което разбира се не е добре за правилната работа на системата. Поради тази причина процесът трябва да бъде малко по-сложен, независимо дали това ще бъде постигнато, чрез рандомизация /процес на разбъркване на случаен принцип/ или други алгоритми.

2. Как един басейн /награден фонд/ допълнително разделя наградите между участниците в него?

След като наградният фонд е разделен между отделните басейни от залози, всеки лидер на басейн трябва да разпредели своя дял от наградния фонд между членовете, участващи в неговия басейн от залози. Членовете на басейна от залози са тези хора, които са делегирали своя дял/залог към дадения басейн от залози.

Двете основни правила тук са:

  • Самият ръководител на басейна от залози трябва да бъде компенсиран за разходите си (хардуер, регистрация, изчислителна мощност, време и др.) и възнаграден за усилията си
  • Участниците в басейна от залози трябва да бъдат възнаградени пропорционално на залога, който са делегирали на басейна

За да разберем по-добре системата, нека разгледаме следния пример:

Да предположим, че лидерът на басейн от залози - Алис, чийто дял е 0,2% , е сформирала своя басейн с Боб (чийто дял е 0,1%) и Чарли (чийто дял е 0,2%).

Нека приемем и, че наградният фонд за една измислена „Епоха“ се състои от 5,000,000 „Ада“. Също така да теоретизираме, че басейнът от залози, сформиран от Алис е изпълнил предиката си и е създал прилежно и навременно блок за всеки слот, за който е бил избран за лидер.

Тогава басейнът на Алис, който държи (0,2% + 0,1% + 0,2%) 0,5% от общия залог, което е стойност по-малка от 1/к и няма ограничение: ще получи (0,5% от 5,000,000) 25,000 „Ада“ от наградния фонд за тази примерна „Епоха“.

От тези 25,000 „Ада“, Боб ще получи половината от това, което ще получи Чарли. Но Чарли ще получи по-малко от самата Алис, така Алис бива възнаградена за разходите и труда, свързан с управлението на нейния басейн от залози.

Да приемем, че допълнителната компенсация за управление на басейна в този пример е 5,000 „Ада“. Тя ще отиде при лидера на басейна. Така че, за да се разпределят правилно останалите 20,000 „Ада“, може да се направи следното изчисление: 2:1:2 въз основа на % от залога.

Алис ще получи 13,000 „Ада“ ( 8,000 + 5,000 )

Боб ще получи 4,000 „Ада“

Чарли ще получи 8,000 „Ада“

*Забележка : Този пример е чисто теоретичен и има за цел да обясни идеята за разпределение на наградния фонд на системата. Това в никакъв случай не бива да бъде приемано като спекулация за действителни бъдещи суми за възнаграждение.

Неразпределени средства:

Има две причини, поради които може да получите по-малко възнаграждение от вашия залог:

  • ако имате повече от 1/к, както е разяснено вече по-горе в статията
  • ако не вършите възлаганата ви работа и не вземате участие в протокола

В такива случаи – целият награден фонд остава неразпределен. Важно е тези неизразходвани средства да не се разпределят между останалите участници. Това не е грешка в системата, а по-скоро нейна функция, защото тези средства ще се пренасочат към хазната, което повишава и популяризира нейната устойчивост.

Без конкуренция между басейните

Важно следствие, което произлиза от тази структура на обработване на неразпределените средства е, че така не възниква причина за конкуренция между басейните. Няма нищо, което един басейн може да направи, за да вземе по-голям дял от наградния фонд, за сметка на дяла на друг басейн. Няма стимул за един басейн да саботира работата на друг.

Класическите атаки при „Биткойн“, като „егоистичното копаене“ или „блокирането на блокове“, не могат да проработят, защото басейните са оградени и разделени един от друг. Действията на един басейн рефлектират само върху неговите собствени приходи.

Гледайте цялата презентация под формата на видео тук:

Тук може да намерите линк към оригиналната статия на английски език :

Моля, не се колебайте да публикувате подобрения и допълнения в коментарите.