Bysantin kenraalin ongelma

Teemu Hyytiäinen
Lohkoketju Laboratorio
3 min readSep 3, 2018
Image: Pixabay

Lohkoketjuista puhuettaessa törmää usein Bysantin kenraalin ongelmaan. Se on vuonna 1982 esitelty kuvitteellinen ongelma, jossa hyvin hajanainen armeija pyrkii valloittamaan kaupungin. Esimerkin tavoin lohkoketju on hajautettu kokonaisuus ja tämän vuoksi julkisissa lohkoketjuissa törmätään aina Bysantin kenraalin ongelmaan.

Bysantin kenraalin ongelmalla kuvataan tilannetta, jossa kaikkiin osapuoliin ei voida luottaa, mutta yhteisymmärrys pitäisi silti saavuttaa. Kuvitellaan, että Bysantin armeija haluaa vallata kaupungin, jossa on raivokas puolustus. Bysantin armeija on piirittänyt kaupungin. Armeijassa on useita divisioneja ja jokaisella divisioonalla on oma kenraali. Kenraalien alaisina on useita luutnantteja. Kaikkien täytyy päästä yhteisymmärrykseen ja toteuttaa toinen kahdesta vaihtoehdosta; samanaikainen hyökkäys tai liian suuren vastarinnan edessä yhtäaikainen perääntyminen. Jos hyökkäys tai perääntyminen ei tapahdu koko armeijan toimesta, lopputuloksena on armoton häviäminen. Haastetta lisää se, että osapuolet ovat kaukana toisistaan. Tämän takia viestejä välittävät viestinviejät. Kaikkien kenraalien ja luutanttien ollessa luotettavia tilanne olisi hyvin yksinkertainen ja yhteisymmärrys saavutettaisiin nopeasti. Kaikki eivät kuitenkaan ole luotettavia, jonka seurauksena viestejä väärennetään. Lisäksi osa viestinviejistä voivat olla epäluotettuja tai vihollinen voi kaapata viestinviejän. Luottamus armeijaan on hyvin matala.

Kuvitellaan divisioona, jossa on yksi kenraali ja kaksi luutanttia, sekä kahdenlaisia viestejä; hyökkää ja peräänny. Kuvassa 1 oikeanpuoleinen luutantti on pahantahtoinen ja välittää väärää tietoa. Hyväntahtoinen luutantti saa kaksi erilaista komentoa ja tämä aiheuttaa sekaannusta. Oletetaan, että hyvätahtoinen luutantti kuitenkin seuraa kenraalin käskyä armeijan hierarkian mukaisesti. Tässäkin tilanteessa armeija on 1/3 heikompi, koska pahantahtoinen luutnantti ei ole hyökkäyksessä mukana.

Kuva 1. Oikea luutnantti on pahantahtoinen

Kuvassa 2 on divisioona, jossa kenraali on pahantahtoinen. Tällöin ainoastaan vasemmanpuoleinen luutnantti hyökkää eli 1/3 armeijasta.

Kuva 2. Kenraali on pahantahtoinen

Lisäämällä useampia toimijoita ongelmasta tulee monimutkaisempi. Kuvassa 3 esitetään divisioona, jossa on kolme luutnanttia. Havainnekuva on keskimmäisen luutnantin näkökulmasta. Keskimmäinen luutnantti saa kolme viestiä, joista kaksi käskee hyökkäämään ja yksi perääntymään. Koska enemmistö käskee hyökkäämään, päättää keskimmäinenkin luutnantti hyökätä. Tässä tilanteessa ¼ ei hyökkää.

Kuva 3. Tilanne keskimmäisen luutnantin näkökulmasta

Kuvassa 4 on divisioona, jossa kenraali on pahantahtoinen. Tämä lähettää kaikille luutnanteille eri viestin; hyökkää, peräänny tai odota lisäohjeita. Kaikkien luutnanttien viestitellessä keskenään syntyy tilanne, jossa kaikki ovat saaneet kaikki käskyt. Jokainen luutnantti vastaanottaa kerran hyökkää, peräänny ja odota -käskyn, joten enemmistön mielestä vastaus on: hyökkää, peräänny ja odota. Luutnanttien voidaan olettaa toimivan perusoletuksen mukaisesti eli odottavat lisäohjeita.

On tärkeää muistaa, että tavoite on saada kaikki luutnantit valitsemaan sama vaihtoehto. Ei jotakin tiettyä vaihtoehtoa.

Kuva 4. Kenraali on pahantahtoinen

Miten tämä kaikki sitten liittyy lohkoketjuihin? Lohkoketjut ovat hajautettuja tietokantoja/tilikirjoja, joita mikään yksittäinen toimija ei hallinnoi. Lohkoketjuissa voidaan tallentaa varallisuutta, jonka seurauksena pahantahtoisilla toimijoilla on insentiivi aiheuttaa järjestelmässä ongelmia. Tämän takia ratkaisu Bysantin kenraalin ongelmaan on lohkoketjuissa tarpeen. Lisähaasteita syntyy, kun lohkoketjuissa ei ole keskitettyä valtaa, eikä ”kenraalia”, joka voisi sanoa viimeisen sanan tai korjata vahinkoja. Satoshi Nakamoto teki läpimurron Bysantin kenraalin ongelman suhteen luomalla Proof-of-Work –konsensusalgoritmin. Tätä algoritmia käytetään muun muassa Bitcoinissa. Konsensusalgoritmeista lisää tulevaisuudessa.

--

--