Установка Bitcoin Core
Cover

Часть 1. Установка Bitcoin Core

20 декабря 2023 г.

Введение #

Bitcoin Core возник из первого программного Биткоин-клиента, выпущенного Сатоши Накамото, псевдонимным создателем (создателями) Биткоин, в 2009 году. Изначально он назывался “Bitcoin”, но позже был переименован в “Bitcoin Core”, чтобы отличить его от более широко известной сети и валюты Биткоин.

Запуская Bitcoin Core, участники вносят свой вклад в децентрализованную и управляемую консенсусом природу сети Биткоин. Каждый узел самостоятельно проверяет транзакции и блоки, обеспечивая соблюдение правил сети без опоры на центральный орган.

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

Создайте пользователя “satoshi” во время начальной установки Ubuntu. Вы можете создать “satoshi” с помощью следующей команды, если был создан другой пользователь.

sudo adduser --gecos "" satoshi

Создайте сложный пароль для пользователя, избегая специальных символов.

Предоставьте “satoshi” права sudo.

sudo usermod -aG sudo satoshi

Войдите в систему под именем нового пользователя.

su - satoshi

Запустите обновление системы. Используйте созданный ранее пароль sudo.

sudo apt update && sudo apt upgrade -y

Установите необходимые зависимости.

sudo apt install curl gpg unzip apt-transport-https -y

Локальный IP #

На протяжении всего руководства вам нужно будет знать локальный IP-адрес вашего узла, чтобы внести необходимые изменения в различные конфигурационные файлы.

Если вы не знаете локальный IP-адрес своего узла, выполните следующую команду. Запишите его для дальнейшего использования.

hostname -I

Настройка Tor #

Создайте новый файл источников приложений для Tor.

sudo nano /etc/apt/sources.list.d/tor.list

Вставьте следующие строки, затем сохраните файл и выйдите из редактора с помощью “control+x”, подтвердите “y”, затем “enter”.

deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org jammy main

Импортируйте gpg-ключ Tor Project.

sudo wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

Установите Tor и Tor Debian keyring.

sudo apt update && sudo apt install tor deb.torproject.org-keyring -y

Откройте файл “torrc”.

sudo nano /etc/tor/torrc

Вставьте следующие строки в начало файла, затем сохраните и выйдите.

# Hidden Service Bitcoind
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1

Добавьте пользователя “satoshi” в группу Tor.

sudo usermod -aG debian-tor satoshi

Настройка демона Bitcoin #

Загрузка и проверка Bitcoin Core #

Создайте директорию для загрузок.

mkdir ~/downloads

Перейдите в созданную директорию.

cd ~/downloads

Посетите сайт bitcoincore.org и найдите страницу самой последней версии Bitcoin Core, избегая релизов с пометкой “test”. На момент написания статьи последней версией является v26.0.

Скопируйте URL-адрес пакета “x86_64-linux-gnu.tar.gz” и загрузите его с помощью “wget”.

torsocks wget https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0-x86_64-linux-gnu.tar.gz

На этой же странице загрузите файл “SHA256SUMS”.

torsocks wget https://bitcoincore.org/bin/bitcoin-core-26.0/SHA256SUMS

Затем скачайте “SHA256SUMS.asc”.

torsocks wget https://bitcoincore.org/bin/bitcoin-core-26.0/SHA256SUMS.asc

Проверьте контрольную сумму скачанного файла.

sha256sum --ignore-missing --check SHA256SUMS
В выводе команды должно появиться сообщение “OK” (“ЦЕЛ”), например: “bitcoin-0.0-x86_64-linux-gnu.tar.gz: OK.”

Проверьте валидность файла релиза, сверив подписи с известными ключами разработчиков из официального репозитория Bitcoin Core.

Импортируйте ключи разработчиков в связку ключей GPG.

torsocks curl -s https://api.github.com/repos/bitcoin-core/guix.sigs/contents/builder-keys | \
grep download_url | cut -d '"' -f 4 | \
xargs -n 1 curl -O && \
ls *.gpg | xargs -n 1 gpg --import && \
rm *.gpg

Проверьте подписи.

gpg --verify SHA256SUMS.asc

Это выведет серию проверок подписи для каждого открытого ключа, подписавшего файл с контрольными суммами.

На ключах, ранее импортированных в вашу связку ключей, должно появиться сообщение “gpg: Good signature” (“gpg: Действительная подпись пользователя”).
Не беспокойтесь о предупреждениях “This key is not certified with a trusted signature!” (“Внимание: Данный ключ не заверен доверенной подписью!”). Повышенные уровни доверия не были установлены вручную для импортируемых ключей.

Удалите загруженные проверочные файлы.

rm SHA256SUMS && rm SHA256SUMS.asc

Распакуйте Bitcoin Core.

tar xzf bitcoin-*-x86_64-linux-gnu.tar.gz

Удалите архив.

rm -r bitcoin-*-x86_64-linux-gnu.tar.gz

Установка Bitcoin Core #

Выполните следующую команду для установки Bitcoin Core.

sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-*/bin/*

Удалите оставшуюся папку.

rm -r bitcoin-*/

Перезапустите демон Tor.

sudo systemctl restart tor

Запустите демон Bitcoin, а затем остановите его через несколько секунд.

bitcoind -daemon
bitcoin-cli stop

Конфигурирование #

Создайте конфигурационный файл Bitcoin Core.

nano ~/.bitcoin/bitcoin.conf

Вставьте в файл следующие строки.

proxy=127.0.0.1:9050
listen=1
bind=127.0.0.1
onlynet=onion
server=1
txindex=1
daemon=1
pruned=0
dbcache=1024
peerbloomfilters=1
rpcport=8332
rpcbind=0.0.0.0
rpcallowip=127.0.0.1
rpcallowip=10.0.0.0/8
rpcallowip=172.0.0.0/8
rpcallowip=192.0.0.0/8
zmqpubrawblock=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28333
zmqpubhashblock=tcp://0.0.0.0:28334
whitelist=127.0.0.1
Чтобы синхронизировать блокчейн через клирнет вместо Tor, удалите строки proxy, listen, bind и onlynet, а затем добавьте их снова после завершения IBD (Initial Block Download - Первоначальная загрузка блоков). Bitcoind нужно будет перезапустить, чтобы применить изменения. Хотя это и ускоряет синхронизацию, это негативно сказывается на приватности и не рекомендуется.

У вас также есть возможность включить или отключить опцию “Mempool Full-RBF”. Если вы хотите, чтобы ваш выбор сохранялся при обновлениях Bitcoin Core, независимо от того, какие значения по умолчанию будут выбраны в будущих релизах, рекомендуется отметить это в вашем conf-файле, используя аргумент enable (1) или disable (0).

Вы можете проигнорировать эту строку, если вас устраивает любое значение по умолчанию, выбранное для вас в будущих обновлениях.

mempoolfullrbf=0

Оставьте файл открытым и запустите новую сессию терминала. Войдите по SSH и загрузите файл rpcauth.py" из репозитория Bitcoin Core.

torsocks wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py

Установите правильные разрешения для файла.

chmod +x rpcauth.py

Выполните следующую команду, заменив “PASSWORDHERE” на надежный пароль RPC для Bitcoin Core. Избегайте использования специальных символов.

./rpcauth.py bitcoin PASSWORDHERE

Скопируйте длинную строку RPC, начинающуюся с “rpcauth=bitcoin”, и вставьте ее в конце файла “bitcoin.conf”, открытого в первом окне терминала.

Сохраните файл и выйдите из редактора.

Удалите файл “rpcauth.py”.

rm rpcauth.py

Файл системной службы #

Создайте файл системной службы для автоматического запуска Bitcoin Core при загрузке системы.

cd /etc/systemd/system/

Скопируйте ссылку на файл “bitcoind.service” из репозитория Bitcoin Core и скачайте его.

sudo torsocks wget https://raw.githubusercontent.com/bitcoin/bitcoin/26.x/contrib/init/bitcoind.service

Откройте загруженный файл.

sudo nano bitcoind.service

Внесите следующие изменения.

####замените
ExecStart=/usr/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \
                            -conf=/etc/bitcoin/bitcoin.conf \
                            -datadir=/var/lib/bitcoind \
                            -startupnotify='systemd-notify --ready' \
                            -shutdownnotify='systemd-notify --stopping'

##на
ExecStart=/usr/local/bin/bitcoind -pid=/run/bitcoind/bitcoind.pid \
                            -conf=/home/satoshi/.bitcoin/bitcoin.conf \
                            -datadir=/home/satoshi/.bitcoin \
                            -startupnotify='systemd-notify --ready' \
                            -shutdownnotify='systemd-notify --stopping'
####закомментируйте строку
ExecStartPre=/bin/chgrp bitcoin /etc/bitcoin

##следующим образом
#ExecStartPre=/bin/chgrp bitcoin /etc/bitcoin
####замените
User=bitcoin
Group=bitcoin

##на
User=satoshi
Group=satoshi
####закомментируйте строку
ProtectHome=true

##следующим образом
#ProtectHome=true

Сохраните файл и выйдите.

Включите системную службу.

sudo systemctl enable bitcoind

Пиры в сети Tor #

Первый пир в Tor необходимо добавить вручную. Откройте файл “bitcoin.conf”, затем посетите страницу с узлами в сети Tor по адресу Bitnodes.io.

nano ~/.bitcoin/bitcoin.conf

Выберите активный узел из списка и скопируйте адрес Tor и номер порта.

Вернитесь в терминал и вставьте адрес в конец файла “bitcoin.conf”.

Как показано в примере ниже, добавьте префикс “addnode=”.

addnode=ufi6x4yympldoxmzgszvq5pb3pzixxjicvrhssrmky23f5bgxfxlfqd.onion:8333
Внимание: В этом примере не используется активный узел, не копируйте его.

Сохраните файл и выйдите из редактора, затем перезагрузите компьютер.

sudo reboot

Подождите несколько минут, затем подключитесь к узлу по SSH под именем “satoshi”.

Проверьте, что узел успешно подключается к пирам в Tor. В зависимости от времени ожидания вам может потребоваться выполнить эту команду несколько раз.

bitcoin-cli getconnectioncount

Если вывод показывает несколько пиров, вы можете вернуться в “bitcoin.conf” и удалить всю строку “addnode”, затем сохранить и выйти.

nano .bitcoin/bitcoin.conf

Перезапустите демон Bitcoin.

sudo systemctl restart bitcoind

Подождите несколько минут, а затем проверьте, что вы по-прежнему подключаетесь к узлам Tor.

bitcoin-cli getconnectioncount

Настройка сети #

Убедитесь, что сетевой трафик проходит только через Tor.

В выводе должно быть показано состояние “reachable false” как для “IPV4”, так и для “IPV6”.

Также убедитесь, что “onion” показывает статус “reachable true”.

bitcoin-cli getnetworkinfo

В выводе команды также отображается ваш onion-адрес Bitcoin Core. Это полезно для сервисов, требующих прямого подключения к Bitcoin Core.

Вы также можете делать прямые запросы на ваш onion-адрес.

bitcoin-cli getnetworkinfo | grep address.*onion

Tor ограничивает скорость IBD, но преимущества приватности весьма существенны, в отличие от использования клирнета.

Следите за прогрессом, выполняя следующую команду из домашней директории.

tail -f .bitcoin/debug.log

Прежде чем продолжить, дождитесь окончания синхронизации Bitcoin Core. Как только в журналах появится сообщение “progress=1.000000”, процесс IBD будет завершен.

Поддержите переводчика #

Поддержать переводчика можно, отправив немного сат в сети Лайтнинг:

LNURL1DP68GURN8GHJ7MRW9E6XJURN9UH8WETVDSKKKMN0WAHZ7MRWW4EXCUP0X9UX2VENXDJN2CTRXSUN2VE3XGCRQPNAPC6


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