Suppea kuvaus Bitcoin-verkon toiminnasta

Kun haluaa ymmärtää Bitcoin-verkon toimintaa, niin kannattaa aloittaa siitä mitä se tekee. Bitcoin-verkko on käytännössä hajautettu kirjanpitotietokanta. Tässä tietokannassa on tallennettuna bitcoin-osoitteet ja niiden sisältämät Bitcoin-määrät. Tämän lisäksi verkon tehtävänä on myös luoda Bitcoineja tarkkaan rajattujen sääntöjen mukaan.

Keskeisin käsite tässä yhteydessä lienee lohkoketju (blockchain). Tämä viittaa tietorakenteeseen joka sisältää kaikki Bitcoin-verkossa koskaan tapahtuneet siirrot (transaction). Lohkoketju muodostuu lohkoista jotka on ketjutettu yhteen sillä että uuden lohkon (block) otsikot (headers) sisältävät aina sitä edeltäneen lohkon otsikoiden tiivisteen (hash). Tämän lisäksi otsikoissa on aika, lohkon vaikeustaso, bitcoin siirrot sisältävän merkle-puun juuren, sekä pari muuta arvoa jotka ovat lähinnä täytettä.

Lähes yhtä tärkeä käsite on louhiminen (mining). Louhimisen tarkoitus on tehdä lohkojen luomisesta niin kallis prosessi, että siirtohistorian muokkaamisesta tulee kannattamatonta. Kun louhitaan, niin tehdään uusi lohko ja lasketaan sille pienin muutoksin uusia tiivisteitä kunnes löytyy vaikeustason (difficulty) mukainen tiiviste. Kun tällainen löytyy, se levitetään koko verkkoon ja aletaan laskemaan seuraavaa. Louhijoiden tehtävänä on myös päättää mitkä siirrot sisällyttää mihinkin lohkoon.

Luonnollisesti pelkästään se, että lohkon tiiviste täyttää vaikeustason vaatimukset ei riitä siihen että se on hyväksyttävä vaan kaikkien siinä olevien siirtojen on myöskin oltava verkon sääntöjen mukaiset tätä varten. Louhijoiden rooliin kuuluu myös näiden sääntöjen vahtiminen.

Bitcoin-verkon louhimisen vaikeustaso asetetaan tavoitteena saada keskimääräiseksi ajaksi löytyneiden lohkojen välille 10 minuuttia. Tämä tapahtuu 2016 lohkon välein. Eli noin kahden viikon välein. Käytännössä vaikeustaso on toteutettu vaatimalla lohkon tiivisteen olevan tiettyä raja-arvoa pienempi.

Bitcoin siirrot muodostuvat sisääntuloista (input) ja ulostuloista (output). Sisääntulot sisältävät viittauksen aikaisemman siirron ulostuloon sekä komentojonopalasen joka täydentää aikaisemman ulostulon komentojonon (script) kokonaiseksi. Mikäli näin syntynyt kokonainen komentojono suorituksen jälkeen antaa tulokseksi ykkösen, on yhdistelmä hyväksyttävä (valid). Ulostulot koostuvat komentojonosta sekä Bitcoin-määrästä.

Kokonainen siirto on hyväksyttävä mikäli kaikkien sisääntulojen tuloksena syntyvät kokonaiset komentojonot antavat tulokseksi ykkösen sekä siirron sisääntulojen summa on suurempi tai yhtäsuuri kuin ulostulojen summa. Yksi poikkeus tälle on niinsanottu Coinbase-siirto, jollainen on jokaisessa lohkossa ensimmäinen siirto. Tälle siirrolle ei vaadita sisääntuloja vaan sillä on ainoastaan ulostuloja.

Coinbase-siirrolla on kaksi roolia. Ensimmäinen on luoda uusia Bitcoineja tiettyjen sääntöjen mukaan. Toinen on luoda taloudellinen porkkana jolla saada ihmiset louhimaan. Molemmat onnistuvat kätevästi antamalla louhijoiden päättää Coinbase-siirtojen komentojonot. Coinbase-siirron ulostulojen summa saa olla enintään uusien bitcoinien sallittu määrä plus lohkossa olevien siirtojen ylijäämät (transaction fees).

Bitcoinien enimmäismäärä seuraa geometrisen summan kaavasta ja se on vähän alle 21 miljoonaa kappaletta. Uusien Bitcoinien luonti menee niin, että ensimmäiset 210 000 lohkoa luovat 50 BTC per lohko. Seuraavat 210 000 luovat 25. Tämän jälkeen 12.5, 6.25, 3.125, jne. Bitcoinien luonti tulee päättymään täysin vuoden 2140 tienoilla kun luotavien Bitcoinien määrä tippuu alle järjestelmän tukeman tarkkuuden. 99.9% Bitcoineista on luotuna vuoden 2040 tienoilla.

Muokkaukset:

  • 04.05.2012 Muutin tekstiä käyttämään sanaa “lohko” sanan “palikka” sijasta.
  • 04.05.2012 Korjasin asiavirheen. Bitcoinien luominen ei pääty vielä vuonna 2040 vaan vasta 2140.

Mikäli tekstissäni on asiavirheitä tai epäselviä kohtia, kertokaa ihmeessä. Korjaan ne heti kun ehdin.

Tässä myös hyvää kuvausta: http://kfalck.net/2011/05/24/nain-bitcoin-verkkoraha-toimii

Tässä on ihan tuore uutisartikkeli, jossa on mun mielestä aika selkeästi selitetty miten Bitcoin toimii.

http://www.mydigitalfc.com/opinion/uniting-society-through-unregulated-e-money-539

Bitcoin-qt käyttää suomennosta ‘lohko’ ja suomenkielinen wikipedia puhuu blokeista.

Pitäisi olla 2140. Toki vuoteen 2040 mennessä on luotu jo yli 99%.

Kiitos huomautuksesta. Korjasin tekstini. Lohko tosiaan kuulostaa paremmalta kuin palikka :slight_smile:
Hyvä huomio myös tämä 2040 juttu. Joskin nyt kun tein itse laskut niin tarkempi olisi 99.9%. Laitan senkin tekstiini.

Kokeilen huvikseni Bitcoin-Qt:tä. Tiesin, että asennuksen jälkeen kestää tuskaisen kauan (mun mopoläppärilläni 12+ tuntia), mutta miksi muutaman edellisen viikon historian lataamisessa tuntuu kestävän ikuisuus?

Tunnustus: en ole lukenut teknistä kuvausta tarkasti enkä ajatuksella. Kysyn vain, koska joku asiaan perehtynyt varmaan heittää tähän lonkalta parin lauseen mittaisen vastauksen tuosta vain.

[quote=“Vesa Linja-aho, post:7, topic:56”]Kokeilen huvikseni Bitcoin-Qt:tä. Tiesin, että asennuksen jälkeen kestää tuskaisen kauan (mun mopoläppärilläni 12+ tuntia), mutta miksi muutaman edellisen viikon historian lataamisessa tuntuu kestävän ikuisuus?

Tunnustus: en ole lukenut teknistä kuvausta tarkasti enkä ajatuksella. Kysyn vain, koska joku asiaan perehtynyt varmaan heittää tähän lonkalta parin lauseen mittaisen vastauksen tuosta vain.[/quote]

Lohkojen koko ei ole vakio. Tehtyjen Bitcoin-siirtojen määrä on kasvamassa ja lohkojen tarkistamiseen menevä työmäärä kasvaa mukana.