Mistä lohkoketjuissa on kysymys?
Lohkoketju on eräs tämän hetken hypetetyimmistä IT-trendeistä. Mitä tuon termin taakse kätkeytyy ja minkälaisia mahdollisuuksia lohkoketjut tarjoavat liiketoiminnalle? Tässä kirjoituksessa pyrimme vastaamaan noihin kysymyksiin ja kerromme myös mitä lohkoketjujärjestelmien yleistyminen tarkoittaa laadunvarmistuksen ja testauksen näkökulmasta.
Lohkoketjun tekninen perusta
Hyvin yksinkertaistettuna lohkoketju on tapa tallettaa tietoa toisiinsa linkitettyinä tietoalkioina, eli ketjuna. Ohjelmointitaustaiset voivat ajatella tätä linkitettynä listana. Toisin kuin perinteisen listan, lohkoketjuun talletetun tiedon muuttaminen jälkikäteen on hyvin hankalaa. Seuraava lohko nimittäin sisältää edellisen lohkon tiivisteen, jolla ketjun eheys voidaan todentaa. Lohkoketjutoteutuksissa uusia lohkoja syntyy yleensä louhimalla. Koska louhintaan osallistuu useita solmupisteitä (node), lohkoketju on hajautettu järjestelmä ja solmupisteet sisältävät täydellisen tai vähintään osittaisen kopion koko ketjusta. Näiden ominaisuuksien johdosta lohkoketjuun talletetun datan väärentäminen on niin hankalaa, että se on yleisesti ottaen kannattamatonta. Louhinnasta palkitaan yleensä kunkin lohkoketjun sisäisellä valuutalla. Tunnetuin lohkoketjusovellus on Bitcoin, jossa uuden lohkon nopein louhija saa siis palkinnoksi Bitcoineja.
Ethereum – yleiskäyttöinen lohkoketju
Bitcoin ja Ethereum mielletään usein lohkoketjuihin liittyvässä uutisoinnissa toistensa kilpailijoiksi. Suora vertailu ei kuitenkaan ole mielekästä, sillä Bitcoin on lohkoketjusovellus ja Ethereum on lohkoketjualusta. Ethereumin selittäminen tyhjentävästi on kuitenkin haastava tehtävä. Kehittäjäyhteisön näkökulmasta Ethereum on avoimen lähdekoodin projekti, jolla on tiettävästi tukenaan lohkoketjumaailman suurin kehittäjätuki. Palvelunäkökulmasta Ethereum voidaan mieltää kaikille avoimeksi hajautetuksi pilvipalveluksi, jonka käytöstä maksetaan Ether-kryptopoleteilla (tämä maksumekanismi ehkäisee myös palvelunestohyökkäyksiä). Dramaattisimmat luonnehdinnat Ethereumista perustuvat Ethereumin määrittelemiseen protokollana, joka mahdollistaisi Internetin seuraavan teknisen evoluutioaskeleen. Ethereum on yleiskäyttöinen, julkinen lohkoketju, jonka lohkoihin voidaan tallettaa mitä tahansa dataa – myös suoritettavaa ohjelmakoodia. Ethereum voidaan mieltää siis myös virtuaalikoneeksi, joka suorittaa sille toteutettuja ohjelmia. Ethereum sovellukset implementoidaan tähän käyttöön optimoidulla ohjelmointikielellä nimeltä Solidity. Saimme siis vielä yhden määritelmän lisää, Ethereum on myös ohjelmistokehitysalusta.
Lohkoketjualustan mahdollisuudet
Minkälaisia liiketoimintamahdollisuuksia Ethereum tai jokin muu vastaava lohkoketjualusta sitten mahdollistaa? Tämä on se kysymys, jota liikeyritykset ympäri maailman pohtivat tuodakseen lohkoketjun pelkästä hakusanasta osaksi kannattavaa liiketoimintaa. Ethereumin ohjelmoitavuudesta johtuen sen päälle voidaan toteuttaa ns. älykkäitä sopimuksia. Mietitäänpä tätä hieman laajemmin. Esimerkiksi se, että työskentelen konsulttina Q-Factorylla on sopimus. Palkkani ja työsuhteeni ehdot on määritelty tietenkin työ- ja työehtosopimuksissa. Minä itse sekä puolestaan yrityksemme hallinto vastaa siitä, että kyseisiä sopimuksia noudatetaan. Itse asiassa myös koko yritys on vain kasa sopimuksia. Mitään käsinkosketeltavaa fyysisessä olomuodossa olevaa yritystähän ei ole olemassa. Tietysti esimerkiksi yrityksen toimitilat ovat oikeita fyysisiä paikkoja, joissa voimme vierailla, mutta niidenkin käyttö perustuu sopimuksiin. Yritys on siis pelkistettynä sopimuksin määritelty kokonaisuus, joka mahdollistaa ihmisten välisen yhteistyön yhteisten tavoitteiden saavuttamiseksi. Katsomalla tätä suuremmassa mittakaavassa voimme helposti ymmärtää, että kaikki yhteiskunnallinen ja liiketaloudellinen toiminta on vain joukko sopimuksia, joiden noudattamista mm. lainoppineet, viranomaiset, hallintohenkilöstö ja esimiehet valvovat.
Meillä on siis uskomaton määrä erilaisia toimintaamme ohjaavia tai rajoittavia sopimuksia ja uskomatonta kyllä, valtaosa niistä on paperisessa muodossa, hyväksyttyinä kuulakärkikynän signeerauksilla ja muilla hyvin epäluotettavilla tavoilla. Toki suurin osa näistä sopimuksista on nykypäivänä joko skannattu digitaaliseen muotoon tai alun perinkin laadittu vaikkapa Word-tiedostoina. Tämä ei kuitenkaan tee niistä käytännössä sen parempia kuin paperisista sopimuksista. Meillä ei myöskään ole mitään universaalia tapaa tallettaa sopimuksia. Niitä säilötään mihin milloinkin ja mikään ei estä esimerkiksi Word-muotoisen sopimuksen peukalointia jälkikäteen.
Palataan tässä vaiheessa Ethereumiin, joka siis tarjoaa toiminnallisuuden tallettaa ohjelmakoodia sisältävä sopimus luotettavasti lohkoketjun säilytettäväksi ja ajettavaksi. Älykkään sopimuksen avulla voisimme toteuttaa esimerkiksi älyrahan, jolloin vaikkapa hyväntekeväisyyskampanjat voitaisiin kirjoittaa päteviksi älykkäiksi sopimuksiksi. Tällöin rahan lahjoittaja voisi olla varma siitä, että raha oikeasti ohjautuu oikeaan käyttötarkoitukseensa. Myönnetty toimeentulotuki voisi olla älykäs sopimus, joka sallisi rahansiirron vain sallittuihin tarkoituksiin kuten ruoan ostaminen ja vuokranmaksu. Esimerkkejä voisi listata loputtomiin.
Perustana luottamus
Lohkoketjuihin liittyvä kritiikki pohjaa usein varsin epäolennaisiin seikkoihin tai väitteisiin, jotka syntyvät tiedonpuutteesta, uutuudenpelosta ja kuvitelmista. Eräs klassikkoväite on Bitcoinin soveltuvuus lähinnä huumekauppaan ja muuhun laittomaan toimintaan. Kaikki Bitcoin-siirrot tallettuvat kuitenkin sen lohkoketjuun, joten kyseenalaiset transaktiot on helpompi selvittää kuin rahan liikkuessa perinteisin keinoin. Paljon uutisoidaan myös lohkoketjujen suuresta sähkönkulutuksesta. Kehitys kuitenkin kehittyy ja esimerkiksi Ethereum on siirtymässä perinteisestä louhinnasta kohti energiatehokkaamman PoS (Proof-of-Stake) algoritmin hyödyntämistä. Kritiikkiä kohdistuu usein myös lohkoketjun hitauteen. Koska lohkoketju on lähtökohtaisesti hajautettu järjestelmä, ei se koskaan voikaan olla nopeampi kuin keskitetty tekninen toteutus, johtuen esimerkiksi tiedonsiirtoviipeistä (eli loppuviimein tämän määrittelevät fysiikan lait).
Lohkoketju ei siis ole supertietokone siksi, että se suorittaisi transaktioita nopeammin kuin perinteiset ratkaisut. Lohkoketjun erityisominaisuuksista johtuen se voi kuitenkin toimia luotettuna kolmantena osapuolena kahden tai useamman osapuolen transaktioissa kuten kaupankäynti. Tämä on lohkoketjun tosiasiallinen hyöty. Keskitetyt perinteiset pilvipalvelut tai tietokannat ovat aina niiden omistajien hallinnassa. Internet on hajautettu järjestelmä, jota massiivinen määrä käyttäjiä hyödyntää päivittäin. Entä jos Internet kokonaisuudessaan olisi yksittäisen tahon omistama ja hallinnoima (eli kyseessä olisi yksi suuri Intranet)? Tällöin kyseinen taho voisi nostaa palvelun hintoja milloin tahansa ja peukaloida kaikkea talletettua dataa mielivaltaisesti. Keskitetty Internet luultavasti olisi myös kovin epästabiili järjestelmä, koska kaikki ylläpito- ja vikakorjaustoimet olisivat vain yhden tahon vastuulla. Onkin melko lailla selvää, että tällainen järjestely ei käytännössä toimisi. Niin julkiset hyvin toteutetut lohkoketjut kuten Internetkin ovat kuitenkin hajautettuja järjestelmiä, joiden jatkuvaan toimintaan voimme luottaa pohtimatta asiaa sen pidemmälle. Tosin jotkut (kuten päähenkilö HBO:n hittisarjassa Silicon Valley) ovat sitä mieltä, että nykyinen Internetkin on liian keskitetty.
Havainnollisena esimerkkinä lohkoketjun hyödystä luotettuna kolmantena osapuolena toimii käytetyn auton kauppa yksityishenkilöiden kesken. Tällöinhän toisilleen tuntemattomat kauppakumppanit ovat perinteisen ongelman edessä – suoritetaanko ensin maksu ja sitten muutetaan auton omistajatiedot vai päinvastoin? Kun itse viimeksi myin käytetyn auton, kaupanteon apuna käytettiin Nettiauton sähköistä kauppakirjaa. Tämä toimikin mainiosti, sain autosta sovitun rahasumman ja ostaja pääsi lähtemään pihasta vanhalla Jaguarilla. Kaupankäyntiin liittyi silti riskejä tai puutteita, joita lohkoketjujärjestelmä voisi paikata. Kaupasta syntyneet asiakirjat ja muut tiedot tallentuivat Nettiauton palvelimille ja on hankala varmuudella tietää, kuinka kauan tietoja säilytetään ja miten niitä hyödynnetään. Tätä asiaahan emme voi edes teoriassa tietää minkään käyttämämme palvelun osalta, mikäli sen lähdekoodi ja konfiguraatio ei ole julkista tietoa. Yksittäisen tahon hallinnoima palvelin ei myöskään ole maailmanlaajuiseen hajautettuun lohkoketjujärjestelmään verrattavissa oleva arkistointijärjestelmä. Lisäksi kauppa eteni usean vaiheen kautta ja sisälsi jonkin verran odottelua, jotta tiedot päivittyvät eri järjestelmien välillä. Jouduimme tietenkin luottamaan siihen, ettei kauppa jämähdä virheilmoituksen kera johonkin välivaiheeseen. Lohkoketjussa ajettavalla älykkäällä sopimuksella toteutusta voitaisiin virtaviivaistaa. Tärkein ero on kuitenkin se, että Nettiauton sähköistä kauppakirjaa voi käyttää vain ajoneuvon myyntiin. Lohkoketjun älykkäisiin sopimuksiin voidaan ohjelmoida mitä vain, eikä luotettavaa taustajärjestelmää tarvitse erikseen suunnitella, toteuttaa, konfiguroida ja hallinnoida. Tällöin myös luotettavien kaupantekosovellusten toteutus lohkoketjun päälle on erittäin kustannustehokasta.
Kiteytettynä hyödyntäessämme lohkoketjua, kohdistamme merkittävän osan luottamuksestamme sen tarjoamiin tunnettuihin mekanismeihin. Sen sijaan suurin osa nykyisin käyttämistämme palveluista perustuu suljettuihin toteutuksiin, joiden todellinen toiminnallisuus ei ole julkista tietoa. Koska sopimukset eivät ole älykkäitä, todellinen toiminta voi erota kirjoitetusta tekstistä huomattavasti. Silloin joudumme luottamaan lähinnä palveluntarjoajan, kaupan välittäjän tai muun vastaavan ulkopuolisen tahon lupaukseen, jonka mukaan he esimerkiksi käsittelevät keräämiään käyttäjätietoja käyttöehtosopimuksen mukaisesti.
Lohkoketjun sovellukset – meillä ja maailmalla
Ymmärrettyämme lohkoketjujärjestelmien vahvuudet, lisää sovelluskohteita onkin varsin helppo keksiä. Sekä lohkoketjualustojen että niiden sovellusten kehitys etenee jatkuvasti. Alla on listattu joitakin mielenkiintoisia lohkoketjuihin perustuvia projekteja:
Volkswagen konserni: Autojen valmistusmateriaalien jäljitettävyys lohkoketjun avulla
JP Morgan: Suurpankin Ethereum-pohjainen Quorum-järjestelmä erityisesti yritysten sisäisiin tarpeisiin
Brasilian hallitus: Monia käyttökohteita, mm. maanomistusten ja kansalaisaloitteiden kirjaus lohkoketjuun, sekä väärennösten ehkäisy äänestyksissä ja allekirjoituksissa
Brave-selain (tätä itsekin käytän): Nopea tietoturvaan panostava selain, käyttäjän mahdollista tienata salliessaan yksityisyyttä kunnioittavien mainosten näyttämisen
Visa: Oman kryptovaluutan tai uuden maksujärjestelmän toteutus lohkoketjun päälle
OpenLaw: Älykkäitä sopimuksia, joiden laatimisessa ei tarvita koodaustaitoja
Lisäksi Ethereumilla on oma standardointiorganisaationsa: Enterprise Ethereum Alliance, johon kuuluu liuta tunnettuja yrityksiä kuten Banco Santander, Ernst & Young, Intel, Microsoft ja VMware. Vaikka osa yrityksistä olisi liittynyt EEA:han vain “varmuuden vuoksi”, yritysmaailman viesti on selkeä ja hyvin kuuluva. Lohkoketjujen mahdollisuudet kiinnostavat ja suuryritykset haluavat sen myös julkisesti ilmaista.
Erityismaininnan ansaitsee vielä kotimainen Prasos Oy, joka tarjoaa Coinmotion-palvelunsa kautta suomalaisille asiakkaille helpoimman tavan ostaa, myydä ja säilyttää yleisimpiä kryptovaluuttoja ja -poletteja turvallisesti.
Lohkoketjusovellusten testaus
Q-Factoryn keskeistä osaamista on asiakkaidensa auttaminen testiautomaation ja ohjelmistorobotiikan toteutuksessa. Älykkäät sopimuksethan ovat ohjelmistorobotiikkaa puhtaimmillaan ja niiden testauksessa tietenkin testiautomaatio on avainasemassa. Älykkäät sopimukset sinänsä eivät sisällä käyttöliittymää (toki niiden päälle voidaan rakentaa minkälaisia käyttöliittymiä tahansa), jolloin automatisoidun API-testauksen määrä korostuu. Älykäs sopimus on todennäköisesti testattavan järjestelmän kriittisin palikka, poikkeustilanteita testattavaksi on paljon ja testikattavuuden on oltava riittävä.
Älykkäät sopimukset itse asiassa palvelevat samaa tarkoitusta kuin DevOps-kuvioista tuttu “Infrastruktuuri koodina” -periaate. Periaatteen mukaisesti työläiden asennusohjeiden laatimisen sijaan ohjelmiston ajoympäristö kannattaa kuvata koodina, jolloin ympäristön pystytys saadaan automatisoitua. Tämä vähentää inhimillisten virheiden mahdollisuutta ja nostaa tehokkuutta. Korvaamalla perinteisiä sopimuksia älykkäillä sopimuksilla (eli ajettavalla koodilla) saavutetaan vastaavat edut.
Lohkoketjuteknologian käyttöönotto on muutos erityisesti liiketoimintaprosesseihin. Aivan kuten älypuhelin on muuttanut tapaamme kommunikoida odottamattomin tavoin (älypuhelinta käytetään nykyisin verrattain vähän varsinaisiin puheluihin), emme voi vielä tietää minkälaiset sovellukset nousevat lohkoketjumaailman hiteiksi. Lohkoketjuteknologia älykkäine sopimuksineen on osa edelleen kiihtyvää digitalisaatiotrendiä ja looginen jatko sille, mitä tähän mennessä on tehty. Olisihan sangen erikoista mikäli sopimusmaailma, tuo kaiken tekemisen perusta, ei teknisesti kehittyisi automaation edetessä yhteiskuntamme muilla osa-alueilla. Mitä tulevaisuus tuokin tullessaan, me Q-Factorylaiset haluamme pysyä kehityksen kärjessä ja autamme aina ilomielin tulevissa testaushaasteissa.
Lead Testing Consultant
Rami Juvonen
rami.juvonen@q-factory.fi