Введение #
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 будет завершен.
Поддержите переводчика #
Поддержать переводчика можно, отправив немного сат в сети Лайтнинг:
lnurl1dp68gurn8ghj7ampd3kx2ar0veekzar0wd5xjtnrdakj7tnhv4kxctttdehhwm30d3h82unvwqhk7mnv093kcmm4v3unxwg6jxyqf