Для примера возьмем смарт-контракт который позваляет пользователям регистрироваться, входить в систему и изменять свой пароль.
Он использует простую проверку на основе пароля, что является базовым уровнем безопасности.
// Импорт необходимых библиотек import "@stdlib/auth"; import "@stdlib/time";
// Объявление контракта
contract AuthContract {
// Словарь для хранения пар "адрес - пароль"
private users: Map<Address, String>;// Конструктор контракта init() { // Инициализация словаря пользователей self.users = Map<Address, String>(); } // Функция для регистрации нового пользователя fun register(addr: Address, password: String) { // Проверка, что пользователь еще не зарегистрирован require(!self.users.contains(addr), "Пользователь уже зарегистрирован."); // Добавление пользователя в словарь self.users[addr] = password; } // Функция для авторизации пользователя fun login(addr: Address, password: String) -> Bool { // Проверка наличия пользователя в словаре if (self.users.contains(addr)) { // Проверка соответствия пароля return self.users[addr] == password; } // В случае отсутствия адреса в словаре возвращается false return false; } // Функция для смены пароля fun changePassword(addr: Address, oldPassword: String, newPassword: String) { // Проверка наличия пользователя в словаре и соответствия старого пароля require(self.users.contains(addr) && self.users[addr] == oldPassword, "Неверный адрес или пароль."); // Обновление пароля пользователя self.users[addr] = newPassword; }
}