You are opening our Bulgarian language website. You can keep reading or switch to other languages.
14.12.2022
12 минути за четене

Блокчейн: от теория до приложение в реални проекти

Блокчейн се превърна в популярна технология в софтуерния бранш през последните няколко години. Това се дължи на многобройните предимства, които тя носи както за проекти, разработвани от финтех стартиращи фирми, така и за такива от водещи компании на пазара.
Блокчейн: от теория до приложение в реални проекти
Автор

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

Блокчейн: Какви блокове, какви вериги?

Представете си група математици, които работят заедно, правейки сложни математически изчисления. Те обединяват знанията си, така че до края на деня да имат общо решение. За изчисленията разполагат с компютър за елементарни калкулации, който дава отговор "4" за задачата "2+2" и записва всяко изчисление, така че всички математици да могат да проследят историята.

Проблемът е, че математиците нямат доверие един на друг - точно както организациите в реалния живот не са склонни да вярват на останалите на сляпо. Въпреки че всички математици трябва да се възползват от правилните изчисления, сред тях има злодей, който е променил своя калкулатор, така че "2+2" да показва "5". Точно както в книгата "1984" на Оруел.

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

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

Верига от блокове
Верига от блокове: всеки блок съдържа хеш на предишния блок

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

Блокчейн като постоянно хранилище се управлява от специален механизъм, наречен „блокчейн възел“. Обикновено всеки възел има свое собствено локално копие на блокчейна, "Ledger" и база данни, съхраняваща най-последното състояние, както в конвенционалните приложения, "World State". Вградени бази данни (база данни като библиотека), като RocksDB или LevelDB, и външни бази данни, като CouchDB, могат да се използват за конкретна блокчейн реализация в различни комбинации.

Блокчейн като база данни Ledger и World State
Блокчейн като база данни Ledger и World State

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

В зависимост от изпълнението, някои възли имат способността да произвеждат блок: добавят транзакция от своя пул от чакащи транзакции към нов блок и след това го излъчват към други възли. За да добавите нов блок, получен от мрежата към локалното копие на блокчейна, всеки възел проверява всички транзакции и прилага промени в състоянието към локалното копие на Ledger и World State.

Блокчейн мрежа: всеки възел е свързан с останалите и държи своето копие от блокчейна
Блокчейн мрежа: всеки възел е свързан с останалите и държи своето копие от блокчейна

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

Дилема за добавяне на нов блок
Дилема за добавяне на нов блок

Транзакции и интелигентни договори

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

Има много видове консенсус: Proof of Work, Proof of Stake, Proof of Authority  и други. Препоръчвам да прочетете официалната документация на Ethereum за повече подробности относно блокчейн консенсуса.

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

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

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

Подаване на транзакции и задействане на събития
Подаване на транзакции и задействане на събития

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

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

Подпис на транзакцията с частен ключ
Подпис на транзакцията с частен ключ

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

Интелигентно изпълнение на договор в рамките на транзакция
Интелигентно изпълнение на договор в рамките на транзакция

Атака от 51%

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

contract Calculator {
 function sum(int a, int b) {
   var result = a + b;
   log(request.invocator, a, b, result); // save invocation in the history
   emit SumEvent(a, b, result); // emit successful execution event
 }
}

Сега е време да разгледаме ползите, които можем да реализираме с тази настройка.

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

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

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

Тук възниква прословутият проблем с "Атака от 51%". Ако атакуващите контролират 51% от мрежовите възли, тяхната версия на калкулатора става „правилната“ версия. По този начин те контролират цялата мрежа.

Обикновено този проблем се решава от самия консенсус, което прави онези, които контролират 51% от мрежата, финансово нерентабилни, тъй като тяхната дейност изисква или огромни количества енергоемки изчисления, или огромни количества съхранение и складиране - повече от печалбите, които биха имали от самата атака. Освен това, криптографски подписаните транзакции позволяват на блокчейна да осигури удостоверяване, предотвратявайки измами и неоторизирана дейност, което е едно от предимствата на сигурността.

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

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

Досега разглеждахме частен тип блокчейн, където възлите принадлежат само на определена група хора или организации. За разлика от това съществува концепцията за публичен блокчейн, където на всеки е позволено да създаде свой собствен възел и да се свърже с мрежата, произвеждайки и проверявайки блокове според консенсуса. Типични примери са Bitcoin и Ethereum.

Блокчейн в проектите на DataArt: DApp

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

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

Escrow основно взаимодействие с потебителя
Escrow основно взаимодействие с потебителя

Интелигентният договор escrow разкрива функционалност за създаване на сделка, приемането ѝ от двете страни и депозиране на средства (напр. в стойност на криптовалута). След това средствата се освобождават на продавача, ако условията на договора са изпълнени и приети, или на купувача, ако нещо се обърка.

Блокчейн escrow интелигентен договор
Блокчейн escrow интелигентен договор

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

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

Друго dApp може да се използва като средство за децентрализиран арбитраж. Например - като система за гласуване, която е предназначена да разрешава различни спорове относно транзакции в блокчейн общността. Системата предоставя назначени арбитри (общо 51), които имат пълен достъп до детайлите, продиктувани от интелигентния договор, сключен от двете страни. Арбитрите се избират на случаен принцип чрез вграден алгоритъм, за да се гарантира прозрачност.

И двете страни могат да отправят обвинения и да се защитават, като предоставят подкрепящи доказателства за своите твърдения. И накрая, въз основа на разрешаването на спора, записан в блокчейна, интелигентният договор за escrow изплаща средства на спечелилата спора страна.

Работен процес на съдебния интелигентен договор
Работен процес на съдебния интелигентен договор

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

Интегриране на интелигентни договори за ескроу и арбитраж
Интегриране на интелигентни договори за escrow и арбитраж

Централизирано решение, при което escrow е представено от организация или човек, може да бъде повредено или предубедено по много начини. Освен това може да възникне проблем с наличността на услугата или прекъсване, когато средствата са заключени в критичен момент. Това обаче не е така в публичния блокчейн. Тези две интегрирани DApps предоставят напълно децентрализирани, автономни и публично достъпни услуги, които дават ключови предимства за крайните потребители в сравнение с централизирано решение.

Дневник за одит на приложението

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

Нека да разгледаме как блокчейн може да се използва като хранилище за записи в журнала. Създава се частна блокчейн мрежа за целевата система и одитора. Audit log контрактът се внедрява в мрежата с политика за достъп, гарантираща, че само системата, която представлява интерес, може да вмъква дневници и че организацията за одит има достъп само за четене. Двете страни управляват свои собствени възли. Hyperledger Fabric е добър пример за внедряване на блокчейн, което пасва добре на нашия пример.

Решение за регистриране на одит, базирано на Blockhain
Решение за регистриране на одит, базирано на Blockhain

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

Платежна система

С появата на блокчейн, криптовалутите се превърнаха в средство за плащане и електронен обмен. Споменатите по-горе публични блокчейни Bitcoin и Ethereum са предимно платежни системи. Решенията за плащане в блокчейн позволяват на клиентите да извършват транзакции бързо. Потребителски акаунт в такъв тип система се представя от двойка криптографски ключове. Частният ключ принадлежи на потребител и никога не е изложен на външна система или трета страна.

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

Градивни елементи на платформа за плащане, базирана на блокчейн
Градивни елементи на платформа за плащане, базирана на блокчейн

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

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

Пример за използване на персонализиран крипто токен
Пример за използване на персонализиран крипто токен

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

Сподели
Най-търсени позиции
1 3
Абонирайте се за нашия бюлетин
Абонирайте се за нашия бюлетин, за да научавате за предстоящите ни събития и инициативи