Проінтерпретуйте розумний дизайн stETH

Середній3/22/2024, 10:01:35 PM
Основна логіка stETH полягає в тому, щоб депонувати ETH на Lido. Lido використовує ці ETH для участі в PoS (Proof of Stake) Ethereum з метою отримання винагород, а користувачі отримують відповідний stETH як підтвердження їх участі. Після цього Lido розподіляє винагороди на адреси, які утримують stETH.

Переслано назва: Розумний дизайн контракту: дивіться, як stETH автоматично щоденно розподіляє прибуток? Дозвольте вашому ETH брати участь в укладанні ставок, щоб отримувати стабільний інтерес.

Автор конвертував невелику кількість Ефіру (ETH) в стабільний Ефір (stETH) та виявив, що кількість stETH збільшувалася природно щодня, приносячи постійний прибуток. Однак нарахування прибутку щодо транзакцій в обліковому записі не були видимі. Чому так? Ця стаття розгляне хитрий дизайн за цим і розкриє секрет розподілу прибутку.

1 stETH заробив деякі прибутки після кількох днів.

Перш ніж зануритися у те, як stETH заробляє прибуток, спочатку давайте представимо логіку за її спиною, якою є стейкінг Ethereum. Читачі, які вже знайомі з цим концепцією, можуть пропустити вперед.

Спочатку Ethereum, як і Bitcoin, використовував доказ роботи (PoW) як свій механізм консенсусу. Однак через обурення споживання енергії, безпеки та масштабованості, Ethereum перейшов на доказ власності (PoS) у вересні 2022 року.

Раніше Ethereum покладався на гірничу потужність для досягнення консенсусу, тепер Ethereum покладається на учасників, які ставлять ETH, щоб отримати право голосу та заробляти винагороду через голосування. Це стимулює консенсус через PoS.

За ставлення 32 ETH можна приєднатися до мережі Ethereum як валідатор, відповідального за зберігання даних, обробку транзакцій та додавання нових блоків до блокчейну. Валідатори отримують винагороду в ETH за правильну упаковку транзакцій в нові блоки та перевірку роботи інших валідаторів, що дозволяє отримувати відносно стабільний дохід від стейкінгу.

Однак традиційний стейкінг є незручним для звичайних користувачів, оскільки вимагає 32 ETH та спеціалізованого комп'ютера з безперервним доступом до мережі Ethereum. Крім того, стейкінг ETH блокує ліквідність. Таким чином, виникнення похідних ліквідного стейкінгу (LSD), спрямованих на вирішення перешкод та проблем ліквідності традиційного стейкінгу. LSD дозволяє користувачам ставити менше, ніж 32 ETH та делегувати свої ETH стороннім постачальникам стейкінгу, отримуючи відповідні токени стейкінгу (наприклад, stETH від Lido або rETH від Rocket Pool). Ці ліквідні токени можуть бути обмінені, взяті у позику або використані для інших фінансових операцій на різних платформах, що дозволяє користувачам зручніше брати участь у стейкінгу, зберігаючи при цьому ліквідність.

Отже, основна логіка за stETH полягає в тому, що користувачі надають свої ETH в Lido, яка потім використовує ці ETH для участі в PoS Ethereum з метою отримання прибутку. Натомість користувачі отримують stETH як підтвердження їхнього вкладу. Далі Lido розподіляє прибуток на адреси, які мають stETH.

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

На цей момент ті, хто знайомі з розробкою розумних контрактів, можуть запитати: з такими малими щоденними прибутками, чи достатньо цього навіть для покриття комісій за газ?

Зокрема, якщо Lido розподілятиме прибуток за найпростішим методом, ймовірно, воно мало б проблеми з покриттям витрат на газ. Відправлення токенів на таку велику кількість адрес потребуватиме значних комісій за газ, що може бути не доцільним.

Однак Лідо вдалося досягти автоматичного зростання прибутку в утриманні stETH у гаманцях без будь-яких здавалося б транзакцій. Як це можливо?

Ми знайшли контракт Lido на https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84та відстежив метод balanceOf в контракті.

Метод balanceOf відповідає стандарту ERC20 і використовується гаманцями для отримання кількості токенів, що належать користувачеві.

У контракті stETH ми бачимо, що він викликає метод getPooledEthByShares. Цей метод приймає картування (адреса => uint256) приватних акцій як вхідні дані. Чи це представляє, скільки stETH має користувач? Очевидно, що ні, оскільки оновлення даних для кожної адреси кожен день було б недосяжним. Хоча оновлення акцій у одній транзакції може досягти цього, споживання газу все одно буде значним.

На цей момент багато з вас, можливо, вже здогадалися, як працює контракт. Продовжимо досліджувати метод getPooledEthByShares.

Можна помітити, що кінцевий результат отримується шляхом множення sharesAmount за адресою на _getTotalPooledEther() і ділення на _getTotalShares.

_getTotalPooledEther представляє загальну кількість stETH (що, якщо stETH закріплено за ETH в співвідношенні 1:1, також представляє загальну кількість ETH), тоді як _getTotalShares представляє загальну кількість акцій. З цим обчисленням динамічно визначається кількість stETH, що належить кожній адресі.

Наприклад, якщо всього 1000 акцій, і Адреса А володіє 100 акціями (як це виражено в sharesAmount), а загальна кількість stETH становить 1000 (як повертає _getTotalPooledEther), то згідно з цим розрахунком Адреса А володіла б 100 stETH.

Тепер, якщо Lido ставить загалом 1000 ETH і заробляє 1 ETH прибутку, оновлюючи _getTotalPooledEther до 1001, це означає, що загальна кількість stETH збільшується з 1000 до 1001. Отже, новий розрахунок для адреси A буде 100 * 1001 / 1000 = 100.1 stETH.

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

Продовжуючи роботу з кодом, логіка в межах _getTotalPooledEther впливає на метод handleOracleReport, який оновлює відповідні дані в межах контракту. Цей метод періодично викликається, і конкретний виклик відбувається через контракт наhttps://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, яка періодично викликає submitReportData для оновлення даних (submitReportData внутрішньо викликає handleOracleReport в контракті Lido):

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

Це ілюструє характеристику смарт-контрактів Ethereum ERC20: кількість токенів, що належать адресам, не захардкоджена, а повертається методами контракту. Тому баланс токенів адреси може змінюватися навіть без будь-яких транзакцій. Хоча ця гнучкість робить контракти ERC20 більш універсальними, це також може бути плутанинням для тих, хто не знайомий з контрактами. Сподіваюся, ця стаття допоможе читачам краще зрозуміти смарт-контракти та безпечно та розумно взаємодіяти з ними.

Крім того, хоча стейкінг ETH для отримання stETH, здається, пропонує стабільні винагороди за стейкінг, все ж існують потенційні ризики. Ця стаття служить технічним дослідженням стейкінгових контрактів і не повинна розглядатися як інвестиційні поради.

Заява:

  1. Цю статтю відтворено з [ Команда ZAN],Оригінальний заголовок «Винахідницький дизайн контракту, подивіться, як stETH автоматично розподіляє дохід щоденно? Дозвольте вашому ETH брати участь у стейкінгу для отримання стабільного відсотка», Авторське право належить оригінальному авторові[ZAN Team], якщо у вас є які-небудь зауваження щодо перепублікації, будь ласка, зв'яжіться Ворота Навчаннякоманда, і команда якнайшвидше вирішить це відповідно до відповідних процедур.

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

  3. Інші мовні версії статті перекладаються командою Gate Learn і не згадуються в Gate.io) , перекладений матеріал не може бути відтворений, розповсюджений або узятому з чужих джерел.

Compartilhar

Conteúdo

Проінтерпретуйте розумний дизайн stETH

Середній3/22/2024, 10:01:35 PM
Основна логіка stETH полягає в тому, щоб депонувати ETH на Lido. Lido використовує ці ETH для участі в PoS (Proof of Stake) Ethereum з метою отримання винагород, а користувачі отримують відповідний stETH як підтвердження їх участі. Після цього Lido розподіляє винагороди на адреси, які утримують stETH.

Переслано назва: Розумний дизайн контракту: дивіться, як stETH автоматично щоденно розподіляє прибуток? Дозвольте вашому ETH брати участь в укладанні ставок, щоб отримувати стабільний інтерес.

Автор конвертував невелику кількість Ефіру (ETH) в стабільний Ефір (stETH) та виявив, що кількість stETH збільшувалася природно щодня, приносячи постійний прибуток. Однак нарахування прибутку щодо транзакцій в обліковому записі не були видимі. Чому так? Ця стаття розгляне хитрий дизайн за цим і розкриє секрет розподілу прибутку.

1 stETH заробив деякі прибутки після кількох днів.

Перш ніж зануритися у те, як stETH заробляє прибуток, спочатку давайте представимо логіку за її спиною, якою є стейкінг Ethereum. Читачі, які вже знайомі з цим концепцією, можуть пропустити вперед.

Спочатку Ethereum, як і Bitcoin, використовував доказ роботи (PoW) як свій механізм консенсусу. Однак через обурення споживання енергії, безпеки та масштабованості, Ethereum перейшов на доказ власності (PoS) у вересні 2022 року.

Раніше Ethereum покладався на гірничу потужність для досягнення консенсусу, тепер Ethereum покладається на учасників, які ставлять ETH, щоб отримати право голосу та заробляти винагороду через голосування. Це стимулює консенсус через PoS.

За ставлення 32 ETH можна приєднатися до мережі Ethereum як валідатор, відповідального за зберігання даних, обробку транзакцій та додавання нових блоків до блокчейну. Валідатори отримують винагороду в ETH за правильну упаковку транзакцій в нові блоки та перевірку роботи інших валідаторів, що дозволяє отримувати відносно стабільний дохід від стейкінгу.

Однак традиційний стейкінг є незручним для звичайних користувачів, оскільки вимагає 32 ETH та спеціалізованого комп'ютера з безперервним доступом до мережі Ethereum. Крім того, стейкінг ETH блокує ліквідність. Таким чином, виникнення похідних ліквідного стейкінгу (LSD), спрямованих на вирішення перешкод та проблем ліквідності традиційного стейкінгу. LSD дозволяє користувачам ставити менше, ніж 32 ETH та делегувати свої ETH стороннім постачальникам стейкінгу, отримуючи відповідні токени стейкінгу (наприклад, stETH від Lido або rETH від Rocket Pool). Ці ліквідні токени можуть бути обмінені, взяті у позику або використані для інших фінансових операцій на різних платформах, що дозволяє користувачам зручніше брати участь у стейкінгу, зберігаючи при цьому ліквідність.

Отже, основна логіка за stETH полягає в тому, що користувачі надають свої ETH в Lido, яка потім використовує ці ETH для участі в PoS Ethereum з метою отримання прибутку. Натомість користувачі отримують stETH як підтвердження їхнього вкладу. Далі Lido розподіляє прибуток на адреси, які мають stETH.

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

На цей момент ті, хто знайомі з розробкою розумних контрактів, можуть запитати: з такими малими щоденними прибутками, чи достатньо цього навіть для покриття комісій за газ?

Зокрема, якщо Lido розподілятиме прибуток за найпростішим методом, ймовірно, воно мало б проблеми з покриттям витрат на газ. Відправлення токенів на таку велику кількість адрес потребуватиме значних комісій за газ, що може бути не доцільним.

Однак Лідо вдалося досягти автоматичного зростання прибутку в утриманні stETH у гаманцях без будь-яких здавалося б транзакцій. Як це можливо?

Ми знайшли контракт Lido на https://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84та відстежив метод balanceOf в контракті.

Метод balanceOf відповідає стандарту ERC20 і використовується гаманцями для отримання кількості токенів, що належать користувачеві.

У контракті stETH ми бачимо, що він викликає метод getPooledEthByShares. Цей метод приймає картування (адреса => uint256) приватних акцій як вхідні дані. Чи це представляє, скільки stETH має користувач? Очевидно, що ні, оскільки оновлення даних для кожної адреси кожен день було б недосяжним. Хоча оновлення акцій у одній транзакції може досягти цього, споживання газу все одно буде значним.

На цей момент багато з вас, можливо, вже здогадалися, як працює контракт. Продовжимо досліджувати метод getPooledEthByShares.

Можна помітити, що кінцевий результат отримується шляхом множення sharesAmount за адресою на _getTotalPooledEther() і ділення на _getTotalShares.

_getTotalPooledEther представляє загальну кількість stETH (що, якщо stETH закріплено за ETH в співвідношенні 1:1, також представляє загальну кількість ETH), тоді як _getTotalShares представляє загальну кількість акцій. З цим обчисленням динамічно визначається кількість stETH, що належить кожній адресі.

Наприклад, якщо всього 1000 акцій, і Адреса А володіє 100 акціями (як це виражено в sharesAmount), а загальна кількість stETH становить 1000 (як повертає _getTotalPooledEther), то згідно з цим розрахунком Адреса А володіла б 100 stETH.

Тепер, якщо Lido ставить загалом 1000 ETH і заробляє 1 ETH прибутку, оновлюючи _getTotalPooledEther до 1001, це означає, що загальна кількість stETH збільшується з 1000 до 1001. Отже, новий розрахунок для адреси A буде 100 * 1001 / 1000 = 100.1 stETH.

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

Продовжуючи роботу з кодом, логіка в межах _getTotalPooledEther впливає на метод handleOracleReport, який оновлює відповідні дані в межах контракту. Цей метод періодично викликається, і конкретний виклик відбувається через контракт наhttps://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, яка періодично викликає submitReportData для оновлення даних (submitReportData внутрішньо викликає handleOracleReport в контракті Lido):

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

Це ілюструє характеристику смарт-контрактів Ethereum ERC20: кількість токенів, що належать адресам, не захардкоджена, а повертається методами контракту. Тому баланс токенів адреси може змінюватися навіть без будь-яких транзакцій. Хоча ця гнучкість робить контракти ERC20 більш універсальними, це також може бути плутанинням для тих, хто не знайомий з контрактами. Сподіваюся, ця стаття допоможе читачам краще зрозуміти смарт-контракти та безпечно та розумно взаємодіяти з ними.

Крім того, хоча стейкінг ETH для отримання stETH, здається, пропонує стабільні винагороди за стейкінг, все ж існують потенційні ризики. Ця стаття служить технічним дослідженням стейкінгових контрактів і не повинна розглядатися як інвестиційні поради.

Заява:

  1. Цю статтю відтворено з [ Команда ZAN],Оригінальний заголовок «Винахідницький дизайн контракту, подивіться, як stETH автоматично розподіляє дохід щоденно? Дозвольте вашому ETH брати участь у стейкінгу для отримання стабільного відсотка», Авторське право належить оригінальному авторові[ZAN Team], якщо у вас є які-небудь зауваження щодо перепублікації, будь ласка, зв'яжіться Ворота Навчаннякоманда, і команда якнайшвидше вирішить це відповідно до відповідних процедур.

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

  3. Інші мовні версії статті перекладаються командою Gate Learn і не згадуються в Gate.io) , перекладений матеріал не може бути відтворений, розповсюджений або узятому з чужих джерел.

Comece agora
Inscreva-se e ganhe um cupom de
$100
!