Устанавливаем полную ноду биткоина с Bitcoin Core – пошаговое руководство
Децентрализация – ключевая характеристика биткоина. Благодаря децентрализации биткоин не имеет единой точки управления и отказа. Децентрализация также означает необходимость в как можно большем числе полных нод.
ForkLog составил пошаговую инструкцию по установке полной ноды биткоина при помощи наиболее популярного клиента сети Bitcoin Core.
Что такое полная нода и для чего она нужна
Мы освещали этот вопрос в образовательной карточке, но все же напомним: полной нодой считается любой компьютер, подключенный к блокчейну и полностью с ним синхронизированный. Полные ноды хранят все данные блокчейна, начиная с генезис-блока.
Полные ноды бесплатно обслуживают сеть, загружают и валидируют каждый блок с транзакциями, руководствуясь исключительно алгоритмом консенсуса. Они являются полностью независимыми. Полные ноды отвергают противоречащие консенсусу блоки или отдельные транзакции.
«Биткоин – это изощренная децентрализованная сеть доверия, которая может поддерживать мириады финансовых процессов. В то же время каждая нода в сети биткоина следует нескольким простым математическим правилам. Взаимодействие между многими нодами – вот что ведет к изощренному поведению, а не какая-то изначально заложенная сложность или доверие к одной ноде. Подобно муравьиной колонии, биткоин – это устойчивая сеть простых нод, следующих простым правилам, которые вместе могут делать удивительные вещи без какой-либо центральной координации», — пишет известный биткоин-евангелист Андреас Антонопулос в своей книге Mastering Bitcoin.
Развернуть полную ноду может любой пользователь с доступом к компьютеру с достаточными характеристиками и интернет-соединением. По состоянию на 20 мая 2020 года, сеть биткоина поддерживали более 10 тысяч нод, большая часть которых развернута в Северной Америке и Западной Европе.
Возможно, кто-то спросит, зачем устанавливать полную ноду, если можно просто воспользоваться одним из многих доступных кошельков. Ответов несколько:
Вы верите в биткоин и хотите, чтобы сеть росла и была успешной. Каждая новая нода приближает будущее, в котором люди осуществляют биткоин-транзакции и никакое правительство или третья сторона не могут этому помешать.
Вы планируете осуществлять большое число транзакций и хотите быть уверенными в том, что ваши транзакции будут верифицированы. Если вы не управляете собственной нодой, вы доверяете верификацию своих транзакций кому-то другому. Полная нода обеспечивает полный контроль над личными финансами.
Наконец, не забываем про такой немаловажный аспект, как приватность — хотя анонимность транзакций в биткоине в полном понимании этого слова и отсутствует, управление полной нодой помогает эту проблему в определенной степени решить.
Минимальные технические требования
Перед установкой полной ноды необходимо убедиться, что ваш компьютер удовлетворяет ряду минимальных технических требований. Согласно bitcoin.org, это:
- Десктопный компьютер или ноутбук с последними версиями Windows, Mac OS X или Linux;
- 200 Гб свободного пространства на жестком диске с минимальной скоростью чтения / записи 100 MB/s;
2 Гб оперативной памяти (RAM); - Широкополосное интернет-соединение с upload-скоростью как минимум 400 Kb/s. Также важно, чтобы соединение было неограниченным и с высокими upload-лимитами.
В идеале ПО для полной ноды должно работать 24/7, но это может получиться не у всех, поэтому рекомендуемое время его работы составляет как минимум шесть часов в день.
Устанавливаем полную ноду
Реквизитом стал ноутбук Dell Inspiron 15 3584 (Core i3-7020U (2.30 GHz), DDR4 4GB, HDD 1TB) с Windows 10. Устанавливаем Bitcoin Core – наиболее популярный клиент сети, работу над которым ведет широкое сообщество разработчиков. Как будет видно ниже, это достаточно простой процесс, большая часть которого сводится к установке самого кошелька.
Заходим на https://bitcoin.org/en/download, где нас встречает Bitcoin Core 0.19.1 — последняя версия ПО, выпущенная в марте этого года.
По умолчанию здесь представлена прямая ссылка на .exe файл, но также можно выбрать архив .zip или скачать версии для других операционных систем.
Скачав установочный файл, приступаем непосредственно к установке. Мы в шаге от возможно самого главного решения в нашей жизни!
Следующим шагом необходимо выбрать диск, на который программа будет установлена. По умолчанию установщик предложит выбрать диск C. Для этого необходимо 52Мб свободного пространства, которые у нас имеются:
Начинаем процесс распаковки:
Спустя короткое время распаковка завершена, и Bitcoin Core готов к работе. Почти.
Далее идет очень важный этап — необходимо указать диск, на котором будут храниться данные блокчейна. И как видно на скрине ниже, к сегодняшнему дню его полный размер вырос до 284 Гб.
По умолчанию установщик предложит выбрать диск C, но возможны ситуации, когда на нем не будет необходимого свободного пространства. Это именно тот случай, который подстерегал и нас. Пришлось выбрать другой диск.
Как видим, разработчики заранее предупреждают, что процесс первоначальной синхронизации не будет простым. Также необходимо быть готовым к тому, что он займет изрядное время.
Кроме того, на пути может встать файерволл, но это решается достаточно быстро и просто.
После всех этих действий мы оказались в самом клиенте, который тут же начинает процесс синхронизации блокчейна с самого начала существования сети биткоина. То есть, загружаются данные всех блоков, в том числе и генезис-блока, созданного Сатоши Накамото. Чувство того, что ты приобщаешься к истории, трудно передать словами!
Как уже говорилось ранее, синхронизация данных блокчейна займет время, и пока она продолжается, можно заняться бэкапом приватных ключей. Методы их хранения и обеспечения безопасности в данном материале рассматриваться не будут.
Синхронизация данных до второй половины 2015 года была выполнена весьма быстро — на это потребовалось около трех часов. Однако далее процесс существенно замедлился, что объясняется возросшим средним размером блока.
Как бы то ни было, спустя почти пять дней беспрерывной работы ноутбука и нервного ожидания, процесс синхронизации был завершен!
Но для запуска полной ноды этого пока еще недостаточно — на данном этапе клиент выступает в роли исключительно кошелька, при этом не самого удобного с точки зрения скорости.
Наша задача — запустить полную ноду. Для этого необходимо осуществить еще несколько действий. В первую очередь — настроить входящие соединения через порт 8333.
Для этого через вкладку Настройки > Опции заходим в сетевые настройки, отмечаем “разрешить входящие подключения” и вручную прописываем параметры порта.
В теории этого должно быть достаточно, однако для того, чтобы изменения вступили в силу, еще необходима перезагрузка программы. К слову, выключение Bitcoin Core всегда следует производить через Файл > Закрытие программы.
Перезагрузив клиент, выжидаем около 15-20 минут, после чего заходим на https://bitnodes.io/, где находим поле проверки доступности ноды.
Если это сделать непосредственно после запуска программы, вас, скорее всего, встретит сообщение, что нода не отвечает:
Наша конечная цель в том, чтобы получить следующий результат:
Иногда просто разрешить входящие соединения через порт 8333 оказывается недостаточно: не все маршрутизаторы поддерживают такую автоматическую конфигурацию, и в этом случае настройку необходимо осуществлять вручную.
Дополнительную информацию по возможным проблемам с конфигурацией можно найти в специальном разделе на Bitcoin.org, либо обратиться за помощью к специалистам.
Тем не менее при достаточных усилиях вопрос вполне разрешим, а это значит, что запуск полной ноды — процесс далеко не такой сложный, как это может показаться на первый взгляд. И по его завершении уже можно смело похвастать, что вы не просто владеете биткоинами, а что вы — и есть биткоин! Ну или как минимум его часть.
Добавим, что полную ноду также можно развернуть на виртуальном сервере, что является темой отдельного разговора, либо же попробовать установить ее на отдельное физическое устройство, выбор которых в последнее время становится все шире.
Подписывайтесь на новости ForkLog в Telegram: ForkLog FEED — вся лента новостей, ForkLog — самые важные новости и опросы.
Источник
loga’s блог
bitcoind и с чем его едят
Запись опубликована loga · 7 авг 2012, 07:39
46 874 просмотра
У биткоина есть как графический интерфейс именумеый bitcoin-qt так и консольный, bitcoind. Если первый удобен для использования человеком, то без текствого довольно сложно сделать интернет магазин или какой-либо иной сервис, принимающий биткоины в качестве оплаты. О нем и пойдет речь.
Для работы нужно запустить один экземпляр bitcoind в качестве демона, чтобы он работал в качестве полноценного узла сети и отдавать ему команды с помощью еще одной копии bitcoind. Взаимодействие между ними происходит по JSON-RPC через 8332й tcp порт. Для того чтобы они узнавали и доверяли друг другу нужно задать rpcpassword, который прописывается в файле
/.bitcoin/bitcoin.conf как rpcpassword=blah-blah-blah. Если у вас нет такого файла то его нужно создать. Туда же можно прописать и другие параметры из тех, что указываются при запуске демона.
Полный список параметров можно получить запустив bitcoind с ключем —help или -?, вот пример того, что мы увидим в ответ:
Вот описание некоторых из них:
-conf — позволяет задать файл конфигурации отличный от
-pid — указать файл, в который будет писаться pid процесса демона
-gen — после старта начать майнить биткоины (он это будет пытаться делать на cpu, что крайне неэффективно)
-gen=0 — не майнить биткоины (если в файле конфигурации указано иное)
-datadir= — использовать вместо
/.bitcoin/ указанный путь
-timeout= — таймаут tcp соединения
-proxy= — соединятся через указанный SOCKS4 прокси-сервер, например через tor
-port= — использовать указанный порт вместо 8333
-maxconnections= — ограничить число одновременных соединений, по умолчанию 125
-addnode= — так же подключится и к указанному узлу, тут полезно указать адреса пулов для ускорения транзакций, можно использовать несколько раз
-connect= — подключится только к указанному узлу, полезно, если вы хотите загрузить блоки с другого компьютера в локальной сети не загружая интернет-канал
-noirc — не использовать irc для поиска узлов и анонса собственного адреса (например irc запрещен хостингом, что встречается довольно часто)
-nolisten — не принимать входящие соединения
-nodnsseed — не использовать DNS для поиска узлов
-upnp — Пытаться использовать UPnP для того чтобы пробросить порт. Полезно, если вы заначены роутером, использующим внешний ip и поддерживающим UPnP. Не нужно, если вы имеете внешний ip напрямую и не имеет смысла, если ваш роутер не имеет внешнего ip.
-paytxfee= — установить размер комиссию (в биткоинах), собственная логика клиента имеет приоритет над этим значением
-daemon — запускаться в фоне
-testnet — использовать тестовую сеть
-debug — писать отладочную информацию
-logtimestamps — снабжать лог временными метками
-printtoconsole — использовать stdout вместо debug.log
-rpcuser= и -rpcpassword — имя пользователя и пароль для JSON-RPC, как для лемона так и для клиента
-rpcport= — использовать для JSON-RPC порт, отличный от 8332
-rpcallowip= — разрешить принимать команды с указанного ip, по умолчанию команды принимаются только с 127.0.0.1, можно использовать несколько раз
-rpcconnect= — отправлять команды на указанный узел а не на 127.0.0.1
-keypool= — сгенерировать указанное количество ключей при старте, по умолчанию — 100
-rescan — перечитать цепочку блоков, полезно если у вас поврежден blkindex.dat или есть зависшие транзакции в кошельке
Так же в 0.6 версии появилась довольно полезная опция -blocknotify=, которая запускает указанную команду при получении нового блока, например для обработчика платежей.
Большую часть перечисленных параметров можно указывать и в bitcoin.conf.
При работе в режиме демона клиент использует множество «виртуальных» аккаунтов, для каждого из которых ведет свой учет баланса. Такая логика может существенно упростить создание какого-либо сервиса, поскольку достаточно привязать пользователей сервиса к аккаунтам bitcoind. Баланс на аккаунте может быть как положительным так и отрицательным. Аккаунт, используемый по умолчанию — «» (пустая строка).
После запуска демона должно пройти какое-то время, чтобы он проинициализировался и начал ожидать команд. Список команд, которые можно отдать демону, можно получить, запустив bitcoind с аргументом help (без —). Вот пример вывода:
Описание некоторых комманд:
backupwallet — сделать резервную копию wallet.dat
encryptwallet — зашифровать кошелек (необратимо!)
getaccount — Узнать, какому аккаунту принадлежит указанный адрес. Пареметр — bitcoin адрес, результат — строка с именем аккаунта.
getaddressesbyaccount — Вывести список адресов, принадлежащих указанному аккаунту. Параметр — имя аккаунта, результат — список bitcoin-адресов в формате JSON.
getaccountaddress — Сгенерировать еще один адрес для указанного аккаунта. Параметр — имя аккаунта, результат — строка с bitcoin-адресом.
getbalance — Вывести баланс аккаунта для указанного количества подтверждений. Первый необязательный параметр — имя аккаунта, второй необязательный параметр — количество подтверждений, результат — положительное или отрицательное число c 8ю знаками после точки.
getblockcount — Вывести текущее колиечество блоков. Результат — целое число.
getconnectioncount — Вывести текущее количество соединений. Результат — целое число.
getdifficulty — Вывести текущую сложность. Результат — число с 8ю знаками после точки.
getgenerate — Вывести состояние генерации. Результат — true или false.
getinfo — Вывести ряд текущих параметров в виде JSON-массива.
getnewaddress — Сгенерировать еще один адрес для указанного аккаунта. Параметр — имя аккаунта, результат — строка с bitcoin-адресом.
getreceivedbyaccount — Вывести общее количество принятых средств на аккаунт без учета отправленных. Первый параметр — имя аккаунта, второй необязательный параметр — количество подтверждений, результат — число с 8ю знаками после точки.
getreceivedbyaddress — Вывести список входящих транзакций на указанный адрес. Первый параметр — bitcoin-адрес, второй необязательный параметр — количество подтверждений, результат — JSON массив с входящими транзакциями на указанный адрес.
gettransaction — Вывести информацию по транзакции.
help — Вывести список доступных комманд или описание команды, если она указана аргументом.
listaccounts — Вывести список аккаунтов с балансом на них. Результат — JSON-массив.
listreceivedbyaccount — Вывести JSON-массив с аккантами, общим количеством принятых на них средств без учета отправленных и количеством подтверждений.
listreceivedbyaddress — Тожесамое, но с детализацией по bitcoin-адресам.
listtransactions — Вывести список транзакций в JSON формате.
move — Перевести средства с одного аккаунта на другой без осуществления транзакции в сети.
sendfrom — Отправить сресдва с указанного аккаунта.
sendmany — Отправить сресдва с указанного аккаунта на множество адресов.
sendtoaddress — Отправить средства с аккаунта по умолчанию.
setaccount — Сделать адрес принадлежащим аккаунту.
setgenerate — Включить/выключить генерацию блоков. Параметр — true или false, не возвращает ничего.
settxfee — Установить комиссию.
signmessage — Подписать сообщение, полезно для подтверждения принадлежности адреса.
stop — Остановить демон. До полной остановки должно пройти какое-то время.
validateaddress — Проверить правильность адреса. Так же возвращает аккаунт, которому он принадлежит, если таковой имеется.
verifymessage — Проверить подпись сообщения.
Источник