Нововъзникващи Езици За Програмиране Scilla И Vyper За Интелигентни Договори

0 Comments


С появата на блокчейн и интелигентните договори се наблюдава широк интерес към изграждането на dapps и използването на интелигентните договори за практически цели. Solidity – език за интелигентни договори на Ethereum – е основният език за програмиране, използван за публичната блокчейн мрежа на Ethereum, и остава най-популярният широко разпространен език за интелигентни договори.

Въпреки успеха си и широкото си използване за писане на интелигентни договори в Ethereum, Solidity е сравнително нов език за програмиране, естествено податлив на грешки и някои логически грешки на високо ниво. От търсенето на създаване на интелигентни договори и подобрени методи за сигурност при тяхното писане се появиха езиците за програмиране Vyper и Scilla.

Scilla & Vyper

Солидност и интелигентни договори

Solidity е предложен от Гавин Ууд през 2014 г. и е доминиращият език за програмиране за писане на интелигентни договори. То е специално разработено за виртуалната машина на Етериум (EVM) и разполага с полезна документация за това какво представлява и как да го използвате.

Solidity е език за програмиране от високо ниво, който се компилира до EVM-съвместим байткод, който работи на Ethereum възли. Забележително е, че Solidity е сравнително прост език за програмиране (в сравнение с други) с много познат синтаксис, който наподобява JavaScript. Solidity е изграден и с някои важни съображения като език за интелигентни договори за изпълнение върху блокчейн, включително необходимостта интелигентните договори да бъдат детерминирани.

Ръководство за Solidity

Прочетете: Какво е Solidity? Нашето ръководство за езика на интелигентните договори на Ethereum

Solidity е достъпна за изучаване в множество онлайн образователни платформи – включително Udemy – и за нея са написани няколко обширни книги. Мрежовите ефекти на Solidity го затвърдиха като език за програмиране на интелигентни договори и dapps, изградени върху Ethereum.

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

Vyper

Vyper е експериментален език за програмиране, който е подобен на Solidity по това, че също е пригоден специално за ЕНМ. Vyper е синтактично подобен на Python и е договорно ориентиран като Solidity.

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

  • Модификатори
  • Наследяване на класове
  • Претоварване на функции и оператори
  • Рекурсивно извикване
  • Безкрайни цикли

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

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

Основната разлика между Vyper и Solidity е, че – въпреки че изглеждат сходни – Vyper премахва голяма част от обектно-ориентираните архетипи, присъстващи в Solidity. Акцентът върху простотата на Vyper също така позволява той да бъде много по-четим в случаите, когато е необходимо одитиране от страни, които не са много запознати с програмирането. Следователно потенциалната употреба на Vyper е привлекателна за много практически бизнес dapps, които могат да бъдат написани на Vyper.

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

Vyper включва Протокол за подобряване на Vyper (VIP) и дори разполага с текстов редактор с онлайн компилатор за игра с кода на Vyper. Имплементацията на Casper FFG на Ethereum също е написана на Vyper.

Scilla

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

Ръководство на Zilliqa

Прочетете: Ръководство за начинаещи в Zilliqa

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

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

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

Освен това Scilla осигурява разделение между Ефективно и чисто изчисления заедно с разделянето между Извикване и Продължение. Що се отнася до ефективните и чисти изчисления, Scilla черпи вдъхновение от цитирането на функционалното програмиране:

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

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

Компонентът за формална проверка на Scilla е активиран чрез вграждането му в Coq Proof Assistant – система за управление на формални доказателства, предназначена да предоставя механично проверени доказателства за интелигентни договори и разпределени приложения. Резултатът е формалната проверка на договори, които се обосновават както за свойствата на безопасност и жизненост. Коректност в разпределените системи могат да бъдат разделени на безопасност и жизнеспособност. Според Zilliqa:

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

Животност е мястото, където „определени неща могат да се случат в крайна сметка“ – Гаранция, че нещо добро ще в крайна сметка се случи. Думата „евентуално“ също не предполага ограничение във времето, но ако системата работи достатъчно дълго, тогава жизнеността е гарантирана. Например при консенсус всички процеси в крайна сметка ще вземат решение за дадена стойност. Друг пример е пълнотата на детекторите за грешки, които в крайна сметка ще открият дефектни процеси.

Разработването на Scilla паралелно с формализирането и вграждането ѝ в Coq от Zilliqa трябва да се окаже ценно решение за бъдещата безопасност на интелигентните договори, които работят върху нейната високопроизводителна блокчейн.

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

Заключение

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

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


Важна забележка: Има съобщения за измамници, които се обръщат към компании чрез Telegram, LinkedIn и други социални платформи, представяйки се за представители на Blockonomi и предлагайки рекламни оферти. Никога няма да се обърнем директно към някого. Моля, винаги се свързвайте с нас чрез нашата страница за контакти тук.