Активный гражданин. Блокчейн для проверки результатов голосования
Репозиторий содержит конфигурацию для запуска блокчейн-ноды на любой системе для просмотра результатов опросов на сайте Активный гражданин
!!! ВАЖНО: Данная инструкция предназначена для продвинутых пользователей ПК, обладающих знаниями английского языка и базовым пониманием принципов работы технологии блокчейн.
Инструкция по развертыванию Parity UI (используемая реализация блокчейн)
Установка на Windows
Установка возможна только на компьютер от имени пользователя, имеющего в системе права локального администратора.
- Скачать и установить специально собранный дистрибутив Parity. (Версия продукта подходит только для 64-х разрядных операционных систем).
- В случае успешной установки на рабочем столе появится иконка
Активный гражданин, кликнуть ее. Откроется приложение Parity UI, а также системная консоль, в ней отобразится синхронизация блокчейна (появятся фразы видаImported #3461 d75f…27e3 (0 txs, 0.00 Mgas, 0.86 ms, 0.57 KiB)) - Откроется веб-интерфейс
Parity UI, дальнейшие действия описаны в разделе Инструкция по просмотру результатов опросов
ВАЖНО: Синхронизация данных блокчейн происходит только когда открыта командная строка Windows. При закрытии командной строки работа приложения прекращается, для возобновления нужно снова запустить его.
Установка на MacOS
Откройте системный терминал и запустите команду
wget -O - https://raw.githubusercontent.com/moscow-technologies/ag-blockchain/master/install/run_macosx.sh | bash- В процессе установки потребуется ввести пароль от учетной записи пользователя
- В случае успешной установки в консоли отобразится процесс синхронизации блокчейна (появятся фразы вида
Imported #3461 d75f…27e3 (0 txs, 0.00 Mgas, 0.86 ms, 0.57 KiB)) - Откроется приложение
Parity UI, введите токен авторизации (его можно найти в консоли под фразойOr use the generated token:), дальнейшие действия описаны в разделе Инструкция по просмотру результатов опросов
ВАЖНО! Во время установки приложения через терминал, обратите внимания на указания, выдаваемые терминалом, например: необходимость обновить версию самого терминала и т.п.
Установка в 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/install - Запускаем parity командой
docker-compose up -d - Выполняем
docker-compose logs | grep token=и копируем токен (идет послеtoken=примерно такойQ7J9-ofgq-EEJU-9nVt) для авторизации вParity UI - Нода запущена, должна пойти ее синхронизация с блокчейном.
- Отдельно устанавливаем приложение
Parity UIи переходим к просмотру результатов
Инструкция по просмотру результатов опросов
Используя Parity UI, можно узнать общую статистику по конкретному опросу, а также как голосовал конкретный пользователь (по его личному UID). Для этого выполняем следующие действия:
- В
Parity UIпринимаем условия лицензионного соглашения - Убедиться, что в правом верхнем растет количество скачанных блоков - это свидетельствует о том, что подключение к нужному блокчейн прошло успешно.
- Дождаться полной синхронизации блокчейна (должна исчезнуть надпись
Your node is still syncing, the values you see might be outdated. Wait until it's fully synced.на красном фоне) - Перейти в раздел
Parity Wallet - Переходим в раздел
Settingsи включаем галочку напротив пунктаContracts - Переходим в раздел
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(в порядке из идентификаторов, совпадает с порядком на сайте АГ) - Запрос
_versionsc указанием идентификатора версии возвращает название вопроса и список ответов с идентификаторами (формат JSON) в указанной версии - Запрос
AnswerIdsByVersionc указанием идентификатора версии возвращает список идентификаторов ответов с портала АГ в указанной версии - Запрос
AnswersByVersionc указанием идентификатора версии возвращает список ответов с идентификаторами (формат JSON) в указанной версии - Запрос
ResultsByVersionc указанием идентификатора версии возвращает количество голосов за каждый из ответов в указанной версии - Запрос
VoteOfUserс указанием UID пользователя на сайте АГ возвращает номер ответа, за который голосовал пользовательresult, и хэш ответа, если пользователь вводил текст ответа -value1,value2