Продолжаю серию статей для софто-девелоперов. В предыдущих сериях:
Наметился некоторый прогресс.
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.
Пробовал много чего, времени потратил реально уйму:
- Пробовал Windows-версию. Казалось бы идеал -- скачал и запустил. Но... она стопорится, скачав около 1 Гб. данных. Дальше не скачивает ничего. Ошибок тоже не пишет, просто тупо не качает. Может у вас заработает, но обратите внимание на коммент к статье: ей нужен файл snapshot5392323.json.
- Пробовал ставить по официальной инструкции на Ubuntu 16.04. Пока не получилось. Сначала не видело libboost-all-dev, потом не хватило вирт. памяти. Буду еще проверять.
- Наиболее полезной оказалась статья от @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. Может раньше это и работало, сейчас не работает!
Пока так. На новом этапе буду пытаться настроить полноценного свидетеля и майнера, ох не простое это дело...
Подписывайтесь, дальше будет интересно! Сейчас самый сложный этап.
@orator, я иду по этому же пути, набиваю себе шишки и рву волосы от негодования. Ваша статья очень пригодилась.
@orator Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Вы получили первый ответ
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.