Ф'ючерси
Сотні безстрокових контрактів
CFD
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
CFD
CFD-деривативи на акції США
Акції США
Отримайте доступ до реальних акцій США та ETF
Акції Гонконгу
Торгуйте якісними акціями з лістингом у Гонконгу
Ф'ючерси на акції
Високе кредитне плече, торгівля 24/7
Токенізовані акції
Забезпечено реальними фондовими активами
IPO Access
Отримайте повний доступ до глобальних IPO акцій
GUSD
Мінтіть GUSD для отримання дохідності від казначейських RWA
Активності з акціями
Торгуйте популярними акціями та відкривайте щедрі аірдропи
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
IPO Access
Отримайте повний доступ до глобальних IPO акцій.
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
USD1 15% річних
Без блоку, вивід у будь-який час
Акції
Центр діяльності
Беріть учать та отримуйте винагороди
Реферал
20 USDT
Запрошуйте друзів та отримуйте бонуси
Партнерська програма
Ексклюзивні комісійні винагороди
Gate Booster
Зростайте та отримуйте аірдропи
Оголошення
Оновлення платформи в реальному часі
Блог Gate
Статті про криптоіндустрію
VIP послуги
Величезні знижки на комісії
Управління активами
Універсальне рішення для управління активами
Інституційний
Рішення цифрових активів для бізнесу
Розробники (API)
Підключається до екосистеми додатків Gate
Позабіржовий банківський переказ
Поповнюйте та виводьте фіат
Брокерська програма
Щедрі механізми знижок API
AI
Gate AI
Ваш універсальний AI-помічник для спілкування
Gate AI Bot
Використовуйте Gate AI безпосередньо у своєму соціальному додатку
GateClaw
Gate Блакитний Лобстер — готовий до використання
Gate for AI Agent
AI-інфраструктура, Gate MCP, Skills і CLI
Gate Skills Hub
Понад 10 000 навичок
Від офісу до трейдингу: універсальна база навичок для ефективнішої роботи з AI
Kakarot: вивчення EVM-сумісної дороги Starknet
Автор: Цинік
TL;DR
Що таке віртуальна машина?
Щоб пояснити, що таке віртуальна машина, ми повинні спочатку поговорити про процес виконання комп’ютера в рамках поточної основної архітектури фон Неймана. Різноманітні програми, що виконуються на комп’ютері, зазвичай трансформуються за допомогою рівнів мов високого рівня та, нарешті, генерують машинно-зрозумілі машинні коди для виконання. За способом перетворення в машинний код мови високого рівня можна умовно розділити на скомпільовані мови та інтерпретовані мови.
Скомпільована мова означає, що після написання коду його потрібно обробити компілятором, щоб перетворити код мови високого рівня в машинний код і створити виконуваний файл. Після компіляції його можна виконувати кілька разів з більшою ефективністю. Перевага скомпільованої мови полягає в тому, що під час компіляції код було перетворено в машинний код, тому швидкість виконання висока, і програму можна запускати в середовищі без компілятора, що зручно для користувачів і не потребує для встановлення додаткового програмного забезпечення. Поширені скомпільовані мови включають C, C++, Go тощо.
Відповідником компільованих мов є інтерпретовані мови. Інтерпретована мова означає, що код інтерпретується та виконується рядок за рядком через інтерпретатор, і він виконується безпосередньо на комп’ютері, і процес перекладу потребує повторного перекладу кожного разу, коли він виконується. Перевагами інтерпретованих мов є висока ефективність розробки та легке налагодження коду, але швидкість виконання відносно низька. Поширені інтерпретовані мови включають Python, Java, Ruby тощо.
Знаючи процес виконання фізичної машини, давайте зараз поговоримо про віртуальну машину.
Віртуальні машини зазвичай створюють віртуальне комп’ютерне середовище, імітуючи різні апаратні пристрої. Апаратні пристрої, які можуть моделюватися різними віртуальними машинами, відрізняються, але зазвичай включають ЦП, пам’ять, жорсткий диск, мережевий інтерфейс тощо.
Візьмемо для прикладу віртуальну машину Ethereum (EVM). EVM — це стекова віртуальна машина, яка використовується для виконання смарт-контрактів Ethereum. EVM забезпечує віртуальне комп’ютерне середовище, імітуючи апаратні пристрої, такі як ЦП, пам’ять, сховище та стек.
Зокрема, EVM — це стекова віртуальна машина, яка використовує стек для зберігання даних і виконання інструкцій. Набір інструкцій EVM включає різні коди операцій, такі як арифметичні операції, логічні операції, операції зберігання, операції переходу тощо. Ці інструкції можна виконати в стеку EVM для завершення виконання смарт-контрактів.
Пам'ять і сховище, емульовані EVM, є пристроями, які використовуються для зберігання стану та даних смарт-контрактів. EVM розглядає пам’ять і сховище як дві різні області, і він може отримати доступ до стану та даних смарт-контрактів шляхом читання та запису в пам’ять і сховище.
Стек, емульований EVM, використовується для зберігання операндів і результатів інструкцій. Більшість інструкцій у наборі інструкцій EVM базуються на стеку, вони зчитують операнди зі стеку та надсилають результати назад у стек.
Коротше кажучи, EVM забезпечує віртуальне комп’ютерне середовище, імітуючи апаратні пристрої, такі як ЦП, пам’ять, накопичувач і стек, які можуть виконувати інструкції смарт-контрактів і зберігати стан і дані смарт-контрактів. У фактичній роботі EVM завантажить байт-код смарт-контракту в пам’ять і виконає логіку смарт-контракту, виконавши набір інструкцій. EVM фактично замінює частину операційної системи + апаратне забезпечення на малюнку вище.
Процес проектування EVM, очевидно, йде знизу вгору. Спочатку завершується змодельоване апаратне середовище (стек, пам’ять), а потім проектується набір інструкцій складання (Opcode) і байт-код (Bytecode) відповідно до відповідного середовища. Незважаючи на те, що набір інструкцій для складання призначений для читання, він вимагає багато знань низького рівня, має високі вимоги до розробників і є громіздким у розробці. Тому потрібна мова високого рівня, щоб захистити незрозумілі та громіздкі низькорівневі дзвінки та надати розробникам кращий досвід. Через налаштований дизайн набору інструкцій асемблера EVM важко безпосередньо використовувати традиційні мови високого рівня та просто відтворити нову мову високого рівня для адаптації до віртуальної машини. Спільнота Ethereum розробила дві скомпільовані мови високого рівня — Solidity та Vyper — для ефективності виконання EVM. Solidity не потрібно наголошувати, Vyper — це мова високого рівня EVM, розроблена Віталіком після покращення деяких недоліків Solidity, але вона не була широко прийнята в спільноті, тому поступово сходить зі сцени історії.
Що таке zkEVM
Простіше кажучи, zkEVM — це EVM, який використовує технологію підтвердження/підтвердження дійсності з нульовим знанням, щоб процес виконання EVM можна було перевірити ефективніше та дешевше за допомогою підтвердження/підтвердження дійсності з нульовим знанням, не вимагаючи від усіх верифікаторів Carry вивести процес виконання EVM.
На ринку є багато продуктів zkEVM, і трек гарячий. Основні гравці включають Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (раніше Polygon Hermez) тощо, які поділені на 5 категорій (1, 2 , 2.5, 3, 4) від vitalik . Конкретний контент можна переглянути на блозі Віталіка.
Навіщо потрібен zkEVM
Це питання необхідно розглядати з двох точок зору.
Початкові спроби zk Rollup можуть досягти лише відносно простих функцій передачі та транзакцій, таких як zkSync Lite, Loopring тощо. Але як тільки море було надто складним, люди використовували повний Тьюринг EVM на Ethereum.Коли було неможливо створювати різні програми за допомогою програмування, люди почали закликати до віртуальних машин на L2. Необхідність написання розумних контрактів одна.
Оскільки деякі проекти в EVM не дружні до генерації підтвердження/підтвердження дійсності з нульовим знанням, деякі гравці вирішують використовувати набір інструкцій, який є дружнім до підтвердження/підтвердження дійсності з нульовим знанням на нижньому рівні, наприклад Starknet Cairo Assembly та zkSync Інструкція по цинку. Але в той же час усі не бажають відмовлятися від величезної екологічності користувача EVM, тому вони вибирають сумісність з EVM на верхньому рівні, який є типом 3 і 4 zkEVM. Деякі гравці все ще наполягають на традиційному наборі інструкцій EVM Opcode та зосереджуються на створенні більш ефективних доказів для Opcode, якими є тип 1 і тип 2 zkEVM. Величезна екологія EVM ділиться на дві частини.
Kakarot: віртуальна машина на віртуальній машині?
Чому на віртуальній машині можна створити іншу віртуальну машину? Ця річ є звичайною для комп’ютерних практиків, але вона може бути не такою очевидною для користувачів, які не розуміються на комп’ютерах. Насправді, це легко зрозуміти. Це схоже на будівельні блоки. Поки нижній рівень достатньо міцний (з повним середовищем виконання Тьюринга), будівельні блоки можна без обмежень укладати на верхній шар. Але незалежно від того, скільки рівнів буде створено, остаточне виконання все одно має здійснюватися фізичним обладнанням найнижчого рівня, тому збільшення кількості рівнів призведе до зниження ефективності. У той же час, через різні конструкції різних будівельних блоків (різні конструкції віртуальних машин), оскільки будівельні блоки будуються все вище і вище, вірогідність руйнування будівельних блоків (помилки в роботі) зростає, що вимагає вищого рівня технічної підтримки.
Kakarot — це EVM, реалізований мовою Cairo в Starknet. Він використовує розумні контракти Cairo для моделювання стека, пам’яті, виконання тощо в EVM. Відносно кажучи, реалізувати EVM нескладно. Окрім EVM, написаного на Golang у Go-Ethereum, який має найвищий рівень використання, існують також існуючі EVM, написані на Python, Java, Java та Rust.
Технічна складність Kakarot zkEVM полягає в тому, що протокол існує як контракт у ланцюжку Starknet, що породжує дві ключові проблеми.
Протокол kakarot складається з п'яти основних компонентів (чотири прописані в документі GitHub, EOA не входить, ця стаття була скоригована для зручності читачів):
Відповідно до відгуків генерального директора kakarot Еліаса Тазартеса, в останній версії команда відмовилася від дизайну Account Resister, а натомість для збереження відповідного зв’язку було використано зіставлення 31-байтової адреси Starknet з 20-бітовою адресою EVM. . У майбутньому, щоб покращити взаємодію та дозволити контрактам Starknet реєструвати власні адреси EVM, дизайн Реєстру облікових записів можна використовувати повторно.
Сумісний з EVM на Starknet: яка різниця між Warp і kakarot
Відповідно до типу zkEVM, визначеного Віталіком, Warp належить до Type-4, а kakarot наразі належить до Type-2.5.
Warp — це перекладач, який перетворює код Solidity на код Cairo. Причина, чому його не називають компілятором, ймовірно, полягає в тому, що вихід Cairo все ще є мовою високого рівня. Завдяки Warp розробники Solidity можуть підтримувати початковий статус розробки без необхідності вивчати нову мову Cairo. Для багатьох учасників проекту Warp знижує поріг для входу в екосистему Starknet і не потребує використання Cairo для переписування великої кількості інженерного коду.
Незважаючи на те, що ідея перекладу проста, сумісність також є найгіршою. Деякі коди Solidity не можна добре перекласти Cairo. Логіка коду, що включає систему облікових записів, криптографічний алгоритм тощо, потребує зміни вихідного коду, щоб завершити міграцію. Конкретні непідтримувані функції можна переглянути в документації Warp. Наприклад, багато проектів розрізнятимуть логіку виконання облікових записів EOA та контрактних облікових записів, але всі облікові записи в Starknet є контрактними, і цю частину коду потрібно змінити перед перекладом.
Warp сумісний на рівні мови високого рівня, а kakarot сумісний на рівні EVM.
Повне переписування EVM і реалізація коду операції один за одним і попередньої компіляції дозволяють kakarot мати вищу нативну сумісність. Зрештою, виконання на одній віртуальній машині (EVM) завжди більш сумісне, ніж виконання на іншій віртуальній машині (Cairo VM). Реєстр облікових записів і Blockhash Registry вміло приховують відмінності в різних системах і мінімізують перешкоди, пов’язані з міграцією користувачів.
Команда Kakarot
Дякуємо команді kakarot за цінні коментарі до цієї статті, особливо Еліасу Тазартесу. Дякую вам сер!