В данном репозитории представлено решение в рамках челленджа #10 на хакатоне по децентрализованным финансам на платформе Tezos, который проходил 26-28 февраля 2021 года.
Задача: разработать ставки на курсы валют с использованием Harbinger Price Oracle.
- Есть отложенное событие S, у которого может быть два результата: положительный и отрицательный (например: цена достигла какого-то порога или нет). Данный результат может быть однозначно определён в коде смарт контракта используя данные оракла.
- Участники сети делают ставки на положительный или отрицательный исход события. В случае победы - они получают долю от всех внесённых на смарт контракт средств, соответствующую их доле среди внесенных средств команды победителя.
- Формируется смарт контракт с методами: (1) инициализации, (2) ставки на положительный исход события S, (3) ставки на отрицательный исход события S, (4) запрос данных у оракла и определение победителя, (5) вывод средств. Метод 1 и 4 вызывается любым участником, методы 2, 3 вызываются участниками сети и позволяют депонировать средства, которые замораживаются до наступления события S. Метод 5 вызывается участниками после наступления события S, до этого средства заблокированы. Факт наступления события S определяется по timestamp от оракла, так что реальный вызов определения победителя может быть отложен во времени.
В репозитории расположен контракт CrystalBall.ligo в котором реализован данный смарт контракт на языке PascaLIGO.
Результаты / прогресс по ходу хакатона:
- Я впервые познакомился с языком ligo, особенностями компиляции в Michelson и написал свой первый смарт контракт
- Изучил особенности разработки под tezos, настроил среду разработки, научился компилировать смарт контракты с помощью truffle, деплоить контракты в сеть
- Познакомился с инструментами для разработчиков better call dev и pytezos
- Узнал как работают ораклы в блокчейне и научился с ними взаимодействовать внутри смарт контрактов tezos
- Проработал видение по задаче из challenge 10, обсудил его с менторами, внёс требуемые корректировки и реализовал в виде смарт контракта на pascaligo, который затем был задеплоен в edonet
Дальнейшие планы:
-
Сделать фронтэнд с платформой для деплоя таких контрактов с удобным интерфейсом, дата пикером и прочими штуками:
- Страница со списком существующих контрактов, сортировка по дате исполнения, валютам
- Визуализация по каждому контракту: какой процент заложен в какой части контракта (на достижение / не достижение границы по контракту)
- Каждый контракт кликабельный, открывается окно с возможностью сделать ставку за и против
- Кнопка для создания нового контракта
-
Необходимо покрыть имеющийся код смарт контракта тестами.
- что в закрытый контракт нельзя забэтить
- что нельзя с другого адреса сделать колбек
- что правильно распределяются ставки
- что нельзя закрыть контракт дваджы
- что нельзя в один и тот же адрес два раза беттить
- что до определённого времени нельзя вывести средства
-
Возможно прикрутить NFT, игровые механики какие-то, может быть с помощью сторонних контрактов, не вмешиваясь в то что уже есть
-
Сделать деплой контракта и платформы в мейннете
Ссылка на видео: https://www.youtube.com/watch?v=F2Km8tXVj0A