Coder Social home page Coder Social logo

ag-blockchain's Introduction

Активный гражданин. Блокчейн для проверки результатов голосования

Репозиторий содержит конфигурацию для запуска блокчейн-ноды на любой системе для просмотра результатов опросов на сайте Активный гражданин

!!! ВАЖНО: Данная инструкция предназначена для продвинутых пользователей ПК, обладающих знаниями английского языка и базовым пониманием принципов работы технологии блокчейн.

Инструкция по развертыванию Parity UI (используемая реализация блокчейн)

Установка на Windows

Установка возможна только на компьютер от имени пользователя, имеющего в системе права локального администратора.

  1. Скачать и установить специально собранный дистрибутив Parity. (Версия продукта подходит только для 64-х разрядных операционных систем).
  2. В случае успешной установки на рабочем столе появится иконка Активный гражданин, кликнуть ее. Откроется приложение Parity UI, а также системная консоль, в ней отобразится синхронизация блокчейна (появятся фразы вида Imported #3461 d75f…27e3 (0 txs, 0.00 Mgas, 0.86 ms, 0.57 KiB))
  3. Откроется веб-интерфейс Parity UI, дальнейшие действия описаны в разделе Инструкция по просмотру результатов опросов

ВАЖНО: Синхронизация данных блокчейн происходит только когда открыта командная строка Windows. При закрытии командной строки работа приложения прекращается, для возобновления нужно снова запустить его.

Установка на MacOS

Откройте системный терминал и запустите команду

wget -O - https://raw.githubusercontent.com/moscow-technologies/ag-blockchain/master/install/run_macosx.sh | bash
  1. В процессе установки потребуется ввести пароль от учетной записи пользователя
  2. В случае успешной установки в консоли отобразится процесс синхронизации блокчейна (появятся фразы вида Imported #3461 d75f…27e3 (0 txs, 0.00 Mgas, 0.86 ms, 0.57 KiB))
  3. Откроется приложение Parity UI, введите токен авторизации (его можно найти в консоли под фразой Or use the generated token:), дальнейшие действия описаны в разделе Инструкция по просмотру результатов опросов

ВАЖНО! Во время установки приложения через терминал, обратите внимания на указания, выдаваемые терминалом, например: необходимость обновить версию самого терминала и т.п.

Установка в Docker (любая ОС)

Предварительно выполнить

  1. Установить и запустить Docker (все необходимые требования и инструкции по установке есть на указанном сайте)
  2. Установить git (Git for Windows, Git for Linux) для того, чтобы скачать необходимую для блокчейн конфигурацию из репозитория.

Выполняем следующие команды в bash (для Linux и MacOS) или powershell (для Windows, от имени администратора):

  1. Скачиваем конфигурацию из репозитория git clone https://github.com/moscow-technologies/ag-blockchain.git
  2. Переходим в каталог с конфигурацией cd ag-blockchain/install
  3. Запускаем parity командой docker-compose up -d
  4. Выполняем docker-compose logs | grep token= и копируем токен (идет после token= примерно такой Q7J9-ofgq-EEJU-9nVt) для авторизации в Parity UI
  5. Нода запущена, должна пойти ее синхронизация с блокчейном.
  6. Отдельно устанавливаем приложение Parity UI и переходим к просмотру результатов

Инструкция по просмотру результатов опросов

Используя Parity UI, можно узнать общую статистику по конкретному опросу, а также как голосовал конкретный пользователь (по его личному UID). Для этого выполняем следующие действия:

  1. В Parity UI принимаем условия лицензионного соглашения
  2. Убедиться, что в правом верхнем растет количество скачанных блоков - это свидетельствует о том, что подключение к нужному блокчейн прошло успешно.
  3. Дождаться полной синхронизации блокчейна (должна исчезнуть надпись Your node is still syncing, the values you see might be outdated. Wait until it's fully synced. на красном фоне)
  4. Перейти в раздел Parity Wallet
  5. Переходим в раздел Settings и включаем галочку напротив пункта Contracts
  6. Переходим в раздел Contracts
  7. Для просмотра адресов смарт-контрактов опросов в блокчейн необходимо добавить в просмотр корневой контракт.
  8. Нажимаем Watch, появляется мастер, в нем на первом шаге жмем Next
  9. На втором шаге в поле network address вводдим значение 0xFDb76DaAF371bf5C7122f6f1104458440454FBB1, в поле contract name пишем Каталог опросов, в поле contract abi - содержимое файла conracts/Root.abi данного репозитория (Ссылка) и нажимаем Add contract
  10. Заходим в разделе Contracts в Каталог опросов и в поле под надписью getAddress вставляем идентификатор опроса на АГ (виден в адресной строке после перехода к опросу), жмем Query. Получаем адрес смарт-контракта с соответствующим опросом, копируем его в буфер обмена
  11. Возвращаемся в раздел Contracts, добавляем в просмотр смарт-контракт опроса: нажимаем Watch, Next, дальше в полеnetwork address - адрес из буфера обмена, contract name - будущее название контракта в списке (например Опрос 3196), contract abi - сожержимое файла contracts/Poll.abi из репозитория (Ссылка), нажимаем AddContract
  12. Заходим в раздел Contracts в просмотр смарт-контракта Опрос 3196. Здесь хранится соответствие идентификатора вопроса на АГ и адреса смарт-контрактов вопросов (разделы QuestionIds и QuestionsAddress), копируем адрес. Аналогично, необходимо копировать адреса смарт-контрактов и добавлять в разделе Contracts - Watch смарт-контракты, хранящие описание, ответы и результаты голосования по конкретному вопросу опроса. В первое поле вставляем адрес, во второе - название (например Опрос 3195 Вопрос1), в поле contract abi - содержимое файла contracts/PollQuestion.abi из репозитория (Ссылка). Нажимаем AddContract
  13. Переходим в просмотр вопроса и видим содержимое блокчейн
  • Идентификатор QuestionId
  • Заголовок вопроса CurrentVersionTitle
  • Количество проголосовавших VoterCount
  • Идентификаторы версий опроса AllExistingVersions (каждое изменение опроса ведет к созданию версии, голоса по разным версия считаются отдельно)
  • Идентификатор текущей версии CurrentVersion
  • Количество голосов за каждый из ответов в списке CurrentVersionResults (в порядке из идентификаторов, совпадает с порядком на сайте АГ)
  • Запрос _versions c указанием идентификатора версии возвращает название вопроса и список ответов с идентификаторами (формат JSON) в указанной версии
  • Запрос AnswerIdsByVersion c указанием идентификатора версии возвращает список идентификаторов ответов с портала АГ в указанной версии
  • Запрос AnswersByVersion c указанием идентификатора версии возвращает список ответов с идентификаторами (формат JSON) в указанной версии
  • Запрос ResultsByVersion c указанием идентификатора версии возвращает количество голосов за каждый из ответов в указанной версии
  • Запрос VoteOfUser с указанием UID пользователя на сайте АГ возвращает номер ответа, за который голосовал пользователь result, и хэш ответа, если пользователь вводил текст ответа - value1, value2

ag-blockchain's People

Contributors

smashin avatar a-borodenkov avatar 44px avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.