У цьому пості ми розглянемо недавно популярні концепції zkCoprocessor та zkOracle та порівняємо їх відмінності.
Коли термін створюється, його справжнє значення не визначається сам по собі. Ми бачили це дуже часто у випадку блокчейну.
Ми бачимо схоже явище в терміні zkCoprocessor. Усі використовують цей термін, але вони не обов'язково посилаються на ті самі речі.
Таким чином, ми хотіли висловити те, що проект вважає сам про zkCoprocessor, що розуміє спільнота про zkCoprocessor, і що zkCoprocessor дійсно означає та робить з нашої точки зору.
Визначення 1 з аксіоми: zkCoprocessor доводить історичні дані onchain.
Концепцію zkCoprocessor у популярності вивів Axiom, яка спочатку уявила його як zkAttestor. З ідеї Axiom zkCoprocessor представляє компонент, який "доводить історичні дані on-chain та безпосередньо використовує ці дані в розумному контракті".
Зауважте, що команда Brevis сказала, що цей тип zkCoprocessors суттєво є шаром API/DSL на верхньому рівні базової zk схеми. Так що це не є програмованим.
Визначення 2 з RISC Zero: zkCoprocessor відвантажує обчислення з onchain на offchain.
RISC Zero також часто називає себе zkCoprocessor. З їхньої точки зору вони бачать zkCoprocessor як більш широке поняття, «інструмент для використання ZKPs для зняття обчислень з ланцюжка на ланцюжок».
Визначення від Петеріса (таке ж, як у 1): zkCoprocessor може отримати доступ до історичного стану onchain.
Петеріс з Aera Finance віритьце zkCoprocessor діє дуже схоже на державний оракул, головна функція якого полягає в доступі до історичних даних. У той же час, він і Rishabh з BananaHQвважає, що опис визначення 2 більше схожий на zkVM, ніж на підклас zkCoprocessor.
Визначення від Messari, Modular Media та Kobi (такий самий, як 2): zkCoprocessor розриває обчислення з onchain на offchain.
Messari також дав свою власну визначення zkCoprocessor. Самі, дослідник в Messari,вважає що процесор zkCo дозволяє розробникам смарт-контрактів легко розвантажувати складну логіку офчейн без нових припущень про довіру. Модульні носії також надає той самий концепт. Kobi з Geometry порівнює rollup з копроцесором, Бревіс додав, що zkCoprocessor торги відкидають витрати на підтримку постійного сховища стану на користь гіперпідвищеної продуктивності, Taiko придумав дизайн Booster Rollupяка подальше дослідила ідею копроцесора Rollup. Це те саме визначення, що і у RISC Zero.
Підсумовуючи, ми приходимо до висновку, що на практиці існує два типи zkCoprocessor, а саме:
Hyper Oracle надає нам пояснення про Оракула уВизначення zkOracle для Ethereum.
Оракул практично узагальнює "інфраструктуру" в будь-якому просторі блокчейну, як краще визначення, ніж копроцесор.
Якщо вхідними даними для інфра/оракула є офчейн-дані, а вихід ончейн, то це вхідний оракул (наприклад, Chainlink Price Feed). І навпаки, це вихідний оракул (наприклад, Граф). Якщо спочатку вихідний оракул, потім вхідний оракул, то це оракул введення-виведення (наприклад, Gelato Network).
Оракул дуже схожий на концепцію співпроцесора, але водночас має характеристики доступу до даних та обчислень.
Беручи Гіпероракул як приклад, яка взаємозв'язок між zkOracleі zkCoprocessor?
zkOracle, який обговорюється в терміні Defining zkOracle для Ethereum, фактично має можливості як zkCoprocessors.
Наприклад, zkOracle, такий як Гіпер Оракул:
Коли ми прямо порівнюємо два типи zkCoprocessor з zkOracle, ми бачимо, що zkOracle має всі функції zkCoprocessor одночасно:
Пряме порівняння показує, що zkOracle - це більш комплексне рішення, яке може забезпечити розробникам більш повний технологічний стек.
Два zkCoprocessors розширюють свої відповідні вертикалі, наприклад, Data Access zkCoprocessor розблоковує сценарії міжланцюжкового взаємодії, а zkVM Compute zkCoprocessor представляє собою zkVM-базовий zk rollup.
Який вибрати при будівництві?
У порядку крок за кроком ми можемо приймати деякі рішення щодо побудови додатка.
Спочатку чиста реалізація умовних контрактів на мові Solidity все ще є дуже хорошим вибором. Хоча чисті умовні контракти не надають деяких найкращих новаторських функцій, вони все ще є достатнімиу певних сценаріях. Також поточна доступність Arbitrum Stylus розблокувала багато нових додатків з чистим смарт-контрактом.
У багатьох випадках розробники можуть бажати використовувати Data Access zkCoprocessor або zkOracle для смарт-контрактів, щоб отримати доступ до більш різноманітних джерел даних.
У цьому сценарії, якщо Data Access zkCoprocessor використовується самостійно, обчислення все ще обробляється в смарт-контракті. Роль zkCoprocessor полягає в тому, щоб зменшити складність отримання даних традиційним способом, але не зробити смарт-контракт більш обчислювально потужним.
У цьому сценарії ми бачимо багато невеликих проектів, пов'язаних з даними, скоріше, ніж повноцінні DApps у традиційному розумінні:
Часто деякі складні алгоритми не можуть бути обчислені безпосередньо на ланцюгу, для ігор обчислювальна логіка дуже складна, така як etherquake та GameOfLife, яка коштує $2k для виконання одного кроку. Або складні алгоритми, пов'язані з ML. Або складні алгоритми, пов'язані з ML, які неможливо виконати на ланцюгу. Тому нам потрібно zkVM zkCoprocessor або zkOracle для виконання обчислень офлайн, а потім подати їх на ланцюг як ZKP.
У цьому прикладі ми бачимо деякий їх необмежений обчислювальний потенціал:
Наостанок ми говорили про додатки, які можна будувати лише за допомогою zkOracle. На прикладі додатку DeFi, повноцінний DeFi є дуже складним. Наступне покоління додатків DeFi, або DeFi 3.0 DApps, буде потрібно:
Ми вже обговорювали, як zkOracle поєднує можливості як zkCoprocessors, виконуючи перші два функціональні вимоги. Як zkOracle виконує автономну функцію і як zkCoprocessor ні?
Так що означає відсутність автономного в zkCoprocessor:
Отже, zkOracle - це ідеальний та достатній вибір для повного додатка, такого як DeFi.
Варто зазначити, що хуки також можуть обробляти частину відсутньої функціональності zkCoprocessor, але ТІЛЬКИ в сценаріях на кшталт DeFi, а не універсально.
У цьому пості ми розглянемо недавно популярні концепції zkCoprocessor та zkOracle та порівняємо їх відмінності.
Коли термін створюється, його справжнє значення не визначається сам по собі. Ми бачили це дуже часто у випадку блокчейну.
Ми бачимо схоже явище в терміні zkCoprocessor. Усі використовують цей термін, але вони не обов'язково посилаються на ті самі речі.
Таким чином, ми хотіли висловити те, що проект вважає сам про zkCoprocessor, що розуміє спільнота про zkCoprocessor, і що zkCoprocessor дійсно означає та робить з нашої точки зору.
Визначення 1 з аксіоми: zkCoprocessor доводить історичні дані onchain.
Концепцію zkCoprocessor у популярності вивів Axiom, яка спочатку уявила його як zkAttestor. З ідеї Axiom zkCoprocessor представляє компонент, який "доводить історичні дані on-chain та безпосередньо використовує ці дані в розумному контракті".
Зауважте, що команда Brevis сказала, що цей тип zkCoprocessors суттєво є шаром API/DSL на верхньому рівні базової zk схеми. Так що це не є програмованим.
Визначення 2 з RISC Zero: zkCoprocessor відвантажує обчислення з onchain на offchain.
RISC Zero також часто називає себе zkCoprocessor. З їхньої точки зору вони бачать zkCoprocessor як більш широке поняття, «інструмент для використання ZKPs для зняття обчислень з ланцюжка на ланцюжок».
Визначення від Петеріса (таке ж, як у 1): zkCoprocessor може отримати доступ до історичного стану onchain.
Петеріс з Aera Finance віритьце zkCoprocessor діє дуже схоже на державний оракул, головна функція якого полягає в доступі до історичних даних. У той же час, він і Rishabh з BananaHQвважає, що опис визначення 2 більше схожий на zkVM, ніж на підклас zkCoprocessor.
Визначення від Messari, Modular Media та Kobi (такий самий, як 2): zkCoprocessor розриває обчислення з onchain на offchain.
Messari також дав свою власну визначення zkCoprocessor. Самі, дослідник в Messari,вважає що процесор zkCo дозволяє розробникам смарт-контрактів легко розвантажувати складну логіку офчейн без нових припущень про довіру. Модульні носії також надає той самий концепт. Kobi з Geometry порівнює rollup з копроцесором, Бревіс додав, що zkCoprocessor торги відкидають витрати на підтримку постійного сховища стану на користь гіперпідвищеної продуктивності, Taiko придумав дизайн Booster Rollupяка подальше дослідила ідею копроцесора Rollup. Це те саме визначення, що і у RISC Zero.
Підсумовуючи, ми приходимо до висновку, що на практиці існує два типи zkCoprocessor, а саме:
Hyper Oracle надає нам пояснення про Оракула уВизначення zkOracle для Ethereum.
Оракул практично узагальнює "інфраструктуру" в будь-якому просторі блокчейну, як краще визначення, ніж копроцесор.
Якщо вхідними даними для інфра/оракула є офчейн-дані, а вихід ончейн, то це вхідний оракул (наприклад, Chainlink Price Feed). І навпаки, це вихідний оракул (наприклад, Граф). Якщо спочатку вихідний оракул, потім вхідний оракул, то це оракул введення-виведення (наприклад, Gelato Network).
Оракул дуже схожий на концепцію співпроцесора, але водночас має характеристики доступу до даних та обчислень.
Беручи Гіпероракул як приклад, яка взаємозв'язок між zkOracleі zkCoprocessor?
zkOracle, який обговорюється в терміні Defining zkOracle для Ethereum, фактично має можливості як zkCoprocessors.
Наприклад, zkOracle, такий як Гіпер Оракул:
Коли ми прямо порівнюємо два типи zkCoprocessor з zkOracle, ми бачимо, що zkOracle має всі функції zkCoprocessor одночасно:
Пряме порівняння показує, що zkOracle - це більш комплексне рішення, яке може забезпечити розробникам більш повний технологічний стек.
Два zkCoprocessors розширюють свої відповідні вертикалі, наприклад, Data Access zkCoprocessor розблоковує сценарії міжланцюжкового взаємодії, а zkVM Compute zkCoprocessor представляє собою zkVM-базовий zk rollup.
Який вибрати при будівництві?
У порядку крок за кроком ми можемо приймати деякі рішення щодо побудови додатка.
Спочатку чиста реалізація умовних контрактів на мові Solidity все ще є дуже хорошим вибором. Хоча чисті умовні контракти не надають деяких найкращих новаторських функцій, вони все ще є достатнімиу певних сценаріях. Також поточна доступність Arbitrum Stylus розблокувала багато нових додатків з чистим смарт-контрактом.
У багатьох випадках розробники можуть бажати використовувати Data Access zkCoprocessor або zkOracle для смарт-контрактів, щоб отримати доступ до більш різноманітних джерел даних.
У цьому сценарії, якщо Data Access zkCoprocessor використовується самостійно, обчислення все ще обробляється в смарт-контракті. Роль zkCoprocessor полягає в тому, щоб зменшити складність отримання даних традиційним способом, але не зробити смарт-контракт більш обчислювально потужним.
У цьому сценарії ми бачимо багато невеликих проектів, пов'язаних з даними, скоріше, ніж повноцінні DApps у традиційному розумінні:
Часто деякі складні алгоритми не можуть бути обчислені безпосередньо на ланцюгу, для ігор обчислювальна логіка дуже складна, така як etherquake та GameOfLife, яка коштує $2k для виконання одного кроку. Або складні алгоритми, пов'язані з ML. Або складні алгоритми, пов'язані з ML, які неможливо виконати на ланцюгу. Тому нам потрібно zkVM zkCoprocessor або zkOracle для виконання обчислень офлайн, а потім подати їх на ланцюг як ZKP.
У цьому прикладі ми бачимо деякий їх необмежений обчислювальний потенціал:
Наостанок ми говорили про додатки, які можна будувати лише за допомогою zkOracle. На прикладі додатку DeFi, повноцінний DeFi є дуже складним. Наступне покоління додатків DeFi, або DeFi 3.0 DApps, буде потрібно:
Ми вже обговорювали, як zkOracle поєднує можливості як zkCoprocessors, виконуючи перші два функціональні вимоги. Як zkOracle виконує автономну функцію і як zkCoprocessor ні?
Так що означає відсутність автономного в zkCoprocessor:
Отже, zkOracle - це ідеальний та достатній вибір для повного додатка, такого як DeFi.
Варто зазначити, що хуки також можуть обробляти частину відсутньої функціональності zkCoprocessor, але ТІЛЬКИ в сценаріях на кшталт DeFi, а не універсально.