Ez az útmutató segít abban, hogy összehasonlítsd a Bitcoin Core két különböző verziójának teljesítményét az első blokklánc-letöltési (IBD) folyamat során. Két buildet fogsz futtatni, és az eredményeket megoszthatod.
Kell hozzá:
- GitHub fiók (az eredmények publikálásához).
- Linux alapú rendszer (például Ubuntu/Debian).
- Legalább 1 TB szabad hely a blokklánc adataihoz (ideiglenes, utána törölhető).
Először telepítsd a szükséges csomagokat (Debian/Ubuntu rendszeren). Csak megbízható forrásból telepíts!
apt update && apt upgrade -y
apt install -y bsdmainutils build-essential ccache clang cmake curl git htop libboost-chrono-dev libboost-dev libboost-filesystem-dev libboost-system-dev libboost-test-dev libboost-thread-dev libdb++-dev libdb-dev libevent-dev libgmp-dev libminiupnpc-dev libsqlite3-dev libssl-dev libtool libzmq3-dev llvm pkg-config python3 python3-zmq python3-pip hyperfine
Töltsd le a Bitcoin Core forráskódját, és fetch-eld le a két commitot, amit össze szeretnél hasonlítani (szándékosan nem mondom meg, melyik-melyik).
git clone https://github.com/bitcoin/bitcoin.git && cd bitcoin
git fetch origin 898a07e2ab3e5b653ddadc76f2d04d625f35607c bb57017b2945d5e0bbd95c7f1a9369a8ab7c6fcd
Hozz létre egy könyvtárat a blokklánc adataihoz. Ez a könyvtár kb. 1 TB szabad helyet igényel, de a kísérlet után törölhető.
mkdir -p ~/BitcoinData ~/BitcoinData-logs
Fordítsd le a Bitcoin Core binárisokat a következőkkel:
cmake -B build && cmake --build build -j4
Jöhet a tesztelés \:D/. Használhatod a hyperfine-t automatizálásra:
hyperfine \
--runs 2 \
--export-json ~/BitcoinData-logs/XOR-{COMMIT}-$(date +%s).json \
--parameter-list COMMIT 898a07e2ab3e5b653ddadc76f2d04d625f35607c,bb57017b2945d5e0bbd95c7f1a9369a8ab7c6fcd \
--prepare 'rm -rf ~/BitcoinData/* && git checkout {COMMIT} && git clean -fxd && git reset --hard && cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_UTIL=OFF -DBUILD_TX=OFF -DBUILD_TESTS=OFF -DENABLE_WALLET=OFF -DINSTALL_MAN=OFF && cmake --build build -j$(nproc)' \
--cleanup 'mv ~/BitcoinData/debug.log ~/BitcoinData-logs/debug-{COMMIT}-$(date +%s).log' \
'COMMIT={COMMIT} ./build/src/bitcoind -datadir=~/BitcoinData -stopatheight=879000 -dbcache=30000 -printtoconsole=0'
A logok a ~/BitcoinData-logs
könyvtárba kerülnek, ezeket kell majd becsomagolnod (és mindent, amit a program eredményül kiírt).
Futtathatod hyperfine helyett kézzel is, de ebben az esetben minden lépést pontosan címkézz, hogy biztosan azt az eredményt kapd, amit szerettél volna.
Lefordítottam angolra is kicsit több kontextussal: https://gist.github.com/l0rinc/83d2bdfce378ad7396610095ceb7bed5