ztepler / defi-tezos

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

В данном репозитории представлено решение в рамках челленджа #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.

Результаты / прогресс по ходу хакатона:

  1. Я впервые познакомился с языком ligo, особенностями компиляции в Michelson и написал свой первый смарт контракт
  2. Изучил особенности разработки под tezos, настроил среду разработки, научился компилировать смарт контракты с помощью truffle, деплоить контракты в сеть
  3. Познакомился с инструментами для разработчиков better call dev и pytezos
  4. Узнал как работают ораклы в блокчейне и научился с ними взаимодействовать внутри смарт контрактов tezos
  5. Проработал видение по задаче из challenge 10, обсудил его с менторами, внёс требуемые корректировки и реализовал в виде смарт контракта на pascaligo, который затем был задеплоен в edonet

Дальнейшие планы:

  1. Сделать фронтэнд с платформой для деплоя таких контрактов с удобным интерфейсом, дата пикером и прочими штуками:

    • Страница со списком существующих контрактов, сортировка по дате исполнения, валютам
    • Визуализация по каждому контракту: какой процент заложен в какой части контракта (на достижение / не достижение границы по контракту)
    • Каждый контракт кликабельный, открывается окно с возможностью сделать ставку за и против
    • Кнопка для создания нового контракта
  2. Необходимо покрыть имеющийся код смарт контракта тестами.

    • что в закрытый контракт нельзя забэтить
    • что нельзя с другого адреса сделать колбек
    • что правильно распределяются ставки
    • что нельзя закрыть контракт дваджы
    • что нельзя в один и тот же адрес два раза беттить
    • что до определённого времени нельзя вывести средства
  3. Возможно прикрутить NFT, игровые механики какие-то, может быть с помощью сторонних контрактов, не вмешиваясь в то что уже есть

  4. Сделать деплой контракта и платформы в мейннете

Ссылка на видео: https://www.youtube.com/watch?v=F2Km8tXVj0A

About


Languages

Language:Jupyter Notebook 77.9%Language:Python 16.9%Language:JavaScript 5.2%