Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
contracts
install
README.md

README.md

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

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

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

Инструкция по развертыванию 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