Ero sivun ”Käyttäjä:Tiiliskivi/Bitcoin” versioiden välillä

Siirry navigaatioon Siirry hakuun
1 526 merkkiä lisätty ,  8 kuukautta sitten
ei muokkausyhteenvetoa
== Tekniikka ==
{{Pääartikkeli|[[Bitcoinin tekniikka]]|[[Lohkoketju]]}}
 
=== Lohkoketju julkisena tilikirjana ===
[[Tiedosto:Blockchain.svg|thumb|150px|TietoLohkoketjuun kaikista(mustalla) historiallisistaon bitcoin-siirroistakirjattu kirjataantieto jokaisellakaikista historiallisista bitcoin-ohjelmaa käyttävällä laitteella säilytettävään lohkoketjuun (mustalla)tilisiirroista. Lohkoketjun ensimmäistä lohkoa (vihreällä) kutsutaan Genesis-lohkoksi (vihreällä). Orpolohkot (violetilla) ovat lohkoja, jotka haarautuvat pääketjusta.]]
{{Pääartikkeli|[[Lohkoketju]]}}
Bitcoin eroaa perinteisestä virtuaalivaluutasta keskitetyn kirjanpidon puutteensa takia. Tyypillisesti käyttökelpoinen virtuaalivaluutta tarvitsee keskitetyn tahon, joka pitää kirjaa valuutalla tehdyistä tilisiirroista ja vahvistaa niiden oikeellisuuden. Bitcoinilla vastaavaa keskitettyä tahoa ei ole. Sen sijaan kaikki tilisiirrot kirjataan julkiseen tilikirjaan, jota kutsutaan lohkoketjuksi. Uusien tilisiirtojen vahvistamisesta vastaavat bitcoin-ohjelmaa ajavat laitteet, joiden käyttäjiä kutsutaan louhijoiksi. Kopio lohkoketjusta varastoidaan jokaiselle vertaisverkon jäsenlaitteelle riippumatta siitä, onko kyseessä louhija (''full node'') vai tavallinen käyttäjä (''lightweight node'').
[[Tiedosto:Blockchain.svg|thumb|150px|Tieto kaikista historiallisista bitcoin-siirroista kirjataan jokaisella bitcoin-ohjelmaa käyttävällä laitteella säilytettävään lohkoketjuun (mustalla). Lohkoketjun ensimmäistä lohkoa kutsutaan Genesis-lohkoksi (vihreällä). Orpolohkot (violetilla) ovat lohkoja, jotka haarautuvat pääketjusta.]]
Bitcoinin tärkein eroavaisuus perinteiseen virtuaalivaluuttaan on keskitetyn kirjanpidon puute. Tyypillisesti käyttökelpoinen virtuaalivaluutta tarvitsee keskuspankin kaltaisen tahon, joka pitää kirjaa valuutan käyttäjien tilisiirroista ja vahvistaa niitä.<ref name=Barber/> Bitcoinilla vastaavaa keskustahoa ei ole, vaan kaikki tilisiirrot kirjataan täysin julkiseen tilikirjaan, jota kutsutaan lohkoketjuksi.<ref name=Ciaian/>
 
Lohkoketju on nimensä mukaisesti ketju, joka koostuu useista lohkoina tunnetuista yksiköistä. Jos käyttäjä haluaa lähettää bitcoineja toiselle käyttäjälle, lähetetään tieto tilisiirrosta muille vertaisverkon laitteille. Louhijat keräävät tiedon uusista tilisiirroista lohkoihin, joiden oikeellisuus vahvistetaan erityisellä [[Tiiviste (tietotekniikka)|tiivisteillä]] ({{k-en|hash}}). Yksittäinen lohko sisältää usein tiedon 1500–2500 tilisiirrosta. Tämän jälkeen tieto uudesta lohkosta lähetetään muille vertaisverkon jäsenille, jossa se liittyy osaksi muita lohkoketjun kopioita. Näin käyttäjien tieto toteutuneista tilisiirroista pysyy samana. Kokonaisuudessaan lohkoketju sisältää tiedon kaikista historiallisista toteutuneista tilisiirroista aina ensimmäiseen, Genesis-lohkona tunnettuun lohkoon saakka.
Kun kahden käyttäjän välillä tapahtuu tilisiirto, lähetetään tieto siitä koko vertaisverkolle, jonka on varmistuttava tilisiirron oikeellisuudesta. Bitcoin-järjestelmässä tilisiirrot kootaan useampia tilisiirtoja sisältäviksi yksiköiksi, joita kutsutaan lohkoiksi. Lohkoketju tarkoittaa nimensä mukaisesti useasta lohkosta koostuvaa ketjua, joka kokonaisuutena sisältää tiedon kaikista historiallisista tilisiirroista aina ensimmäiseen, Genesis-lohkona tunnettuun lohkoon asti.<ref name=Bradbury/> Tämä lohkoketju ei ole keskustahon hallussa, vaan siitä säilytetään kopiota jokaisella bitcoin-ohjelmaa käyttävällä laitteella.
 
Lohkoketjutekniikan merkittävin kysymys on lohkojen oikeellisuuden varmistaminen. Bitcoin-järjestelmän on siis estettävä väärennettyjen tilisiirtojen hyväksyminen, ja huolehdittava siitä, että vertaisverkon jäsenten keskuudessa vallitsee yksimielisyys oikeasta tilikirjasta. Ongelman ratkaisi Satoshi Nakamoto alkuperäisessä bitcoin-järjestelmän kuvauspaperissaan. Nakamoton ratkaisu perustuu tiivistefunktion ({{k-en|hash function}}) käyttöön sekä erityiseen työntodistemenetelmään, joka tekee väärennettyjen lohkojen lisäämisestä osaksi lohkoketjua toteuttamiskelvotonta, sillä se vaatisi epäkäytännöllisen paljon laskentatehoa.
 
=== Tilisiirtojen varmentaminen ===
 
==== Tiivistefunktio ja työntodiste ====
Tiivistefunktio tarkoittaa funktiota, joka muuttaa syötteen (esimerkiksi viestin) tiivisteeksi (esimerkiksi numerosarjaksi) niin, että jokaista syötettä vastaa vain yksi tiiviste. Tiivistefunktion erityinen ominaisuus on se, että vaikka tiiviste on helposti selvitettävissä syötteen avulla, ei prosessin kääntämiseen (eli syötteen selvittämiseen tiivisteen perusteella) ole arvaamista tehokkaampaa menetelmää. Lohkoketjun lohkojen varmentamisessa käytetään [[SHA-256]] -tiivistefunktiota, jonka tiiviste voi saada 10<sup>77</sup> erilaista arvoa.
Lohkojen oikeellisuus varmennetaan lisäämällä jokaiseen niistä syntyessään [[SHA-256]] -tiivistefunktiolla yksilöllinen [[Tiiviste (tietotekniikka)|tiiviste]], jonka tulee täyttää tietyt numeeriset ominaisuudet. Lisäksi jokaiseen uuteen lohkoon merkitään myös edellisen lohkon tiiviste, mikä liittää lohkon osaksi lohkoketjua. Vertaisverkko voi varmistua lohkojen oikeellisuudesta, sillä tiivisteiden löytämiseen vaaditaan merkittävästi laskentatehoa. Jos käyttäjä pyrkisi liittämään osaksi lohkoketjua väärennetyn tilisiirron sisältävän lohkon, joutuisi hän muuttamaan myös jokaisen lohkoa seuraavan lohkon tiivisteen. Koska bitcoin-järjestelmä tunnistaa oikeaksi vain lohkoketjun, jonka luomiseen on käytetty eniten laskentatehoa, on väärennetyn lohkoketjun ylläpito yksittäiselle toimijalle käytännössä toteuttamiskelvotonta.<ref name=Bradbury/>
 
Kun lohkoketjun uusi lohko syntyy, sille määritetään yksilöllinen tiiviste niin, että tiivistefunktion syötteenä käytetään lohkon sisältämää dataa. Tähän dataan kuuluvat luettelo tilisiirroista, lohkon aikamerkintä, lohkoketjun edeltävän lohkon tiiviste sekä erityinen satunnaisluku. Hyväksyttävän tiivisteen on kuitenkin täytettävä tietyt matemaattiset ominaisuudet. Näin ollen vahvistaakseen uusia tilisiirtoja sisältävän lohkon louhijan on ensin löydettävä arvaamalla matemaattisesti soveltuva satunnaisluku. Prosessi vaatii laskentatehoa ja on aikaa vievä. Vertaisverkon laskentatehon kasvaessa tiivisteeltä edellytettyjen matemaattisten ominaisuuksien vaikeusastetta säädellään niin, että uuden lohkon syntymiseen kestävä aika (lohkoaika) pysyy noin 10 minuutissa.
 
==== Lohkoketjun haarautuminen ====
5 872

muokkausta

Navigointivalikko