Nonce on yksi lohkoketjuteknologian keskeisistä mutta helposti väärinymmärretyistä käsitteistä. Termi vilahtaa erityisesti louhinnan yhteydessä, mutta sillä on tärkeä rooli myös muualla kryptovaluuttojen toiminnassa.
Tässä artikkelissa selitetään selkokielellä, mitä nonce tarkoittaa, miten se toimii louhinnassa ja miksi se on olennainen lohkoketjun turvallisuudelle. Käymme läpi myös sen, miten nonce toimii eri tavoin Bitcoinissa, Ethereumissa ja Cardanossa.
Nonce lyhyesti
| Mitä tarkoittaa | Lyhenne sanoista ”number used once” – kertaalleen käytettävä luku |
| Pääkäyttökohde | Louhinta (Proof of Work) ja transaktioiden järjestys |
| Koko Bitcoinissa | 32 bittiä (n. 4,29 miljardia mahdollista arvoa) |
| Sijainti | Lohkon otsikossa (block header) |
| Ethereumissa | Tilikohtainen laskuri, joka estää maksun monistamisen |
Mikä nonce on?
Nonce on lyhenne englannin sanoista ”number used once”, eli luku, jota käytetään vain kerran tietyssä yhteydessä. Se on kryptografian yleiskäsite, joka esiintyy monessa eri roolissa.
Lohkoketjujen yhteydessä nonce tunnetaan parhaiten louhinnasta. Bitcoinissa se on 32-bittinen luku, joka on osa lohkon otsikkotietoja (block header).
Kun louhija luo uutta lohkoa, hän etsii sellaista nonce-arvoa, joka yhdessä muun lohkon datan kanssa tuottaa tiivisteen (hash), joka täyttää verkon asettaman ehdon. Nonce on siis se muuttuva pala, jota säätämällä louhija yrittää saada halutun lopputuloksen.
Miten nonce toimii louhinnassa?
Louhinta on kilpajuoksua, jossa nonce on avainasemassa. Prosessi etenee vaiheittain, ja sitä toistetaan valtavia määriä.
Ensin louhija kerää käsiteltävät tapahtumat lohkoon ja lisää mukaan nonce-arvon. Tämän jälkeen koko lohkon data ajetaan tiivistefunktion läpi.
Jos syntynyt tiiviste ei täytä verkon vaikeustasoa, louhija muuttaa nonce-arvoa ja kokeilee uudelleen. Tätä toistetaan miljoonia kertoja sekunnissa, kunnes ehdon täyttävä tiiviste löytyy.
Vaikeustaso ja nollat
Lohkoketjuverkko säätää vaikeustasoa säännöllisesti pitääkseen lohkojen syntymisvälin vakaana. Bitcoinissa tavoite on keskimäärin noin kymmenen minuuttia lohkoa kohti.
Mitä enemmän verkolla on laskentatehoa, sitä tiukemmaksi tavoite asetetaan. Käytännössä tämä tarkoittaa, että hyväksytyn tiivisteen on alettava yhä useammalla nollalla, mikä tekee oikean noncen löytämisestä tilastollisesti yhä epätodennäköisempää ja energiaa kuluttavampaa.
(Sisäinen linkki suositellaan: linkitä ”louhinnassa” tai ”Proof of Work” sivulle Proof of Stake, jossa vertaillaan louhintaa ja steikkausta.)
Noncen merkitys Proof of Workissa
Proof of Work (PoW) on konsensusmekanismi, jonka turvallisuus nojaa suoraan tähän laskentaan. Ilman noncea lohkon data pysyisi vakiona, jolloin myös tiiviste olisi aina sama.
Nonce antaa louhijoille tavan muuttaa lohkon tiivistettä muuttamatta itse siirtotapahtumia. Tämä tekee verkon ylläpitämisestä työlästä ja kallista, mikä puolestaan suojaa verkkoa hyökkäyksiltä.
Oikean noncen löytäminen on juuri se ”työ”, josta louhija palkitaan uusilla kolikoilla ja siirtomaksuilla. Ratkaisu on vaikea löytää mutta helppo muiden tarkistaa, ja tämä epäsymmetria on koko järjestelmän luotettavuuden perusta.
Nonce ja tiiviste
Tiivistefunktio on yksisuuntainen matemaattinen operaatio. Tiivisteestä ei voi laskea taaksepäin, mikä nonce oli käytössä.
Ainoa tapa löytää oikea nonce on kokeilla vaihtoehtoja yksi kerrallaan. Lisäksi jo pienikin muutos noncessa muuttaa tiivisteen täysin erilaiseksi. Tätä ominaisuutta kutsutaan lumivyöryefektiksi (englanniksi avalanche effect).
Extra nonce ja louhinta-altaat
Koska tavallinen nonce on vain 32-bittinen, se tarjoaa noin 4,29 miljardia mahdollista arvoa. Nykyisillä erikoistuneilla louhintalaitteilla nämä vaihtoehdot käydään läpi hyvin nopeasti.
Jos ratkaisua ei löydy, louhijan on laajennettava hakuavaruutta. Tämä tehdään yleensä muuttamalla lohkon coinbase-transaktion dataa, mikä muodostaa uuden Merkle-juuren ja nollaa nonce-laskurin. Tätä lisäarvoa kutsutaan nimellä extra nonce.
Louhinta-altaissa (mining pools) työ jaetaan monelle osallistujalle. Palvelin antaa eri louhijoille eri osat nonce-avaruudesta, jottei useampi tekisi päällekkäistä työtä samoja lukuja kokeilemalla.
Nonce Ethereumissa
Ethereumissa nonce toimii eri tavalla kuin Bitcoinin louhinnassa. Siellä jokaisella tilillä on oma noncensa, joka on käytännössä laskuri.
Nonce kasvaa yhdellä jokaisen tililtä lähetetyn transaktion myötä. Jos tili lähettää kolme maksua, niillä on noncet 0, 1 ja 2.
Tämä varmistaa, että transaktiot käsitellään oikeassa järjestyksessä ja kukin vain kerran. Jos maksun nonce ei ole tilille looginen seuraava numero, verkko jättää sen odottamaan tai hylkää sen. Näin estetään niin sanotut toistohyökkäykset (replay-hyökkäykset), joissa sama maksu yritettäisiin lähettää useaan kertaan.
Noncen rooli eri yhteyksissä
| Yhteys | Noncen tehtävä |
|---|---|
| Proof of Work (louhinta) | Muuttuva luku, jolla etsitään vaikeustason täyttävää tiivistettä |
| Ethereum-tili | Laskuri, joka pitää transaktiot järjestyksessä ja estää monistuksen |
| Cardano (Ouroboros) | Epookin nonce (VRF-arvoista) tuo satunnaisuutta lohkontekijän valintaan |
| Salausviestintä | Kertakäyttöinen arvo, joka estää viestien uudelleenlähetyksen |
Nonce Cardanossa
Cardano käyttää Proof of Stake -menetelmää nimeltä Ouroboros, joten se ei louhi lohkoja etsimällä nonce-arvoa Bitcoinin tapaan. Käsite ei kuitenkaan katoa.
Cardanossa satunnaisuus tuotetaan niin kutsutulla verifioitavalla satunnaisfunktiolla (englanniksi Verifiable Random Function, VRF). Sen avulla verkko valitsee, mikä solmu saa oikeuden luoda seuraavan lohkon, tavalla jota ei voi ennustaa etukäteen.
Tähän liittyy epookin nonce. Jokaista uutta epookkia varten muodostetaan satunnaisarvo eli nonce, joka johdetaan edellisen epookin lohkojen VRF-arvoista. Tämä varmistaa, että lohkontekijän valinta on puolueeton eikä sitä voi manipuloida ennalta.
(Sisäinen linkki suositellaan: linkitä ”Ouroboros” sivulle Ouroboros ja ”verkko valitsee, mikä solmu saa oikeuden luoda seuraavan lohkon” sivulle Cardano-palvelimet eli nodet.)
Yleisiä väärinkäsityksiä
Nonceen liittyy muutamia sitkeitä väärinkäsityksiä, jotka on hyvä oikaista.
Ensimmäinen on ajatus, että nonce olisi itsessään arvokas tai jonkinlainen kolikko. Todellisuudessa se on pelkkä tekninen apuväline, osa lohkon metadataa, eikä sillä ole itsenäistä arvoa.
Toinen harhaluulo on, että oikean noncen löytämiseen olisi jokin kaava. Jos tällainen kaava olisi olemassa, koko Proof of Work -turvallisuus romahtaisi, koska louhinta ei enää vaatisi työtä. Oikean noncen löytäminen on aina kokeiluun perustuva, tilastollinen prosessi.
Nonce kryptovaluuttojen ulkopuolella
Vaikka nonce tunnetaan parhaiten lohkoketjuista, sitä käytetään laajasti myös muualla tietoturvassa. Kyse on yleisestä kryptografian käsitteestä.
Nonceja hyödynnetään esimerkiksi salatussa verkkoliikenteessä ja tunnistautumisen yhteydessä varmistamaan, ettei samaa viestiä tai pyyntöä voi käyttää uudelleen. Läheinen mutta erillinen käsite on suola (englanniksi salt), jota käytetään esimerkiksi salasanojen tallennuksessa. Sekä nonce että suola perustuvat samaan ajatukseen ainutkertaisuudesta, mutta niiden käyttötarkoitukset eroavat toisistaan.
Lähteet
Vastuuvapauslauseke
Tämä artikkeli on tarkoitettu ainoastaan yleiseksi ja faktapohjaiseksi tietolähteeksi noncen teknisestä merkityksestä lohkoketjuissa. Se ei ole sijoitusneuvontaa eikä kehotus ostaa, myydä tai louhia mitään kryptovaluuttaa.
Kryptovaluuttoihin liittyy riskejä, kuten arvon voimakas heilunta ja mahdollinen pääoman menetys. Tee omat päätöksesi vasta huolellisen selvityksen jälkeen ja tarvittaessa ammattilaisen kanssa.
Jos pelaaminen, sijoittaminen tai rahankäyttö aiheuttaa huolta tai ongelmia, apua on saatavilla: Peluuri, Peliklinikka ja THL.
Usein kysytyt kysymykset (UKK)
Mikä nonce on pähkinänkuoressa?
Nonce on kertaalleen käytettävä luku, jota hyödynnetään kryptografiassa ja lohkoketjussa varmistamaan laskennan ainutkertaisuus ja turvallisuus. Nimi tulee sanoista ”number used once”.
Miksi louhijat tarvitsevat noncen?
Louhijat muuttavat nonce-arvoa löytääkseen lohkolle tiivisteen, joka täyttää verkon vaikeustason. Tämä etsintä on Proof of Work -louhinnan ydin.
Mitä tapahtuu, kun oikea nonce löytyy?
Lohko katsotaan ratkaistuksi ja lisätään lohkoketjuun. Ratkaisun ensimmäisenä löytänyt louhija saa lohkopalkkion ja siirtomaksut.
Mikä on noncen koko Bitcoinissa?
Bitcoinin lohko-otsikossa nonce on 32-bittinen kenttä. Se kattaa luvut nollasta noin 4,29 miljardiin.
Miksi Ethereumissa on eri nonce kuin Bitcoinissa?
Ethereumissa nonce on tilikohtainen laskuri, joka pitää transaktiot oikeassa järjestyksessä ja estää niiden monistumisen. Se ei liity louhintaan kuten Bitcoinissa.
Miten nonce liittyy Cardanoon?
Cardano ei louhi, mutta käyttää epookin noncea satunnaisuuden lähteenä. Se johdetaan edellisen epookin VRF-arvoista ja varmistaa, että lohkontekijän valinta on puolueeton.
Voiko noncen arvata etukäteen?
Ei voi. Tiivistefunktion luonteen vuoksi noncen vaikutus tiivisteeseen ei ole ennustettavissa, joten oikea arvo on löydettävä kokeilemalla.




