Создание нового пользователя, используя cli_wallet

Автор: @ropox

Я уже писал тут, как создать пользователя через cli_wallet, но я тогда честно говоря по незнанию переборщил - я тогда ждал пока нода не поднимется и не синхронизируется с блокчейном.

Поэтому я решил обновить статью. Эта статья вообщем-то повторяет старую, но отличие этой в том, что мы не будем ждать пока нода полностью синхронизируется. Вместо этого мы подключимся кошельком к официальной ноде wss://ws.golos.io или любой другой ноде. Отпадает конфигурирование, можно обойтись меньшим размером оперативки и вообще более слабым компьютером.

Докер

Как установить докер я не буду описывать. На своем компьютере (линукс, ubuntu 17) я установил докер из репозитория.

sudo apt install docker.io

Теперь как по инструкции от @someguy123.

Выполнить следующие команды

git clone https://github.com/Someguy123/golos-docker.git
cd golos-docker
./run.sh install
mkdir data/witness_node_data_dir/blockchain
./run.sh start

Если все было правильно сделано, то вы увидите, что то вроде

Starting container...
golos-seed

Голос-нода теперь работает, но нам нужен только консольный кошелек - cli_wallet в контейнере. Чтобы “войти” в контейнер выполните следующую команду

./run.sh enter

Подготавливаем кошелек

Если все нормально, то вы теперь находитесь в контейнере докера. По следующему пути /golos/ находится точка монтирования директории golos-docker/data. Здесь мы сохраним файл с ключами.

Запустим cli_wallet

/usr/local/bin/cli_wallet -w /golos/wallet.json -s wss://ws.golos.io

Где
-w /golos/wallet.json - Файл с ключами
-s wss://ws.golos.io - Мы подключаемся к офф. ноде

Кошелек запустится и предложит для начала задать пароль для файла с ключами.

Please use the set_password method to initialize a new wallet before continuing
new >>> 

Вводим set_password 123456

Теперь в строке ввода, вместо “New”, стоит “locked >>>”. Разблокируем файл введя пароль unlock 123456, после чего в строке ввода будет написано “unlocked >>>”.

Проверить ноду можно командой info, должно выдать много полезной инфы о состоянии блокчейна.

Теперь собственно импортируем приватный, активный ключ.

import_key 51f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f

И проверяем сработало ли

list_my_accounts
ropox                    74.368 GOLOS 47303729.658692 GESTS          222.701 GBG
-------------------------------------------------------------------------
TOTAL                    74.368 GOLOS 47303729.658692 GESTS          222.701 GBG

Создание пользователя

Ну и собственно к чему мы шли. Проверяем существует ли аккаунт, который мы решили зарегистрировать.

get_account tolstoy
2669058ms th_a       websocket_api.cpp:88          on_message           ] message: {"id":21,"result":[]} 
10 assert_exception: Assert Exception
!accounts.empty(): Unknown account
    {}
    th_a  wallet.cpp:396 get_account

Нету, значит столбим

create_account ropox tolstoy "{}" true

Команда выдаст много инфы на экран и в частности четыре публичных ключа. Собственно команда при исполнении сама генерит эти четыре ключа: хозяйский, постинг, активный и мемо и сохраняет их в файле кошелька. Это видно в логе

2745489ms th_a       wallet.cpp:470                save_wallet_file     ] saving wallet to file /golos/wallet.json
2745489ms th_a       wallet.cpp:470                save_wallet_file     ] saving wallet to file /golos/wallet.json
2745489ms th_a       wallet.cpp:470                save_wallet_file     ] saving wallet to file /golos/wallet.json
2745490ms th_a       wallet.cpp:470                save_wallet_file     ] saving wallet to file /golos/wallet.json

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

list_my_accounts
ropox                    71.368 GOLOS 47303729.658692 GESTS          222.701 GBG
tolstoy                   0.000 GOLOS   11492.614025 GESTS            0.000 GBG
-------------------------------------------------------------------------
TOTAL                    71.368 GOLOS 47315222.272717 GESTS          222.701 GBG

Ну и смотрим список ключей

list_keys

Можно их сохранить где нибудь у себя или распечатать. Если сейчас нажать Ctrl-C и ENTER и ввести exit, то мы покинем контейнер. В папочке data лежит вновь созданный wallet.json. Его тоже можно сохранить где нибудь и использовать повторно, если хотите создать нового пользователя или для перевода монет. Не забудьте только пароль - 123456 ))).

После окончании работы, не забудьте остановить контейнер.

./run.sh stop

Ключи

Я лично храню wallet.json, так как им удобно пользоваться, если надо перекинуть монеты с аккаунта на аккаунт и тому подобных дел. Так же я сохранил выхлоп list_keys команды у себя в гугл док. Там мешанина из открытых и приватных ключей. Как узнать, какой ключ, что? Для этого к примеру идем на http://golosd.com/@tolstoy. Прокручиваем до окошка "Authorities" и видим открытые ключи. Копируем постинг ключ и ищем его в списке ключей. Ниже находится приватный ключ.

Используя постинг ключ можно войти на сайт golos.io и писать комментарий, посты и апвотить. Чтобы сделать перевод потребуется активный ключ.

Ошибки

Бывает, что кошелек вылетает с такой ошибкой

10 assert_exception: Assert Exception
!ec: websocket send failed: invalid state
    {"msg":"invalid state"}
    th_a  websocket.cpp:164 send_message

Видимо иногда пропадает соединение с нодой и не восстанавливается. Помогает закрыть кошелек (Ctrl-C и Enter) и снова запустить.


По материалам статьи. Автор @ropox


results matching ""

    No results matching ""