Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
orator
7 лет назад

Изучаем кишки golos.io 3: JS-версия без min и CLI-кошелек

Продолжаю серию статей для софто-девелоперов. В предыдущих сериях:

  1. Изучаем кишки golos.io: вечер 1
  2. Изучаем кишки golos.io 2: Регистрация в обход сайта

Наметился некоторый прогресс.

JS версия файла без минимизации

Сделал репозиторий для вспомогательных файлов: https://github.com/n2g/golos

Сейчас в нем рабочая версия JS-скрипта steem без минимизации и с комментариями. Вот тут можно его протестировать, вызывая команды в консоли браузера: https://rawgit.com/n2g/golos/master/etc/test1.html

На самой форме можно сгенерировать все ключи на основе имени и пароля в таком формате:

owner::5JMfKsu3Q7wMQPoBaTqfC67akL9Vn9R3hrihPG4truiF2MchbNu
ownerPubkey::STM6ybShuLAY6CAo3X6Z7tXAFFFCwg8sSD5AqrRGiAW4yRSYNG8xJ
active::5HrJpS1BZs9u65iwbCEKpwCLbWQ5hysJCaWMZ4RC8d4UX4zeYtM
activePubkey::STM8ayHWdcHo7FKNfFPtAKu8Vd3wdLfkE7CRAX8yjBS27gV8XHwew
posting::5KLtKTgzDpxNktmRNoHAH9AFYKmVhd85CrqeEurNoxKvszTNvNx
postingPubkey::STM7LgbKA2Hg3kcWwU1YpmbWtvEQ7dHWqt7JY6mwfWMGWYxAeVMRW
memo::5K7LvdmujHZQxySqt2Pb3jFkrDTtDgqY8GqNzoBRYZomsdw547g
memoPubkey::STM6484fG3wwQEAHrYyPJPrhBaFtCp1umZoudcyWTB3sAWDrfRdd4 

С ключами скрипт работает и оффлайн, можете сохранить его на компьютер и изучить (минификации нет), после чего запускать. Для golos нужно STM заменить на GLS, остальное совпадает!

Пришлось немного повозиться, так как nodejs и npm я использую впервые.

Формат ключей

Благодаря прозрачной JS-версии, появилась возможность разобраться с форматом ключей. Во второй части у меня не получилось преобразовать открытый ключ к стандартному формату:

GLS6484fG3wwQEAHrYyPJPrhBaFtCp1umZoudcyWTB3sAWDrfRdd4 

Оказывается ларчик просто открывался -- была ошибка в Base58-преобразовании библиотеки  github.com/Chainers/Cryptography.ECDSA А так мое предположение было верным -- используется стандартная компрессия открытого ключа, при этом его размер 32 байта. Теперь все совпало!

Думаю, то ли сделать свой форк, то ли дождаться пока @steepshot исправит?

golosd и CLI Кошелек

Таки удалось мне установить golosd и cli-wallet.

Пробовал много чего, времени потратил реально уйму:

  1. Пробовал Windows-версию. Казалось бы идеал -- скачал и запустил. Но... она стопорится, скачав около 1 Гб. данных. Дальше не скачивает ничего. Ошибок тоже не пишет, просто тупо не качает. Может у вас заработает, но обратите внимание на коммент к статье: ей нужен файл snapshot5392323.json.
  2. Пробовал ставить по официальной инструкции на Ubuntu 16.04. Пока не получилось. Сначала не видело  libboost-all-dev, потом не хватило вирт. памяти. Буду еще проверять.
  3. Наиболее полезной оказалась статья от @ropox, которая ссылается на статью @someguy123 Голос-DOCKER (golos in a box).

Так же помогла статья с конфигами: тут и тут официальная.

Чего я добился?

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

Кстати, для архива, вот список всех команд кошелька (чтобы всегда глянуть что через него доступно): https://github.com/n2g/golos/blob/master/etc/cli-wallet-commands.txt

Запустить команду network_get_connected_peers не удалось, хотя разрешение use_network_node_api было установлено (все время была ошибка, что нет этого разрешения). Так что IP-адреса нод я так и не узнал. Нужно еще разбираться.

Свидетель

Я появился в таблице делегатов под номером 99. Но судя по этой таблице что-то сработало не так. Решил пока отключить ноду, буду разбираться. Всего отображается 100 свидетелей, мне не ясно все ли это, или только лучшие 100? Работала ли моя нода вообще, или сеть ее не приняла (возможно старая версия golosd)? Порт 4243 был открыт, что-то отдавал.

Майнер

Что-то точно генерилось, так как проц 4 ядерный был загружен на 100%. Но ни одного блока не собрал, в списке майнеров не появился. Требует дальнейшего расследования, сообщу дополнительно.

Возвращаясь к анонимной регистрации пользователей

В прошлом исследовании в этом прошел затык. Сейчас появилась возможность сделать и через CLI-кошелек и отследить запрос в JS и с ключами разобрался. Но уже не интересно, так как новый пользователь все равно будет привязан ко мне (для его генерации потребуется мой ключ) + это еще и платно (стоит 3 голоса). Может еще вернусь к этому вопросу, но пока не вижу особого смысла, это не позволяет мне создать анонимного пользователя.

Выводы на сегодня

Вижу проблему в том, что официальная инструкция по установке golosd -- не работает на практике, причем не только у меня. Плюс в том что меньше конкурентов, ведь работает только у тех, кто смог разобраться -- меньше 100 человек. Минус в том что страдает сама сеть. В идеале разработчику нужно взять и попытаться самому воспользоваться своей инструкцией, установив ноду с нуля на сервер того же DigitalOcean. Может раньше это и работало, сейчас не работает!

Пока так. На новом этапе буду пытаться настроить полноценного свидетеля и майнера, ох не простое это дело...

Подписывайтесь, дальше будет интересно! Сейчас самый сложный этап.

0
314.563 GOLOS
На Golos с May 2017
Комментарии (2)
Сортировать по:
Сначала старые