
Лаб_09
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет: Защищенных систем связи
Кафедра: Кибербезопасности
Дисциплина: Блокчейн и обеспечение безопасности распределенных реестров
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №9
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студент:
Травкина Е.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Федченко А.С., ИКБ-14
(Ф.И.О., № группы) (подпись)
Ящук А.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Преподаватель:
к.т.н, доцент, Кушнир Д.В.
(должность, Ф.И.О.) (подпись)
Создание контракта
Используем язык solidity и среду REMIX (https://remix.ethereum.org/) для выполнения лабораторной работы. При входе в REMIX указываем цель работы обучение и создаём собственный контракт. Создаем файл 4_laba9.sol в папке с контрактами (см. Рис. 1).
Рис. 1. Создание файла контракта
В редакторе вводим код (из примера https://www.youtube.com/watch?v=8A8-7Ks26yY ) (см. Рис. 2).
Рис. 2. Код контракта
Пояснения к коду
Указание лицензии: // SPDX-License-Identifier: MIT
Объявление контракта: contract MyShop {
Вводим переменную типа адрес и делаем ее доступной из вне: address public owner;
Создаем маппинг (набор ключей-значений) адресов и целых чисел. Это позволит просматривать задействованные адреса: mapping (address=> uint) public payments;
Создание конструктора: constructor()
Функция перевода средств на контракт function payForItem() public payable {
Функция возврата средств с контракта владельцу контракта (под кем создавали): function withdrawAll() public {
Выполняем Deploy контракта (проверяем, что указан Gas LIMIT) (см. Рис. 3).
Рис. 3. Указание Gas LIMIT в Deploy контракта
Контракт появился в списке (см. Рис. 4).
Рис. 4. Контракт создался
Разворачиваем пункты контракта (см. Рис. 5).
Рис. 5. Отображение кнопок контракта
Кнопки – это функции и переменные контракта.
Кнопка owner – покажет адрес владельца (см. Рис. 6).
Рис. 6. Отображение адреса владельца
Кнопка payForItem – переведет средства на контракт (выполнили, но не с адреса владельца контракта) (см. Рис. 7–9).
Рис. 7. Выбор адреса
Рис. 8. Выполнение перевода средст
Рис. 9. Проверка средств после перевода
Кнопка payments – при вводе туда адреса, с которого мы переводили средства сможем убедиться, что с этим адресом было взаимодействие (см. Рис. 10).
Рис. 10. Просмотр взаимодействий с адресом
Кнопка withdrawAll – переводит средства с адреса контракта на адрес владельца (см. Рис. 11).
Рис. 11. Перевод средств с адреса контракта на адрес владельца
Вывод
В процессе выполнения лабораторной работы был создан и развернут смарт-контракт на языке Solidity с использованием среды разработки REMIX. В результате выполнения лабораторной работы были изучены основы разработки и тестирования смарт-контрактов в среде REMIX, включая: разбор кода на языке Solidity; настройку маппинга для отслеживания взаимодействий; использование функций для управления средствами контракта. Работа подтвердила правильность реализации функционала смарт-контракта и предоставила навыки управления контрактами на платформе Ethereum.
Санкт-Петербург
2024