TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Карта Ethereum

10 Sep, 16:57

Открыть в Telegram Поделиться Пожаловаться

Почему одни данные в смарт-контракте дорогие, а другие почти ничего не стоят
В Solidity часто встречаются три слова:
storage, memory и calldata.
Они описывают, где находятся данные во время работы смарт-контракта.
И от этого сильно зависит стоимость операции.
Storage — постоянная память контракта.
Если контракт записал туда значение, оно остаётся в состоянии Ethereum после завершения транзакции. Например, баланс пользователя, владелец объекта или параметр протокола.
Это самая дорогая память, потому что изменение storage влияет на состояние блокчейна и его должны учитывать узлы сети. Официальная документация Ethereum отдельно отмечает высокую стоимость постоянного хранения.
Memory — временная рабочая память.
Контракт использует её только во время выполнения конкретного вызова. После завершения операции эти данные исчезают.
Можно представить лист бумаги, на котором программа делает промежуточные расчёты.
Calldata — входные данные вызова.
Например, когда пользователь вызывает функцию transfer, адрес получателя и сумма приходят контракту как входные параметры. Calldata предназначена прежде всего для чтения во время выполнения и не превращается автоматически в постоянное состояние.
Зачем вообще знать эту разницу?
Потому что грамотный контракт не должен сохранять навсегда всё, что ему попадается.
Представим калькулятор.
Чтобы посчитать 17 × 24, ему не нужно навечно записывать числа 17 и 24 в глобальную базу. Они нужны только во время расчёта.
Если каждое временное значение Ethereum сохранял бы навсегда, состояние сети росло бы гораздо быстрее.
Поэтому разработчики стараются использовать постоянный storage только там, где информация действительно должна пережить текущую транзакцию.
Можно провести аналогию с офисом.
Storage — архив компании.
Memory — рабочий стол сотрудника.
Calldata — документ, который ему дали прочитать для выполнения текущей задачи.
Если совсем просто, Ethereum делает постоянную память дорогой именно потому, что она становится долгосрочным грузом для сети.
#КартаEthereum #Ethereum #Solidity #Storage #смартконтракты

5.9k 0 0
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot