Привіт,
Масштабованість транзакцій стала предметом говоріння. Ми вивчали, як Monad допомагає масштабувати TPS протягом останніх кількох тижнів.
Нотатка нижче - це розбір того, як працює Монада, написана @desh_saurabh. Розгляньте можливість підписки наDecentralised.coякщо ви насолоджуєтеся читанням даних, які стимулюють пояснення з усіх справ Web3. Побачимося з іншого боку!
TPS - це метрика, над якою ми зациклюємося. Ми хочемо, щоб наші ланцюги підтримували більший TPS, оскільки вони могли б підтримати більше користувачів та додатків. Наведена нижче діаграма показує цифри TPS для Ethereum та L2s. Жоден ланцюг ніколи не перевищував позначку у 100 TPS. Зверніть увагу, що TPS - це загальний термін для вимірювання масштабу. TPS недостовірний, оскільки не всі транзакції рівні, оскільки вони відрізняються за складністю. Але ми використовуємо TPS як міру масштабу для спрощення.
Що ми робимо, якщо хочемо збільшити TPS?
Monad, нова L1, сумісна з EVM, що недавно залучила $225 мільйонів, будує EVM з нуля, а не використовує його таким, як він є. Воно вибрало цей третій підхід для збільшення масштабованості.
Ми обговорюємо кілька значущих змін, які вносить Monad.
Віртуальна машина Ethereum (EVM) виконує транзакції послідовно. Доки виконується одна транзакція, наступна транзакція повинна чекати. Подумайте про це так. Скажімо, є платформа на складі збирання мотоциклів. Декілька вантажівок скидають деталі мотоциклів (так, щоб кожна вантажівка мала всі необхідні деталі для створення 50 мотоциклів). Склад має чотири різні функції з власними командами - вивантаження, сортування, збирання та завантаження.
При поточній установці EVM є лише одна платформа, і те саме місце використовується для завантаження та розвантаження. Тому, коли вантажівка припаркована, компоненти мотоцикла розвантажуються, сортуються, збираються та завантажуються на ту саму вантажівку. Поки сортувальна бригада працює, всі інші команди просто чекають. Отже, якщо ви думаєте про їхню роботу як про різні слоти, кожна команда працює лише один раз у чотирьох слотах. Це призводить до значної неефективності, підкреслюючи необхідність більш раціонального підходу.
Тепер уявіть, що є чотири платформи з різними зонами завантаження й вивантаження. Навіть якщо команда вивантаження може працювати лише з одним вантажівкою в один момент, їм не потрібно чекати на наступні три слоти. Вони можуть перейти безпосередньо до наступної вантажівки.
Те саме стосується команд сортування, збирання та завантаження. Як тільки вантажівка розвантажується, вона переїжджає на площадку для завантаження та чекає, поки команда завантаження завантажить зібрані мотоцикли. Таким чином, склад з однією платформою та зонами завантаження / розвантаження виконує все послідовно, а той, де є 4 платформи та різні зони завантаження / розвантаження, паралелізує.
Розгляньте Монаду як інфраструктуру, еквівалентну складу з кількома автоплатформами – але не такою простою. Складність збільшується, коли вантажівки є залежними. Наприклад, що, якщо одна автоплатформа не має всіх деталей для виготовлення 50 мотоциклів? Транзакції можуть бути не завжди незалежними. Таким чином, коли Монада виконує їх паралельно, вона повинна мати справу з транзакціями, що залежать одна від одної.
Як? Він виконує щось, що називається оптимістичним паралельним виконанням. Протокол може виконувати лише незалежні транзакції паралельно. Наприклад, розгляньте 4 транзакції з балансом Джоела в розмірі 1 ETH -
Всі ці операції виконуються паралельно з очікуючими результатами, які затверджуються по одному. Операції виконуються повторно, якщо вихідні результати конфліктують з будь-якими вхідними даними оригінальної операції. Операції 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.
На цьому етапі очевидне питання полягає в тому, як ми можемо бути впевнені, що нам не доведеться повторно виконувати більшість транзакцій. Відповідь полягає в тому, що повторне виконання не є вузьким місцем. Вузьким місцем є доступ до пам'яті Ethereum. Виявляється, що спосіб, яким Ethereum зберігає свій стан в базі даних, ускладнює (часомісткий і, отже, дорогий) доступ до стану. Тут на сцену виходить інше поліпшення Monad - MonadDb. Monad побудував свою базу даних таким чином, що зменшує накладні витрати, пов'язані з операціями читання.
Коли транзакцію потрібно повторно виконати, всі вхідні дані вже знаходяться в кеш-пам'яті, що значно легше доступ до неї у порівнянні з загальним станом.
Солана має 50 тис. TPS на своєму тестові, але зараз робить близько 1 тис. на основній мережі. Монада стверджує, що досягла 10 тис. реальних TPS на внутрішньому тестовому майданчику. Хоча це не завжди є показником реальної продуктивності, ми з нетерпінням чекаємо, як Монада працює в дикій природі.
Ця стаття, оригінально названа "Розуміння Монади", відтворена з [Gateланцюжок]. Усі авторські права належать оригінальному автору [Децентралізовано.Co]. Якщо у вас є які-небудь зауваження щодо перепублікування, будь ласка, зв'яжіться з Команда Gate Learn, команда вирішить це якнайшвидше.
Відмова від відповідальності: Погляди й думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.
Переклади статті на інші мови здійснюються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонені.
Mời người khác bỏ phiếu
Nội dung
Привіт,
Масштабованість транзакцій стала предметом говоріння. Ми вивчали, як Monad допомагає масштабувати TPS протягом останніх кількох тижнів.
Нотатка нижче - це розбір того, як працює Монада, написана @desh_saurabh. Розгляньте можливість підписки наDecentralised.coякщо ви насолоджуєтеся читанням даних, які стимулюють пояснення з усіх справ Web3. Побачимося з іншого боку!
TPS - це метрика, над якою ми зациклюємося. Ми хочемо, щоб наші ланцюги підтримували більший TPS, оскільки вони могли б підтримати більше користувачів та додатків. Наведена нижче діаграма показує цифри TPS для Ethereum та L2s. Жоден ланцюг ніколи не перевищував позначку у 100 TPS. Зверніть увагу, що TPS - це загальний термін для вимірювання масштабу. TPS недостовірний, оскільки не всі транзакції рівні, оскільки вони відрізняються за складністю. Але ми використовуємо TPS як міру масштабу для спрощення.
Що ми робимо, якщо хочемо збільшити TPS?
Monad, нова L1, сумісна з EVM, що недавно залучила $225 мільйонів, будує EVM з нуля, а не використовує його таким, як він є. Воно вибрало цей третій підхід для збільшення масштабованості.
Ми обговорюємо кілька значущих змін, які вносить Monad.
Віртуальна машина Ethereum (EVM) виконує транзакції послідовно. Доки виконується одна транзакція, наступна транзакція повинна чекати. Подумайте про це так. Скажімо, є платформа на складі збирання мотоциклів. Декілька вантажівок скидають деталі мотоциклів (так, щоб кожна вантажівка мала всі необхідні деталі для створення 50 мотоциклів). Склад має чотири різні функції з власними командами - вивантаження, сортування, збирання та завантаження.
При поточній установці EVM є лише одна платформа, і те саме місце використовується для завантаження та розвантаження. Тому, коли вантажівка припаркована, компоненти мотоцикла розвантажуються, сортуються, збираються та завантажуються на ту саму вантажівку. Поки сортувальна бригада працює, всі інші команди просто чекають. Отже, якщо ви думаєте про їхню роботу як про різні слоти, кожна команда працює лише один раз у чотирьох слотах. Це призводить до значної неефективності, підкреслюючи необхідність більш раціонального підходу.
Тепер уявіть, що є чотири платформи з різними зонами завантаження й вивантаження. Навіть якщо команда вивантаження може працювати лише з одним вантажівкою в один момент, їм не потрібно чекати на наступні три слоти. Вони можуть перейти безпосередньо до наступної вантажівки.
Те саме стосується команд сортування, збирання та завантаження. Як тільки вантажівка розвантажується, вона переїжджає на площадку для завантаження та чекає, поки команда завантаження завантажить зібрані мотоцикли. Таким чином, склад з однією платформою та зонами завантаження / розвантаження виконує все послідовно, а той, де є 4 платформи та різні зони завантаження / розвантаження, паралелізує.
Розгляньте Монаду як інфраструктуру, еквівалентну складу з кількома автоплатформами – але не такою простою. Складність збільшується, коли вантажівки є залежними. Наприклад, що, якщо одна автоплатформа не має всіх деталей для виготовлення 50 мотоциклів? Транзакції можуть бути не завжди незалежними. Таким чином, коли Монада виконує їх паралельно, вона повинна мати справу з транзакціями, що залежать одна від одної.
Як? Він виконує щось, що називається оптимістичним паралельним виконанням. Протокол може виконувати лише незалежні транзакції паралельно. Наприклад, розгляньте 4 транзакції з балансом Джоела в розмірі 1 ETH -
Всі ці операції виконуються паралельно з очікуючими результатами, які затверджуються по одному. Операції виконуються повторно, якщо вихідні результати конфліктують з будь-якими вхідними даними оригінальної операції. Операції 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.
На цьому етапі очевидне питання полягає в тому, як ми можемо бути впевнені, що нам не доведеться повторно виконувати більшість транзакцій. Відповідь полягає в тому, що повторне виконання не є вузьким місцем. Вузьким місцем є доступ до пам'яті Ethereum. Виявляється, що спосіб, яким Ethereum зберігає свій стан в базі даних, ускладнює (часомісткий і, отже, дорогий) доступ до стану. Тут на сцену виходить інше поліпшення Monad - MonadDb. Monad побудував свою базу даних таким чином, що зменшує накладні витрати, пов'язані з операціями читання.
Коли транзакцію потрібно повторно виконати, всі вхідні дані вже знаходяться в кеш-пам'яті, що значно легше доступ до неї у порівнянні з загальним станом.
Солана має 50 тис. TPS на своєму тестові, але зараз робить близько 1 тис. на основній мережі. Монада стверджує, що досягла 10 тис. реальних TPS на внутрішньому тестовому майданчику. Хоча це не завжди є показником реальної продуктивності, ми з нетерпінням чекаємо, як Монада працює в дикій природі.
Ця стаття, оригінально названа "Розуміння Монади", відтворена з [Gateланцюжок]. Усі авторські права належать оригінальному автору [Децентралізовано.Co]. Якщо у вас є які-небудь зауваження щодо перепублікування, будь ласка, зв'яжіться з Команда Gate Learn, команда вирішить це якнайшвидше.
Відмова від відповідальності: Погляди й думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.
Переклади статті на інші мови здійснюються командою Gate Learn. Якщо не зазначено інше, копіювання, поширення або плагіатування перекладених статей заборонені.