- PVSM.RU - https://www.pvsm.ru -
Эта статья — отчет о моем участии во втором этапе хакатоне, организованного компанией karma.red [1]. Подробнее о хакатоне можно прочитать на сайте хакатона: https://h.karma.red [2].
Для тех, кто любит читать код, а не статьи репозиторий проекта [3].
Статья [4] еще одного участника хакатона из Владивостока (трем парням из Владика и одному из Улан-Уде организаторы по результатам онлайн этапа оплатили пролет и проживание в Москве).
Фотографии в статье — неизвестного фотографа с мероприятия, картинки — мои, из собранной на скорую руку презентации к защите проекта :) Итак, с формальностями покончено, поехали.
После выдачи заданий [5] у меня стоял выбор — или взяться за децентрализованную биржу, или за третейский суд. В задаче с судом нужно было бы создать систему с репутацией, запрограммировать моделирование. Это было бы слишком просто и немного похоже на мой проект в первом этапе [6].
Работа децентрализованной биржи основана на атомарных межблокчейн обменах (свопах), в них я давно хотел разобраться, но все руки не доходили. Дав себе час на исследования (если бы не получилось разобраться, пришлось бы браться за суд) я пошел читать. Почитав документацию к реализации обменов [7] для нескольких блокчейнов, я понял, что все легко и взялся за биржу.
Для простоты на биржах можно производить обмен только через валюту биржи. В таком случае биржа сможет инициировать атомарные обмены в блокчейне биржи.
Т.к. кроме ethereum других блокчейнов со смарт-контактами сейчас нет, то его я и выбрал для прототипирования. В боевой бирже его использование кажется маловероятным из-за цены газа и его ограничений. В этом плане есть некоторая надежда на EOS.
Подробную документацию вы можете прочитать тут [7]. Очень краткий пересказ:
За основу контракта атомарных свопов я взял эту реализацию: github.com/AltCoinExchange/ethatomicswap [8]. Особенность данной реализации в том, что для нового атомарного обмена нет необходимости деплоить новый контракт. Все происходит в нем, как в неком реестре атомарных обменов.
В этот контракт я добавил возможность указывать вручную инициатора и второго участника обмена, для того, чтобы указывать их при инициации обмена из контракта биржи. Итоговая версия тут [9].
В движке биржи [10] реализовано следующее:
Для того, чтобы не писать интерфейс, я обернул контракты в конструкторы [17] для платформы smartz.io [18] и задеплоил контракты через эти конструкторы, быстро получив тем самым интерфейс для управления контрактами.
Для демонстрации обмена эфира на биткойн у меня уже не оставалось времени, поэтому я показал обмен эфира из тестовой сети rinkeby на эфир их тестовой сети kovan:
Ссылки на панели управления для задеплоенных мной контрактов (нужно установить расширение браузера metamask для доступа в блокчейн ethereum из браузера). При желании вы можете задеплоить свои
Картинки для нежелающих ставить расширения:
Чтобы выжать из хакатона все, сегодня я проведу онлайн воркшоп по написанию прототипа децентрализованной биржи (еще более прототипистого, чем на хакатоне). Естественно все бесплатно :) Приходите, пообщаемся в чате, поотвечаю на вопросы
https://www.youtube.com/watch?v=uIsr-_lvC4I [22]
Автор: quantum
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ya-piaryus/280833
Ссылки в тексте:
[1] karma.red: https://www.karma.red/
[2] https://h.karma.red: https://h.karma.red
[3] репозиторий проекта: https://github.com/quantum13/hackathon_karma2
[4] Статья: https://geektimes.com/post/300637/
[5] заданий: https://docs.google.com/document/d/1zrM2lPJWkt0J_67Koshkz2hG4N7P3KO4W0FOWUNsYMo/edit#
[6] в первом этапе: https://github.com/quantum13/hackathon_karma
[7] документацию к реализации обменов: https://github.com/decred/atomicswap
[8] github.com/AltCoinExchange/ethatomicswap: https://github.com/AltCoinExchange/ethatomicswap
[9] тут: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/AtomicSwapRegistry.sol
[10] движке биржи: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol
[11] Добавление запаса хэшей: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L198
[12] Депозит: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L219
[13] вывод: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L227
[14] покупку: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L73
[15] продажу: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L133
[16] Инициирование атомарного обмена: https://github.com/quantum13/hackathon_karma2/blob/master/contracts/Exchange.sol#L106
[17] конструкторы: https://github.com/quantum13/hackathon_karma2/tree/master/constructors
[18] smartz.io: https://smartz.io/
[19] Панель управления: https://smartz.io/instance/6a7168050631827efa23ec5b
[20] Панель управления: https://smartz.io/instance/f481a04a1198eac2a8938477
[21] Панель управления: https://smartz.io/instance/ef5d6f674f4a64a20caeaa61
[22] https://www.youtube.com/watch?v=uIsr-_lvC4I: https://www.youtube.com/watch?v=uIsr-_lvC4I
[23] Источник: https://habr.com/post/359134/?utm_campaign=359134
Нажмите здесь для печати.