Децентрализованные лайки - GetLoginEth/like GitHub Wiki

Общая информация

Система децентрализованных лайков работает на основе GetLogin и позволяет ставить лайки для любого контента. Вся информация о лайках хранится в блокчейне Ethereum в тестовой сети Rinkeby.

Лайки встраиваются разработчиком на собственный веб-сайт и привязываются к определенным идентификаторам контента (URL, запись в блоге, изображение и проч.). При посещении страницы со встроенными лайками, пользователь может видеть какое количество людей ставило лайки и ставил ли он сам лайк.

Для того, чтобы получать информацию о лайках на любом ресурсе, можно использовать Chrome расширения лайков.

Видео-демонстрация https://youtu.be/9tqukUh-euc

Как работает встраиваемый лайк

Лайки состоят из смарт-контрактов и javascript файлов для встраивания интерфейса лайков.

Для определения информации о количестве лайков и для совершения лайка используется хэшированный с помощью keccak256 идентификатор ресурса.

При посещении страницы со встроенными лайками, первым загружается скрипт LikeInjector.js, который находится на стороне владельца лайков.

После загрузки, скрипт с помощью переданных параметров определяет куда и какое количество лайков нужно встраивать. Для каждого лайка создается iframe с module.html, в который передается информация об идентификаторе ресурса.

Независимо от количества iframe для лайков, создается еще один iframe для встраивания GetLogin.

Фреймы лайков и GetLogin обмениваются информацией между собой с помощью механизма postMessage. Все фреймы изолированы между собой для исключения несанкционированных действий со стороны сайта, на который они встраиваются.

Как работает лайк в Chrome расширении

Во время работы расширения, открывается фоновая страницы с GetLogin. С помощью нее проверяется наличие доступа к аккаунту пользователя в расширении.

При посещении любой страницы через браузер, расширение хэширует ссылку с помощью keccak256 и запрашивается информацию по этому хэшу из контракта лайков с помощью GetLogin.

Информация о количестве лайков и делал ли лайк текущий пользователь, выводится в иконке расширения.

По нажатию на иконку расширения, открывает небольшое окно, в котором предлагается сделать лайк/убрать лайк для текущей страницы в браузере.

Информация о совершаемых действиях передается с помощью postMessage в GetLogin.

Отдельная ситуация для видео с Youtube. Расширение совершает лайк не по URL, а по id видео. Таким образом, информация о видео открытом на разных доменах (www.youtube.com, youtube.com, youtu.be) будет одна и та же.

Как лайки получают доступ к GetLogin

Получение информации о лайках из блокчейна и отправка транзакций происходит через GetLogin. Для этого конечный пользователь должен дать доступ к своему аккаунту по специальной ссылке. Переход по этой ссылке осуществляется при первом нажатии на лайк.

Ссылки

Пример встраиваемых на страницу Лайков. Отображение работает корректно только для авторизованных в GetLogin пользователей: https://swarm-gateways.net/bzz:/96d84e31f04fcf8265c3f887f912a0b29a5651adac75a6e1e269bdee8db39c66/example.html

Репозиторий Лайков: https://github.com/GetLoginEth/like

Репозиторий Chrome расширениия Лайков: https://github.com/GetLoginEth/like-chrome