Основы Solidity

Защита от повторного вступления

Используйте mapping с очками, чтобы один и тот же адрес не мог вступить дважды.

EASY
beginner
mappings
validation
Сводка урока
Урок 15
Трек
Основы Solidity
Награда
100 XP
Режим
Практика с подсказками
Позиция в треке15/20

Дальше: Профиль участника

Теория урока

Защита от повторного вступления

EASY

Пришло время познакомиться с mappings. Это своего рода словари для связывания уникальных ключей с соответствующими значениями. Может звучать запутанно, поэтому постарайся запомнить, что это набор пар, например, Адрес кошелька -> Баланс, только вместо таких параметров мы можем использовать что угодно.

Крайне полезная вещь, когда нужно хранить данные о пользователях, например, их очки в гильдии. В коде mapping объявляется так: mapping(address => uint256) public memberPoints;, где address - это ключ, а uint256 - значение.

Mappings можно использовать не только для хранения значений, но и для проверок. Если у адреса уже есть points, значит он уже вступал в гильдию.

В этом уроке join flow должен отклонять повторную регистрацию, а затем записывать стартовые points для нового участника.

Почему это важно

Контракт должен защищать правила нашей гильдии. Без такой проверки один пользователь мог бы добавляться несколько раз и получать бонус повторно, а гильдия не должна разориться!

Ваша цель

Добавьте в joinGuild проверку, которая требует, чтобы memberPoints[msg.sender] был равен 0, а затем сохраните entryBonus в memberPoints[msg.sender].

Редактор Solidity

Пишите и проверяйте решение в одном рабочем пространстве.

Требуется вход

Войдите, чтобы отправлять решения, сохранять последний код и синхронизировать прогресс.