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

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

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”. На момент написания статьи последней версией является v27.0.

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

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

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

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

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

torsocks wget https://bitcoincore.org/bin/bitcoin-core-27.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. Если приоритетом является максимально быстрая синхронизация, оставьте “#” в верхних 4 строках на месте. Обратите внимание, что при синхронизации через Tor нужно набраться терпения.

При синхронизации через клирнет настоятельно рекомендуется использовать VPN на уровне маршрутизатора.

Если вашим приоритетом является анонимная синхронизация, удалите “#” из верхних 4 строк, чтобы bitcoind никогда не подключался к клирнету и использовал только Tor-соединение. Это займет гораздо больше времени, чем синхронизация через клирнет, однако преимущества конфиденциальности будут значительными.

У вас также есть возможность включить или отключить опцию “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/27.x/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/27.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.

Синхронизация через клирнет #

(Пропустите этот шаг, если синхронизация осуществляется через Tor)

При синхронизации через клирнет дождитесь завершения начальной загрузки блоков (Initial Block Download - IBD), прежде чем переходить к шагу “Пиры в сети Tor”.

Запустите bitcoind.

sudo systemctl start bitcoind

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

tail -f .bitcoin/debug.log

Теперь удалите “#” в строках proxy, listen, bind и onlynet в файле конфигурации и перезапустите bitcoind. Это гарантирует, что все будущие данные блоков будут загружаться только через Tor.

sudo systemctl stop bitcoind
nano ~/.bitcoin/bitcoin.conf
sudo systemctl restart 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, следите за прогрессом с помощью следующей команды из домашней директории.

tail -f .bitcoin/debug.log

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

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

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

lnurl1dp68gurn8ghj7ampd3kx2ar0veekzar0wd5xjtnrdakj7tnhv4kxctttdehhwm30d3h82unvwqhk7mnv093kcmm4v3unxwg6jxyqf


Connect to our relay to leave a comment. Details.
Подключитесь к нашему релею, чтобы оставить комментарий. Подробнее.