Настройка ноды для бирж

Использование готового cli_wallet

Скачиваем cli_wallet и устанавливаем права на файл:
1
wget https://files.golos.id/cli_wallet && chmod +x cli_wallet
Copied!
Запускаем cli_wallet (список альтернативных публичных API-нод):
1
./cli_wallet -s wss://api.golos.id/ws --rpc-http-endpoint 127.0.0.1:8094 --rpc-http-allowip 127.0.0.1
Copied!
Все параметры запуска cli_wallet можно посмотреть командой./cli_wallet --help
В примере выше заданы:
--rpc-http-endpoint 127.0.0.1:8094 Endpoint for wallet HTTP RPC to listen on
--rpc-http-allowip 127.0.0.1 Allows only specified IPs to connect to the HTTP endpoint
Возможно вместо запуска cli_wallet с помощью screen будет удобно использовать режим демона, добавив опцию:
-d [ --daemon ] Run the wallet in daemon mode
Устанавливаем пароль на кошелёк, разблокируем его, импортируем приватный активный ключ для осущестления переводов.
1
set_password 123456
2
3
unlock 123456
4
5
import_key 5JX..........
Copied!
Примеры команд к cli_wallet описаны ниже.

Самостоятельная сборка cli_wallet

Собрать cli_wallet можно и с исходного кода за 5 начальных шагов этой инструкции.
Подключиться к cli_wallet (список альтернативных публичных API-нод):
1
/usr/local/bin/cli_wallet \
2
--wallet="/var/lib/golosd/wallet.json" \
3
--server-rpc-endpoint="wss://api.golos.id/ws" \
4
--rpc-http-endpoint="127.0.0.1:8094" \
5
--rpc-http-allowip="127.0.0.1"
Copied!

Запуск ноды блокчейна с docker-образа

Устанавливаем Docker (если его ещё нет).
Скачиваем файл цепочки блоков (без него синхронизация от seed-нод блокчейна занимает более суток).
Германия 1
Финляндия 1
Германия 2
Финляндия 2
1
wget -P ~/blockchain --user=u237308-sub1 --password=3oOk8579Ff8ceKdy https://u237308-sub1.your-storagebox.de/block_log.index https://u237308-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/blockchain --user=u245960-sub1 --password=7USy9jS9GS2Yka3c https://u245960-sub1.your-storagebox.de/block_log.index https://u245960-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/blockchain --user=u223265-sub1 --password=tXjXAmNBcu8PmmbQ https://u223265-sub1.your-storagebox.de/block_log.index https://u223265-sub1.your-storagebox.de/block_log
2
Copied!
1
wget -P ~/blockchain --user=u233417-sub1 --password=xCbthClwoWSVGIt1 https://u233417-sub1.your-storagebox.de/block_log.index https://u233417-sub1.your-storagebox.de/block_log
2
Copied!
Добавляем актуальный файл конфигурации ноды (предварительно поменяв аккаунт отслеживанияtrack-account и срок хранения истории history-blocks, 864000 блоков x 3 секунды = месяц).
1
echo 'webserver-thread-pool-size = 2
2
webserver-http-endpoint = 0.0.0.0:8090
3
webserver-ws-endpoint = 0.0.0.0:8091
4
read-wait-micro = 500000
5
max-read-wait-retries = 2
6
write-wait-micro = 500000
7
max-write-wait-retries = 3
8
single-write-thread = true
9
enable-plugins-on-push-transaction = false
10
shared-file-size = 2G
11
min-free-shared-file-size = 500M
12
inc-shared-file-size = 2G
13
block-num-check-free-size = 1000
14
plugin = chain p2p json_rpc webserver network_broadcast_api database_api operation_history account_history account_by_key
15
history-start-block = 42000000
16
history-blocks = 864000
17
track-account = rudex
18
clear-votes-before-block = 4294967295
19
store-account-metadata = false
20
replay-if-corrupted = true
21
skip-virtual-ops = true
22
enable-stale-production = false
23
mining-threads = 0
24
[log.console_appender.stderr]
25
stream=std_error
26
[log.file_appender.p2p]
27
filename=logs/p2p/p2p.log
28
[logger.default]
29
level=debug
30
appenders=stderr
31
[logger.p2p]
32
level=none
33
appenders=stderr' | sudo tee -a ~/config.ini
Copied!
Запускаем контейнер:
1
sudo docker run -d \
2
-p 127.0.0.1:8090:8090 \
3
-p 127.0.0.1:8091:8091 \
4
-p 127.0.0.1:8094:8094 \
5
-v ~/config.ini:/etc/golosd/config.ini \
6
-v ~/blockchain:/var/lib/golosd/blockchain \
7
-v ~/wallet:/golosd \
8
--name golosd golosblockchain/golos:latest
Copied!
Начнётся загрузка образа ноды и реплей (наполнение данных shared_memory.bin из файла цепочки блоков), который будет продолжаться несколько часов в зависимости от производительности сервера.
Посмотреть логи командой:
1
sudo docker logs -f --tail 50 golosd
Copied!
Запуск приложения cli_wallet внутри контейнера ноды:
1
sudo docker exec -ti -d golosd cli_wallet \
2
--wallet="/golosd/wallet.json" \
3
--server-rpc-endpoint="ws://localhost:8091" \
4
--rpc-http-endpoint="0.0.0.0:8094" \
5
--rpc-http-allowip="172.17.0.1"
Copied!

Примеры команд к cli_wallet через curl

Установка на кошелёк пароля и разблокировка:
1
curl --data '{"jsonrpc": "2.0", "method": "set_password", "params": ["123456"], "id": 1}' http://127.0.0.1:8094
Copied!
1
curl --data '{"jsonrpc": "2.0", "method": "unlock", "params": ["123456"], "id": 1}' http://127.0.0.1:8094
Copied!
Импортирование приватного активного ключа в кошелёк:
1
curl --data '{"jsonrpc": "2.0", "method": "import_key", "params": ["5JVFFWRLwz6JoP9kguuRFfytToGU6cLgBVTL9t6NB3D3BQLbUBS"], "id": 1}' http://127.0.0.1:8094
Copied!
Список добавленных в кошелёк аккаунтов:
1
curl --data '{"jsonrpc": "2.0", "method": "list_my_accounts", "params": [], "id": 1}' http://127.0.0.1:8094
Copied!
Получение информации об аккаунте:
1
curl --data '{"jsonrpc": "2.0", "method": "get_account", "params": ["rudex"], "id": 1}' http://127.0.0.1:8094
Copied!
Перевод/трансфер токенов:
1
curl --data '{"jsonrpc": "2.0", "method": "transfer", "params": ["rudex","test","1.000 GOLOS","",true], "id": 1}' http://127.0.0.1:8094
Copied!
Запрос истории последних 50 трансферов где получателем был аккаунт (иные варианты фильтра истории описаны тут):
1
curl --data '{"jsonrpc": "2.0", "method": "filter_account_history", "params": ["rudex",-1,50,{"direction":"receiver","select_ops":["transfer_operation"]}], "id": 1}' http://127.0.0.1:8094
Copied!
Получение информации об операциях в блоке:
1
curl --data '{"jsonrpc": "2.0", "method": "get_block", "params": ["30000000"], "id": 1}' http://127.0.0.1:8094
Copied!
Получение операций из блока вместе с виртуальными и trx_id:
1
curl --data '{"jsonrpc": "2.0", "method": "get_ops_in_block", "params": ["30000000","false"], "id": 1}' http://127.0.0.1:8094
Copied!
Описание команд к cli_wallet также есть здесь или можно сформировать формат пользуясь сервисом https://gapi.golos.today/steemjs/api/
Last modified 3mo ago