Репозиторий содержит конфигурацию для запуска блокчейн-ноды на любой системе для просмотра результатов опросов на сайте Активный гражданин
!!! ВАЖНО: Данная инструкция предназначена для продвинутых пользователей ПК, обладающих знаниями английского языка и базовым пониманием принципов работы технологии блокчейн.
Упрощенные инструкции с подсказками и снимками экрана можно просмотреть по ссылкам:
Установка на Windows
Установка возможна только на компьютер от имени пользователя, имеющего в системе права локального администратора.
- Скачать и установить Parity. (Версия продукта подходит только для 64-х разрядных операционных систем).
- В трее найти значок Parity, нажать правой клавишей мыши и выбрать
Exit
. - Найти папку, куда установилась программа
parity.exe
(обычноC:\Program Files\Parity\Parity
) и перейти в нее. - Открыть ссылку и сохранить файл, нажав (
Ctrl+S
). В появившемся окнеСохранить как
, выбрать тип файлаВсе файлы
поменять наименование файла наchain.json
произвести сохранение файла в произвольную папку на своем компьютере, например вЗагрузки
. - Перейти в папку, в которой был сохранен файл и скопировать файл
chain.json
в папку, куда была установлена программа. (см. п. 3 Инструкции). Для сохранения потребуются права администратора, в появивишемся окне нажатьПродолжить
. - Открыть командную строку (нажать
Windows+R
и напечататьcmd
, нажатьВыполнить
) - Перейти в папку с
parity.exe
введя командуcd C:\Program Files\Parity\Parity
- В командной строке выполнить
parity ui --chain chain.json --bootnodes enode://1412ee9b9e23700e4a67a8fe3d8d02e10376b6e1cb748eaaf8aa60d4652b27872a8e1ad65bb31046438a5d3c1b71b00ec3ce0b4b42ac71464b28026a3d0b53af@213.79.88.178:30303,enode://9076c143a487aa163437a86f7d009f257f405c50bb2316800b9c9cc40e5a38fef5b414a47636ec38fdabc8a1872b563effa8574a7f8f85dc6bde465c368f1bf5@213.79.88.177:30303
- Откроется веб-интерфейс, дальше выполнить пункты из
Инструкция по просмотру результатов опросов
- Убедиться, что в правом нижнем углу веб-страницы, в зеленом прямоугольнике отобразилась надпись
ACTIVECITIZENPROD
- это свидетельствует о том, что подключение к нужному блокчейн прошло успешно. - В случае если в зеленом прямоугольнике отобразилась надпись
FOUNDATION
, это свидельствует о том, что какой-то из шагов был выполнен неверно, для этого:- Убедиться, что в трее НЕ запущено приложение
Parity
(шаг №2); - Убедиться, что файл сохранен в нужном формате. Для этого нажать на файл
chain.json
правой кнопкой мыши, выбратьСвойства
и убедиться, что тип файла отображается какФайл "JSON" (.json)
(шаг №4); - Убедиться, что в папке с программой размещен файл
chain.json
(шаг №5).
- Убедиться, что в трее НЕ запущено приложение
Каждое из указанных условий п.11 должно быть выполнено. В случае если какакое-то условие не было выполнено, повторить все последующие шаги инструкции с указанного пункта.
ВАЖНО: Синхронизация данных блокчейн происходит только когда открыта командная строка Windows. При закрытии командной строки работа приложения прекращается, для возобновления нужно выполнить все шаги, указанные выше, начиная с п.6.
Установка на MacOS
- Проверить, что на комьютере установлено приложение
Homebrew
. В случае его отсутствия осуществить установку по ссылке; - Открыть терминал и выполнить
brew tap paritytech/paritytech
а затемbrew install parity --stable
- Открыть ссылку и сохранить файл
chain.json
(Ctrl+S
) в произвольную папку (сохранить как: Программный код страницы, оставив в названии файла только chain.json) - Перейти в папку с
chain.json
командой в терминалеcd
и далее путь к файлу, например,cd /users/nameuser/desktop/parity
- Выполнить
parity ui --chain chain.json --bootnodes enode://1412ee9b9e23700e4a67a8fe3d8d02e10376b6e1cb748eaaf8aa60d4652b27872a8e1ad65bb31046438a5d3c1b71b00ec3ce0b4b42ac71464b28026a3d0b53af@213.79.88.178:30303,enode://9076c143a487aa163437a86f7d009f257f405c50bb2316800b9c9cc40e5a38fef5b414a47636ec38fdabc8a1872b563effa8574a7f8f85dc6bde465c368f1bf5@213.79.88.177:30303
- Откроется веб-интерфейс, дальше выполнить пункты из
Инструкция по просмотру результатов опросов
ВАЖНО! Во время установки приложения через терминал, обратите внимания на указания, выдаваемые терминалом, например: необходимость обновить версию самого терминала и т.п.
Установка в Docker (любая ОС)
Предварительно выполнить
- Установить и запустить Docker (все необходимые требования и инструкции по установке есть на указанном сайте)
- Установить git (Git for Windows, Git for Linux) для того, чтобы скачать необходимую для блокчейн конфигурацию из репозитория.
Выполняем следующие команды в bash (для Linux и MacOS) или powershell (для Windows, от имени администратора):
- Скачиваем конфигурацию из репозитория
git clone https://github.com/moscow-technologies/ag-blockchain.git
- Переходим в каталог с конфигурацией
cd ag-blockchain
- Запускаем parity командой
docker-compose up -d
- Выполняем
docker-compose logs | grep token=
и копируем токен (идет послеtoken=
примерно такойQ7J9-ofgq-EEJU-9nVt
) для авторизации в Parity UI - Нода запущена, должна пойти ее синхронизация с блокчейном.
- Далее можно зайти в ее веб-интерфейс и выолнить его настройку для просмотра результатов опросов (Система запросит токен, вводим полученный предыдущей командой, вводим его)
Используя Parity UI, можно узнать общую статистику по конкретному опросу, а также как голосовал конкретный пользователь (по его личному UID). Для этого выполняем следующие действия:
- Принимаем условия лицензионного соглашения, а также создаем аккаунт в системе (логин и пароль -
user
) - Переходим в раздел Settings и включаем галочку напротив пункта
Contracts
- Переходим в раздел Status. Должна идти синхронизация блоков (число напротив надписи
Best block
растет быстрее чем на единицу в секунду). Второе число вPeers
должно быть больше 0 (если синхронизация работает корректно)! - Дожидаемся окончания синхронизации надпись
Chain synchronized (yes)
- Переходим в раздел Contracts
- Для просмотра адресов смарт-контрактов опросов в блокчейн необходимо добавить в просмотр корневой контракт.
- Нажимаем
Watch
, появляется мастер, в нем на первом шаге жмемNext
- На втором шаге в поле
network address
вводдим значение0xFDb76DaAF371bf5C7122f6f1104458440454FBB1
, в полеcontract name
пишемКаталог опросов
, в полеcontract abi
- содержимое файлаconracts/Root.abi
данного репозитория (Ссылка) и нажимаемAdd contract
- Заходим в разделе
Contracts
вКаталог опросов
и в поле под надписью getAddress вставляем идентификатор опроса на АГ (виден в адресной строке после перехода к опросу), жмемQuery
. Получаем адрес смарт-контракта с соответствующим опросом, копируем его в буфер обмена - Возвращаемся в раздел
Contracts
, добавляем в просмотр смарт-контракт опроса: нажимаемWatch
,Next
, дальше в полеnetwork address
- адрес из буфера обмена,contract name
- будущее название контракта в списке (напримерОпрос 3196
),contract abi
- сожержимое файлаcontracts/Poll.abi
из репозитория (Ссылка), нажимаемAddContract
- Заходим в раздел
Contracts
в просмотр смарт-контрактаОпрос 3196
. Здесь хранится соответствие идентификатора вопроса на АГ и адреса смарт-контрактов вопросов (разделыQuestionIds
иQuestionsAddress
), копируем адрес. Аналогично, необходимо копировать адреса смарт-контрактов и добавлять в разделеContracts
-Watch
смарт-контракты, хранящие описание, ответы и результаты голосования по конкретному вопросу опроса. В первое поле вставляем адрес, во второе - название (напримерОпрос 3195 Вопрос1
), в полеcontract abi
- содержимое файлаcontracts/PollQuestion.abi
из репозитория (Ссылка). НажимаемAddContract
- Переходим в просмотр вопроса и видим содержимое блокчейн
- Идентификатор
QuestionId
- Заголовок вопроса
CurrentVersionTitle
- Количество проголосовавших
VoterCount
- Идентификаторы версий опроса
AllExistingVersions
(каждое изменение опроса ведет к созданию версии, голоса по разным версия считаются отдельно) - Идентификатор текущей версии
CurrentVersion
- Количество голосов за каждый из ответов в списке
CurrentVersionResults
(в порядке из идентификаторов, совпадает с порядком на сайте АГ) - Запрос
_versions
c указанием идентификатора версии возвращает название вопроса и список ответов с идентификаторами (формат JSON) в указанной версии - Запрос
AnswerIdsByVersion
c указанием идентификатора версии возвращает список идентификаторов ответов с портала АГ в указанной версии - Запрос
AnswersByVersion
c указанием идентификатора версии возвращает список ответов с идентификаторами (формат JSON) в указанной версии - Запрос
ResultsByVersion
c указанием идентификатора версии возвращает количество голосов за каждый из ответов в указанной версии - Запрос
VoteOfUser
с указанием UID пользователя на сайте АГ возвращает номер ответа, за который голосовал пользовательresult
, и хэш ответа, если пользователь вводил текст ответа -value1
,value2