Bitcoinin tekniikka

Bitcoinin tekniikka käsittelee bitcoin-kryptovaluutan tekniikkaa.
Satoshi Nakamoton whitepaper vuodelta 2008 kuvaa Bitcoin-järjestelmän periaatteet. Bitcoin perustuu osittain Wei Dain b-money -ehdotukseen ja Nick Szabon Bitgold-ehdotukseen.

Osoitteet

Bitcoin-verkon käyttäjä omistaa virtuaalisen lompakon, johon sisältyy mielivaltainen määrä osoitteita. Osoitteita käytetään Bitcoin-rahan vastaanottamiseen, ja osoitteet muodostetaan julkisesta salausavaimesta. Bitcoin-lähetykset tapahtuvat myös osoitteilla. Käyttäjän ei tarvitse kuitenkaan erikseen valita mistä osoitteista bitcoinit lähetetään, vaan lompakko-ohjelmat määrittävät sen automaattisesti.
Bitcoin-osoitteihin liittyy salausavainpari, eli julkinen ja yksityinen salausavain. Järjestelmän varmuus perustuu siihen, kuinka hyvin käyttäjä pystyy pitämään omat yksityisavaimensa omana tietonaan. Bitcoin-osoitteet eivät kerro mitään omistajistaan ja ovat yleisesti ottaen anonyymejä. Osoitteet ovat satunnaisten merkkien ja numeroiden noin 33-merkkisiä merkkijonoja, esimerkiksi 1M8fxFJfRBptxQ2CdEpm2Se2XwPjz2kwX8. Käyttäjällä voi olla monia eri osoitteita ja niitä voidaan luoda lähes rajaton määrä. Osoitteiden luominen yhtä ainoata käyttötarkoitusta tai käyttökertaa varten edesauttaa käyttäjän anonymiteetin säilymistä. Uuden osoitteen luominen ei vaadi yhteyttä toisiin verkon solmuihin.

QR-koodit ja Bitcoin-URI

Mobiilikäytössä bitcoinien siirtelynä suurena apuna ovat QR-koodit. Bitcoin URI-spesifikaatio mahdollistaa myös määrien ja kuvausten sisällyttämisen QR-koodiin. Lähetettäessä bitcoineja mobiililaitteella skannataan QR-koodi, jolloin tietoja ei tarvitse syöttää käsin. Käytännössä kaikki mobiilikäyttöön tarkoitetut lompakot tukevat QR-koodeja. Vastaavasti lähes kaikki bitcoin-lompakko-ohjelmat osaavat muodostaa automaattisesti QR-koodeja vastaanottamiseen.

Siirrot

Bitcoinit sijaitsevat julkisessa tietokannassa, lohkoketjussa, josta on ajantasainen kopio jokaisella bitcoin-verkon ydinsolmulla. Lohkoketju sisältää muun muassa bitcoin-osoitteet ja bitcoin-määrän, johon kunkin osoitteen omistajalla on käyttöoikeus. Lohkoketju sisältää myös siirtojen aikaleimat sekä kaikki historialliset bitcoin-siirrot.
Kun käyttäjä siirtää bitcoineja toiselle käyttäjälle, hän luo yhden tai useamman sähköisen viestin tyyliin "Siirrän käyttöoikeuden X bitcoiniin osoitteesta A osoitteelle B", allekirjoittaa tämän viestin osoitetta A vastaavalla yksityisellä avaimella ja kuuluttaa viestin Bitcoin-verkkoon. Verkon muut ydinsolmut varmentavat siirron allekirjoitukset ja kokonaissumman ennen viestin eteenpäin lähettämistä ja lisäämistä jonoon seuraavaa lohkoa varten.
Kun siirto sisällytetään uuteen lohkoon, sen katsotaan saaneen yhden vahvistuksen. Tämän jälkeen siirron katsotaan saaneen yhden lisävahvistuksen aina kun bitcoin-verkko löytää uuden lohkon. Vahvistusten määrä kuvastaa tarvittavaa laskentatehoa, joka olisi tarpeen, että siirtoa olisi jälkeenpäin mahdollista muokata tai perua.
Lohkoketjun siirtohistorian avulla verkko osaa hylätä sellaiset siirrot, joissa yritetään käyttää jo kerran käytettyä rahaa. Lisäksi lohkon luomiseen tarvittavan laskentatehon määrä tekee siirtojen väärentämisestä vaikeaa ja kannattamatonta verrattuna louhintaan itseensä.

Bitcoinien synty

Keskitetysti hallituista valuutoista poiketen, ei ole olemassa mitään tahoa, joka kykenisi luomaan bitcoineja yksinoikeudella tai rajattomasti. Uudet bitcoinit syntyvät Bitcoin-verkossa louhintaprosessin sivutuotteena. Tämä luo louhijoille rahallisen kannusteen ylläpitää Bitcoin-verkon turvallisuutta laskentatehoillaan.
Bitcoinien liikkeellelaskemisessa on jäljitelty arvometallien louhintaa. Uusi erä bitcoineja syntyy keskimäärin kuusi kertaa tunnissa, satunnaisesti jollekulle, joka ajaa louhintaohjelmistoa. Yksinkertaistetusti asian voi hahmottaa niin, että joka päivä on jaossa 144 pakettia uusia bitcoineja, jotka arvotaan louhijoiden kesken. Arpalippuna tässä arvonnassa toimii louhijan tekemän laskennan määrä. Yksittäisen erän koko on tämän tekstin kirjoitushetkellä (18.2.2013) 25 bitcoinia ja puolittuu 210,000 lohkon välein. Ensimmäinen puolittuminen tapahtui 28.11.2012 kello 18.

Louhinta ja lohkoketju

Louhinnan ensisijainen tehtävä on taata bitcoin-siirtojen pysyvyys ja luoda pysyvä tallenne niiden keskinäisestä järjestyksestä. Tämä on toteutettu määrittelemällä kelvollisen lohkon tiivisteelle tietyt ehdot. Ainoa keino löytää kelvollinen lohko on luoda uusia lohkoja ja laskea niille tiivisteitä niin kauan, kunnes ehdot täyttävä lohko löytyy. Tämän takia louhinta vaatii paljon laskentatehoa. Ehtoja säätämällä voidaan säätää lohkon löytämiseen tarvittavan laskennan määrää. Kyseistä määrää kutsutaan myös vaikeustasoksi.
Lohkoketju muodostuu siitä, että jokainen uusi lohko sisältää sitä edeltäneen lohkon tiivisteen. Jos lohkoketju on jostain kohdasta haarautunut kahdeksi haaraksi, niin voimassa oleva haara on se, jonka lohkojen yhteenlaskettu vaikeustaso on suurempi. Tästä seuraa, että jotta lohkoketjun historiaa voisi muuttaa, pitäisi ensin uudelleenluoda sekä se lohko, johon muutos tulee, että kaikki sen jälkeiset lohkot. Verkko säätää lohkoilta vaadittavaa vaikeustasoa 2 016:n lohkon välein sellaiseksi, että uusi lohko syntyy keskimäärin kymmenen minuutin välein. Louhinnan vaikeusaste siis muuttuu sen mukaan, kuinka louhijoiden yhteenlaskettujen tehojen määrä muuttuu.
Aluksi louhintaa tehtiin laskemalla suorittimien (CPU) avulla, mutta grafiikkasuoritinta (GPU) hyödyntävät louhintaohjelmistot ovat syrjäyttäneet CPU:lla louhinnan. Uusi kehityssuunta tällä hetkellä on ASIC-piirit, joiden laskentateho on moninkertainen CPU ja GPU -piireihin verrattuna. ASIC-piirien yleistyttyä on odotettavissa, että näytönohjaimilla tehtävä louhinta ei enää tuota edes käyttämänsä sähkön hintaa takaisin.
Käyttäjät voivat myös louhia bitcoineja kollektiivisesti, liittymällä niinkutsuttuun pooliin, jolloin palkkiot jaetaan osallisille poolin asetuksista riippuvalla tavalla.

Siirtomaksut

Solmuilla ei ole mitään velvoitteita sisällyttää siirtoja luomiinsa lohkoihin, mutta Bitcoineja lähettävät osapuolet voivat vapaaehtoisesti maksaa siirroista palkkiota. Siirtopalkkion maksaminen voi nopeuttaa siirron käsittelyä ja kannustaa louhijoita lisäämään louhintatehoja. Tämä tulee erityisesti olemaan tärkeätä siinä vaiheessa, kun uusien bitcoinien luonti vähenee pikkuhiljaa. Louhintasolmu voi kerätä siirtopalkkiot kaikista siirroista, jotka ovat sisällytettynä solmun löytämissä uusissa lohkoissa.

Anonymiteetti

Bitcoin-verkko ei sisällä kenenkään henkilötietoja, vaikka osoitteiden väliset siirrot ovatkin täysin julkisia. Tämän takia anonymiteetti riippuukin paljon siitä, miten ja mitä lompakko-ohjelmaa tai palvelua käyttäjä käyttää. Esimerkiksi Android-lompakko BitcoinSpinner luo käyttäjälle ainoastaan yhden osoitteen ja käyttää aina sitä. Tästä seuraa, että jokainen, jolta käyttäjä on saanut siirron tai jolle hän on tehnyt siirron, voi käydä katsomassa osoitteen siirtohistoriaa ja nähdä kaikki tehdyt siirrot. Yksi sivusto, jolta näitä tietoja voi käydä katsomassa on blockchain.info.
Anonymiteetti Bitcoinia käytettäessä on siis täysin käyttäjän omalla vastuulla ja vaatii tarkkuutta ja taitoa. Anonymiteetillä viitataan tässä yhteydessä tasoon, millä tarkkuudella transaktio on yhdistettävissä tiettyyn henkilöön tai henkilöjoukkoon.
Anonymiteettiä ja yksityisyydensuojaa Bitcoin-käytön yhteydessä voi parantaa esimerkiksi käyttämällä jokaiselle transaktiolle uutta bitcoin-osoitetta sekä sekoittamalla transaktioita esimerkiksi jaetuissa lompakoissa.