Solidity — язык смарт-контрактов в Ethereum, и понимание базовых типов данных напрямую влияет на безопасность, стоимость газа и логику контракта. Разберём 4 ключевых типа, которые встречаются почти в каждом проекте.
uint
uint — это беззнаковое целое число, то есть только 0 и больше.
uint public totalSupply = 1000;По умолчанию uint = uint256, это стандартный размер в Solidity.
Где используется:
- балансы токенов
- количество голосов
- суммы переводов
- таймеры и лимиты
Важно:
- отрицательные числа
uintне поддерживает - в новых версиях Solidity переполнение проверяется автоматически
- для экономии газа иногда используют
uint8,uint32, но не всегда это реально выгодно
address
address хранит Ethereum-адрес — кошелёк пользователя или адрес контракта.
address public owner;Что можно делать с address:
- хранить владельца контракта
- отправлять ETH
- проверять, кто вызвал функцию через
msg.sender
owner = msg.sender;Полезно помнить:
address— один из самых важных типов для контроля доступа 🔐- ошибки в логике адресов могут привести к потере средств
- часто используется вместе с
mapping
mapping
mapping — это хранилище вида «ключ => значение». Аналог словаря или хеш-таблицы.
mapping(address => uint) public balances;Здесь каждому адресу соответствует его баланс.
Плюсы:
- быстрый доступ к данным
- идеально подходит для балансов, прав доступа, голосов
- экономичен для хранения больших наборов данных
Особенности:
- нельзя перебрать все элементы mapping напрямую
- не хранит список ключей
- для перебора обычно добавляют массив отдельно
Это частая ошибка новичков: ожидать, что mapping можно читать как обычный список.
struct
struct позволяет объединять несколько полей в одну сущность. Это удобно для сложных данных.
struct User {
address wallet;
uint balance;
bool verified;
}
User public user;Где полезен struct:
- профили пользователей
- параметры сделки
- NFT-метаданные
- заявки, ордера, DAO-предложения 🧩
Часто struct используют вместе с mapping:
mapping(address => User) public users;Так можно привязать структуру данных к каждому адресу.
📌 Итог
Базовая логика многих смарт-контрактов выглядит так:
uint— считает значенияaddress— определяет участникамmapping— связывает данныеstruct— упаковывает данные в удобный формат
Если понимать эти 4 типа, читать и писать контракты становится намного проще, а риск критических ошибок снижается 🚀
Подборку каналов про Криптовалюты — с новостями, аналитикой и разбором блокчейн-проектов — стоит посмотреть ниже 📊