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

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

Накратко – какво трябва да знаете

  • Какво представляват: Програми върху блокчейн, които изпълняват предварително зададени действия при определени условия.
  • Неизменими ли са: Не винаги. Част от протоколите използват proxy архитектура, която позволява логиката им да бъде обновявана.
  • Къде е рискът: Освен грешки в кода, значение имат частните ключове, администраторските права и системите, които подават външни данни към договора.

Кратък речник на основните термини

EVM (Ethereum Virtual Machine): Средата, която изпълнява кода на смарт договорите в Етериум и съвместимите с него мрежи.
EOA (Externally Owned Account): Блокчейн акаунт, контролиран директно чрез частен ключ, за разлика от акаунт, управляван от смарт договор.
Gas: Такса за изчислителната работа, необходима за изпълнението на транзакция или смарт договор. В Етериум обикновено се плаща в ETH.
Оракул: Система, която подава на смарт договора информация извън блокчейна, например цена на актив или метеорологични данни.
Proxy договор: Договор, който насочва операциите към отделен договор с програмната логика и така може да позволи бъдещи обновявания.
Reentrancy: Уязвимост, при която нападателят успява повторно да извика функция, преди договорът да е записал променения баланс или състояние.

Началото: от вендинг машината на Сабо до EVM

Компютърният учен и правен специалист Ник Сабо използва термина „смарт договор“ още през 1994 г.

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

При ранните цифрови системи обаче централизираните сървъри остават единична точка на отказ и контрол.

Голямата промяна идва през 2015 г. със старта на Етериум. Виталик Бутерин и останалите разработчици въвеждат Ethereum Virtual Machine (EVM) – средата, в която се изпълнява кодът на смарт договорите.

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

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

През 2016 г. The DAO става жертва на reentrancy уязвимост – грешка, при която нападателят може да повтаря тегленето, преди смарт договорът да е актуализирал баланса. Така бяха източени ETH на стойност около $50 млн.

Кодът технически изпълнява написаното, но резултатът предизвиква спор дали блокчейнът трябва да остане непроменен. В крайна сметка Етериум преминава през хард Йорк, което води до съществуването на Етериум и Етериум Класик.

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

Как работят смарт договорите

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

Процесът може да се раздели на пет основни етапа:

    1. Създаване на логиката: Разработчиците пишат кода на език като Solidity или Rust и определят правилата, правата за достъп, променливите и условията за грешка.
    2. Компилиране: Кодът се преобразува в bytecode – машинни инструкции, които виртуалната машина на блокчейна може да изпълнява.
    3. Разполагане в мрежата: Компилираният код се изпраща чрез блокчейн транзакция. След потвърждението договорът получава собствен адрес.
    4. Задействане на договора: Потребител, приложение или друг смарт договор изпраща заявка към определена функция заедно с нужните параметри и такса за изпълнение.
    5. Записване на резултата: Възлите изпълняват операцията според правилата на мрежата. Ако няма грешка и е осигурен достатъчно газ за такси, новото състояние се записва в блокчейна.

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

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

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

EVM мрежи (Етериум, Arbitrum, Polygon)
Основни езициSolidity, Vyper
Среда за изпълнениеEthereum Virtual Machine
МоделПоследователно изпълнение върху общо състояние.
Защо е важно: EVM има огромна екосистема от приложения и разработчици, но при високо натоварване таксите могат да се увеличат чувствително.

Solana
Основни езициRust, C, C++
Среда за изпълнениеSealevel
МоделПозволява паралелно изпълнение на операции, които не използват едни и същи акаунти.
Защо е важно: Моделът е насочен към висока пропускателна способност и ниски транзакционни разходи, но изисква различен подход при разработването на приложения.

Move екосистема (Aptos, Sui)
Основен езикMove
Среда за изпълнениеMove VM
МоделАктивите се третират като ресурси със строги правила за създаване, прехвърляне и унищожаване.
Защо е важно: Езикът е проектиран така, че да затруднява случайното дублиране или загубване на цифрови активи още на ниво програмен модел.

UTXO-базирани подходи
ПримериCardano eUTXO; Bitcoin с допълнителни модели като BitVM
Езици и инструментиPlutus, Script, Miniscript и други според конкретната система
МоделОперациите работят с конкретни неизразходвани транзакционни изходи, вместо с един общ баланс на акаунта.
Защо е важно: UTXO моделите могат да направят резултата от дадена транзакция по-предвидим, но различните реализации не трябва да се разглеждат като една и съща виртуална машина.

Solidity и Vyper върху EVM

Solidity остава най-широко използваният език за програмиране на смарт договори в EVM екосистемата.

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

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

Къде се използват смарт договорите

  • Децентрализирани финанси (DeFi): Протоколи като Uniswap използват смарт договори, за да обменят токени чрез ликвидни пулове вместо традиционна книга с поръчки. Aave ги използва при депозити, заеми, изчисляване на лихви и ликвидации.
  • Токенизация на реални активи (RWA): Ценни книжа, вземания или други активи могат да бъдат представени чрез токени. Смарт договорът може да ограничава кой има право да притежава или прехвърля даден инструмент и да прилага определени правила автоматично.
  • Програмируеми портфейли: Account abstraction позволява част от функциите, които обикновено се изпълняват ръчно от потребителя, да бъдат управлявани чрез програмируем акаунт. Това включва например няколко действия в една операция, различни правила за подписване и механизми за възстановяване на достъпа.
  • EIP-7702 и стандартните Етериум акаунти: След Pectra обикновен EOA може временно да използва логика на смарт договор. Това може да се комбинира с механизми за пакетиране на транзакции и решения, при които потребителят не е задължително да плаща всяка gas такса директно в ETH.
  • Вериги за доставки: Смарт договор може да получава данни от външни системи и да предприема действие при предварително зададено условие. Ако например температурата в контейнер с лекарства надхвърли допустим праг, системата може да отбележи нарушението или да задейства определена процедура по плащане или застраховка.

Какви са ограниченията

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

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

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

Това е полезно при откриване на сериозна грешка, но създава друг въпрос: кой има право да извърши обновяването?

Ако това право зависи от един администраторски ключ или малък брой подписи, част от контрола остава концентрирана.

Има и други ограничения:

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

Къде възникват рисковете

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

Компании за одит като Trail of Bits и OpenZeppelin използват статичен анализ, тестове и други методи за откриване на грешки преди внедряване.

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

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

Компрометирани ключове и права
ПримериФишинг, кражба на частен ключ или компрометиране на лице с административни права.
Ограничаване на рискаMultisig портфейли, хардуерна защита на ключовете, забавяне на чувствителни промени и разделяне на административните права.

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

ZK технологии и AI агенти

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

Zero-Knowledge Rollups (ZK-Rollups): Вместо всяка операция да бъде обработвана отделно върху основната мрежа на Етериум, мрежата от втори слой може да обработи много операции извън нея и след това да изпрати криптографско доказателство за резултата.

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

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

Това не означава, че AI получава неограничен контрол. Практическата сигурност зависи от зададените лимити, разрешените функции и възможността човек или друга система да прекрати достъпа.

Какво да проверите преди да подпишете транзакция

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

Преди подписване си струва да се проверят няколко неща:

    • Адресът на договора: Съвпада ли с официалния адрес, публикуван от проекта?
    • Какво разрешавате: Подписвате ли обикновена размяна или давате право на договора да използва ваши токени и в бъдеще?
    • Размерът на разрешението: Някои приложения искат практически неограничен лимит вместо само сумата за текущата операция.
    • Може ли договорът да бъде обновяван: Ако използва proxy архитектура, важно е кой контролира промяната на логиката.
    • Кой държи административните ключове: Един адрес, multisig или по-широк механизъм за управление?
    • Одитът: Наличието на одит е полезен сигнал, но не означава, че договорът или целият протокол са безрискови.

Тези проверки не изискват потребителят да чете Solidity код, но помагат да се разбере какво реално се разрешава на приложението.

Често задавани въпроси

Имат ли смарт договорите правна сила?

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

Може ли смарт договор да бъде променен след публикуването му?

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

Може ли смарт договор да изпълнява действия по график?

Не самостоятелно. За периодични операции протоколите използват външни ботове или автоматизирани мрежи като Chainlink Automation, които изпращат необходимата транзакция в подходящия момент.

Какво става, ако изпратя средства към грешен смарт договор?

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

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

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

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


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