Аннотация
ПЕРЕЧЕНЬ УСЛОВНЫЙ ОБОЗНАЧЕНИЙ 3
ПЕРЕЧЕНЬ УСЛОВНЫХ СОКРАЩЕНИЙ 4
ВВЕДЕНИЕ 5
1 Теоретические основы криптовалюты и blockchain 10
1.1 Терминология 10
1.2 Понятие криптовалюты и их виды 11
1.3 Принципы работы blockchain 13
1.4 Отличия Ethereum от других blockchain-платформ 14
1.5 Понятие смарт-контрактов 15
1.6 Преимущества и недостатки смарт-контрактов 16
2 Анализ и проектирование 18
2.1 Функциональные и нефункциональные требования 18
2.2 Технологии, используемые в проекте 20
2.3 Описание архитектуры и функциональных возможностей 25
3 Разработка крипто-магазина 29
3.1 Наследование и переменные состояния 29
3.2 Функции 30
3.3 Frontend разработка 34
3.4 Авто-тесты и развертывание 34
3.5 Взаимодействие с развернутым контрактом 36
3.6 Приложение 37
3.7 Руководство 41
ЗАКЛЮЧЕНИЕ 43
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 44
ПРИЛОЖЕНИЕ А Программный код контракта 45
ПРИЛОЖЕНИЕ Б Модуль карточки товара 50
ПРИЛОЖЕНИЕ В Компонент загрузки товара 53
ПРИЛОЖЕНИЕ Г Модуль чтения контракта 57
Выбор темы "Крипто-валютный магазин в blockchain Ethereum" для дипломной работы обосновывается несколькими факторами.
Во-первых, криптовалюты и блокчейн технологии являются актуальной и перспективной темой в настоящее время. Криптовалюты уже давно не являются нишевым продуктом и все больше людей интересуется этой темой. Blockchain Ethereum, в свою очередь, является одним из наиболее популярных блокчейнов, который используется для создания децентрализованных приложений и смарт-контрактов.
Во-вторых, создание крипто-валютного магазина на базе blockchain Ethereum является сложным и многогранным проектом, который требует глубоких знаний в области криптовалют, блокчейн технологий, программирования и безопасности. Работа над этой темой позволит развить множество навыков и компетенций, которые будут полезны в дальнейшей работе в IT-индустрии.
В-третьих, создание крипто-валютного магазина на базе blockchain Ethereum имеет практическую ценность. Такой магазин может стать реальным продуктом, который будет предоставлять услуги пользователям и генерировать доход. Поэтому, работа над этой темой имеет не только теоретическое, но и практическое значение.
Таким образом, выбор темы "Крипто-валютный магазин в blockchain Ethereum" для дипломной работы обоснован актуальностью и перспективностью темы, сложностью проекта, который позволит развить множество навыков, и практической ценностью создания реального продукта.
В настоящее время блокчейн начал интеграцию в жизнь человека: некоторые страны легализуют оборот криптовалют, некоторые, напротив, борются с ними, но можно точно сказать, что блокчейн-технологии задели каждого. Они используются для хранения и упорядочивания большого количества данных, что позволяет блокчейну использоваться во многих
сферах, и многие видят в нем большие перспективы. Такие свойства блокчейна, как децентрализованность, программируемость и
криптографичность позволило этой технологии найти наибольшее применение в криптовалютах, которые считаются одним из самых надежных и прозрачных способов оплаты, к тому же участникам транзакции системой гарантируется анонимность - внутри сети каждый человек определен только лишь номером его кошелька.
Транзакции внутри любой блокчейн-сети происходят схожим образом: информация о транзакции упаковывается в блок и отправляется в сеть для верификации транзакции путем сложных криптографических вычислений; когда майнер (человек, предоставляющий свои ресурсы для подтверждения операции) произведет необходимые вычисления, он получает свое вознаграждение, а блок последовательно присоединяется к остальной цепи блоков, после чего каждый участник сети может увидеть эту транзакцию, а получателю приходят его средства. Такими методами достигается надежность транзакции, а значит и невозможность потерять средства, что и привлекает все большее число пользователей сети.
Хоть ранее криптовалюты использовались как способ сохранить или преумножить свои накопления, в данный момент имеет место тенденция на утилитарность монет - наконец-то можно что-то купить за криптовалюту. Это, конечно, привлекает новых пользователей, которые приносят в рынок новые объемы. Так, с начала 2022 года общая рыночная капитализация криптовалют колеблется около одного триллиона долларов США.
На рисунке 1 представлена в виде графика рыночная капитализация криптовалют с 2014 по 2022 годы.
Однако не все сети могут быть программируемыми. Сеть Bitcoin, к примеру, являлась мало функциональной, позволяющей только лишь совершать транзакции. С появлением программируемых сетей появилась возможность создания множества децентрализованных приложений, регулируемых с помощью смарт-контрактов.
Смарт-контракт - написанный программным языком контракт, позволяющий свести множество людей в сети, провести операции, транзакции без человека-посредника; смарт-контракт является самым надежным посредником - при определенных условиях он исполняется автоматически. Первой программируемой блокчейн-сетью стал Ethereum. Команда проекта разработала тьюринг-полный язык программирования Solidity для написания смарт-контрактов, что позволило воплотить самые смелые задумки в сети «эфир». Классическим примером возможности смарт-контракта является аукцион: за установленное время неограниченное количество участников в праве поставить ставку, превышающую предыдущую; по истечению времени победителю отправляется его приз, а проигравшим отправляются их ставки.
В сети Ethereum стало возможным создание своей собственной монеты, а также написание и выпуск собственных контрактов для регуляции оборота монеты, что породило большую часть крипто-мира - NFT (non-fundable token - не взаимозаменяемая монета). NFT представляет собой уникальную картинку, которую можно сохранять или перепродать. Нельзя относиться к ним как с объектом художественного искусства - чаще всего держателям таких монет предоставляется эксклюзивное право на посещение некоторых мероприятий, предлагается членство в различных группах или просто право на покупку каких-то других токенов. Подобная утилитарность позволила построить вокруг NFT крупный рынок; наиболее популярные монеты были проданы за сотни тысяч долларов.
В контексте технологий, любой токен - будь то взаимозаменяемый или нет, является порожденным некоторым смарт-контрактом. Существует ряд принятых стандартов для написания контрактов для токенов, созданных разработчиками из OpenZeppelin, которые описывают интерфейс, подлежащий реализации для корректного распознавания пользователями сети вашего токена или адреса, владеющего токеном. Такой интерфейс необходимо реализовать в смарт-контракте, который и станет «фабрикой» токенов. Рассмотрим наиболее значимые из стандартов:
• ERC20 - стандарт взаимозаменяемых токенов - такие токены ничем не отличаются друг от друга, поэтому они подобны фиатным валютам в реальном мире - одинаковы и делимы. Наиболее популярным применением этого стандарта служит обернутый эфир (от англ. wrapped ether или WETH) - он служит для облегчения обмена ETH на другие токены ERC20, и по курсу равен одному эфиру.
• ERC721 - стандарт не взаимозаменяемых токенов. Каждый токен отличим от другого, к тому же нельзя поделить токен ERC721, равно как нельзя разорвать картину, чтобы она не потеряла своей ценности. Стандарт используется для реализации не взаимозаменяемых объектов искусства, таких как музыка, картинки и пр.
• ERC1155 - этот стандарт объединяет лучшее из двух вышеуказанных стандартов - благодаря нему можно в одном контракте управлять балансами пользователей в токенах ERC20 и ERC721 одновременно, а также этот контракт позволит «чеканить» ERC721-подобные токены и использовать их в транзакциях пачками - тем самым экономя газ. По нашему мнению, этот стандарт как нельзя лучше подходит для реализации такого проекта, как крипто-валютный магазин, в котором товары будут представлять не взаимозаменяемые токены ERC1155.
Целью моей работы станет создание крипто-валютного интернет- магазина, базированного в рамках сети Ethereum, где каждый владелец криптовалютного кошелька сможет проявить себя как в качестве продавца, так и в качестве покупателя. Целостность и надежность транзакций будет поддерживать программа: смарт-контракт, написанный на объектноориентированном языке программирования Solidity самовыполняющихся контрактов для платформы Ethereum. Этот проект будет полезен всем, кто желает договориться с кем-либо об обмене криптовалюты на что угодно другое: работу, вещь, информацию и т.п. Подтверждение владения тем или иным объектом будет обусловлено наличием на своем крипто-кошельке токена, стандарта ERC1155, соответствующего данному реальному объекту.
В результате выполнения ВКР был создан смарт-контракт, написанный на объектно-ориентированном языке программирования Solidity самовыполняющихся контрактов для платформы Ethereum, также для взаимодействия с контрактом было написано веб-приложение (сайт) при помощи надстройки над классической библиотекой React - Next.js, для непосредственной связи приложения с контрактом была использована библиотека ethers.js, тестирование контракта проводилось на статически типизированном языке Typescript при помощи инструментов разработчика Hardhat (mocha, chai). Таким образом, проект содержит систему авторизации, возможность покупки и продажи товаров любой природы (материальных и нематериальных) при этом доказательством владения тем или иным товаром будет служить владения соответствующим токеном формата ERC1155, также интернет-магазин подразумевает ролевую систему (покупатель - продавец), для продавцов есть возможность пополнить количество товаров, а также снять с продажи тот или иной товар.