Децентрализованный лендинговый протокол позволяет пользователям вкладывать различные криптовалюты, такие как Bitcoin, Ethereum, USDC и USDT, и получать проценты по своим депозитам. Процентные ставки регулируются алгоритмически: если спрос на кредиты в конкретной криптовалюте высок, проценты на вклады в этой криптовалюте тоже возрастают.
Помимо депозитов, пользователи могут брать кредиты под залог своих депозитов. Например, вложив криптовалюту на $10,000, можно взять кредит общей суммой на $9,000.
Цена активов определяется оракулами, которые поставляют внешние данные о текущих рыночных ценах. И если рыночная цена заложенных активов снижается ниже установленного уровня, происходит процесс ликвидации.
Ликвидация — это механизм, при котором система автоматически продает заложенные активы пользователя, чтобы покрыть задолженность по кредиту и обеспечить стабильность протокола. Участники рынка, называемые ликвидаторами, могут выкупать заложенные активы по сниженной цене и зарабатывать на разнице.
#defi
Помимо депозитов, пользователи могут брать кредиты под залог своих депозитов. Например, вложив криптовалюту на $10,000, можно взять кредит общей суммой на $9,000.
Цена активов определяется оракулами, которые поставляют внешние данные о текущих рыночных ценах. И если рыночная цена заложенных активов снижается ниже установленного уровня, происходит процесс ликвидации.
Ликвидация — это механизм, при котором система автоматически продает заложенные активы пользователя, чтобы покрыть задолженность по кредиту и обеспечить стабильность протокола. Участники рынка, называемые ликвидаторами, могут выкупать заложенные активы по сниженной цене и зарабатывать на разнице.
#defi
👍4
Оракулы
Блокчейн — это закрытая распределённая вычислительная система без доступа в Интернет. Нельзя выполнить вызов API, найти что-то в Google или загрузить файлы. Вы даже не можете сгенерировать криптографически защищённое случайное число внутри смарт-контракта. Полная детерминированность необходима для обеспечения одинаковых вычислений на всех узлах.
Концепция оракулов решает эту проблему, связывая смарт-контракты с данными из реального мира. Например, лендинговые протоколы используют оракулы для цен криптоактивов, чтобы определить кредитный лимит пользователей и проверить, не подлежат ли их позиции ликвидации.
Зависимость от внешних источников данных является сложной задачей, поскольку все они теоретически подвержены коррупции. Один из вариантов решения — децентрализация оракулов, когда данные поступают от множества независимых источников, что уменьшает вероятность искажения информации и манипуляций, как это сделано в ChainLink. На рисунке изображен пример с поставкой цены ETH/USDT
#defi
Блокчейн — это закрытая распределённая вычислительная система без доступа в Интернет. Нельзя выполнить вызов API, найти что-то в Google или загрузить файлы. Вы даже не можете сгенерировать криптографически защищённое случайное число внутри смарт-контракта. Полная детерминированность необходима для обеспечения одинаковых вычислений на всех узлах.
Концепция оракулов решает эту проблему, связывая смарт-контракты с данными из реального мира. Например, лендинговые протоколы используют оракулы для цен криптоактивов, чтобы определить кредитный лимит пользователей и проверить, не подлежат ли их позиции ликвидации.
Зависимость от внешних источников данных является сложной задачей, поскольку все они теоретически подвержены коррупции. Один из вариантов решения — децентрализация оракулов, когда данные поступают от множества независимых источников, что уменьшает вероятность искажения информации и манипуляций, как это сделано в ChainLink. На рисунке изображен пример с поставкой цены ETH/USDT
#defi
🔥3👍2
Ликвидация - это разновидность MEV, которая происходит, когда стоимость залога заемщика не покрывает должным образом его сумму займа/долга в лендинг-протоколе. Если цена залога падает ниже порога ликвидации, позиция может быть ликвидирована. Оракулы с небольшой задержкой сообщают текущую цену активов, и избыточный залог немедленно выставляется на продажу со скидкой. Любой желающий может погасить долг и забрать залог без дополнительных разрешений.
Таким образом, MEV-бот видит, что в текущем блоке обновляется цена оракула и попытается в этом же блоке или в следующем ликвидировать позицию, отправляя транзакцию для выкупа залога. Ликвидации инициируются вызовом функции смарт-контракта в лендинг-протоколе. Ликвидатор должен погасить часть или весь объем кредита, после чего протокол передаст залог заемщика ликвидатору (иногда с дополнительной фиксированной платой). Стоимость залога всегда должна превышать стоимость кредита, иначе не было бы экономического стимула для ликвидации кредита.
#MEV
Таким образом, MEV-бот видит, что в текущем блоке обновляется цена оракула и попытается в этом же блоке или в следующем ликвидировать позицию, отправляя транзакцию для выкупа залога. Ликвидации инициируются вызовом функции смарт-контракта в лендинг-протоколе. Ликвидатор должен погасить часть или весь объем кредита, после чего протокол передаст залог заемщика ликвидатору (иногда с дополнительной фиксированной платой). Стоимость залога всегда должна превышать стоимость кредита, иначе не было бы экономического стимула для ликвидации кредита.
#MEV
👍3
Стейблкойны — это тип токенов, чья цена привязана к стабильным активам, таким как фиатные валюты (например, USD, EUR) или товары. Различают несколько способов обеспечения их стабильности:
1. Fiat-backed — обеспеченные фиатом. Эти стейблкойны поддерживаются резервами фиатной валюты, хранящимися у доверенных кастодианов. Примеры: USDT, USDC, TUSD.
2. Commodity-backed — обеспеченные реальными товарами. Здесь в качестве обеспечения выступают товары, такие как золото (например, DGX, PAXG, XAUT) или недвижимость (USDR).
3. Cryptocurrency-backed — обеспеченные криптовалютой. Эти стейблкойны залогированы криптовалютами с избыточным обеспечением, чтобы компенсировать волатильность. Пример: DAI, залог которого включает Ethereum, Bitcoin, USDC и другие криптоактивы.
4. Алгоритмические стейблкойны (без залога). Эти токены не имеют физического обеспечения; их стабильность достигается за счёт регулирования предложения. Примеры: Ampleforth (AMPL), USDD.
#defi
1. Fiat-backed — обеспеченные фиатом. Эти стейблкойны поддерживаются резервами фиатной валюты, хранящимися у доверенных кастодианов. Примеры: USDT, USDC, TUSD.
2. Commodity-backed — обеспеченные реальными товарами. Здесь в качестве обеспечения выступают товары, такие как золото (например, DGX, PAXG, XAUT) или недвижимость (USDR).
3. Cryptocurrency-backed — обеспеченные криптовалютой. Эти стейблкойны залогированы криптовалютами с избыточным обеспечением, чтобы компенсировать волатильность. Пример: DAI, залог которого включает Ethereum, Bitcoin, USDC и другие криптоактивы.
4. Алгоритмические стейблкойны (без залога). Эти токены не имеют физического обеспечения; их стабильность достигается за счёт регулирования предложения. Примеры: Ampleforth (AMPL), USDD.
#defi
👍4
Proxy Pattern
Если вы заглянете в контракт токена USDC, то заметите, что там нет сигнатуры (ABI) или методов, соответствующих стандарту ERC-20. Всё потому что это “прокси-контракт”, который делегирует вызовы другому смарт-контракту, известному как "контракт-реализация" (implementation contract).
Прокси-контракт хранит все данные: балансы пользователей, апрувы и так далее. Вот почему Etherscan распознаёт его как обычный токен. Контракт-реализация же содержит только бизнес-логику.
Такая схема позволяет заменять контракт-реализацию без необходимости менять адрес контракта на новый. Это критично для долгосрочных проектов. Смарт-контракт становится как обычная обновляемая программа.
- Однако, прокси-паттерны добавляют дополнительный уровень сложности в проектирование смарт-контрактов. С каждым обновлением растет сложность и трудность понимания программы.
- Процесс обновлений централизован: всё держится на доверии к авторизованному адресу, который выполняет обновление контракта-реализации.
#продвинутый
Если вы заглянете в контракт токена USDC, то заметите, что там нет сигнатуры (ABI) или методов, соответствующих стандарту ERC-20. Всё потому что это “прокси-контракт”, который делегирует вызовы другому смарт-контракту, известному как "контракт-реализация" (implementation contract).
Прокси-контракт хранит все данные: балансы пользователей, апрувы и так далее. Вот почему Etherscan распознаёт его как обычный токен. Контракт-реализация же содержит только бизнес-логику.
Такая схема позволяет заменять контракт-реализацию без необходимости менять адрес контракта на новый. Это критично для долгосрочных проектов. Смарт-контракт становится как обычная обновляемая программа.
- Однако, прокси-паттерны добавляют дополнительный уровень сложности в проектирование смарт-контрактов. С каждым обновлением растет сложность и трудность понимания программы.
- Процесс обновлений централизован: всё держится на доверии к авторизованному адресу, который выполняет обновление контракта-реализации.
#продвинутый
👍3🔥1
Мы уже смотрели на устройство транзакций в биткойн-сети, где транзакции состоят из входов и выходов UTXO - (Unspent Transaction Output). В сетях на основе EVM, таких как Ethereum, транзакции изменяют глобальное состояние, взаимодействуя с аккаунтами и смарт-контрактами.
Ethereum транзакция представляет собой сообщение, инициируемое внешним аккаунтом (externally-owned):
- from: Адрес отправителя, который будет подписывать транзакцию.
- to: Адрес получателя или контракт.
- nonce: Уникальный счетчик для каждой транзакции отправителя.
- maxPriorityFeePerGas: Максимальная цена газа, которая может быть добавлена в виде чаевых валидатору.
- maxFeePerGas: Максимальная цена за единицу газа, которую отправитель готов заплатить (включает базовую и приоритетную комиссии).
- chainId: идентификатор сети, важен для защиты от атак повторного воспроизведения в других EVM сетях.
- value: Количество отправляемых ETH.
- input: Поле для передачи данных смарт-контракту.
- v, r, s: Параметры для цифровой подписи.
#продвинутый
Ethereum транзакция представляет собой сообщение, инициируемое внешним аккаунтом (externally-owned):
- from: Адрес отправителя, который будет подписывать транзакцию.
- to: Адрес получателя или контракт.
- nonce: Уникальный счетчик для каждой транзакции отправителя.
- maxPriorityFeePerGas: Максимальная цена газа, которая может быть добавлена в виде чаевых валидатору.
- maxFeePerGas: Максимальная цена за единицу газа, которую отправитель готов заплатить (включает базовую и приоритетную комиссии).
- chainId: идентификатор сети, важен для защиты от атак повторного воспроизведения в других EVM сетях.
- value: Количество отправляемых ETH.
- input: Поле для передачи данных смарт-контракту.
- v, r, s: Параметры для цифровой подписи.
#продвинутый
🔥3👍1
Что за input в Ethereum транзакциях?
Input data требуется для транзакций, которые взаимодействуют со смарт-контрактами. Это закодированная информация, указывающая, какую функцию контракта нужно вызвать и с какими параметрами. Структура состоит из:
1. Function Selector первые 4 байта (8 символов в hex) — это хеш сигнатуры функции.
2. Аргументы — закодированы так, что каждый занимает 32 байта. Для динамических типов указывается смещение, где хранится фактическое значение.
Рассмотрим пример — функцию
Первые 4 байта для function selector, вычисленный с помощью Keccak-256. Для функции
Функция transfer принимает два аргумента:
1. Адрес получателя (address) — это 20-байтовый адрес Ethereum, который помещается в 32-байтный слот, заполняя первые 12 байт нулями (адрес занимает последние 20 байт).
2. Количество токенов для перевода (uint256) — это значение упаковано в формате big-endian, где старшие разряды (слева) заполняются нулями.
#продвинутый
Input data требуется для транзакций, которые взаимодействуют со смарт-контрактами. Это закодированная информация, указывающая, какую функцию контракта нужно вызвать и с какими параметрами. Структура состоит из:
1. Function Selector первые 4 байта (8 символов в hex) — это хеш сигнатуры функции.
2. Аргументы — закодированы так, что каждый занимает 32 байта. Для динамических типов указывается смещение, где хранится фактическое значение.
Рассмотрим пример — функцию
transfer в ERC-20:Первые 4 байта для function selector, вычисленный с помощью Keccak-256. Для функции
transfer(address,uint256) будет a9059cbb.Функция transfer принимает два аргумента:
1. Адрес получателя (address) — это 20-байтовый адрес Ethereum, который помещается в 32-байтный слот, заполняя первые 12 байт нулями (адрес занимает последние 20 байт).
2. Количество токенов для перевода (uint256) — это значение упаковано в формате big-endian, где старшие разряды (слева) заполняются нулями.
#продвинутый
👍2🔥2
Я не упомянул про gasLimit в посте про ethereum транзакци.
Gaslimit— это максимальное количество газа, которое пользователь готов потратить для выполнения транзакции. Оно ограничивает объём вычислений, которые транзакция может выполнить.
При выполнении каждая операция требует газа. Если все выполнено успешно, списывается только использованный объём газа (GasUsed). Если же gasLimit достигается до завершения, транзакция откатывается, а потраченный газ не возвращается.
Стоимость комиссии за транзакцию рассчитывается на основе цены за единицу газа, которая состоит из baseFee, maxFeePerGas и maxPriorityFeePerGas.
BaseFee - минимальная плата за газ, автоматически рассчитываемая сетью в зависимости от загруженности. Она сжигается (не передается майнеру или валидатору), для устранения стимула валидатора манипулировать ценой на газ, чтобы извлечь больше комиссий из пользователей.
Итоговая стоимость транзакции
#продвинутый
Gaslimit— это максимальное количество газа, которое пользователь готов потратить для выполнения транзакции. Оно ограничивает объём вычислений, которые транзакция может выполнить.
При выполнении каждая операция требует газа. Если все выполнено успешно, списывается только использованный объём газа (GasUsed). Если же gasLimit достигается до завершения, транзакция откатывается, а потраченный газ не возвращается.
Стоимость комиссии за транзакцию рассчитывается на основе цены за единицу газа, которая состоит из baseFee, maxFeePerGas и maxPriorityFeePerGas.
BaseFee - минимальная плата за газ, автоматически рассчитываемая сетью в зависимости от загруженности. Она сжигается (не передается майнеру или валидатору), для устранения стимула валидатора манипулировать ценой на газ, чтобы извлечь больше комиссий из пользователей.
Итоговая стоимость транзакции
= min(maxFeePerGas, baseFee + maxPriorityFeePerGas) × gasUsed#продвинутый
👍5
Привет, ребята! Канал — не бездушный учебник. Формат текста в 1024 символа может быть непростым, так что не стесняйтесь оставлять комментарии и задавать вопросы, если что-то непонятно или хочется поправить автора 😉
Так будет ясно, в какую сторону углубиться.
Хороших выходных!
Так будет ясно, в какую сторону углубиться.
Хороших выходных!
🔥7🏆2
В Ethereum стоимость транзакции измеряется в газе, который определяет ресурсы, необходимые для её выполнения и хранения. Рассмотрим основные факторы, влияющие на потребление газа.
- Базовая стоимость транзакции - фиксированная стоимость в 21000 газа для покрытия минимальной нагрузки, включая валидацию и распространение транзакции.
- Стоимость за каждый байт данных (Calldata): Ненулевые байты calldata стоят 16 газа каждый, а нулевые байты — 4 газа.
- Вычислительные операции (Execution) рассчитываются для каждой операции (opcode) в контракте. У каждой операции своя цена газа, которая зависит от её сложности.
- Хранение данных (Storage) — запись в хранилище стоит до 20000 газа, а удаление данных возвращает часть газа.
- Логирование — запись событий в журнал с помощью функции
- Access List — оптимизирует доступ к памяти и хранилищу (EIP-2930), снижая затраты на газ за счёт указания адресов и слотов заранее.
#продвинутый
- Базовая стоимость транзакции - фиксированная стоимость в 21000 газа для покрытия минимальной нагрузки, включая валидацию и распространение транзакции.
- Стоимость за каждый байт данных (Calldata): Ненулевые байты calldata стоят 16 газа каждый, а нулевые байты — 4 газа.
- Вычислительные операции (Execution) рассчитываются для каждой операции (opcode) в контракте. У каждой операции своя цена газа, которая зависит от её сложности.
- Хранение данных (Storage) — запись в хранилище стоит до 20000 газа, а удаление данных возвращает часть газа.
- Логирование — запись событий в журнал с помощью функции
LOG имеет фиксированную стоимость 375 газа, плюс 8 газа за каждый байт данных.- Access List — оптимизирует доступ к памяти и хранилищу (EIP-2930), снижая затраты на газ за счёт указания адресов и слотов заранее.
#продвинутый
👍4✍1
ERC-1404: Стандарт токенов с ограничениями на передачу.
В отличие от классического ERC-20, он позволяет эмитентам (организациям, выпускающим токены) блокировать переводы между адресами по разным причинам, например, для соблюдения KYC (Know Your Customer – процедура идентификации пользователей). Функция
ERC-1404 уходит от принципов криптовалют и свободы. Ограничения мешают свободному обороту, фактически вводя традиционный централизованный контроль в блокчейн.
Порадуемся, конечно, за возможность традиционных финансов создать привычные для них инструменты, но не от всего сердца.
#defi
В отличие от классического ERC-20, он позволяет эмитентам (организациям, выпускающим токены) блокировать переводы между адресами по разным причинам, например, для соблюдения KYC (Know Your Customer – процедура идентификации пользователей). Функция
detectTransferRestriction проверяет возможность перевода, а messageForTransferRestriction объясняет пользователю, почему он запрещен.ERC-1404 уходит от принципов криптовалют и свободы. Ограничения мешают свободному обороту, фактически вводя традиционный централизованный контроль в блокчейн.
Порадуемся, конечно, за возможность традиционных финансов создать привычные для них инструменты, но не от всего сердца.
#defi
👍3🔥2✍1
Rollups
Ethereum (L1) имеет ограниченную пропускную способность (~15 TPS) и высокие комиссии. Решения второго уровня (L2) помогают масштабировать сеть, снижая нагрузку на основной слой.
Одним из ключевых механизмов L2 являются Rollups — технологии, выполняющие вычисления вне L1 и публикующие минимально необходимые данные в основной сети Ethereum. Они решают проблему трилеммы блокчейна, увеличивая пропускную способность без ущерба для децентрализации и безопасности.
Существует два типа Rollups:
ZK-Rollups: обрабатывают пакеты транзакций вне цепочки, предоставляя предлагаемые изменения в L1 вместе с криптографическим доказательством их корректности, используя технологию «zero-knowledge» (нулевое разглашение).
Примеры: StarkNet, zkSync.
Оптимистичные Rollups: предполагают, что транзакции, выполняемые на L2, являются действительными по умолчанию. Они позволяют участникам сети оспаривать эти транзакции, предоставляя доказательства мошенничества (fraud proofs).
Примеры: Optimism, Arbitrum.
#продвинутый
Ethereum (L1) имеет ограниченную пропускную способность (~15 TPS) и высокие комиссии. Решения второго уровня (L2) помогают масштабировать сеть, снижая нагрузку на основной слой.
Одним из ключевых механизмов L2 являются Rollups — технологии, выполняющие вычисления вне L1 и публикующие минимально необходимые данные в основной сети Ethereum. Они решают проблему трилеммы блокчейна, увеличивая пропускную способность без ущерба для децентрализации и безопасности.
Существует два типа Rollups:
ZK-Rollups: обрабатывают пакеты транзакций вне цепочки, предоставляя предлагаемые изменения в L1 вместе с криптографическим доказательством их корректности, используя технологию «zero-knowledge» (нулевое разглашение).
Примеры: StarkNet, zkSync.
Оптимистичные Rollups: предполагают, что транзакции, выполняемые на L2, являются действительными по умолчанию. Они позволяют участникам сети оспаривать эти транзакции, предоставляя доказательства мошенничества (fraud proofs).
Примеры: Optimism, Arbitrum.
#продвинутый
👍1👀1
Proof of History (PoH) — механизм, который позволяет создать доказательство последовательности событий.
Это развитие идеи Proof of work, алгоритм которого саморегулируется так, чтобы майнерам потребовалось одинаковое количество времени на построение блока. Например, в Bitcoin – это 10 минут. PoH создает такую же математическую задачу для участников сети, но так, чтобы ее было невозможно решить параллельно. Это сильно снижает необходимые вычислительные мощности.
Корнем PoH является Функция проверяемой задержки (Verifiable Delay Function), основанная на последовательном хешировании с помощью алгоритма SHA-256. Начинается с произвольного начального значения (seed). Это значение хешируется, и каждый полученный хеш служит входом для следующего. Создается последовательная цепочка хешей, где каждый элемент зависит от предыдущего.
Proof-of-History не является механизмом консенсуса, а дополняет Proof-of-Stake, оптимизируя упорядочивание событий и сокращая время подтверждения блоков.
#продвинутый
Это развитие идеи Proof of work, алгоритм которого саморегулируется так, чтобы майнерам потребовалось одинаковое количество времени на построение блока. Например, в Bitcoin – это 10 минут. PoH создает такую же математическую задачу для участников сети, но так, чтобы ее было невозможно решить параллельно. Это сильно снижает необходимые вычислительные мощности.
Корнем PoH является Функция проверяемой задержки (Verifiable Delay Function), основанная на последовательном хешировании с помощью алгоритма SHA-256. Начинается с произвольного начального значения (seed). Это значение хешируется, и каждый полученный хеш служит входом для следующего. Создается последовательная цепочка хешей, где каждый элемент зависит от предыдущего.
Proof-of-History не является механизмом консенсуса, а дополняет Proof-of-Stake, оптимизируя упорядочивание событий и сокращая время подтверждения блоков.
#продвинутый
👍1🔥1