Всего за 349 руб. Купить полную версию
INFO [02-13|08:51:21.440] Generating DAG in progress epoch=0 percentage=3 elapsed=3.963s
INFO [02-13|08:55:56.193] Successfully sealed new block number=46 sealhash=fccbc15cc27f hash=7769673700c9 elapsed=7.306s
INFO [02-13|08:55:56.193] block reached canonical chain number=39 hash=9c6ba7c95452
INFO [02-13|08:55:56.193] mined potential block number=46 hash=7769673700c9
INFO [02-13|08:55:56.193] Commit new mining work number=47 sealhash=41558f3ef931 uncles=0 txs=0 gas=0 fees=0 elapsed=97.707µs
> [1;5FINFO [02-13|08:56:01.030] Successfully sealed new block number=47 sealhash=41558f3ef931 hash=f67a9b773bfd elapsed=4.837s
INFO [02-13|08:56:01.030] block reached canonical chain number=40 hash=3a6600bde7e0
INFO [02-13|08:56:01.030] mined potential block number=47 hash=f67a9b773bfd
INFO [02-13|08:56:01.030] Commit new mining work number=48 sealhash=d4ab027151c7 uncles=0 txs=0 gas=0 fees=0 elapsed=97.374µs
В зависимости от производительности вашего виртуального или физического сервера генерация файла DAG может занять несколько минут или дольше.
Файл DAG содержит направленный ациклический граф (Directed Acyclic Graph). Он используется для добавления блоков в Ethereum с помощью алгоритма с названием Ethash. Его размер может составлять более 1 Гбайта. Размер этого блока увеличивается по мере роста сети Ethereum. Текущий размер блока можно узнать, например, на сайте https://investoon.com/tools/dag_size. На момент создания этого учебного курса файл DAG для основной сети Ethereum был размером 2.95 Гбайт.
Чем больше файл DAG, тем труднее выполнить майнинг. Если для майнинга используются видеокарты, то данные DAG должны полностью поместиться в память видеокарты, иначе применение видеокарты для майнинга будет бесполезным.
Так как запуск узла вы будете выполнять часто, рекомендуем подготовить пакетный файл для запуска с именем, например, start_node.sh (листинг 2.2.).
Листинг 2.2. Файл start_node.sh
geth etherbase "0x4f744742ac711fd111c7a983176db1d48d29f413" datadir node1 nodiscover mine minerthreads 1 maxpeers 0 verbosity 3 networkid 98760 rpc rpcapi="db,eth,net,web3,personal,web3" console
Параметры запуска узла
Чтобы получить краткую справку по всем командам и параметрам geth, запустите ее следующим образом:
$ geth -h
С параметром datadir, который указывает путь к каталогу блокчейна, вы уже знакомы. При запуске узла укажите тот же каталог, что мы использовали при инициализации приватного блокчейна.
Параметр etherbase задает публичный адрес, на который будет отправлено вознаграждение за майнинг.
Параметр nodiscover отключает поиск других узлов сети. Мы указали его, так как пока будем работать только с одним узлом блокчейна.
Мы также указали значение параметра maxpeers, равное нулю. Таким способом мы фактически отключили обмен по сети между узлами нашего блокчейна.
С помощью параметра mine мы запускаем так называемый майнинг процесс создания новых блоков в нашем блокчейне. Это необходимо, так как без появления новых блоков выполнение транзакций и публикация смарт-контрактов будут невозможны.
Параметр minerthreads указывает количество потоков, используемых для майнинга. Если ресурсы вашего сервера позволяют и там установлен
многоядерный процессор, то для ускорения майнинга можно увеличить значение этого параметра.
Очень важный параметр networkid. Это идентификатор сети. Здесь мы должны указать уникальный идентификатор 98760 нашего приватного блокчейна.
Параметр verbosity задает детализацию журнала:
0 не записывать данные в журнал;
1 записывать сообщения об ошибках;
2 записывать предупреждающие сообщения;
3 записывать информационные сообщения;
4 записывать отладочную информацию;
5 записывать детальную информацию.
По умолчанию используется значение 3.
Так как мы будем работать с узлом с помощью протокола JSON RPC, нам необходимо включить такую возможность, указав параметр rpc. Дополнительно с помощью параметра rpcapi мы перечисляем, какие программные интерфейсы должен предоставить нам узел. Здесь мы указали такой набор: db, eth, net, web3, personal, web3. Подробнее об этом мы расскажем позже.
При запуске geth мы указываем команду console. Эта команда запускает интерактивную консоль JavaScript, где мы сможем выдавать команды.
Подключаемся к нашему узлу
$ geth datadir node1 networkid 98760 attach ipc://home/book/node1/geth.ipc
Эта команда откроет консоль geth и подключится к вашему приватному узлу.
Здесь необходимо указать те же значения параметров datadir и networked, что и при запуске узла. Команда attach подключается к узлу, адрес которого задан после нее, и запускает интерактивную консоль JavaScript. В адресе нам нужно указать полный путь к рабочему каталогу нашего приватного блокчейна.
Запишите команду подключения в файл attach_node.sh для удобства (листинг 2.3.).
Листинг 2.3. Файл attach_node.sh
geth datadir node1 networkid 98760 attach ipc://home/book/node1/geth.ipc
Теперь запустите этот файл, и вы увидите приглашение консоли geth: