Ero sivun ”Käyttäjä:Tiiliskivi/Bitcoin” versioiden välillä
Ei muokkausyhteenvetoa |
Ei muokkausyhteenvetoa |
||
Rivi 6: | Rivi 6: | ||
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.<ref name=Bradbury/> 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'').<ref name=Yaga/> |
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.<ref name=Bradbury/> 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'').<ref name=Yaga/> |
||
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}}).<ref name=Bradbury/> Yksittäinen lohko sisältää usein tiedon 1500–2500 tilisiirrosta.<ref>{{Verkkoviite | Osoite = https:/www.blockchain.com/charts/n-transactions-per-block | Nimeke = Average Transactions Per Block | Julkaisija = blockchain.com | Viitattu = 6.1.2021 | Kieli = {{en}} }}</ref> Tämän jälkeen tieto uudesta lohkosta lähetetään muille vertaisverkon jäsenille, |
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}}).<ref name=Bradbury/> Yksittäinen lohko sisältää usein tiedon 1500–2500 tilisiirrosta.<ref>{{Verkkoviite | Osoite = https://www.blockchain.com/charts/n-transactions-per-block | Nimeke = Average Transactions Per Block | Julkaisija = blockchain.com | Viitattu = 6.1.2021 | Kieli = {{en}} }}</ref> Tämän jälkeen tieto uudesta lohkosta lähetetään muille vertaisverkon jäsenille, ja 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.<ref name=Yaga/> |
||
Lohkoketjutekniikan merkittävin kysymys on lohkojen oikeellisuuden |
Lohkoketjutekniikan merkittävin kysymys on lohkojen oikeellisuuden varmentaminen. 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.<ref name=Nakamoto/> |
||
=== Tilisiirtojen varmentaminen === |
=== Tilisiirtojen varmentaminen === |
||
==== Tiivistefunktio ja työntodiste ==== |
==== Tiivistefunktio ja työntodiste ==== |
||
Tiivistefunktio tarkoittaa |
Tiivistefunktio tarkoittaa [[funktio]]ta, joka muuttaa syötteen (esimerkiksi viestin) tiivisteeksi (esimerkiksi numerosarjaksi) niin, että jokaista syötettä vastaa vain yksi tiiviste. Kryptologisesti hyödyllisen tiivistefunktiosta tekee 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.<ref name=Yaga/> |
||
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 |
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 kuuluu esimerkiksi luettelo tilisiirroista, lohkon aikamerkintä, lohkoketjun edeltävän lohkon tiiviste sekä erityinen satunnaisluku. Hyväksyttävän tiivisteen löytämistä hidastaa se, että tiivisteen on täytettävä tietyt numeeriset ominaisuudet. Vahvistaakseen uusia tilisiirtoja sisältävän lohkon louhijan on siksi ensin löydettävä arvaamalla hyväksyttävän tiivisteen tuottava satunnaisluku, mikä on aikaa ja laskentatehoa vaativa prosessi. Kun louhija löytää sopivan satunnaisluvun, lähetetään lohko vertaisverkon muille jäsenille, jotka voivat helposti tarkistaa lohkon oikeellisuuden varmistamalla, että löydetty satunnaisluku todella tuottaa hyväksyttävän tiivisteen. Menetelmää kutsutaan työntodisteeksi ({{k-en|proof-of-work}}): löydetty satunnaisluku on osoitus lohkon varmentamiseen käytetystä laskentatehosta.<ref name=Yaga/> Kun uusia laitteita liittyy vertaisverkkoon ja sen laskentateho kasvaa, säädellään tiivisteeltä edellytettyjen numeeristen ominaisuuksien vaikeustasoa niin, että uuden lohkon syntymiseen kestävä aika (lohkoaika) pysyy noin 10 minuutissa.<ref name=Barber/><ref name=Yaga/> |
||
Edellisen lohkon tiivisteen sisällyttäminen uuteen lohkoon estää tehokkaasti väärennettyjen lohkojen liittämisen osaksi lohkoketjua. Oletetaan, että käyttäjä haluaisi muokata lohkoketjua lisäämällä siihen pätemättömän tilisiirron sisältävän väärennetyn lohkon. On teoriassa mahdollista, että käyttäjä voisi arvata tiivistefunktion soveltuvan satunnaisluvun oikein ja lähettää siten tiedon vahvistetusta lohkosta muille vertaisverkon laitteille. |
Edellisen lohkon tiivisteen sisällyttäminen uuteen lohkoon estää tehokkaasti väärennettyjen lohkojen liittämisen osaksi lohkoketjua. Oletetaan, että käyttäjä haluaisi muokata lohkoketjua lisäämällä siihen pätemättömän tilisiirron sisältävän väärennetyn lohkon. On teoriassa mahdollista, että käyttäjä voisi arvata tiivistefunktion soveltuvan satunnaisluvun oikein ja lähettää siten tiedon vahvistetusta lohkosta muille vertaisverkon laitteille. Tällöin lohkoketjua manipuloivan käyttäjän tulisi kuitenkin löytää myös kaikille väärennetyn lohkon jälkeisille lohkoille uusi tiiviste, koska edellisen lohkon tiiviste vaikuttaa jokaisen lohkon tiivisteeseen. Prosessin epäkäytännöllisyys suojaa lohkoketjua tehokkaasti manipulaatioyrityksiltä, ja se hylkää mahdolliset väärennetyt lohkot nopeasti.<ref name=Bradbury/><ref name=Yaga/> |
||
==== Lohkoketjun haarautuminen ==== |
==== Lohkoketjun haarautuminen ==== |
||
Rivi 30: | Rivi 30: | ||
* <ref name=Bradbury>{{Lehtiviite | Tekijä = Bradbury, Danny | Otsikko = The problem with Bitcoin | Julkaisu = Computer Fraud & Security | Ajankohta = Marraskuu 2013 | Vuosikerta = 2013 | Numero = 11 | Sivut = 5-8 | Doi = 10.1016/S1361-3723(13)70101-5 | Kieli = {{en}} }}</ref> |
* <ref name=Bradbury>{{Lehtiviite | Tekijä = Bradbury, Danny | Otsikko = The problem with Bitcoin | Julkaisu = Computer Fraud & Security | Ajankohta = Marraskuu 2013 | Vuosikerta = 2013 | Numero = 11 | Sivut = 5-8 | Doi = 10.1016/S1361-3723(13)70101-5 | Kieli = {{en}} }}</ref> |
||
* <ref name=Ciaian>{{Lehtiviite | Tekijä = Ciaian, Pavel; Rajcaniova, Miroslava & Kancs, d'Artis | Otsikko = The economics of BitCoin price formation | Julkaisu = Applied Economics | Ajankohta = 13.11.2015 | Vuosikerta = 48 | Numero = 19 | Sivut = 1799-1815 | Doi = 10.1080/00036846.2015.1109038 | Kieli = {{en}} }}</ref> |
* <ref name=Ciaian>{{Lehtiviite | Tekijä = Ciaian, Pavel; Rajcaniova, Miroslava & Kancs, d'Artis | Otsikko = The economics of BitCoin price formation | Julkaisu = Applied Economics | Ajankohta = 13.11.2015 | Vuosikerta = 48 | Numero = 19 | Sivut = 1799-1815 | Doi = 10.1080/00036846.2015.1109038 | Kieli = {{en}} }}</ref> |
||
* <ref name=Nakamoto>{{Verkkoviite | Osoite = https://bitcoin.org/bitcoin.pdf | Nimeke = Bitcoin: A Peer-to-Peer Electronic Cash System | Tekijä = Nakamoto, Satoshi | Ajankohta = 31.10.2008 | Julkaisija = bitcoin.org | Tiedostomuoto = PDF | Viitattu = 3.1.2021 | Kieli = {{en}} }}</ref> |
|||
* <ref name=Yaga>{{Verkkoviite | Osoite = https://nvlpubs.nist.gov/nistpubs/ir/2018/NIST.IR.8202.pdf | Nimeke = Blockchain Technology Overview | Tekijä = Yaga, Dylan ''et al''. | Julkaisija = National Institute of Standards and Technology | Viitattu = Lokakuu 2018 | Tiedostomuoto = PDF | Kieli = {{en}} }}</ref>}} |
* <ref name=Yaga>{{Verkkoviite | Osoite = https://nvlpubs.nist.gov/nistpubs/ir/2018/NIST.IR.8202.pdf | Nimeke = Blockchain Technology Overview | Tekijä = Yaga, Dylan ''et al''. | Julkaisija = National Institute of Standards and Technology | Viitattu = Lokakuu 2018 | Tiedostomuoto = PDF | Kieli = {{en}} }}</ref>}} |
Versio 6. tammikuuta 2021 kello 16.19
Tekniikka
- Pääartikkelit: Bitcoinin tekniikka ja Lohkoketju
Lohkoketju julkisena tilikirjana
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.[1] 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).[2]
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ä tiivisteillä (engl. hash).[1] Yksittäinen lohko sisältää usein tiedon 1500–2500 tilisiirrosta.[3] Tämän jälkeen tieto uudesta lohkosta lähetetään muille vertaisverkon jäsenille, ja 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.[2]
Lohkoketjutekniikan merkittävin kysymys on lohkojen oikeellisuuden varmentaminen. 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 (engl. 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.[4]
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. Kryptologisesti hyödyllisen tiivistefunktiosta tekee 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 1077 erilaista arvoa.[2]
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 kuuluu esimerkiksi luettelo tilisiirroista, lohkon aikamerkintä, lohkoketjun edeltävän lohkon tiiviste sekä erityinen satunnaisluku. Hyväksyttävän tiivisteen löytämistä hidastaa se, että tiivisteen on täytettävä tietyt numeeriset ominaisuudet. Vahvistaakseen uusia tilisiirtoja sisältävän lohkon louhijan on siksi ensin löydettävä arvaamalla hyväksyttävän tiivisteen tuottava satunnaisluku, mikä on aikaa ja laskentatehoa vaativa prosessi. Kun louhija löytää sopivan satunnaisluvun, lähetetään lohko vertaisverkon muille jäsenille, jotka voivat helposti tarkistaa lohkon oikeellisuuden varmistamalla, että löydetty satunnaisluku todella tuottaa hyväksyttävän tiivisteen. Menetelmää kutsutaan työntodisteeksi (engl. proof-of-work): löydetty satunnaisluku on osoitus lohkon varmentamiseen käytetystä laskentatehosta.[2] Kun uusia laitteita liittyy vertaisverkkoon ja sen laskentateho kasvaa, säädellään tiivisteeltä edellytettyjen numeeristen ominaisuuksien vaikeustasoa niin, että uuden lohkon syntymiseen kestävä aika (lohkoaika) pysyy noin 10 minuutissa.[5][2]
Edellisen lohkon tiivisteen sisällyttäminen uuteen lohkoon estää tehokkaasti väärennettyjen lohkojen liittämisen osaksi lohkoketjua. Oletetaan, että käyttäjä haluaisi muokata lohkoketjua lisäämällä siihen pätemättömän tilisiirron sisältävän väärennetyn lohkon. On teoriassa mahdollista, että käyttäjä voisi arvata tiivistefunktion soveltuvan satunnaisluvun oikein ja lähettää siten tiedon vahvistetusta lohkosta muille vertaisverkon laitteille. Tällöin lohkoketjua manipuloivan käyttäjän tulisi kuitenkin löytää myös kaikille väärennetyn lohkon jälkeisille lohkoille uusi tiiviste, koska edellisen lohkon tiiviste vaikuttaa jokaisen lohkon tiivisteeseen. Prosessin epäkäytännöllisyys suojaa lohkoketjua tehokkaasti manipulaatioyrityksiltä, ja se hylkää mahdolliset väärennetyt lohkot nopeasti.[1][2]
Lohkoketjun haarautuminen
Louhinta ja tarjonta
Skaalautuvuus
Lähteet
- ↑ a b c Bradbury, Danny: The problem with Bitcoin. Computer Fraud & Security, Marraskuu 2013, 2013. vsk, nro 11, s. 5-8. doi:10.1016/S1361-3723(13)70101-5. (englanniksi)
- ↑ a b c d e f Yaga, Dylan et al.: Blockchain Technology Overview (PDF) National Institute of Standards and Technology. Viitattu Lokakuu 2018. (englanniksi)
- ↑ Average Transactions Per Block blockchain.com. Viitattu 6.1.2021. (englanniksi)
- ↑ Nakamoto, Satoshi: Bitcoin: A Peer-to-Peer Electronic Cash System (PDF) 31.10.2008. bitcoin.org. Viitattu 3.1.2021. (englanniksi)
- ↑ Barber, Simon et al.: Bitter to Better — How to Make Bitcoin a Better Currency (PDF) Kalifornian yliopisto (Berkeley). Viitattu 5.1.2021. (englanniksi)
Viittausvirhe: <ref>
-elementin nimeä ”Ciaian”, johon viitataan elementissä <references>
ei käytetä edeltävässä tekstissä.