Bulgarian

From Mina Wiki
Jump to navigation Jump to search

Превод от: https://medium.com/@masked/the-mina-protocol-bbcb4b212b13

Mina Protocol — съкратен блокчейн

3 февруари 2019 г. ·

Можете да считате Mina за „Портфейл, който се побира в джоба ви“.

Първата криптовалута със съкратен блокчейн.

Блокчейнът се компресира от стотици GB (както е видно от наличните протоколи) до размер в kB.

Мащабируем, сигурен и децентрализиран.

Позволява проверка на блокчейна на мобилен телефон.

Размерът на блокчейна на Mina е винаги постоянен – колкото няколко публикации в Twitter – независимо колко транзакции се извършват в мрежата. hack.summit(“blockchain”) 2018 – Айзък Меклер (Izaak Meckler) – съосновател и технологичен директор на Mina Protocol В „криптосферата“ често ни съветват да следваме мотото „Не се доверявайте, проверявайте“ и въпреки че крайните потребители в блокчейните разбират необходимостта да бъдат активни ползватели на мрежата, днес е по-слабо вероятно те да пускат пълни възли (nodes) поради постоянно увеличаващите се изисквания за това.

Растежът на блокчейна на биткойн в мегабайти за периода ’09 – ’18. (https://www.blockchain.com/en/charts/blocks-size?timespan=all)

Увод

Защо не може всеки да е пълен възел (node)? Преди да се задълбочим, следва първо да установим разбиране за основния начин на работа на обикновения протокол за криптовалута – обработващ, познат също и като „копач“ или staker (съответно при доказателство за работа (PoW) спрямо доказателство за дял (PoS)), въвежда транзакция в базата данни. Пълният възел (node) след това наблюдава тези транзакции, за да гарантира че действат добросъвестно. Крайните потребители обикновено не извършват независими проверки – вместо това те се доверяват на желаещите участници в мрежата. Защо това е така?

Необходимостта от ресурси и сложността на работата с пълен възел (node) са причини крайните потребители да се отказват да го правят.

Пускането на пълен възел (node) на компютър е натоварващо, а на мобилен телефон е невъзможно да се направи.

По-лесно е да се доверите на трети страни да извършват това потвърждение.


На ранните етапи на всяка криптовалута управлението на пълен възел (node) е относително лесно, тъй като блокчейнът е малък – възможно е да е с размер от няколко мегабайта. Обаче с времето се записват повече транзакции и той нараства до стотици гигабайти (както виждаме на диаграмата по-горе). Съответно става все по-трудно да се управлява пълен възел (node) без отделен компютър за тази цел, още по-малко на смартфон.

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

Въведение в Mina

„Mina е нов протокол за криптовалута, който позволява на всеки да се синхронизира с мрежата [на всяко устройство] с нивото на сигурност на пълен възел (node), като изтегля само няколко килобайта данни и извършва изчисления за няколко милисекунди в сравнение с гигабайтите данни в традиционните протоколи за криптовалути“.

  1. 243 Izaak Meckler & Evan Shapiro: Mina — A Succinct Blockchain — Epicenter

O(1) Labs разработват Протокола Mina за справяне с проблема на размера на блокчейна, като създават първия съкратен или компресиран блокчейн – с размер колкото няколко публикации в Twitter. Това осигурява на крайните потребители начин за потвърждаване на транзакции с ниски бариери за навлизане. Как се постига това? Прилагане на zk-SNARK – така по същество блоковете се компресират в единно доказателство или сертификат. Крайните потребители проверяват това доказателство вместо да проверяват цялата история на транзакциите в даден блок. Рекурсивният състав на тези SNARK/сертификати позволява поддържане на постоянен размер на блокчейна. zk-SNARK са итерация на доказателства за нулеви знания – криптографска схема, при която на проверяващ се прехвърлят нулеви знания при предоставянето на доказателство за изчисления.

Как работи Mina

zk-SNARK в Mina В основата на Протокола Mina е употребата на zk-SNARK, които могат да се използват за удостоверяване на всяко изчисление. zk-SNARK работят като сертификати без възможност за забравяне, доказващи, че дадено изчисление е извършено правилно, без доказване на цялото изчисление. Както посочихме, може да се вземе всяко изчисление, като проверката на транзакции в блок, и да се създаде SNARK от него. Този SNARK доказва точността на историята на транзакциите на даден блок без необходимост да се показват всички транзакции. Това ефективно намалява размера на блока до един SNARK (~1 kB). SNARK проверява ВСИЧКИ правила за консенсус. Той гарантира, че: Транзакциите са подписани. Те са валидни. Са спазени правилата за консенсус (обща мощност за хеширане + сила на веригата за PoW и променливата произволна функция/други правила за PoS). Ако SNARK не е генериран добросъвестно, той не е валиден. Всеки в мрежата би могъл да види това почти незабавно, използвайки „леко“ устройство, като Raspberry Pi или смартфон.

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

Обработващият създава SNARK, като същевременно актуализира базата данни на сметките Обработващ SNARK създава SNARK/сертификат за валидност за блок, който може да се предава нататък като доказателство без да се включват всички транзакции.

Съвсем реален разговор между обработващ на Mina и краен потребител: „Здравей, проверяващ/краен потребител! Създадох сертификат, за да можеш лесно да провериш историята на транзакциите на даден блок. За този процес беше необходима голяма изчислителна мощ, затова получавам възнаграждение за това. Можеш да провериш точността на това доказателство, като провериш SNARK, което ще отнеме само няколко милисекунди и няколко килобайта свободно място. По този начин няма да се налага да изтегляш стотици гигабайти данни, за да провериш блокчейна!“ – обработващ SNARK. „МНОГО благодаря, обработващ. Ще проверя този сертификат! Тъй като е много малък, не се налага да се доверявам на някой друг да проверява блокчейна вместо мен и най-после мога да пусна потвърждаващ възел (node) и портфейл на устройство, като смартфона си. Благодаря! Животът вече е толкова хубав!“ – Краен потребител.

Заместването на всеки блок със SNARK не е цялостно решение. Първоначално се считаше, че бихме могли просто да създадем SNARK за всеки блок, свивайки всеки блок до около един килобайт, и да приключим с това. Обаче това все пак би довело до линеен растеж с времето с натрупването на отделни SNARK, макар и много по-бавно, отколкото при наличните блокчейни. Как можем да поправим това? И така, ние знаем, че SNARK може да се използва за удостоверяване на всяко изчисление. Създаването на SNARK само по себе си е изчисление – така че не бихме ли могли да създадем SNARK от множество други SNARK?

Верига от сертификати

Множество сертификати /SNARK, всеки от които е проверен от краен потребител. Рекурсивен състав на SNARK в Mina Както беше споменато по-рано, можем да създадем верига от тези сертификати в рекурсивен състав и да създадем възможност размерът на блокчейна да остане постоянен ~20 kB (SNARK + опашка от Merkle път). При всяко произвеждане на нов блок се създава нов SNARK/сертификат. Създавайки един SNARK, съставен от предходните сертификати, можете да създадете, така да се каже, единен „мега“ SNARK, който доказва цялата история на транзакциите на блокчейна, позволявайки ви да прескачате от началния блок до текущото състояние, винаги с размера на един сертификат. И така „можете да преминете от БД 0 към БД 2“ Това е SNARK, така че остава ~1 kB Множество сертификати /SNARK, поставени в един сертификат/SNARK. За да опростим тази идея, да приемем, че имате: Един сертификат, в който се посочва, че можете да преминете от Блок 0 към Блок 2. Допълнителен сертификат, в който се посочва, че можете да преминете от Блок 2 към Блок 4. След това бихте могли да комбинирате тези SNARK в един SNARK, в който се посочва, че можете да преминете от Блок 0 към Блок 4. Новият SNARK/сертификат запазва размера от ~1 kB. В по-голям мащаб можете да създадете сертификат за цялата история на транзакциите на блокчейна, който запазва постоянен размер – независимо от броя на сертификатите, „събрани“ в най-актуалния SNARK. Потвърждаващият възел (node) в Mina ще се състои от: Рекурсивно съставен zk-SNARK (1 kB), който доказва валидността на цялостната история на блокчейна, и основен merkle път на текущото състояние (20 kB); заедно те доказват валидността на баланса на потребителя. Синхронизирането на всичко това отнема само няколко милисекунди.

Начин на работа на крайния потребител Изтегляне на ~1 kB „блокчейн SNARK“, доказващ, че можете да достигнете състояние 4 от началото Изтегляне на ~20 kB Merkle път за получаване на информация за акаунта ви Краен потребител, който проверява SNARK на текущото състояние, който включва всички минали сертификати, както и merkle път. Всичко това заедно позволява на потребителя да потвърди баланса си.

Приложения, децентрализация и мащабируемост

Приложения Структурата на протокола Mina позволява блокчейнът да е лесно достъпен за крайните потребители чрез браузър и в приложения без изтегляне на стотици гигабайти данни и без делегиране на доверието. Представете си приложение, като хиперлек портфейл, при което не се изисква да се доверявате, че разработчикът извършва процеса на проверка правилно. Този процес на потвърждаване може да се извършва от крайните потребители без необходимост от отделен хардуер за тази цел. Всяко устройство би могло да управлява възел (node) за потвърждение, включително, но не само смартфони, в браузър или на мобилни телефони (да, на вашата стара неразрушима Nokia). Децентрализация Както беше посочено по-горе, крайните потребители в наличните днес протоколи за криптовалути в крайна сметка делегират доверието на услуги, като онлайн портфейли или леки клиенти при копеаенето. Това би могло да се превърне в проблем в случай на нещо като 51% атака, тъй като задължението за проверка на транзакциите често се концентрира в ръцете на тези доставчици на услуги. Предоставяйки на участниците в мрежата лесен начин за хостване на потвърждаващи възли (nodes), се увеличава децентрализацията, тъй като транзакциите биха се потвърждавали от по-широк кръг от участници в мрежата – крайните потребители. Мащабируемост По отношение на подобряването на мащабируемостта, повишаването на производителността до хиляди txns/sec в наличните протоколи би довело до по-голямо количество данни, необходими за проверка. Неизбежно би се създал блокчейн, който расте по-бързо, отколкото може да се проверява. Обаче тъй като с Mina размерът на блокчейна се запазва постоянен, разполагате с начин да ограничите необходимите данни за проверка на транзакциите, което позволява постигане на висока производителност, тъй като данните за проверка са компресирани многократно.

Изводи

Създавайки блокчейн, който остава с постоянен размер, Mina позволява на крайните потребители да проверяват транзакциите самостоятелно с начин, който осигурява ниски бариери за навлизане. Без необходимост от делегиране на доверието към тези, които имат желанието да вървят в крак с изискванията за управление на цял възел (node) – какъвто е случаят при традиционните блокчейни. Постигане на ниво на сигурност на пълен възел (node) практически на всяко устройство чрез изтегляне на един SNARK, който действа като сертификат за целия блокчейн, и опашка от merkle път. Използвайки рекурсивна композиция от SNARK, размерът на блокчейна може да се запази на ~20 kB. Наличието на голяма мрежа от потвърждаващи възли (nodes) повишава децентрализацията, тъй като повече крайни потребители имат възможност да участват в проверката на мрежата. Бонус разсъждение: Можете да разглеждате Mina като блокчейн, компресиран в PokéBall. Вместо да напъхва Snorlax в Pokéball, Mina компресира блокчейна в SNARK.


От презентацията ZCon0 – Айзък Меклер (Izaak Meckler) – https://www.youtube.com/watch?v=qCVACpgQSjo