Lezioni online Bitcoin-only
This project is maintained by valerio-vaccaro
Officine Bitcoin Bitcoin-only lecke Ezt a projektet valerio-vaccaro tartja karban
🇨🇳 中文 🇬🇧 English 🇪🇸 Español 🇵🇹 Português 🇷🇺 Русский 🇫🇷 Français 🇩🇪 Deutsch 🇮🇹 Italiano 🇭🇺 Magyar 🏳️ Milanés 🏳️ Veneto
Egy Bitcoin-csomópont üzemeltetése alapvető, mert maximális adatvédelem mellett lehetővé teszi:
Egy régi számítógép újrahasznosítható csomópontként. Laptop esetén ajánlott eltávolítani az akkumulátort, mert a folyamatos töltés alatt tartott akkumulátor kockázatot jelenthet. A nagy előny a nulla költség, vagy legfeljebb a nagyobb lemez ára.
A Raspberry pi egy ARM-kártya, amelyet gyakran használnak IoT-rendszerek és csomópontok építésére. A magas ár és az USB-n csatlakozó lemez szükségessége miatt azonban teljesítmény és stabilitás szempontjából nem a legjobb választás.
Az Odroid-M1 egy erős ARM-kártya, belső slottal további tömegtár hozzáadásához.
Nagyon alacsony, 30-100 eurós költségvetéssel lehet használt Thin Clientet vásárolni, például ebayen, amely alacsony fogyasztást társít a csomópont futtatásához elégséges teljesítménnyel.
Thin Client példaként a következő modelleket tesztelték:
Minél kevesebb szoftver telepítése egy csomópontra csökkenti a lehetséges támadásokat, és egyszerűbbé teszi a rendszer karbantartását.
Online találhatók előre csomagolt megoldások, például Umbrel, Mynode és mások, amelyek elfedik a biztonsági ellenőrzéseket, és nehezen ellenőrizhető szoftvereket és szkripteket adnak hozzá, például dockert. Ezekben a leckékben a kézzel létrehozott csomópontra figyelünk, vagyis minden szükséges szoftvert manuálisan telepítünk.
Az első döntés az operációs rendszer kiválasztása. Az ajánlás egy LTS-verziójú Linux használata, vagyis olyan kiadásé, amelyhez kellően sok évig garantált a támogatás. Az én személyes választásom a Debian 12.
A kiválasztott operációs rendszert telepíteni kell a számítógépre, majd minden csomagot frissíteni kell. A frissítés a csomópont teljes élettartama alatt velünk marad.
Ajánlott telepíteni a tort, és/vagy szükség esetén más VPN-t, valamint az ssh-t, hogy lehetővé váljon a csomópont távoli karbantartása.
Végül egy szünetmentes tápegység megvédheti a csomópontot a hirtelen áramszünetektől, és elkerülheti, hogy a bitcoin és a többi szoftver inkonzisztens állapotban maradjon.
Letöltjük a core-t, a hasheket és az aláírásokat.
wget https://bitcoincore.org/bin/bitcoin-core-28.1/bitcoin-28.1-x86_64-linux-gnu.tar.gz
wget https://bitcoincore.org/bin/bitcoin-core-28.1/SHA256SUMS
wget https://bitcoincore.org/bin/bitcoin-core-28.1/SHA256SUMS.asc
Ha arm architektúrájú boardot használunk, a csomagot bitcoin-28.1-aarch64-linux-gnu.tar.gz névre kell cserélni, vagyis ugyanarra a csomagra, de a 64 bites arm architektúrára, aarch64-re fordítva, amelyet az odroid is használ.
Ezen a ponton ellenőrizhetjük, hogy a SHA256SUMS egyik hash-e megfelel-e a letöltött archívumnak.
sha256sum --ignore-missing --check SHA256SUMS
Az eredmény jelzi, hogy egyezést talált a letöltött archívumhoz.
bitcoin-28.1-x86_64-linux-gnu.tar.gz: OK
Most ellenőrizzük a SHA256SUMS fájl aláírásait. Előtte, ha szükséges, szerezzük be és importáljuk a kulcsokat.
git clone https://github.com/bitcoin-core/guix.sigs
gpg --import guix.sigs/builder-keys/*
Végül ellenőrizzük az aláírásokat.
gpg --verify SHA256SUMS.asc
Ha többször látjuk a gpg: Good signature from ... szöveget, az azt jelenti, hogy érvényes aláírásokat találtunk.
Folytassuk a kicsomagolással és a telepítéssel.
tar xzvf bitcoin-28.1-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-28.1/bin/*
Meg is vagyunk: most már a bitcoind, a bitcoin-cli és a többi segédprogram készen áll az indításra.
Egyelőre indítsuk el a bitcoind-t, és látni fogunk némi logot. A Bitcoin elkezd szinkronizálni, és megjelenik egy könyvtár a blockchainnel és az összes konfigurációval: ~/.bitcoin/.
Egy másik terminálból a tail -f ~/.bitcoin/debug.log paranccsal ellenőrizhetjük a bitcoind működését.
Ahogy korábban láttuk, Linux alatt a Bitcoin Core a konfigurációkat és a blockchaint a ~/.bitcoin/ könyvtárba menti. Ha meg akarjuk változtatni a mentési helyet, több megközelítés használható:
ln -s paranccsal,datadir parancs használata, megadva a célkönyvtárat.A Bitcoin Core három különböző hálózattípust támogat:
mainnet, ez a klasszikus hálózat, amelyet mindannyian megszoktunk, és ez a core alapértelmezése,testnet, ez a mainnethez hasonló hálózat, de a tokeneknek nincs értékük; a mining ugyanúgy történik, de ha 20 percig nincs blokk, a nehézség lezuhan; gyakran jelentős reorgokat szenved el,regtest, ebben a módban egy kis privát blockchain van, amely mindig nulláról indul, és minimális nehézséggel lehet bányászni; helyi tesztekhez szolgál.Egy másik hasznos parancs a daemon, amely beállítva nem tartja a Bitcoin Core logját az aktuális konzolhoz kötve. A működés megtekintéséhez továbbra is használható a tail -f ~/.bitcoin/debug.log.
Minden konfiguráció indítható parancssorból vagy a ~/.bitcoin/bitcoin.conf fájlon keresztül. Egy otthoni setuphoz illő fájl, ahol a lehető legkisebb erőforrás-fogyasztást szeretném, a következő lehet.
konfigurációs fájl
daemon=1
blocksonly=1
maxconnections=20
maxuploadtarget=500
txindex=1
blockfilterindex=1
rpcallowip=0.0.0.0/0
rpcallowip=0.0.0.0/0
rpcuser=username
rpcpassword=password
Ahol:
daemon=1 beállítással leválik a konzolrólblocksonly=1txindex=1maxuploadtarget=500txindex=1blockfilterindex=1rpcallowip=0.0.0.0/0rpcallowip=0.0.0.0/0rpcuser=username, természetesen cserélendőrpcpassword=password, természetesen cserélendőA funkciók teljes listája itt található: https://jlopp.github.io/bitcoin-core-config-generator
Mindez egyetlen terminálparanccsal is elvégezhető.
cat >bitcoin.conf <<EOL
daemon=1
blocksonly=1
maxconnections=20
maxuploadtarget=500
txindex=1
blockfilterindex=1
rpcallowip=0.0.0.0/0
rpcbind=0.0.0.0
rpcuser=username
rpcpassword=password
EOL
Ha rendelkezésre áll egy másik, már szinkronizált csomópont, a connect opcióval CSAK ÉS KIZÁRÓLAG ehhez a csomóponthoz lehet kapcsolódni. Ha ez a csomópont helyi hálózaton van, ezzel az egyszerű konfigurációval időt és sávszélességet nyerünk.
A 26-os release óta a core támogatja a csomópontok közötti kommunikáció titkosítását a v2transport opcióval.
Az összes bemutatott konfiguráció clearnetre vonatkozik; a tor konfigurációi egy másik lecke tárgyai lesznek.
Indítsuk a Bitcoint egy systemd indítófájl létrehozásával.
sudo sh -c "cat > /etc/systemd/system/bitcoind.service <<EOL
[Unit]
Description=Bitcoin daemon
After=network.target
[Service]
User=bitcoin
Group=bitcoin
Type=forking
PIDFile=/home/bitcoin/.bitcoin/bitcoind.pid
ExecStart=/usr/local/bin/bitcoind -pid=/home/bitcoin/.bitcoin/bitcoind.pid
KillMode=process
Restart=always
TimeoutSec=120
RestartSec=30
[Install]
WantedBy=multi-user.target
EOL"
Figyelem: ebben az esetben a bitcoin felhasználót használjuk a szoftver indításához.
Ezután regisztrálhatjuk a létrehozott scriptet és elindíthatjuk.
sudo systemctl enable bitcoind
sudo systemctl start bitcoind
Amikor ellenőrizni szeretnénk a szoftver állapotát, a következő parancs használható.
systemctl status bitcoind
Telepítjük az Electrs-t, amely egy Rust alapú electrum server; az első lépés tehát ennek a nyelvnek a telepítése.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Telepítjük a clangot és a build-essential csomagot is.
apt update
apt install clang cmake build-essential -y
Letöltjük a legújabb verziót, jelenleg a 0.10.5-öt, Githubról.
VERSION="0.10.5"
git clone --branch v$VERSION https://github.com/romanz/electrs.git
cd electrs
Importáljuk az Electrs fejlesztőjének kulcsát, és ellenőrizzük a Github commitok aláírását.
curl https://romanzey.de/pgp.txt | gpg --import
git verify-tag v$VERSION
Ha az aláírás helyes, továbbléphetünk a fordításra …
cargo build --locked --release
majd a telepítésre.
sudo install -m 0755 -o root -g root -t /usr/local/bin ./target/release/electrs
Az Electrs konfigurálásához hozzuk létre a config.toml fájlt a következő tartalommal.
# bitcoin core configuration
auth = "username:password"
daemon_rpc_addr = "127.0.0.1:8332"
daemon_p2p_addr = "127.0.0.1:8333"
# electrs configuration
db_dir = ".electrum"
network = "bitcoin"
electrum_rpc_addr = "127.0.0.1:50001"
log_filters = "INFO"
Mindez egyetlen terminálparanccsal is elvégezhető.
cat >config.toml <<EOL
# bitcoin core configuration
auth = "username:password"
daemon_rpc_addr = "127.0.0.1:8332"
daemon_p2p_addr = "127.0.0.1:8333"
# electrs configuration
db_dir = ".electrum"
network = "bitcoin"
electrum_rpc_addr = "127.0.0.1:50001"
log_filters = "INFO"
EOL
Az Elects a következő paranccsal indítható
electrs --conf config.toml
és meg kell várni, amíg az electrs befejezi az összes blokk indexelését.
A Bitcoinhoz hasonlóan a szoftvert egy systemd script létrehozásával indíthatjuk.
sudo sh -c "cat > /etc/systemd/system/electrs.service <<EOL
[Unit]
Description=Electrs daemon
After=bitcoind.target
[Service]
User=bitcoin
Group=bitcoin
Type=forking
ExecStart=/usr/local/bin/electrs --conf /home/bitcoin/electrs_config.toml
KillMode=process
Restart=always
TimeoutSec=120
RestartSec=30
[Install]
WantedBy=multi-user.target
EOL"
Figyelem: ebben az esetben a bitcoin felhasználót használjuk a szoftver indításához.
Ezután regisztrálhatjuk a létrehozott scriptet és elindíthatjuk.
sudo systemctl enable electrs
sudo systemctl start electrs
Amikor ellenőrizni szeretnénk a szoftver állapotát, a következő parancs használható.
systemctl status electrs
Kiegészítendő
Kiegészítendő
Telepítjük a mariadb-t.
sudo apt-get install mariadb-server mariadb-client
Majd létrehozzuk az adatbázist és a felhasználót.
sudo mysql -e "drop database mempool;"
sudo mysql -e "create database mempool;"
sudo mysql -e "grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool';"
sudo mysql -e "flush privileges;"
Klónozzuk a kódot
git clone https://github.com/mempool/mempool
cd mempool
latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4)
git checkout $latestrelease
Győződjünk meg róla, hogy node 20.x-et és az npm legfrissebb verzióját használjuk.
sudo npm i -g npm
sudo npm i -g node@20
Gondoskodjunk a backend fordításáról és teszteléséről
cd backend
npm install --no-install-links # npm@9.4.2 and later can omit the --no-install-links
npm run build
cp mempool-config.sample.json mempool-config.json
npm run start
Gondosan ellenőrizni kell a mempool-config.json konfigurációit.
Térjünk át a frontendre.
cd ..
cd frontend
npm install
npm run serve:local-prod
A backend konfigurációja a mempool-config.json fájlban található.
A Mempool pm2-vel indítható, amelyet telepíteni kell.
sudo npm i -g pm2
pm2 startup
Indítsuk a backendet.
cd ..
cd backend
pm2 start "npm run start"
Ezután indítsuk a frontendet.
cd ..
cd frontend
pm2 start "npm run serve:local-prod"
Mentsünk el mindent.
pm2 save
Kezdjük a tor telepítésével.
sudo apt install tor
és állítsuk be a tor konfigurációs fájlját egy új hidden service létrehozásához, amely exportálja a csomópont 8333-as portját.
cat > /etc/tor/torrc <<EOL
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 8333 127.0.0.1:8333
EOL
Újraindíthatjuk a tort a módosítások alkalmazásához. Ez lehetővé teszi a csomópontunk 8333-as portjának exportálását, de még nem korlátozza a hozzáférést kizárólag torra.
sudo systemctl restart tor
és lekérhetjük a csomópont onion címét.
cat /var/lib/tor/hidden_service/hostname
Ezután a bitcoin.conf konfiguráció ilyen módosításával korlátozhatjuk a csomópont elérését csak és kizárólag torra:
proxy=127.0.0.1:9050
listen=1
bind=127.0.0.1:8333=onion
externalip=tor_url.onion
onlynet=onion
Ahol a tor_url.onion a csomópont korábban kapott onion címe.
A csomópont újraindításával ellenőrizhetjük, hogy a csomópont csak és kizárólag toron keresztül érhető el.
sudo systemctl restart bitcoind
bitcoin-cli getnetworkinfo
Itt azt kell látnunk, hogy a csomópont csak és kizárólag toron keresztül érhető el, vagyis csak az onion hálózat reachable.
Ezenkívül minden peerünk onion címekkel lesz azonosítva.
bitcoin-cli getpeerinfo
Figyelem: a tor rendkívül lassú; ezt vegyétek figyelembe, amikor nulláról szeretnétek szinkronizálni a csomópontot.
Gyakorláshoz hasznos hálózat a testnet, amely abban különbözik a mainnet-től, hogy:
Sok wallet, például green, electrum, specter, sparrow és mások, támogatja a testnetet, és használhatók:
Néhány hasznos eszköz, önreklám, testnethez:
Sok más tool és weboldal is támogatja a testnetet, a legfontosabb block explorerek mellett.
A Bitcoin-cli a Bitcoin Core-ral való interakció parancssori segédprogramja.
A parancsok formátuma:
bitcoin-cli [options] <command> [params]
és mindig használható a help a parancsok listájához vagy egy konkrét parancs információihoz.
Teljes kurzus a Bitcoin parancssori használatáról itt található: Learning-Bitcoin-from-the-Command-Line.
A csomópont telepítése több leckére van osztva; itt a már megtartottak listája:
| Dátum | Megjegyzések |
|---|---|
| 240108-2100 | Hardver kiválasztása |
| 240115-2200 | Core telepítése és aláírások ellenőrzése |
| 240122-2200 | Minimális konfiguráció |