Peliteorioiden haasteita
Peliteoriat ovat lohkoketjujen keskiössä. Niissä tutkitaan kuinka ihmiset käyttätyvät erilaisissa pelitilanteissa ja kuinka he ottavat vastustajiensa toimet huomioon. Pokeri on tästä erinomainen esimerkki; miten tulisi pelata, jos vastustaja pelaa löysästi. Pitäisikö bluffata vai ei? Korottaa vai luovuttaa? Nimestään huolimatta peliteorioiden käyttö ei rajoitu ainoastaan peleihin. Peliteorioita voidaan soveltaa tilanteissa, joissa kaksi tai useammat henkilöt joutuvat luomaan strategian parhaimman lopputuloksen saavuttamiseksi.
Julkiset lohkoketjut ovat toiminnallisia pitkältä konsensusalgoritmien ja peliteorian ansiosta. Näissä molemmissa on kuitenkin joitakin heikkouksia, joita taitavat pahantahtoiset tahot voivat yrittää hyödyntää. Useat konsensusalgoritmit ovat alttiita 51%-hyökkäykselle, mutta myös peliteoriassa on haasteita. Näistä kaksi esitellään seuraavaksi.
Vangin dilemma
Matti ja Maija on otettu kiinni pienestä rikoksesta. Syyttäjä tietää heidän tehneen myös suuremman rikoksen, mutta syyttäjällä ei ole tarpeeksi todisteita tästä. Matti ja Maija sijoitetaan erillisiin huoneisiin kuulusteltaviksi ja syyttäjä haluaa todisteita suuremmasta rikoksesta. Matilla ja Maijalla on kaksi vaihtoehtoa; pysyä vaiti tai syyttää toista. Jos molemmat pysyvät vaiti, joutuvat molemmat vankilaan yhdeksi vuodeksi. Jos molemmat syyttävät toista, joutuvat molemmat kahdeksi vuodeksi vankilaan. Jos Matti syyttää Maijaa rikoksesta, mutta Maija pysyy vaiti, Maija joutuu kolmeksi vuodeksi vankilaan ja Matti pääsee heti vapaaksi. Sama voi tapahtua myös toisinpäin. Alla olevaan taulukkoon on kerätty kaikki syytettyjen vaihtoehdot.
Kuten kaaviosta näkee, molempien pysyessä vaiti Matti ja Maija viettävät yhteensä vain kaksi vuotta vankilassa. Ryhmänä tämä on kaikista paras vaihtoehto. Yksilön näkökulmasta tilanne ei kuitenkaan ole sama. Yksilönä heidän kannattaa syyttää toista, sillä riippumatta mitä toinen osapuoli tekee, syyttävä osapuoli pääsee aina vähemmällä. Matin pysyessä vaiti ja Maijan syyttäessä pääsee Maija vapaaksi ja molempien syyttäessä toista Maija joutuisi vain kahdeksi vuodeksi vankilaan. Tilanne onkin ongelmainen, koska yksilö ei halua toimia yhteisen hyvän mukaisesti.
Julkisissa lohkoketjuissa voidaan havaita hyvin samankaltainen tilanne. Kuvitellaan tilanne, jossa hyökkääjä haluaa saada louhijat louhimaan hänen lohkoaan. Hän lupaa maksaa kaikille hänen lohkonsa louhijoille lohkopalkkion suuruisen palkkion, sekä pienen bonuksen, jos hänen lohkostaan ei tule lohkoketjun seuraavaa lohkoa. Jos hyökkääjän lohkosta tulee lohkoketjun seuraava lohko, louhijat saavat lohkosta maksettavan lohkopalkkion. Kaikki louhijoiden saamat palkkiovaihtoehdot on koottu alla olevaan taulukkoon.
Yhteisen hyvän kannalta louhijoiden kannattaisi louhia oikeita lohkoja, koska hyökkääjän lohkossa on todennäköisesti siirtoja, jotka eivät sinne kuulu. Yksittäisen louhijan kannalta hyökkääjän lohkon louhiminen on kuitenkin aina houkuttelevampi vaihtoehto. Louhija saa paremman palkkion hyökkääjän lohkon louhimisesta riippumatta muiden louhijoiden toiminnasta. Äärimmäisen ovelan hyökkäyksestä tekee se, että hyökkääjän ei todennäköisesti tarvitse maksaa mitään. Hyökkäyksen onnistuessa lohkopalkkio maksetaan järjestelmästä automaattisesti, eikä hyökkääjän omista varoista.
Kuvailtu esimerkki on hyvin yksinkertaistettu versio, koska hyökkääjän on mahdoton organisoida tämän kaltaista hyökkäystä soittamalla jokaiselle yksittäiselle louhijalle. Tämänkaltainen hyökkäys voidaan kuitenkin toteuttaa esimerkiksi luomalla louhintapooli, Louhintapoolissa voidaan maksaa palkkiota louhijoille, vaikka pooli ei uutta lohkoa löytäisikään. Suuri palkkio houkuttelee louhijoita pooliin. Louhijoiden laskentatehon ylittäessä 50% voi poolin omistaja toteuttaa 51%-hyökkäyksen ja maksaa louhijoille vain lohkopalkkiot.
Verifioijan dilemma
Verifioijan dilemma esitettiin ensimmäisen kerran artikkelissa nimeltä Demystifying Incentives in the Consensus Computer. Artikkeli esittelee PoW-konsensusalgoritmin tuottamia konflikteja louhijan näkökulmasta.
PoW-konsensusalgoritmi määrää, että louhijoiden tulisi osallistua konsensusprosessiin ilmaiseksi, jotta järjestelmän eheys säilyy. Louhijat saavat palkkion ainoastaan löytäessään uuden lohkon. Louhijoiden tulee kuitenkin tarkistaa, että uusi lohko on varmasti oikein. Tarkistusprosessista kukaan ei saa korvausta. Tarkistusprosessi vie hetken aikaa, joten jättämällä sen tekemättä louhija voi aloittaa uuden lohkon louhimisen aikaisemmin. Aikaisemmin aloittaminen parantaa louhijan todennäköisyyttä löytää uusi lohkon, mutta se avaa turvallisuusriskejä järjestelmään. Lisäksi tarkistamisen tekemättä jättämisen seurauksena louhija voi alkaa louhia väärää lohkoa. Rationaalisella louhijalla ei siis ole selkeästi toista parempaa ratkaisua, eikä pysty rationaalisesti tekemään päätöstä tarkistuksen suhteen.
Verifioijan dilemmaan perustuva hyökkäys voisi tapahtua seuraavasti; Pahantahtoinen käyttäjä julkaisee verkkoon paljon laskentatehoa vaativia siirtoja, jonka tarkoituksena on saada louhijat validoimaan raskaita siirtoja. Louhijoiden tarkastaessa ongelmia pahantahtoinen käyttäjä voi aloittaa uuden lohkon louhimisen ennen muita.
Verifioijan dilemmaan ollaan kehittämässä ratkaisuja. Eräs minun henkilökohtainen suosikkini on TrueBit. TrueBitistä lisää myöhemmin, mutta yksinkertaisuudessaan voidaan sanoa, että myös tarkastajat saavat satunnaisesti palkkioita. Useat muut ratkaisut perustuvat off-chain tai side-chain ratkaisuihin.
Kaikki järjestelmät ovat teoriassa hakkeroitavissa tai muuten käyttökelvottomiksi saatavissa. Näin on myös lohkoketjuissa. Useat olemassa olevat ongelmat, kuten edellä mainitut dilemmat, ovat kuitenkin äärimmäisen vaikeita toteuttaa suurissa julkisissa lohkoketjuissa. Suurissa julkisissa lohkoketjuissa on hankala saada tarvittavaa määrää ihmisiä osallistumaan lohkoketjun peukalointiin, joten itse peukalointi jää usein haaveeksi. Riskit ovat kuitenkin olemassa. Onneksi näihinkin ongelmiin ollaan kehittämässä uusia ratkaisuja, jotta julkisista lohkoketjuista saadaan entistäkin turvallisempia käyttää.