Bitcoin Core full node ja mining pool

Olen noin 10 vuotta myöhässä, mutta päätin kuitenkin asentaa nopean Bitcoin-noden. No, itse asiassa olin jo silloin alkuaikoina mukana, mutta luovuin nopeasti leikistä heikon suorituskyvyn laitteideni takia (niille oli muutakin käyttöä) ja olen myöskin hukannut silloin louhimani Bitcoinit. Saman tarinan on kertonut moni muukin, joka ei keksinyt aikoinaan pienelle määrälle käyttöä ja nykyisin olisi satojen tuhansien Eurojen arvosta omistusta jos vain olisi löytänyt vielä jostain ne kadonneet wallet-varmuuskopiot.

Aloitin tekemällä Debian 10 Linux-pohjaisen virtuaalikoneen, jolle annoin 450GB tilaa SSD-pohjaisesta levypalvelimesta (lohkoketjun nykyinen datamäärä on noin 320GB luokassa verkkolähteiden mukaan). Levytilan kapasiteetti on vaivatta nostettavissa.

Sen tehtyäni etenin ohjeilla osoitteesta https://bitcoin.org/en/full-node#linux-instructions eli hain tiedostot linkistä https://bitcoin.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz (tämä on Satoshi Bitcoin Coren virallinen esikäännetty versio 64-bittisille Intel/AMD-prosessoreille Linux-palvelimissa ja -työasemissa).

Tiedostojen purkamisen jälkeen tuli vielä tehdä hakemisto /bitcoin ja asennustiedosto bitcoin.conf:

server=1
daemon=1
rpcbind=:8332 (tätä ei tule käyttää jos ei tiedä mitä on tekemässä)
rpcallowip=127.0.0.1 (tai cidr mistä saa tulla edellisen puitteissa)
rpcuser=käyttäjänimihallintayhteyksille
rpcpassword=vahvahkopitkäsalasana
disablewallet=1
datadir=/bitcoin

Tämän jälkeen lisäsin /usr/local/bin/bitcoind -conf=/bitcoin/bitcoin.conf käynnistymään suoraan /etc/rc.local (ellei sellaista ole ennalta tehty, se tarvii myös oikeudet tulla ajetuksi eli chmod +x /etc/rc.local).

Tässä vaiheessa syytä täsmentää: kyseinen palvelu on asennettu ainoastaan tätä käyttöä tehdylle virtuaalipalvelimelle, joten on turvallista ajaa sitä juurikäyttäjän oikeuksin. Eikä ole muutenkaan suurta merkitystä feng shuilla. Tietoturva on kuitenkin hyvä pitää mielessä ja pyrkiä toteuttamaan myös käytännössä, joten ethän lataile mitään itsellesi tuntematonta koodia ajettavaksi pääkäyttäjän/juurikäyttäjän oikeuksin. Näin alkuvaiheessa tämä ympäristö on tiukasti valvottu ja mahdolliset haitat jäisivät todennäköisesti käyttöympäristössäni haaviin.

Löysin myöhemmin, että olisi myös helpompi tapa asentaa; tähän on tehty Linux-palvelimia varten oma skriptinsä (lue koodi läpi ja varmistu turvallisuudesta ennen käyttöä!); # curl https://bitnodes.io/install-full-node.sh | sh

Noin 2 vuorokautta myöhemmin Bitcoin core-palvelin oli päässyt vasta noin puoliväliin täyden lohkoketjun latauksessa. Ainakin täällä Suomessa on usein heikohko tilanne näiden verkkosolmujen nopeuden ja tavoitettavuuden suhteen, vaikka maailmalla on yhteensä lähes 10k Full Node palvelinta (näistä suurin osa Jenkeissä ja Saksassa). Siinä mielessä oma palvelimeni lienee tervetullut paikallinen parannus Bitcoin-verkkoon. Levyjärjestelmä on nopea ja verkkoyhteydet samoin. Yhteydet ovat kotimaisen operaattorin verkossa. Suomen Bitcoin-verkon (avoin) osuus koostuu noin 150 nodesta, eikä näistä läheskään kaikki ole täydessä kisakunnossa. Tarkempia tilastoja löytyy osoitteesta https://bitnodes.io/nodes/?q=Finland. Silmiin pistävää on myös Googlen pilvipalvelujen suuri nodemäärä (näistä kaikki eivät välttämättä ole fyysisesti Suomessa) ja Hetznerin palveluilla on globaali yliedustus. Mitä paremmin palvelut hajautuvat useiden eri operaattorien kesken, sitä parempi toimivuus. Lisää statistiikkaa löytyy sivulta https://coin.dance/nodes.

Koska nykyaikana CPU-tehoilla (tai edes yleisimmillä GPU) louhinta ei ole järkevää, ajattelin tehdä louhintaa varten oman poolin mihin saisi yhdistettyä kaikki mahdolliset louhintatehoa tarjoavat laitteet, omat ja vieraat. Kunnollista pool-ohjelmaa ei vaan vaikuttanut löytyvän. Ei ainakaan Debian 10-pohjaiseen palvelimeen.

Etsittyäni pari päivää (blockchain latausta odotellessa), löysin lopulta ainoan sellaisen ohjelman, joka suostui toimimaan tai edes kääntymään lähdekoodeista loppuun asti virheittä. Muutamista varoituksista kääntövaiheessa ei kannata turhaan hermostua, ne johtuu vain siitä ettei koodarit osaa tehdä hyvää koodia, mutta fair enough. Omaan käyttööni se kelpaa varsin hyvin. Tämä ohjelma on ckpool. Kyseinen ohjelma sallii louhia solo mining eli itsenäisenä ilman, että louhinnan tulokset jaetaan kaikkien kesken. Pieni provisio jätetään poolin pitäjälle, eli minulle tässä tapauksessa.

Alkuperäisen ckpool-sovelluskehittäjän omien poolien mainoslauseet kuuluvat seuraavasti: ”No frills, no fuss”, ”2% fee anonymous solo bitcoin mining for everyone” ja ”No registration required, no payment schemes no pool op wallets”.

Ckpoolin git-repon voi hakea git clone https://bitbucket.org/ckolivas/ckpool/ ja tämän jälkeen normaalit käännösloitsut, niin ollaan jo lähes maalissa. Asennus, asetustiedostot malleista hieman muokattuna ja pooli käyntiin omavalintaisella tavalla.

Tämä yhdistää (kunhan Bitcoin Full Node on ladannut koko blockchain-sisällön) paikalliseen bitcoin-palvelimeen ja sallii louhia sen kautta ”solo mining” itsenäisenä louhijana osoitteella stratum+tcp://pool.bitcoin.operative.link:3333 ja tunnus+salasana yhdistelmäksi käy mitä tahansa (ei vaadita kirjautumista). Koska tein tämän puolestasi, ei sinun tarvitse hankkia itsellesi Bitcion Full Nodea, vaan voit hyödyntää omaani pienellä provisiolla resurssieni käytöstä (jos sattuu tulemaan tuloksia).

Osoitteeseen voi ottaa yhteyttä esimerkiksi cgminerillä (se tukee montaa erilaista ASIC-rautaa, ainakin Linux-puolella tuki täytyy valita kääntäessä ohjelmaa ja tästä löytyy useita eri forkeja mm. yleisimpiä USB-tikkumallisia louhintalaitteita varten) tai cpuminer eli minerd:llä. Näistä ASIC-jutuista ym. mahdollisesti myöhemmin lisää eri julkaisussa.

cgminer -o stratum+tcp://pool.bitcoin.operative.link:3333 -u jokutunnari --btc-address 1Hi7tPXcr3Xi1vXmf4TofNHCxohv1Ss6UN

tai

minerd -a sha256d -o stratum+tcp://pool.bitcoin.operative.link:3333 -u jokutunnari --coinbase-addr=1Hi7tPXcr3Xi1vXmf4TofNHCxohv1Ss6UN

Huom! Solo-moodissa maksuille on määriteltävä oma bitcoin-osoite. Saat toki mielellään käyttää minunkin, mutta tällöin et hyödy itse mitään jos blokki tulee louhituksi.

Vaikka esimerkissä käytänkin myös minerd (cpuminer) niin sitä ei voi enää näin 10 vuotta myöhässä suositella. Niin monen ytimen tehokkaita koneita ei juurikaan löydy, että niillä saisi mitään aikaan seuraavien vuosituhansien aikana. Mutta toimii se kuitenkin esimerkiksi testeissä keinokuormaksi. 🙂 Se on helppo saada lisää kuormaa koneelle, jos haluaa vaikkapa testailla lämpökäyttäytymistä ja yleistä suoriutumista. Sen lähdekoodi löytyy https://github.com/pooler/cpuminer osoitteesta.

Arvostan jos tällaiset testit tehdään poolini kautta tai käyttäen lahjoitusosoitetta 1BKPFPoPvMrMnNthAmW5MoqJ87SyCGdijM — jos käy tuuri niin saattaa tulla tulosta. 🙂

Odottaisin ja olettaisin, että järjestelmäni on täydessä toimintakyvyssään 8.1.2021 eli eiköhän näitä pääse viikonloppuna jo testailemaan käytännössä…

Muokkaus 7.1.: otin projektille käyttöön DNS-alidomainnimen bitcoin.operative.link ja lisäsin tuon osoitteen alle myös infosivun, jolla yritän pitää ajankohtaiset tiedot Bitcoineihin liittyvän verkkoni tilasta ja käyttömahdollisuuksista saatavilla.

Jos koit tästä olevan erityistä hyötyä tai haluat muuten lahjoittaa, niin BTC 1BKPFPoPvMrMnNthAmW5MoqJ87SyCGdijM ei lopu tila lahjoituksilta. Kiitos. 🙂

Lisää kommentti