Ми почали будувати Reth у 2022 році, щоб забезпечити стійкість Ethereum L1 та вирішити масштабування виконавчого рівня на Layer 2.
Сьогодні ми з нетерпінням ділимося шляхом Reth до 1 гігагаса на секунду в L2 до 2024 року та нашим довгостроковим планом для подальшого розвитку.
Ми запрошуємо екосистему співпрацювати з нами, коли ми просуваємо межі продуктивності та строгого бенчмаркінгу в криптосвіті.
Є дуже простий шлях для криптовалют досягнути глобального масштабу і уникнути спекуляцій як домінуючого випадку використання: транзакції повинні бути дешевими та швидкими.
Продуктивність зазвичай вимірюється за метрикою "Транзакції на секунду" (TPS). Особливо для Ethereum та інших блокчейнів EVM, більш дотепний та, можливо, точний показник - "газ на секунду". Ця метрика відображає кількість обчислювальної роботи, яку мережа може обробити кожну секунду, де "газ" - це одиниця, яка вимірює обчислювальні зусилля, необхідні для виконання операцій, таких як транзакції або смарт-контракти.
Стандартизація навколо газу на секунду як показника продуктивності дозволяє краще розуміння потужності та ефективності блокчейну. Вона також допомагає в оцінці витрат на систему, захищаючи від можливих атак відмови обслуговування (DOS), що можуть використовувати менш деталізовані вимірювання. Цей показник допомагає порівнювати продуктивність на різних ланцюгах, сумісних з Ethereum Virtual Machine (EVM).
Ми пропонуємо спільноті EVM прийняти газ на секунду як стандартну метрику, нарівні з включеннямінші аспекти ціноутворення на газстворити комплексний стандарт продуктивності.
Кількість газу на секунду визначається шляхом ділення цільового використання газу на блок на час блоку. Тут ми демонструємо поточний пропускний здатність газу на секунду та запізнення на різних ланцюгах EVM L1s та L2s (не вичерпно):
Ми підкреслюємо газ за секунду для ретельної оцінки продуктивності мережі EVM, захоплюючи як обчислювальні, так і зберігання витрати. Мережі, такі як Solana, Sui або Aptos, не включені через їхні відмінні моделі витрат. Ми підтримуємо зусилля щодо узгодження моделей витрат усіх блокчейн-мереж для забезпечення комплексних і справедливих порівнянь.
Ми працюємо над постійним набором тестів для Reth, що реплікує реальне навантаження, якщо ви хочете співпрацювати над цим, будь ласка, зверніться. Нам потрібно TPC Бенчмаркдля вузлів.
Ми були частково мотивовані побудувати Reth у 2022 році необхідністю мати клієнт, спеціально створений для веб-масштабних роллапів. Ми вважаємо, що маємо перспективний шлях вперед.
Reth вже досягає 100-200mgas/s під час живої синхронізації (включаючи відновлення відправників, виконання транзакцій та обчислення триі на кожному блоку); ще 10 разів забезпечує досягнення нашої короткострокової цілі - 1 гігагас/с.
Поки ми розвиваємо розвиток Reth, наш план масштабування повинен балансувати масштабованість з ефективністю:
Оптимізації, які ми досліджуємо тут, не передбачають вирішення зростання стану, який ми вивчаємо окремо.
Ось краткий опис того, як ми маємо намір туди дістатися:
По всьому стеку ми також оптимізуємо роботу з ІО та ЦП за допомогою моделі актора, щоб кожна частина стеку могла бути розгорнута як сервіс з дрібним контролем над його використанням. Нарешті, ми активно оцінюємо альтернативні бази даних, але ще не вирішили, на кого конкретно вибратися.
Наша мета тут полягає в максимізації продуктивності та ефективності одного сервера або ноутбука, на якому працює Reth.
У блокчейн середовищах, таких як Віртуальна Машина Ethereum (EVM), виконання байткоду відбувається через інтерпретатор, який послідовно обробляє інструкції. Цей метод вводить додаткові накладні витрати, оскільки він не виконує нативні асемблерні інструкції безпосередньо, а замість цього працює через шар ВМ.
Компіляція Just-In-Time (JIT) вирішує це, перетворюючи байткод на машинний код безпосередньо перед виконанням, тим самим покращуючи продуктивність шляхом обходу інтерпретаційного процесу віртуальної машини. Ця техніка, яка компілює контракти в оптимізований машинний код заздалегідь, добре зарекомендована в інших віртуальних машинах, таких як Java та WebAssembly.
Однак JIT може бути вразливим до зловмисного коду, розробленого для використання процесу JIT, або може бути занадто повільним для виконання під час виконання. Reth буде компілювати Ahead-of-Time (AOT) найвимогливіші контракти та зберігати їх на диску, щоб уникнути спроб ненадійного байткоду зловживати нашим кроком компіляції коду під час живого виконання.
Ми працюємо над компілятором JIT/AOT для Revm, який зараз інтегрується з Reth. Ми відкриємо вихідний код цього в наступні тижні, як тільки завершиться наше вимірювання продуктивності. Приблизно 50% часу виконання в середньому витрачається на інтерпретатор EVM, тому це має забезпечити покращення виконання EVM приблизно в 2 рази, хоча в деяких більш обчислювально важких випадках це може бути ще більш впливовим. Ми будемо ділитися нашими вимірюваннями продуктивності та інтеграцією нашого власного JIT EVM в Reth у наступні тижні.
Концепція паралельної віртуальної машини Ethereum (Parallel EVM) дозволяє одночасну обробку транзакцій, відступаючи від традиційної послідовної моделі виконання EVM. У нас тут є 2 шляхи вперед:
За нашим історичним аналізом, ~80% слотів зберігання Ethereum доступні незалежно, що означає, що паралельність може призвести до покращення виконання EVM до 5 разів.
Минедавно писав провплив кореня держави на продуктивність та відмінності між моделлю бази даних Reth від інших клієнтів, а також чому це важливо.
В моделі Reth обчислення кореня стану - окремий процес від виконання транзакцій (бачити наш код) , що дозволяє використовувати стандартні магазини KV, які не потребують нічого знати про три. На даний момент це становить понад 75% часу від початку до кінця для запечатання блоку, і це дуже захоплююча область для оптимізації.
Ми визначаємо наступні 2 "легкі перемоги", які можуть дати нам 2-3 рази в продуктивності кореня стану, без будь-яких змін в протоколі:
Виходячи за межі цього, ми бачимо кілька шляхів вперед, відхиляючись від поведінки кореня стану Ethereum L1.
Тут є кілька питань:
Протягом 2024 року ми виконаємо кілька з перерахованих вище пунктів і досягнемо нашої мети в 1 гігагага/сек.
Однак вертикальне масштабування в кінцевому підсумку зіштовхується з фізичними та практичними обмеженнями. Жодна окрема машина не зможе впоратися з обчислювальними потребами світу. Ми вважаємо, що тут є 2 шляхи вперед, які дозволяють нам масштабуватися шляхом введення більше блоків при надходженні більшого навантаження:
Сьогоднішні стеки L2 вимагають запуску кількох служб для слідування ланцюгу: L1 CL, L1 EL, функцію похідного L1 -> L2 (яка може бути включена до L2 EL), та L2 EL. Це дуже зручно для модульності, але ускладнюється при запуску кількох стеків вузлів. Уявіть, якщо вам потрібно запустити 100 rollups!
Ми хочемо дозволити запуск роллапів в тому ж процесі, що і Reth, та знизити операційні витрати на запуск тисяч роллапів практично до нуля.
Ми вже розпочали це з нашим Проекти розширення виконання ([1], [2]) , більше інформації буде надходити у наступні тижні тут.
Високопродуктивні послідовники можуть мати достатньо попиту на одному ланцюжку, що вимагає масштабування за межі однієї машини. Це неможливо в сьогоднішніх монолітних реалізаціях вузлів.
Ми хочемо дозволити запуск Cloud-native Reth вузлів, розгорнутих як стек служб, які можуть автоматично масштабуватися за попитом обчислень та використовувати здається нескінченне об'єктне сховище хмар для постійності. Це загальна архітектура в проектах безсерверних баз даних, таких як NeonDB, CockroachDB або Amazon Aurora.
Дивитися ранні думкивід нашої команди щодо деяких способів, якими ми можемо вирішити цю проблему.
Ми маємо намір поетапно впроваджувати цю дорожню карту для всіх користувачів Reth. Наша місія - надати всім доступ до 1 гігагас / с та більше. Ми будемо тестувати наші оптимізації на Reth AlphaNet, і сподіваємося, що люди будуть будувати модифіковані високопродуктивні вузли, використовуючи Reth як SDK.
Є деякі питання, на які ми ще не знайшли відповіді.
Ми не маємо відповідей на багато з цих питань, але у нас є достатньо перших перспективних вказівок, щоб тримати нас зайнятими протягом деякого часу і сподіваємося побачити, як ці зусилля принесуть плоди у наступних місяцях.
Ми почали будувати Reth у 2022 році, щоб забезпечити стійкість Ethereum L1 та вирішити масштабування виконавчого рівня на Layer 2.
Сьогодні ми з нетерпінням ділимося шляхом Reth до 1 гігагаса на секунду в L2 до 2024 року та нашим довгостроковим планом для подальшого розвитку.
Ми запрошуємо екосистему співпрацювати з нами, коли ми просуваємо межі продуктивності та строгого бенчмаркінгу в криптосвіті.
Є дуже простий шлях для криптовалют досягнути глобального масштабу і уникнути спекуляцій як домінуючого випадку використання: транзакції повинні бути дешевими та швидкими.
Продуктивність зазвичай вимірюється за метрикою "Транзакції на секунду" (TPS). Особливо для Ethereum та інших блокчейнів EVM, більш дотепний та, можливо, точний показник - "газ на секунду". Ця метрика відображає кількість обчислювальної роботи, яку мережа може обробити кожну секунду, де "газ" - це одиниця, яка вимірює обчислювальні зусилля, необхідні для виконання операцій, таких як транзакції або смарт-контракти.
Стандартизація навколо газу на секунду як показника продуктивності дозволяє краще розуміння потужності та ефективності блокчейну. Вона також допомагає в оцінці витрат на систему, захищаючи від можливих атак відмови обслуговування (DOS), що можуть використовувати менш деталізовані вимірювання. Цей показник допомагає порівнювати продуктивність на різних ланцюгах, сумісних з Ethereum Virtual Machine (EVM).
Ми пропонуємо спільноті EVM прийняти газ на секунду як стандартну метрику, нарівні з включеннямінші аспекти ціноутворення на газстворити комплексний стандарт продуктивності.
Кількість газу на секунду визначається шляхом ділення цільового використання газу на блок на час блоку. Тут ми демонструємо поточний пропускний здатність газу на секунду та запізнення на різних ланцюгах EVM L1s та L2s (не вичерпно):
Ми підкреслюємо газ за секунду для ретельної оцінки продуктивності мережі EVM, захоплюючи як обчислювальні, так і зберігання витрати. Мережі, такі як Solana, Sui або Aptos, не включені через їхні відмінні моделі витрат. Ми підтримуємо зусилля щодо узгодження моделей витрат усіх блокчейн-мереж для забезпечення комплексних і справедливих порівнянь.
Ми працюємо над постійним набором тестів для Reth, що реплікує реальне навантаження, якщо ви хочете співпрацювати над цим, будь ласка, зверніться. Нам потрібно TPC Бенчмаркдля вузлів.
Ми були частково мотивовані побудувати Reth у 2022 році необхідністю мати клієнт, спеціально створений для веб-масштабних роллапів. Ми вважаємо, що маємо перспективний шлях вперед.
Reth вже досягає 100-200mgas/s під час живої синхронізації (включаючи відновлення відправників, виконання транзакцій та обчислення триі на кожному блоку); ще 10 разів забезпечує досягнення нашої короткострокової цілі - 1 гігагас/с.
Поки ми розвиваємо розвиток Reth, наш план масштабування повинен балансувати масштабованість з ефективністю:
Оптимізації, які ми досліджуємо тут, не передбачають вирішення зростання стану, який ми вивчаємо окремо.
Ось краткий опис того, як ми маємо намір туди дістатися:
По всьому стеку ми також оптимізуємо роботу з ІО та ЦП за допомогою моделі актора, щоб кожна частина стеку могла бути розгорнута як сервіс з дрібним контролем над його використанням. Нарешті, ми активно оцінюємо альтернативні бази даних, але ще не вирішили, на кого конкретно вибратися.
Наша мета тут полягає в максимізації продуктивності та ефективності одного сервера або ноутбука, на якому працює Reth.
У блокчейн середовищах, таких як Віртуальна Машина Ethereum (EVM), виконання байткоду відбувається через інтерпретатор, який послідовно обробляє інструкції. Цей метод вводить додаткові накладні витрати, оскільки він не виконує нативні асемблерні інструкції безпосередньо, а замість цього працює через шар ВМ.
Компіляція Just-In-Time (JIT) вирішує це, перетворюючи байткод на машинний код безпосередньо перед виконанням, тим самим покращуючи продуктивність шляхом обходу інтерпретаційного процесу віртуальної машини. Ця техніка, яка компілює контракти в оптимізований машинний код заздалегідь, добре зарекомендована в інших віртуальних машинах, таких як Java та WebAssembly.
Однак JIT може бути вразливим до зловмисного коду, розробленого для використання процесу JIT, або може бути занадто повільним для виконання під час виконання. Reth буде компілювати Ahead-of-Time (AOT) найвимогливіші контракти та зберігати їх на диску, щоб уникнути спроб ненадійного байткоду зловживати нашим кроком компіляції коду під час живого виконання.
Ми працюємо над компілятором JIT/AOT для Revm, який зараз інтегрується з Reth. Ми відкриємо вихідний код цього в наступні тижні, як тільки завершиться наше вимірювання продуктивності. Приблизно 50% часу виконання в середньому витрачається на інтерпретатор EVM, тому це має забезпечити покращення виконання EVM приблизно в 2 рази, хоча в деяких більш обчислювально важких випадках це може бути ще більш впливовим. Ми будемо ділитися нашими вимірюваннями продуктивності та інтеграцією нашого власного JIT EVM в Reth у наступні тижні.
Концепція паралельної віртуальної машини Ethereum (Parallel EVM) дозволяє одночасну обробку транзакцій, відступаючи від традиційної послідовної моделі виконання EVM. У нас тут є 2 шляхи вперед:
За нашим історичним аналізом, ~80% слотів зберігання Ethereum доступні незалежно, що означає, що паралельність може призвести до покращення виконання EVM до 5 разів.
Минедавно писав провплив кореня держави на продуктивність та відмінності між моделлю бази даних Reth від інших клієнтів, а також чому це важливо.
В моделі Reth обчислення кореня стану - окремий процес від виконання транзакцій (бачити наш код) , що дозволяє використовувати стандартні магазини KV, які не потребують нічого знати про три. На даний момент це становить понад 75% часу від початку до кінця для запечатання блоку, і це дуже захоплююча область для оптимізації.
Ми визначаємо наступні 2 "легкі перемоги", які можуть дати нам 2-3 рази в продуктивності кореня стану, без будь-яких змін в протоколі:
Виходячи за межі цього, ми бачимо кілька шляхів вперед, відхиляючись від поведінки кореня стану Ethereum L1.
Тут є кілька питань:
Протягом 2024 року ми виконаємо кілька з перерахованих вище пунктів і досягнемо нашої мети в 1 гігагага/сек.
Однак вертикальне масштабування в кінцевому підсумку зіштовхується з фізичними та практичними обмеженнями. Жодна окрема машина не зможе впоратися з обчислювальними потребами світу. Ми вважаємо, що тут є 2 шляхи вперед, які дозволяють нам масштабуватися шляхом введення більше блоків при надходженні більшого навантаження:
Сьогоднішні стеки L2 вимагають запуску кількох служб для слідування ланцюгу: L1 CL, L1 EL, функцію похідного L1 -> L2 (яка може бути включена до L2 EL), та L2 EL. Це дуже зручно для модульності, але ускладнюється при запуску кількох стеків вузлів. Уявіть, якщо вам потрібно запустити 100 rollups!
Ми хочемо дозволити запуск роллапів в тому ж процесі, що і Reth, та знизити операційні витрати на запуск тисяч роллапів практично до нуля.
Ми вже розпочали це з нашим Проекти розширення виконання ([1], [2]) , більше інформації буде надходити у наступні тижні тут.
Високопродуктивні послідовники можуть мати достатньо попиту на одному ланцюжку, що вимагає масштабування за межі однієї машини. Це неможливо в сьогоднішніх монолітних реалізаціях вузлів.
Ми хочемо дозволити запуск Cloud-native Reth вузлів, розгорнутих як стек служб, які можуть автоматично масштабуватися за попитом обчислень та використовувати здається нескінченне об'єктне сховище хмар для постійності. Це загальна архітектура в проектах безсерверних баз даних, таких як NeonDB, CockroachDB або Amazon Aurora.
Дивитися ранні думкивід нашої команди щодо деяких способів, якими ми можемо вирішити цю проблему.
Ми маємо намір поетапно впроваджувати цю дорожню карту для всіх користувачів Reth. Наша місія - надати всім доступ до 1 гігагас / с та більше. Ми будемо тестувати наші оптимізації на Reth AlphaNet, і сподіваємося, що люди будуть будувати модифіковані високопродуктивні вузли, використовуючи Reth як SDK.
Є деякі питання, на які ми ще не знайшли відповіді.
Ми не маємо відповідей на багато з цих питань, але у нас є достатньо перших перспективних вказівок, щоб тримати нас зайнятими протягом деякого часу і сподіваємося побачити, як ці зусилля принесуть плоди у наступних місяцях.