Розуміння Монада

Середній5/21/2024, 2:17:47 AM
Масштабованість транзакцій завжди була гарячою темою, і ця стаття досліджує, як Monad допомагає розширити TPS (транзакції на секунду), разом з детальним поясненням його роботи. Дірка не в повторному виконанні; дірка у доступі до пам'яті Ethereum. Метод зберігання стану Ethereum в базі даних ускладнює доступ до стану (часом затратний, а отже дорогий), що є ще одним вдосконаленням від Monad.

Привіт,

Масштабованість транзакцій стала предметом говоріння. Ми вивчали, як Monad допомагає масштабувати TPS протягом останніх кількох тижнів.

Нотатка нижче - це розбір того, як працює Монада, написана @desh_saurabh. Розгляньте можливість підписки наDecentralised.coякщо ви насолоджуєтеся читанням даних, які стимулюють пояснення з усіх справ Web3. Побачимося з іншого боку!

TPS - це метрика, над якою ми зациклюємося. Ми хочемо, щоб наші ланцюги підтримували більший TPS, оскільки вони могли б підтримати більше користувачів та додатків. Наведена нижче діаграма показує цифри TPS для Ethereum та L2s. Жоден ланцюг ніколи не перевищував позначку у 100 TPS. Зверніть увагу, що TPS - це загальний термін для вимірювання масштабу. TPS недостовірний, оскільки не всі транзакції рівні, оскільки вони відрізняються за складністю. Але ми використовуємо TPS як міру масштабу для спрощення.

Що ми робимо, якщо хочемо збільшити TPS?

  1. Один підхід полягає в побудові зовсім нової системи, як це зробив Solana. Він жертвує сумісністю з EVM на користь швидкості. Він використовує багатопотокове виконання замість однопотокового (подумайте про багатоядерний процесор проти одноядерного процесора), паралелізує транзакції та використовує інший механізм консенсусу.
  2. Другий підхід полягає в використанні виконання поза ланцюжком та масштабуванні Ethereum за допомогою централізованих послідовників.
  3. Третє - розібрати EVM на окремі компоненти та оптимізувати їх для покращення масштабованості.

Monad, нова L1, сумісна з EVM, що недавно залучила $225 мільйонів, будує EVM з нуля, а не використовує його таким, як він є. Воно вибрало цей третій підхід для збільшення масштабованості.

Ми обговорюємо кілька значущих змін, які вносить Monad.

Паралельне виконання

Віртуальна машина Ethereum (EVM) виконує транзакції послідовно. Доки виконується одна транзакція, наступна транзакція повинна чекати. Подумайте про це так. Скажімо, є платформа на складі збирання мотоциклів. Декілька вантажівок скидають деталі мотоциклів (так, щоб кожна вантажівка мала всі необхідні деталі для створення 50 мотоциклів). Склад має чотири різні функції з власними командами - вивантаження, сортування, збирання та завантаження.

При поточній установці EVM є лише одна платформа, і те саме місце використовується для завантаження та розвантаження. Тому, коли вантажівка припаркована, компоненти мотоцикла розвантажуються, сортуються, збираються та завантажуються на ту саму вантажівку. Поки сортувальна бригада працює, всі інші команди просто чекають. Отже, якщо ви думаєте про їхню роботу як про різні слоти, кожна команда працює лише один раз у чотирьох слотах. Це призводить до значної неефективності, підкреслюючи необхідність більш раціонального підходу.

Тепер уявіть, що є чотири платформи з різними зонами завантаження й вивантаження. Навіть якщо команда вивантаження може працювати лише з одним вантажівкою в один момент, їм не потрібно чекати на наступні три слоти. Вони можуть перейти безпосередньо до наступної вантажівки.

Те саме стосується команд сортування, збирання та завантаження. Як тільки вантажівка розвантажується, вона переїжджає на площадку для завантаження та чекає, поки команда завантаження завантажить зібрані мотоцикли. Таким чином, склад з однією платформою та зонами завантаження / розвантаження виконує все послідовно, а той, де є 4 платформи та різні зони завантаження / розвантаження, паралелізує.

Розгляньте Монаду як інфраструктуру, еквівалентну складу з кількома автоплатформами – але не такою простою. Складність збільшується, коли вантажівки є залежними. Наприклад, що, якщо одна автоплатформа не має всіх деталей для виготовлення 50 мотоциклів? Транзакції можуть бути не завжди незалежними. Таким чином, коли Монада виконує їх паралельно, вона повинна мати справу з транзакціями, що залежать одна від одної.

Як? Він виконує щось, що називається оптимістичним паралельним виконанням. Протокол може виконувати лише незалежні транзакції паралельно. Наприклад, розгляньте 4 транзакції з балансом Джоела в розмірі 1 ETH -

  1. Joel відправляє 0.2 ETH Саураву.
  2. Сід випускає NFT.
  3. Joel відправляє 0.1 ETH Сіду.
  4. Shlok купує PEPE.

Всі ці операції виконуються паралельно з очікуючими результатами, які затверджуються по одному. Операції виконуються повторно, якщо вихідні результати конфліктують з будь-якими вхідними даними оригінальної операції. Операції 2 та 4 не мають очікуючих результатів, які конфліктують з вхідними даними інших операцій, оскільки вони незалежні одна від одної. Але 1 та 3 не є незалежними.

Зверніть увагу, що оскільки всі 4 транзакції починаються з одного і того ж стану, та, що тут мається на увазі, - це баланс Джоела в 1 ETH. Результат відправлення Джоела 0,2 ETH - це 0,8 ETH. Після того, як Джоель надіслав 0,1 ETH Сіду, його баланс становить 0,9 ETH. Результати фіксуються по одному, забезпечуючи відсутність конфліктів з будь-яким з вхідних даних. Після того, як очікуваний результат 1 буде фіксований, новий баланс Джоела становить 0,8 ETH.

Цей вивід конфліктує з вводом 3. Тепер 3 виконується з вводом 0,8 ETH. Після виконання 3 баланс Джоела становить 0,7 ETH.

MonadDb

На цьому етапі очевидне питання полягає в тому, як ми можемо бути впевнені, що нам не доведеться повторно виконувати більшість транзакцій. Відповідь полягає в тому, що повторне виконання не є вузьким місцем. Вузьким місцем є доступ до пам'яті Ethereum. Виявляється, що спосіб, яким Ethereum зберігає свій стан в базі даних, ускладнює (часомісткий і, отже, дорогий) доступ до стану. Тут на сцену виходить інше поліпшення Monad - MonadDb. Monad побудував свою базу даних таким чином, що зменшує накладні витрати, пов'язані з операціями читання.

Коли транзакцію потрібно повторно виконати, всі вхідні дані вже знаходяться в кеш-пам'яті, що значно легше доступ до неї у порівнянні з загальним станом.

Солана має 50 тис. TPS на своєму тестові, але зараз робить близько 1 тис. на основній мережі. Монада стверджує, що досягла 10 тис. реальних TPS на внутрішньому тестовому майданчику. Хоча це не завжди є показником реальної продуктивності, ми з нетерпінням чекаємо, як Монада працює в дикій природі.

Заява:

  1. Ця стаття, оригінально названа "Розуміння Монади", відтворена з [Gateланцюжок]. Усі авторські права належать оригінальному автору [Децентралізовано.Co]. Якщо у вас є які-небудь зауваження щодо перепублікування, будь ласка, зв'яжіться з Команда Gate Learn, команда вирішить це якнайшвидше.

  2. Відмова від відповідальності: Погляди й думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.

  3. Переклади статті на інші мови здійснюються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонені.

Mời người khác bỏ phiếu

Nội dung

Розуміння Монада

Середній5/21/2024, 2:17:47 AM
Масштабованість транзакцій завжди була гарячою темою, і ця стаття досліджує, як Monad допомагає розширити TPS (транзакції на секунду), разом з детальним поясненням його роботи. Дірка не в повторному виконанні; дірка у доступі до пам'яті Ethereum. Метод зберігання стану Ethereum в базі даних ускладнює доступ до стану (часом затратний, а отже дорогий), що є ще одним вдосконаленням від Monad.

Привіт,

Масштабованість транзакцій стала предметом говоріння. Ми вивчали, як Monad допомагає масштабувати TPS протягом останніх кількох тижнів.

Нотатка нижче - це розбір того, як працює Монада, написана @desh_saurabh. Розгляньте можливість підписки наDecentralised.coякщо ви насолоджуєтеся читанням даних, які стимулюють пояснення з усіх справ Web3. Побачимося з іншого боку!

TPS - це метрика, над якою ми зациклюємося. Ми хочемо, щоб наші ланцюги підтримували більший TPS, оскільки вони могли б підтримати більше користувачів та додатків. Наведена нижче діаграма показує цифри TPS для Ethereum та L2s. Жоден ланцюг ніколи не перевищував позначку у 100 TPS. Зверніть увагу, що TPS - це загальний термін для вимірювання масштабу. TPS недостовірний, оскільки не всі транзакції рівні, оскільки вони відрізняються за складністю. Але ми використовуємо TPS як міру масштабу для спрощення.

Що ми робимо, якщо хочемо збільшити TPS?

  1. Один підхід полягає в побудові зовсім нової системи, як це зробив Solana. Він жертвує сумісністю з EVM на користь швидкості. Він використовує багатопотокове виконання замість однопотокового (подумайте про багатоядерний процесор проти одноядерного процесора), паралелізує транзакції та використовує інший механізм консенсусу.
  2. Другий підхід полягає в використанні виконання поза ланцюжком та масштабуванні Ethereum за допомогою централізованих послідовників.
  3. Третє - розібрати EVM на окремі компоненти та оптимізувати їх для покращення масштабованості.

Monad, нова L1, сумісна з EVM, що недавно залучила $225 мільйонів, будує EVM з нуля, а не використовує його таким, як він є. Воно вибрало цей третій підхід для збільшення масштабованості.

Ми обговорюємо кілька значущих змін, які вносить Monad.

Паралельне виконання

Віртуальна машина Ethereum (EVM) виконує транзакції послідовно. Доки виконується одна транзакція, наступна транзакція повинна чекати. Подумайте про це так. Скажімо, є платформа на складі збирання мотоциклів. Декілька вантажівок скидають деталі мотоциклів (так, щоб кожна вантажівка мала всі необхідні деталі для створення 50 мотоциклів). Склад має чотири різні функції з власними командами - вивантаження, сортування, збирання та завантаження.

При поточній установці EVM є лише одна платформа, і те саме місце використовується для завантаження та розвантаження. Тому, коли вантажівка припаркована, компоненти мотоцикла розвантажуються, сортуються, збираються та завантажуються на ту саму вантажівку. Поки сортувальна бригада працює, всі інші команди просто чекають. Отже, якщо ви думаєте про їхню роботу як про різні слоти, кожна команда працює лише один раз у чотирьох слотах. Це призводить до значної неефективності, підкреслюючи необхідність більш раціонального підходу.

Тепер уявіть, що є чотири платформи з різними зонами завантаження й вивантаження. Навіть якщо команда вивантаження може працювати лише з одним вантажівкою в один момент, їм не потрібно чекати на наступні три слоти. Вони можуть перейти безпосередньо до наступної вантажівки.

Те саме стосується команд сортування, збирання та завантаження. Як тільки вантажівка розвантажується, вона переїжджає на площадку для завантаження та чекає, поки команда завантаження завантажить зібрані мотоцикли. Таким чином, склад з однією платформою та зонами завантаження / розвантаження виконує все послідовно, а той, де є 4 платформи та різні зони завантаження / розвантаження, паралелізує.

Розгляньте Монаду як інфраструктуру, еквівалентну складу з кількома автоплатформами – але не такою простою. Складність збільшується, коли вантажівки є залежними. Наприклад, що, якщо одна автоплатформа не має всіх деталей для виготовлення 50 мотоциклів? Транзакції можуть бути не завжди незалежними. Таким чином, коли Монада виконує їх паралельно, вона повинна мати справу з транзакціями, що залежать одна від одної.

Як? Він виконує щось, що називається оптимістичним паралельним виконанням. Протокол може виконувати лише незалежні транзакції паралельно. Наприклад, розгляньте 4 транзакції з балансом Джоела в розмірі 1 ETH -

  1. Joel відправляє 0.2 ETH Саураву.
  2. Сід випускає NFT.
  3. Joel відправляє 0.1 ETH Сіду.
  4. Shlok купує PEPE.

Всі ці операції виконуються паралельно з очікуючими результатами, які затверджуються по одному. Операції виконуються повторно, якщо вихідні результати конфліктують з будь-якими вхідними даними оригінальної операції. Операції 2 та 4 не мають очікуючих результатів, які конфліктують з вхідними даними інших операцій, оскільки вони незалежні одна від одної. Але 1 та 3 не є незалежними.

Зверніть увагу, що оскільки всі 4 транзакції починаються з одного і того ж стану, та, що тут мається на увазі, - це баланс Джоела в 1 ETH. Результат відправлення Джоела 0,2 ETH - це 0,8 ETH. Після того, як Джоель надіслав 0,1 ETH Сіду, його баланс становить 0,9 ETH. Результати фіксуються по одному, забезпечуючи відсутність конфліктів з будь-яким з вхідних даних. Після того, як очікуваний результат 1 буде фіксований, новий баланс Джоела становить 0,8 ETH.

Цей вивід конфліктує з вводом 3. Тепер 3 виконується з вводом 0,8 ETH. Після виконання 3 баланс Джоела становить 0,7 ETH.

MonadDb

На цьому етапі очевидне питання полягає в тому, як ми можемо бути впевнені, що нам не доведеться повторно виконувати більшість транзакцій. Відповідь полягає в тому, що повторне виконання не є вузьким місцем. Вузьким місцем є доступ до пам'яті Ethereum. Виявляється, що спосіб, яким Ethereum зберігає свій стан в базі даних, ускладнює (часомісткий і, отже, дорогий) доступ до стану. Тут на сцену виходить інше поліпшення Monad - MonadDb. Monad побудував свою базу даних таким чином, що зменшує накладні витрати, пов'язані з операціями читання.

Коли транзакцію потрібно повторно виконати, всі вхідні дані вже знаходяться в кеш-пам'яті, що значно легше доступ до неї у порівнянні з загальним станом.

Солана має 50 тис. TPS на своєму тестові, але зараз робить близько 1 тис. на основній мережі. Монада стверджує, що досягла 10 тис. реальних TPS на внутрішньому тестовому майданчику. Хоча це не завжди є показником реальної продуктивності, ми з нетерпінням чекаємо, як Монада працює в дикій природі.

Заява:

  1. Ця стаття, оригінально названа "Розуміння Монади", відтворена з [Gateланцюжок]. Усі авторські права належать оригінальному автору [Децентралізовано.Co]. Якщо у вас є які-небудь зауваження щодо перепублікування, будь ласка, зв'яжіться з Команда Gate Learn, команда вирішить це якнайшвидше.

  2. Відмова від відповідальності: Погляди й думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.

  3. Переклади статті на інші мови здійснюються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонені.

Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500