top of page

KRYPTOKEISARIT

Blogi: Welcome
Blogi: Blog2
  • Writer's pictureDiligence dude

Cardano

Updated: Mar 29, 2020


Lähteet: Cardano kotisivu, IOHK kotisivut ja Cardanon videoluennot.

Sisällys:

1. Cardanon perustiedot

2. Toiminnan periaatteet

3. Roadmap

4. Tekniset ratkaisut

5. Oma analyysi

Cardano on kryptoprojektina poikkeava, sillä sen ympärillä on poikkeuksellinen laaja tieteellinen ja akateeminen yhteisö. Jotain projektin laajuudesta kertoo että Cardanolla ei kirjoitus hetkellä ole tavanomaista whitepaperia, vaan 54 tieteellisen artikkelin kokoelma sisältäen tuhansia sivuja aiheeseen liittyvää matemaattista ja teoreettista pohdintaa. Kokonaiskuvan saaminen projektista on täten erityisen hankalaa ja olen aiemmin pitänyt Cardanoa sen verran työläänä, että olen aina siirtänyt siihen tutustumista myöhempään. Onneksi aiheesta on myös luentoja ja videomateriaalia mikä helpottaa tutustumista. Aiheen laajuuden vuoksi tämä teksti on kirjoitettu eri muotoon kuin aiemmat. Analyysi ja pohdinta kulkevat vuorotellen niin että pohdinta on kursivoituna tekstinä. Ennen kuin aloitetaan vielä tunnelman kohottamiseksi muutama sana: Cardano on kuin demonin riivaama lohkoketju tehdessään asioita, jotka alkuun tuntuvat arkijärjen vastaisilta ja mahdottomilta. Kuitenkin Cardanollakin on omat heikkoutensa, jotka selviävät vasta tarkemmassa arviossa. Katettavaa maaperää on paljon, joten isketään kiinni!

1. Cardanon perustiedot

Visio: Cardano pyrkii olemaan kolmannen sukupolven kryptovaluutta. Bitcoin on ajateltu ensimmäisen sukupolven kryptovaluutaksi, Ethereum on toisen sukupolven kryptovaluutta tuodessaan smart contract:it. Kolmas sukupolvi tarkoittaa Cardanon näkökulmasta sitä että kryptovaluutta on skaalautuva, yhteensopiva muiden kryptovaluuttojen kanssa ja kestävä (mm. energiakulutukseltaan).

Perustanut: Charles Hoskinson, joka on perustanut kolme kryptovaluuttoihin liittyvää start-up projektia: Invictus Innovations, Ethereum and IOHK. Lisäksi Hoskinson on toiminut monissa eri kryptovaluuttoihin liittyvissä tehtävissä eri organisaatioissa mm. Bitcoin järjestön opetus komiteassa. Hän perusti Hoskinson Cryptocurrency Research Group:n vuonna 2013. Tällä hetkellä Hoskinson johtaa tutkimusta, suunnittelua ja kehitystä Cardano projektissa.

Cardano lohkoketju käynnistyi syyskuussa 2017

Cardano foundation: voittoa tavoittelematon järjestö (noin 20 henkilöä)

Toimii Sveitsissä ja keskittyy kasvattamaan Cardanon ekosysteemiä. Pyrkii mm. tuomaan Cardanoa enemmän ihmisten ja yritysten käyttöön, muokkaamaan lainsäädäntöä ja kaupallisia standardeja kryptovaluuttojen kannalta järkeviksi, kasvattamaan Cardano yhteisöä, lisäämään yhteistyötahoja ja varmistamaan osakkaiden vastuullisuuden. Cardano foundation myös valvoo ja ohjaa Cardanon kehitystä ja vie kehitystä kohti käyttäjien ja yhteisön etua. Cardano Foundation on hallinnollisesti erillään IOHK:sta ja Emurgosta.

IOHK: voittoa tavoitteleva yritys (yli 70 henkilöä + ethereum classic työntekijät)

IOHK on perustettu 2015 Charles Hoskinsonin ja Jeremy Woodinin toimesta. Yritys kehittää kryptovaluuttoja ja lohkoketjuja akateemisille instituutioille, hallituksille ja yrityksille. Tällä hetkellä tärkeimmät projektit ovat Cardano ja Ethereum Classic. IOHK jakautuu pieniin työ ryhmiin ympäri maailmaa, jotka kehittävät ja testaavat uusia ideoita. Osa kehitystyöstä perustuu vapaalle julkaisulle, osa on voittoa tavoittelevaa. IOHK:n visiona on yhdistää lukuisia hajallaan olevia yhteiskunnan eri järjestelmiä paremmin toistensa kanssa keskusteleviksi järjestelmiksi. Cardano:n tavoitteena on toimia kerroksena joka yhdistää mm. pankkimaailman, kryptovaluutat, yritysmaailman ja kuluttajat joustavasti toisiinsa. (Esim. nykyään pankit eivät keskustele mielellään kryptovaluuttojen kanssa sillä niitä sitoo monet lainsäädännön vaatimukset, tästä myöhemmin lisää).

Emurgo

Emurgo kehittää, tukee ja auttaa muita kaupallisia projekteja, jotka haluavat hyödyntää Cardanon hajautettua lohkoketjua. Emurgo keskittyy ennen kaikkea rahoittamiseen ja rahoittaa kahdella tapaa: suorilla rahoituksilla start-up yrityksille ja kehittämällä kaupallisia yhteistyötahoja jotka haluavat hyödyntää lohkokotjua liikeideassaan. Emurgolla on tutkimus- ja kehitys keskuksia mm. Filippiineillä, Etelä-Koreassa ja Vietnamissa ja pääkonttori Japanissa. Ensimmäisessä vaiheessa Emurgo pyrkii rakentamaan verkoston, minkä avulla rahoitetettavat tahot löydetään ja arvioidaan.

Cardano projekti nojaa siis vahvasti IOHK:n joka on voittoa tavoitteleva yritys. Huomion arvoista on että mikäli protokolla pyrkii standardiksi, on ongelmallista mikäli standardia kehittää yksittäinen voittoa tavoitteleva taho. Yritysten on riskialttiimpaa rakentaa toimintaansa toisen voittoa tavoittelevan yrityksen tuotteen päälle, kuin vapaan standardin (kuten internettin tpc/ip, tai vaikka android) päälle. Toisaalta Cardanon roadmapissa on suunnitelma, miten Cardano projekti itsenäistyy IOHK:n hallinnasta. Tästäkin myöhemmin lisää.

Daedalus wallet on Cardanon lompakko

Ada:n omistus ja projektin rahoitus:

Cardanon token on ADA. Tällä hetkellä kierrossa on 25 927 miljoonaa ADA tokenia (Coinmarketcap.com). Tällä hetkellä transaktion fee ”poltetaan” eli token kuluu ja kierrossa olevien ADA tokenien osuus vähenee. ADA tokenien maksimimäärä on 45 000 miljoonaa. Alussa Ada tokeneita jaettiin IOHK:lle, Emurgolle, ja Caradano järjestölle, sekä myytiin sijoittajille yhteensä 31 miljardia kappaletta. Loput Ada tokeneista luodaan tulevaisuudessa (ilmeisesti niille jotka osallistuvat protokollan ylläpitoon).

Tulevaisuudessa perustetaan rahasto, jota hallinnoidaan käyttäjien toimesta demokraattisella äänestyksellä omistussuhteiden mukaisesti. Rahasto saa varansa transaktiomaksuista otetusta osuudesta sekä luoduista uusista tokeneista. Tarkempaa tietoa siitä kuinka suuri osuus maksuista ja luoduista tokeneista ohjataan rahastoon ei ole tietoa.


2. Toiminnan periaatteet

Cardano projekti lähestyy ongelmia tieteellisestä näkökulmasta ja lähtökohtaisesti jokainen ratkaisuehdotus kehitetään tieteellisen vertaisarvioidun artikkelin kautta. Cardano tuo myös high-assurance code ajatuksen kryptovaluuttoihin. Tämä tarkoittaa että myös koodi pystytään matemaattisesti analysoimaan ja osoittamaan että se toimii luotettavasti. High-assurance code periaatteita käytetään monissa järjestelmissä, joissa turvallisuus on kriittinen tekijä (ydinvoimalat, NASA, puolustusvoimat, etc.)

Cardano projekti ei lähtenyt liikkeelle whitepaperista, vaan yhteisesti sovituista periaatteista joiden varaan tutkimustyö rakennettiin. Näitä ovat mm. seuraavat:

Kirjanpidon ja laskennan jako eri kerroksiin (= rahan siirto kerros ja smart contract kerros)

Ydin komponenttien suunnittelu modulaarisesti ja funktionaalisella ohjelmointikielellä

Kehitys tapahtuu pienissä kehittäjien ja akateemisten tutkijoiden ryhmissä jotka kilpailevat vertaisarvioiduilla tutkimusratkaisuilla

Käytetään paljon poikkitieteellisiä ryhmiä, mm. tietoturva-ammattilaisia

Pyritään nopeisiin kehityssykleihin tieteellisten artikkeleiden, käytännön soveltamisen ja uuden tutkimuksen suhteen, jotta kyetään havaitsemaan ja korjaamaan huomatut virheet. (minimum viable product)

Kehitetään tapa päivittää jo julkaistuja systeemeitä rikkomatta verkkoa (= estetään hard fork)

Kehitetään hajautetusti hallinnoitu rahoitusjärjestelmä tulevaisuuden työn rahoituksen turvaamiseksi.

Pitkällä tähtäimellä pyritään kehittämään kryptovaluuttoja niin että ne toimivat kannettavilla laitteilla ja hyvällä sekä turvallisella käyttöliittymällä

Otetaan valuutan omistajat mukaan valuutan ylläpitoon ja hajautetun alustan pyörittämiseen (PoS)

Huomioidaan tarve säilyttää samassa alustassa useita ei kryptovaluuttoja

Mahdollistetaan metadatan sisällyttäminen transaktioihin

Opitaan muiden valuutoiden toimivista ratkaisuista

Käytetään samoja periaatteita lopullisen protokollan kehityksessä kuin IETF (Internet Engineering Task Force = Internet-protokollien standardisaatiosta vastaava järjestö). Käytännössä kirjoitetaan spesifikaatio, jossa määritellään tarkasti suunnitelma protokollasta. Spesifikaatio käy läpi useita iteraatioita ja arvioita käyttäjien, yhteistyötahojen ja muiden ulkopuolisten tahojen toimesta samalla kun suunnitelmaa testataan käytännössä. Lopulta saavutetaan standardi, jonka kehityksessä kaikki eri toimijat on huomioitu.

Yritetään löytää tasapaino lainsäätäjien vaatimusten ja hajautettujen valuuttojen mahdollistamien etujen välillä

Näiden ajatusten pohjalta lähdettiin rakentamaan Cardano projektia IOHK:n ohjaamana. Tuloksena tällä hetkellä on mm. kattava kokoelma tieteellisiä artikkeleita, kyselyitä, ja teknisiä suunnitelmia ja Cardano kryptovaluutta.

Näitä periaatteita on mukava lukea ja on edistyksellistä ettei lähdetä liikkeelle suoraan whitepaperista. Samoja periaatteita ovat alkaneet hyödyntämään muutkin projektit osittain, mutta tästä huolimatta nämä periaatteet ovat Cardano projektin selviä vahvuuksia ja myös syy sille että tieteelliset tahot ovat olleet Cardanosta selvästi kiinnostuineita. IOHK ohjaa kehitystä ja antaa mahdollisuuden eri puolella maailmaa toimivien tieteellisten ryhmien tuoda panosta projektiin, rajoittamatta kuitenkaan liikaa niiden määräysvaltaa omista tutkimuksen kohteistaan. Modulaarisuus ja laskentakerroksen eriyttäminen kirjanpidollisesta kerroksesta, ovat periaatteita joita pidän hyvinkin oleellisina ja hyvinä kehityspäätöksinä. Cardano ottaa myös huomioon tulevaisuuden rahoituksen loppumisen ja hard fork:in uhan. Funktionaalisen ohjelmointikielen käyttö on Cardanon yksi erikoisuus (tosin lähiaikoina on tulossa sekä Haskell (funktionaalinen kieli) että Rust (ei funktionaalinen kieli) versiot koodista). Funktionaalinen kieli tarkoittaa ohjelmointikieltä joka käsittelee laskuja matemaattisina funktioina, eikä siinä ole käsitettä tilasta tai sen muutoksesta. Esimerkiksi loop-käskyjä ei ole käytössä. Ohjelmointikieli on monesti yksinkertaisempi suunnitella ja toteuttaa.

Cardanon ratkaisu jakautuu kolmeen suureen teemaan:

1. Skaalautuvuus

2. Yhteensopivuus

3. Kestävyys

Skaalautuvuus

Skaalautuvuus vaatii riittävän suurta TPS nopeutta (transactions per second), kaistalaajuutta ja datan säilytyksen skaalautuvuutta

1. TPS nopeus

Cardanon Ouroboros konsensusalgoritmi on ensimmäinen tieteellisesti turvalliseksi todistettu PoS (proof of stake) algoritmi. Ouroboros perustuu lohkoketjuun. Samoin kuin Bitcoinissa yksittäinen node pääsee Ouroboroksessa lisäämään satunnaisuuteen pohjautuvan valinnan perusteella uuden lohkon ketjuun. Bitcoinissa lohkon pääsee lisäämään node, joka ensimmäisenä ratkaisee kohtalaisen vaikean laskutehtävän (proof of work). Cardanossa protokolla arpoo vuorotellen käyttäjän lisäämään uuden lohkon, ja yksittäisen noden todennäköisyys tulla valituksi riippuu noden omistaman valuutan arvosta (PoS). Ouroboros on modulaarinen, ja rakennettu niin että algoritmia on tulevaisuudessa kohtalaisen helppo päivittää kehitystyön edetessä.

PoS pohjalle rakennettu lohkoketju vaatii huomattavasti vähemmän energiaa ja laskentatehoa, kuin PoW periaatteiden mukaan rakennettu lohkoketju. Tämä luo mahdolliseksi myös useamman lohkoketjun pyörittämisen rinnakkain kohtalaisen pienellä energiamäärällä. Yksittäinen node voi siis olla mukana useammassa lohkoketjussa. Kun lisäksi tehdään järjestelmä, jossa arvoa voidaan siirtää lohkoketjusta toiseen, voidaan saada selvästi lisää TPS nopeutta jakamalla verkon kuormitusta useammalle toistensa kanssa keskustelevalle lohkoketjulle. Ouroboros täyttää kovat turvallisuusstandardit ja lisäksi jatkossa tavoitteena on myös kehittää järjestelmästä kvanttitietokoneille resistentti. Haskell ohjelmoinitikielellä ja Psi Calculus standardilla luodaan entisestään turvallisuutta protokollalle. (Psi Calculus laajennettu versio Pi Calculuksesta/ π-Calculus)

Netistä kopioitua: "The π-calculus is simple, it has few terms and so is a small, yet expressive language. Functional programs can be encoded into the π-calculus, and the encoding emphasises the dialogue nature of computation, drawing connections with game semantics.)“

Eli ilmeisesti Psi Calculus on yksinkertainen kieli, ja sillä pyritään huomaamaan helpommin ohjelmointivirheitä.

2. Bandwith

Visiossaan Cardano ottaa kantaa RINA (Recursive Internetwork Architecture) projektiin, joka on Cardanon ulkopuolinen vuonna 2008 aloitettu projekti. RINA on TPC/IP arkkitehtuurin kaltainen, mutta sen ainakin osittaiseksi korvaajaksi suunniteltu tiedonsiirto arkkitehtuuri. Yksinkertaistetuksi lähes kaikki verkkossa tapahtuva tiedonsiirto perustuu TPC/IP protokollaan ja se määrittää miten tieto verkossa kulkee ja kommunikoi. Internettiä on rakennettu hiljalleen ja aina paikattu virheitä joita on huomattu. Nykyinen internet on hyvin kaukana siitä mistä internet sai alkunsa. RINA on myöhemmin kehitetty protokolla joka pyrkii ratkaisemaan TPC/IP protokollaan ajan saatossa syntyneitä valuvikoja. Sillä ei ole mitään suoraa yhteytta Cardanoon, mutta Cardano aikoo ilmeisesti hyödyntää RINA:a, mikäli se yleistyy. Muissa kryptoprojekteissa en ole törmännyt kannanottoon tulevaisuuden verkkoarkkitehtuurin ratkaisuista.

3. Datan säilytyksen skaalautuvuus

Tämä kohta on vielä tutkimuksen alla. Mitä pidemmäksi lohkoketju muodostuu sen enemmän levytilaa se vie. Pohdittuja ratkaisumalleja on mm. pruning (ei välttämätöntä dataa sisältävän historian poistaminen), compression (datan tiivistäminen), partitioning (node säilyttää vain osan ketjusta, mutta useamman noden data yhdessä muodostaa koko ketjun), sekä sidechains (kuormitus jaetaan useammalle ketjulle jotka keskustelevat keskenään). Nodejen tallennuskapasiteetti on vielä tällä hetkellä hyvä verrattuna lohkoketjun kokoon, joten tämän kohdan ratkaisemista ei pidetä Cardanon kehitystiimin osalta yhtä kiireellisenä kuin kahden edellisen.

Yhteensopivuus

Cardano pyrkii toimimaan yhdistävänä kerroksena kryptovaluuttojen ja perinteisen rahoitussektorin kanssa. Tavoitteena on siis siirtää arvoa systeemien välillä (vrt. kryptopörssit). Tavoitteena on myös tulla yleiseksi standardiksi. Ongelmana erityisesti rahoitussektorin kanssa toimiessa on, että mikäli transaktioihin ei liity metadataa, perinteisen rahoitussektorin edustajat eivät useinkaan hyväksy siirrettyjä varoja ilman monimutkaisia perusteluita. Pankkia koskee tiukka lainsäädäntö mm. rahanpesun ja terrorismin ennaltaehkäisyn suhteen, ja pankin on tärkeää tietää mistä rahat ovat tulleet ja ketkä ovat toimijan asiakkaat. Cardano pyrkii ratkaisemaan asian seuraavalla tavalla:

1. Sidechains – Cardano pyrkii luomaan järjestelmän jossa esimerkiksi Ethereitä tai Bitcoineja pystyy tallentamaan myös Cardanon lohkoketjuun. Jotta tällainen teknologinen ratkaisu olisi mahdollista, tulisi lohkoketjun kyetä seuraamaan toista ketjua varmistaakseen tokenin siirron tapahtuvan asianmukaisesti. Kuitenkin kokonainen lohkoketju vaatii valtavasti tilaa, joten Cardanon tutkimusryhmä on luonut tapoja tiivistää olennainen tieto lohkoketjusta. Tällöin todistus siitä että token todella siirtyi aidosta lohkoketjusta voidaan tallentaa myös kohdeketjuun. Kts. yst. tarkemmin kohta: Sidechains

2. Jotta lohkoketju voisi keskustella perinteisen rahoitussektorin kanssa, tulee transaktiossa olla riittävä metadata, mikä todistaa transaktionin alkuperän riittävällä tarkkuudella. Metada on kuin tarina transaktionin taustalla. Kuitenkin metadata ei saisi paljastaa liikaa aiemmasta käyttäjästä ja metadatan antamisen tulisi pohjata vapaaehtoisuuteen. Metadataan liittyy oleellisena osana kysymys identiteetistä. Tarvitaan tapa jolla rahaa käyttävät tahot voivat todistaa identiteettinsä, paljastamatta kuitenkaan muuta kuin välttämättömän tiedon, ja senkin vain halutulle taholle. Metadatan käyttö tulisi siis olla räätälöityä ja vapaaehtoista. Tähän liittyy myös tutkimus salaukseen käytetyistä hardware ratkaisuista, menetelmistä joilla varmistetaan informaation tuhoutuminen sen käytön jälkeen, geo-tagging etc. (näitä esimerkkejä ei ollut tarkemmin määritelty)


Cardano ottaa erityisen huomion kohteeksi yhteensopivuuden ongelman. Vaikka esim. sidechain on pidempään tunnettu ajatus kryptomaailmassa, yhteensopivuus on selvästi yksi osa-alue johon Cardano panostaa ja jossa se on vahvoilla. Cardanon visiossa pankki voi vaikka perustaa oman keskitetyn lohkoketjun ja vastaanottaa niin Ethereumia, Ada:a kuin muitankin valuuttoja Cardanon toimiessa välittäjänä. Pankki voi myös määritellä automaattiset kriteerit haluamansa metadatan suhteen ja siirtää lohkoketjuunsa vain transaktionit jotka sisältävät riittävän metadatan. Näin voidaan automatisoida asiakkaan tunnistaminen (=KYC) ja muita työläitä prosesseja.


Kestävyys

Tämä kysymys jakautuu kahteen haaraan: Ensimmäinen kysymys on: miten rahoitus turvataan? Esimerkiksi yritysten sponsoroimissa projekteissa ongelmana voi olla muutaman yrityksen suuri valta projektiin. ICO on vain väliaikainen rahoitusratkaisu.

Cardanon pyrkii ratkaisemaan tulevaisuuden rahoituksen perustamalla hajautetun rahaston joka saa rahoituksensa itse protokollan kautta. Tulevaisuudessa osa transaktiomaksuista siirtyy rahastoon millä rahoitetaan protokollan kehitystä. Mielenkiintoista rahastossa on että Cardano pyrkii luomaan demokraattisen mallin, missä tokenin omistajat voivat äänestämällä ratkaista mihin rahaston varat käytetään. Tässä pyritään hyödyntämän mm. liquid democracy mallia, jossa äänivallan voi delegoida joustavasti toiselle. Rahasto mahdollistaa rahoituksen hakemisen Cardanoon liittyvään projektiin jolloin tokenin omistajat päättävät (omistussuhteiden mukaan) mitä projektia rahoitetaan.

Mikäli siis haluaa tehdä kryptovaluuttoihin liittyvää tutkimusta, ei välttämättä tarvitse perustaa omaa tokenia ja tehdä ICO, vaan voi hakea rahoitusta Cardanolta (mikäli tutkimusaihe arvioidaan tukevan Cardanon visiota). Tällainen rahasto vaatii kuitenkin äänestysjärjestelmän, kannustinmekanismit äänestämiselle, sekä sopivan käyttöliittymän (wallet) ja järjestelmän kehitys on vasta alkuvaiseessa.

Toinen kysymys on: mihin suuntaan projektin kehitystä jatkossa ohjataan? Usein kryptovaluutoissa hajautettu järjestelmä saa aikaan, että kiistat projektin suuntaviivoista aiheuttavat herkästi soft- ja hardforktilanteita. (Soft fork = on protokollan muutos, jossa ainoastaan aiemmin hyväksyttyjä transaktioita todetaan sääntöjen vastaisiksi uudessa versiossa, ei toisinpäin. Toisin sanoen vanha versio ohjelmasta hyväksyy uudet transaktionit, mutta uusi versio ei hyväksy vanhojen sääntöjen mukaan luotuja transaktioita. Hard fork jakaa ohjelman kahteen haaraan jotka eivät enää keskustele keskenään.)

Cardano pyrkii ratkaisemaan ongelman ottaen mallia perustuslain toiminnasta. Ajatuksena on tehdä protokollan muutoksesta hidas ja hienovarainen prosessi. Ensimmäinen versio järjestelmästä on irtikytketty itse Cardano protokollasta (eli järjestelmä ei suoraan päivitä koodiaan). Aluksi tavoitteena on käyttää Cardano protokollaa hyödyksi, niin että sen avulla voidaan äänestää uusista ehdotuksista (tokenin omistussuhteiden mukaisesti), ja mikäli riittävä enemmistä hyväksyy ehdotuksen, se päivitetään Cardano protokollaan (esim. IOHK toimiessa vetäjänä). Jatkossa tarkoitus on kehittää järjestelmä, jossa järjestelmä kykenee itse ymmärtämään ehdotuksia ja omaa rakennettaan, niin että se voi vahvistaa käyttääkö taho protokollaa vai ei. Päivitysten hyväksyminen voitaisiin jatkossa siis mahdollisesti myös automatisoida. Ensimmäinen askel tässä, on luoda muodollinen vahvistus smart contracteille.

Cardanolla on siis jatkossa suunnitelmana tehdä protokollasta itsenäinen toimija, ja häivyttää IOHK:n osuus protokollan kehittäjänä ja hallinnoijana. Tällöin vastuu protokollasta siirtyy asteittain tokenin omistajille.

Tämä on virallinen visio projektin kehityksestä. Projektin rahoitus vaikuttaa olevan vahvoissa kantimissa, toisaalta esimerkiksi skaalautuvuusratkaisuissa ei puhuta perinteisestä shardingista juurikaan, mikä on minun käsityksen mukaan edellytys todellisille skaalautuvuudelle. Rahastomalli on mielenkiintoinen, ja liquid democracy on viime aikoina pintaan noussut ajattelutapa demokraattisen järjestelmän seuraavasta askeleesta. Toisaalta voi myös kyynisesti kysyä kuinka suuri motivaatio IOHK:lla on luopua projektistaan, mihin on satsannut niin valtavasti aikaa ja rahaa mikäli projekti lyö läpi. Cardano on projektina ottanut vakavasti fork uhan, ja kehittänyt monia mekanismeja niiden ehkäisemiseksi. Tämä on vahva plussa visiossa.

3. Roadmap

Cardano jakaa kehityssuunitelmansa viiteen eri osa-alueeseen (era), joita työstetään osin päällekkäin:


Byron

Byron alkoi syyskuussa 2017 kun Cardano julkistettiin. Tässä vaiheessa lohkoketjun lohkoja luovat nodet ovat vielä IOHK:n hallinnassa. Protokolla on siis alussa keskitetty ja Ouroboros protokollasta on käytössä prototyyppi. Byron vaiheessa on mahdollista ostaa ja myydä Ada tokenia. Lisäksi kehitettiin Daedalus lompakko, jolla varoja hallita.

Shelley – tavoite oli 2019 loppuun mennessä

Siirtyminen Byron vaiheesta Shelley vaiheeseen tapahtuu pienin askelin ja pehmeästi. Shelley vaiheen tavoitteena on siirtyä protokollaan joka on hajautettu. Shelley vaiheen lopussa tavoitteena on että suuri osa lohkoja luovista nodeista on muiden, kuin IOHK:n hallinnassa. Lisäksi tässä vaiheessa luodaan myös mekanismi, jolla oman lohkon luontioikeuden pystyy siirtämään toiselle taholle (ns. stake pools).

Goguen – 2020 alussa

Goguen vaihe tuo järjestelmään smart contract:it ja näiden avulla Goguen vaiheessa on mahdollista luoda DApps:eja. Cardanon smat contractit ohjelmoidaan Plutus kielellä. Plutus on Haskell-kieleen perustuva hyvin yksinkertainen funktionaalinen ohjelmointikieli. Plutus kielellä pyritään vähentämään smart contract:eihin liittyviä ohjelmointivirheitä.

Toinen käyttöön tuleva ohjelmointikieli on Marlowe. Tämä on korkean tason kieli taloudellisten smart contractien luomista varten. Kieli on domain-specific language (DSL), ja pohjaa Plutukseen. DSL tarkoittaa ohjelmointikieltä, joka on kehitetty nimenomaan tiettyä kapeahkoa käyttötarkoitusta varten (financial smart contracts). Marlowen tavoitteena on helpottaa smart contractien luomista niille, jotka eivät ole tutustuneet funktionaaliseen ohjelmointiin tai omaa muutoin laajaa kokemusta smart contracteista.

Muita Goguen vaiheen tavoitteita on mm. mahdollistaa muiden tokeneiden siirto Cardano protokollaan. Tämä mahdollistaa käyttäjille myös omien tokeneiden luomisen ja monien fyysisten asioiden ”tokenisaation”. Kun Cardano protokolla hyväksyy myös muita kuin tokeneita kuin Ada:a on mahdollista luoda smart contracteja, jotka käsittelevät useampia eri kryptovaluuttoja.

Basho – 2020 loppuvuodesta

Basko vaihe keskittyy optimointiin, skaalautuvuuteen ja yhteensopivuuteen. Sivuketjut on suunniteltu Basho vaiheeseen. Tässä kohti roadmap mainitsee sivuketjujen käytön sharding-ratkaisuun, vaikka sharding-ratkaisusta en muutoin löytänyt tietoa projektiin tutustuessa.

Vaikuttaa että sharding-termiä käytetään tässä yhteydessä aika liberaalisti.

Sivuketjut kuitenkin mahdollistavat useamman eri tyylisen lohkoketjun yhdistämisen (esim. UTXO-pohjaisen ja account-pohjaisen järjestelmän). Kts. yst. tarkemmin sivuketjut osuus.

Voltaire – 2020 loppuun mennessä

Tässä vaiheessa otetaan käyttöön äänestys ja rahastojärjestelmät. Käyttäjät voivat käyttää äänivaltaansa vaikuttaakseen protokollan tulevaisuuden kehitykseen. Tässä kohti myös pieni osa transaktiomaksuista siirtyy yhteiseen rahastoon.

Nykytilanne: Tällä hetkellä ollaan siirtymässä Shelley vaiheeseen.

Olematta liian skeptinen, arvioisin että roadmap ei aikataulullisesti tule todennäköisesti pitämään. Tällä hetkellä Cardanolla on tarkat suunnitelmat lähinnä Shelley vaiheeseen siirtymisen suhteen, ja muiden osuuksien kohdilla rakennetaan vielä riittävää teoriapohjaa. Äärimmäisen tiukan turvallisuustason ja huolella analysoidun koodin omaavaa kryptojärjestelmää ei tutkita, kehitetä, testata, ja oteta käyttöön yhdeksän kuukauden aikana. Ei varsinkaan, mikäli noin moni osa-alue on vielä suunnitelmankin osalta vajaa. Kuitenkin tällainen epärealistinen roadmap on kryptomaailmassa enemmänkin sääntö kuin poikkeus, ja Cardano projekti on edennyt moneen muuhun projektiin nähden hyvin. Muutamissa arvostelussa se on jopa valittu aktiivisimmin kehitetyksi kryptoprojektiksi. Uusia tutkimusjulkaisuja on tullut tiheään ja nyt myös koodaus puolella on alkanut tapahtua. Oma heitto voisi olla että roadmap on ennemminkin 3+ vuoden suunnitelma nykyisellä tahdilla. Tämä ei kuitenkaan siis ole mitenkään erityisen huono tilanne, ottaen huomioon projektin laajuus.

4. Tekniset ratkaisut

Kryptovaluuttojen kilpailu on lopulta teknologisten ratkaisujen taistelua ja siinä Cardanoa ei voi suoralta kädeltä tyrmätä. Monet ratkaisut ovat todella ovelia ja tehokkaitakin. Tämä on kirjoituksen ydin kohta, ja sen vuoksi pureudun asiaan hieman huolellisemmin kuin muihin.

Ouroboros

Ouroboros viittaa käärmeeseen joka syö omaa häntäänsä. Ouroboros nimi tulee Kreikasta, mutta se esiintyi ensimmäisen kerran Egyptiläisissä teksteissä noin -1400 eaa. Ouroboros viittaa Cardanon konsensusmekanismissa sen syklisyyteen.


Ouroboros konsensus mekanismista on kehitetty lukuisia eri versioita, mutta kolmea niistä aiotaan tällä hetkellä hyödyntää. Ouroboros Classic on tämän hetkinen versio protokollasta, mutta tällä hetkellä protokolla on täysin keskitetty ja kaikki transaktioita validoivat (=lohkoja luovat) nodet ovat IOHK:n tai sen kumppaneiden hallinassa. Tavoitteena siirtyä täysin hajautettuun Ouroboros Genesis protokollaan, jossa päätäntävalta on jaettu käyttäjille sen mukaisesti miten Cardanon tokenit jakautuvat (PoS). Välimuotona on Ouroboros BFT, joka on yksinkertainen protokolla ja tätä käytetään väliversiona kahden eri protokollan siirtymisessä. Tämä helpottaa koodikirjastojen uudelleen kirjoitusta Ouroboros Genesistä varten sillä Ouroboros BFT on yksinkertaisena protokollana helposti yhdistetävissä eri koodikirjastoihin (sekä vanhaan että uuteen). Itsessään Ouroboros BFT ei soveltuisi lopulliseksi ratkaisuksi mm. skaalautuvuusongelmien vuoksi.

Ouroboros Classic

Ouroboros classic on lohkoketju mikä perustuu Proof of stake (PoS) algoritmiin. PoS mekanismissa äänestysvalta jaetaan käyttäjille tokenien omistussuhteiden mukaan. Itse lohkoketju toimii hyvin saman tyyppisesti esim. Bitcoinin kanssa, mutta konsensus perustuu siihen että vuorotellen järjestelmä arpoo yhden käyttäjistä luomaan uuden lohkon. Todennäköisyys tulla valituksi on suoraan verrannollinen omistettujen tokeneiden määrään. PoS on vanha idea, mutta sen soveltaminen on pidempään ollut vaikeaa tiettyjen siihen liittyvien potentiaalisten hyökkäysten vuoksi. PoS järjestelmissä etu on mm. energian kulutuksen pienenemisessä, sillä lohkoa kohden ei tarvita muuta laskentaa kuin itse konsensusalgoritmin ja lohkon luomiseen liittyvä laskenta (vrt. PoW). Tämän oletetaan heijastuvan myös järjestelmän käyttökuluihin. Lisäksi Ouroboros on erittäin hajautettu protokolla. Useissa muissa PoS ratkaisuissa validoijalta vaaditaan tietyn suuruinen pantti, jota luovutettuaan he pääsevät mukaan siihen rajattuun joukkoon josta validoija valitaan. Validoija voi menettää pantin, mikäli toimii protokollan sääntöjen vastaisesti. Ouroboros ei käytä panttia, ja protokollaa vastaan toimiva taho ei suoraan menetä rangaistuksena muuta kuin validoijille maksettavan palkkion, mikäli hyökkäys epäonnistuu. Pantin voidaan myös ajatella nostavan transaktiokuluja, sillä erikseen valittu validoijien joukko vaatii tuottoa sekä tekemälleen laskentatyölle, että muutoin tarpeettomana lepäävälle pantille. Tässä mielessä Ouroboros lähentelee täydellistä PoS lohkoketjuratkaisua. Protokollassa jokainen käyttäjä toimii validoijana tietyllä todennäköisyydellä, ja lohkoketjun pyöritys on hiottu optimaaliseksi.

Miksi tällaista ei sitten ole tehty aiemmin? PoS pohjaisiin ratkaisuihin liittyy ongelmana erityinen ”nothing-at-stake” hyökkäys. PoW lohkoketjuissa kaikki tehty työ pitää linkittää yhteen tiettyyn edelliseen lohkoon. Hyökkääjä voi alkaa ratkaista seuraavaa lohkoa mistä kohdasta tahansa, mutta useammasta kohtaa ratkaistaessa työ on kaksikertainen. Kuitenkin PoS ratkaisuissa valitaan seuraavan lohkon luoja vuorotellen ja satunnaisesti. Halutessaan hyökkääjä voi luoda niin monta lohkoa tuona aikana kuin haluaa (sillä lohkon luomiseen kuluva aika on hyvin vähän verrattuna vuoron kestoon). Vuoron kesto ei voi myöskään olla kovin lyhyt, sillä luodun lohkon täytyy ehtiä kulkea validoitavaksi koko verkolle. Lisäksi mikäli verkkoon liittyy uusi (rehellinen) node, joka kohtaa kaksi kilpailevaa ketjua yhtä aikaa, ei node voi ennalkolta tietää kumpi mahdollisesti hänelle esitetyistä ketjuista on esitelty verkolle aiemmin. Näin olleen hyökkäysmalleissa pitää myös huomioida hyökkääjän etu esitellä luomiaan ketjuja verkolle ja sen uusille jäsenille haluamassaan järjestyksessä.



Ylläoleva kuva esittää mitä ”nothing-at-stake” hyökkäys voi pahimmillaan saada aikaan. Hyökkääjä kontrolloi tässä seitsemän ketjun sarjassa vain kahta valintavuoroa (29% verkosta, punaisella merkityt valintavuorot) ja onnistuu silti suorittamaan double-spend hyökkäyksen.

Kuitenkin Ouroboros classic (ja Ouroboros Genesis) pohjaavat juuri tällaiselle järjestelmälle. Käyn myöhemmin tarkemmin protokollan eri osioita läpi, mutta yksinkertaistettuna Ouroboros toimii seuraavasti:

1. Lasketaan satunnaisnumero hajautetulla satunnaislukugeneraattorilla

2. Aloitetaan uusi jakso (epoch) joka sisältää useamman vuoron (slot). Jokaisena vuorona yksittäinen käyttäjä saa oikeuden luoda lohkon haluamaansa ketjuun (tai ketjuihin).

3. Satunnaisluvun satunnaisuutta hyödyntäen valitaan tokeneiden omistussuhteisiin pohjautuvalla todennäköisyydellä jokaiselle vuorolle yksittäinen käyttäjä

4. Valitut käyttäjät luovat lohkot (tai ovat luomatta halutessaan)

5. Luodaan uusi satunnaisluku satunnaisluku generaattorilla. (Satunnaisluvun luontiin osallistuvat aiemmin vuoroille valitut käyttäjät useamman jakson (epoch) ajalta)

Miksi näin? Ilmeisesti satunnaisluvun luominen vaatii laskennallisesti ja kommunikaation osalta kohtalaisen paljon, joten on taloudellista luoda satunnaislukuja vain jokaisen jakson alussa, ei ennen jokaista vuoroa. Toisaalta oletetaan että kun lohkoja luovat valitaan omistussuhteiden perusteella, keskimäärin rehellinen enemmistö pääsee luomaan enemmän lohkoja kuin protokollaa vastaan toimivat. Myös satunnaislukugeneraattorin enemmistön muodostaa rehelliset käyttäjät, sillä se luodaan aiempien lohkoja luovien tahojen joukosta (tästä myöhemmin tarkemmin). Tämä malli luo kuitenkin hyökkäävälle taholle vielä yhden uuden edun. Hyökkäävä taho tietää jo jakson alussa kaikki sen jakson valitut käyttäjät ja voi taktikoida toimintansa haluamallaan tavalla.

Tästäkin huolimatta Ouroboroksen kehittäjät ovat onnistuneet matemaattisesti todistamaan että heidän mallinsa toimii, (= ratkaisseet nothing-at-stake ongelman). Tämä on Cardanon suurimpia saavutuksia.

//////////////////////////////////////////////

MATH WARNING!


Usein pyrin välttelemään matemaattisia osuuksia koska en niitä itsekään osaa, mutta tässä kohtaa teen poikkeuksen ja lisään pienen matemaattisen osuuden siitä kiinnostuneille. Itse todistus on paljon monimutkaisempi ja se löytyy Ouroboroksen white paper:sta.

Bitcoin voidaan todistaa toimivan seuraavalla tavalla:

Alla on yksiulotteinen random walk. Kuvitellaan että lähdetään nollasta ja heitetään kolikkoa. Aina kun tulee kruuna (q) siirrytään oikealle ja aina kun tulee klaava(p) siirrytään vasemmalle. Mikäli p on todennäköisempi kuin q siirrytään suurella todennäköisyydellä useamman heiton (esim 10) jälkeen vasemmalle. Kun ollaan riittävän pitkän matkan päässä nollasta vasemmalla tulee hyvin epätodennäköiseksi päästä enää nollan oikealle puolelle.

Bitcoin toimii juuri tuolla tavalla. Oletetaan että rehellisen enemmistön todennäköisyys luoda lohko on p ja hyökkääjän todennäköisyys luoda lohko on q. Aina kun rehellinen node luo lohkon pisimmän ketjun päähän on hyökkääjä yhtä lohkoa kauempana omalla sivuketjullaan kärjestä. Riittävän monen lohkon jälkeen transaktiota voidaan pitää lähes varmana, sillä on todella epätodennköistä että kilpaileva ketju pääsisi enää ohi.

Kuitenkin PoS ei voida mallintaa samalla tavalla sillä omalla vuorollaan hyökkääjä voi luoda useampia lohkoja useampien kilpailevien ketjujen päähän, toisaalta hyökkääjä voi myös siinä hetkessä väittää ettei luonut mitään, mutta myöhemmin julistaakin luoneensakin lohkoja omalla vuorollaan.

Kuitenkin Cardanon matemaatikot todistivat että PoS noudattaa kaksiulotteista random walk.

Todistus menee seuraavalla tavalla:

Tietylle reitille r

• gap(t): etäisyys johtavasta rehellisestä nodesta

• reserve(t): hyökkääjän käyttämättömiä vuoroja ketjun pään jälkeen.

• reach(t) = reserve(t)-gap(t) (kuinka paljon kyseinen hyökkääjän ketju on liian lyhyt vaikka hyökkääjä käyttäisi kaikki käyttämättömät vuoronsa)



p(w) = max reach (t) (yleensä honest ketju)

u(w) = toisiksi parhaan ketjun reach (t) (hyökkääjän ketju)

Mikäli u(w) on aina < 0, silloin hyökkääjä ei voi päästä rehellisen ketjun rinnalle, ja voidaan todistaa että fork ei voi onnistua.

Jos hyökkääjä saa vuoron = p(w) + 1, u(w) +1

eli pisimmän ketjun päähän tulee yksi hyökkääjän reserve lisää ->p(w) + 1, ja hyökkääjän ketjun gap lyhenee yhdellä u(w) + 1.


Jos rehellinen node saa vuoron voi tapahtua yksi kolmesta asiasta:

p(w0), u(w0)

1. = p(w) -1,0 p(w) > u(w) = 0

2. = 0, u(w)-1 p(w) = 0

3. =p(w) -1, u(w) -1 otherwise


Selitys:

2. Jos pisimmän ketjun päässä ei ole hyökkääjän käyttämättömiä vuoroja ne eivät myöskään vähene vaikka ketju pitenisi 0, kuitenkin pisin ketju pitenee tällöin yhdellä ja hyökkääjän ketju on yhtä lohkoa enemmän liian lyhyt u(w)-1

3. hyökkääjällä voi olla esimerkiksi yksi vapaa slot ketjun päässä jolloin hyökkäjä menettää sen p(w)-1 ja toisaalta vaikka hyökkääjä käyttäisi slotin sillä hetkellä oman ketjunsa pidentämiseen reach kasvaa silti yhdellä sillä etäisyys kärjestä pysyy samana mutta reach vähenee u(w)-1.

1. Kuitenkin mikäli hyökkääjällä olisi mahdollisuus saada ketjut rinnakkain u(w)=0, ja hänellä on viimeinen slot rehellisen ketjun edellä p(w) > 0, hän käyttää käyttämättä olevaa vuoroaan ja pysyä rinnakkain.

Tilanne voidaan kuvata seuraavan laisena kaksiulotteisena random walk kuvana jossa,

p = todennäköisyys että rehellinen node luo lohkon

q = todennäköisyys että hyökkääjä luo lohkon


Tästä voidaan matemaattisesti osoittaa, että vaikka hyökkääjällä on em. vaihtoehdot, ajan kuluessa margin kulkee kohti miinus ääretöntä. Eli tilanne on lopulta sama kuin yksiulotteisessa random walk mallissa.


//////////////////////////////////////////////////////

SAFE ZONE!

Ouroboros-Genesis

Yllä selitetty konsensus oli Ouroboros classic. Ouroboros genesis tuo aiempaan lisäksi uuden säännön millä nodet valitsevat pisimmän ketjun. Tämä sääntö vastaa ns. long-range attack hyökkäysskenaarioon.

Long-range attack on hyökkäys, jossa hyökkääjä valmistaa pitkän ketjun ja suuntaa hyökkäyksen nodeen joka on ollut pitkään offline, tai joka tulee uutena nodena verkkoon. Tällaista nodea voi yrittää huijata esittelemällä sille näennäisen pitkän lohkoketjun. Mikäli node ei ole pystynyt seuraamaan verkon viimeaikaisia tapahtumia ja toimii puutteellisin tiedoin, sen on vaikea varmistua mikä on oikea ketju.

Reaalimaailmassa nodet liittyvät verkkoon ja poistuvat verkosta miten sattuu. On monia online/offline nodeja jotka vaihtelevat dynaamisesti, menettävät synkronisaation tai nettiyhteyden. Protokollalla ei ole edeltävää tietoa siitä mikä osuus nodeista on synronisoitunut, ja välttämättä kaikki tieto ei välity kaikille.

Moving local checkpoint – on nimitys lohkolle mihin nodet luottavat ja minkä perusteella nodet rakentavat kuvan verkon viimeaikaisista tapahtumista. Tämä vaatii siis luottamusta tahoon joka kyseisen lohkon uudelle nodelle toimittaa ja tällöin verkko ei enää ole täysin hajautettu. Tällaista mekanismia on käytetty aiemmin long-range attack torjunnassa PoS systeemeissä. Ouroboros genesis ratkaisee ongelman uudella tavalla, mikä ei vaadi luottamusta tiettyyn tahoon ja mikä toimii myös yllä kuvatussa toimintaympäristössä.

Perinteisesti lohkoketjut toimivat niin että rehelliset nodet lisäävät lohkon pisimmän ketjun päähän. Tarkemmin sanottuna PoS systeemeissä sen ketjun päähän jonka kumulatiivinen laskentavaikeus on suurin ja PoS systeemeissä sen ketjun päähän jonka kumulatiivinen stake on suurin. (lohkon stake on sen luoneen noden tokenien suuruus lohkon luomishetkellä).


Ouroboros Genesis muutaa sääntöjä seuraavasti:

Mikäli verrataan lyhyitä ketjuja (ketjut haarautuivat alle k lohkoa pisimmän ketjun kärjestä), noudatetaan aiempaa pisimmän ketjun sääntöä. K on ennalta sovittu parametri.

Mikäli kuitenkin verrataan pitkiä ketjuja (ketjut haarautuivat yli k lohkoa pisimmän ketjun kärjestä), valitaan se ketju joka on lohkotiheydeltään tihein haarautumishetken jälkeen.

Analysoitava alue on haarautumiskohdasta sovittu matka eteenpäin. Mikäli enemmistö nodeista noudattaa protokollaa, silloin missä tahansa riittävän pitkässä aika segmentissä tämä enemmistön ketju on haarautumiskohdassaan tiheämpi. (koska enemmistö hypää siihen ketjuun jossa näin on)

Ouroboros Genesiksen whitepaper todistaa että se ketju jota rehelliset nodet seuraavat on haarautumiskohdastaan tilastollisesti lohkotiheydeltään suurella todennäköisyydellä suurempi. (Eli enemmistön ei yleensä tarvitse vaihtaa ketjua kun k lohkoa on luotu) Näin ollen verkkoon tulevalle nodelle riittää että se tietää haarautumishetken tapahtumat, ja näillä tiedoin kykenee valitsemaan oikean ketjun.

Ouroboros Praos, Ouroboros Chronos, Ouroboros Crypsinous… IOHK:lla on monia tieteellisiä artikkeleita protokollista, joita ei kuitenkaan aiota ottaa sellaisenaan Cardanon pääprotokollaan käyttöön. Nämä protokollat tarjoavat omat etunsa ja mahdollisesti voivat luoda sivuprojekteja tiettyihin kapeampiin käyttötarkoituksiin.



Multi Party Computation

Muutama termi kertauksena:

slot = hetki jolloin valitulla nodella on mahdollisuus luoda uusi lohko. Tämä on noin 20s välein.

epoch = ajanjakso, minkä aikana järjestelmä kiertää yhden syklin. Tähän kuuluu useampi slot (=potentiaalinen lohkon luomisen hetki), sekä ajanjakso jolloin jaetaan oikeudet lohkon luomiseen seuraavan epoch:n slottien suhteen.

Tässä osuudessa käydään läpi mekanismia, jolla jaetaan vuorot luoda lohkoja slottiin. Rakkaalla lapsella on monta nimeä: Multi Party Computation kuvastaa useamman tahon osallistumista laskentaan. Publicly Verifiable Secret Sharing (PVSS) on yleisnimi tämän kaltaisille tekniikoille ja Cardano käyttää tekniikkaa nimeltä SCRAPE: Scalable Randomness Attested by Public Entities. Keskeisenä ajatuksena tässä systeemissä on luoda hajautetusti yhteinen satunnaisluku. Satunnaisluvun avulla arvotaan tahot, jotka saavat oikeuden luoda lohkoja epochin aikana. Satunnaisluku yhdistetään siis tietoon eri tahojen omistusosuuksista, ja mitä suurempi omistusosuus node:lla on, sitä todennäköisemmin se pääsee luomaan uuden lohkon. On erityisen tärkeää, että satunnaisluku on todella luotu hajautetusti, ja että hyökkääjä ei pääse vaikuttamaan satunnaislukuun, sillä järjestelmän turvallisuus riippuu satunnaisluvun puolueettomuudesta ja satunnaisuudesta. Tästä eteenpäin käytetään satunnaisluvun luomiseen käytetystä järjestelmästä termiä PVSS.

PVSS:ä satunnaisluvun luomiseen pääsevät osallistumaan kaikki nodet, joilla on riittävän paljon tokeneita (esimerkiksi yli 2% kaikista tokeneista). Nämä tahot muodostavat ryhmän ja jokainen ryhmän jäsen saa oman salaisen ja julkisen avaimen PVSS satunnaisluvun luontiin. Aina kun noden omistamien tokeneiden määrä ylittää sovitun raja-arvon, se hyväksytään PVSS ryhmän jäseneksi. Tällöin satunnaisluvun luontiin tarkoitettu julkinen avain tallennetaan lohkoketjuun ja näin jokainen pystyy varmistumaan, että kyseinen julkinen avain kuuluu kyseiselle nodelle. Huomioitavaa on, että tämä PVSS järjestelmän julkinen avain ei ole sama, kuin jokaisen noden transaktioiden lähettämiseen tarkoitettu julkinen avain. PVSS ryhmään osallistuvalla nodella on siis kaksi eri julkista ja yksityistä avainta ja niiden yhteys on tallennettu lohkoketjuun (ns. sertifikaatti). Mikäli node menettää tokeneita niin, että sen omistamien tokeneiden määrä ei ylitä sovittua raja-arvoa, sen oikeus osallistua ryhmään päättyy (sertifikaatti umpeutuu). Oikeus luoda lohkoja slotteihin (=slot vetäjät) äänestetään aina epoch:n lopussa, niiin että epoch N lopussa, tiedetään ketkä ovat slot vetäjät epoch:ssa N+1.

Yksinkertaistetusti PVSS järjestelmässä jokainen ryhmän jäsen luo oman satunnaislukunsa, ja nämä luvut yhdistetään yhteiseksi satunnaisluvuksi. Kuitenkin tämä on tehtävä vaiheittain, jottei hyökkäävä taho pääse manipuloimaan satunnaislukua edukseen. Mikäli jokainen ilmoittaisi vuorotellen tai yhtä aikaa satunnaisluvun, hyökkäjä voisi ehtiä viimeisenä ilmoittaessaan laskea itselleen edullisen oman satunnaisluvun ja vaikuttaa kokonaisuuteen. Järjestelmä luo siis numeron joka on täysin satunnainen, mutta josta kaikki (ainakin kaikki rehelliset) jäsenet ovat samaa mieltä.

PVSS järjestelmässä jokainen luo satunnaisen luvun ja tämä salataan jäsenen salaisella PVSS avaimella. Tähän salattuun salaisuuteen liitetään lisäksi epoch:n numero ja julkisen avaimen tiedot. Julkista avainta käytetään osoittamaan, että salattu salaisuus todella oli kyseisen noden lähettämä. Kaikki salatut salaisuudet jaetaan kaikille muillle jäsenille. Nämä tiedot tallennetaan myös lohkoketjuun, jolloin ne ovat myös jälkeenpäin vahvistettavissa.

Tämän jälkeen kukin jäsen lähettää muille jäsenille ”avaimen” jolla hänen salaamansa salaisuus voidaan avata ja jokaisen noden ilmoittama satunnaisluku todeta. Myös kaikki avaimet tallennetaan lohkoketjuun.

Kun kaikki avaimet on välitetty kaikille jäsenillä, jokainen node tarkistaa, että purettu luku täsmää salatun luvun kanssa. Mikäli riittävän monta oikeaksi varmistettua purettua lukua on käytettävissä, voidaan nämä yhdistää uudeksi satunnaisluvuksi (=seed). Jokainen node päätyy näin samaan satunnaislukuun. Näin pystytään myös erottamaan satunnaislukujen luominen ja julkaisu kahdeksi erilliseksi vaiheeksi ja hyökkäävä taho ei pysty manipuloimaan satunnaisluvun tulosta. Mikäli joku nodeista ilmoittaa vain salaisuuden, mutta ei avainta, tai ilmoittaa virheellisen avaimen, ei hänen lukuaan oteta mukaan yhteisen satunnaisluvun luontiin.

Todellisuudessa järjestelmä on monimutkaisempi ja sisältää monenlaista matemaattista salausmenetelmää. Lisäksi myöhemmin järjestelmään on suunniteltu ominaisuus, mikä mahdollistaa useamman satunnaisluvun ilmoittamisen, mikäli nodella on suhteessa suurempi osuus tokeneita kuin muilla. Mikäli jokainen ilmoittaisi vain yhden satunnaisluvun, hyökkääjä voisi saada suhteessa enemmän äänivaltaa satunnaisluvun luontiin jakamalla tokeninsa useammalle nodelle, niin että kunkin noden omistus juuri ylittää määritellyn kynnyksen. Mikäli satunnaislukuja saa ilmoittaa samassa suhteessa kuin mitä omistaa tokeneita suhteessa kynnysarvoon (= arvoon jolla hyväksytään PVSS ryhmän jäseneksi), ei yllä kuvattu hyökkäys ole mahdollinen.

Follow the Satoshi

Follow the Satoshi on algoritmi, jolla yllä kuvatun jaetun yhteisen satunnaisluvun perusteella valitaan slot vetäjät. Cardano protokollassa yksittäinen pienin token yksikkö on Lovelace ja 1 ADA = 1,000,000 Lovelacea. Algoritmi tarkastelee jokaista Lovelacea erillisenä yksikkönä, ja yhteisen satunnaisluvun perusteella arpoo kaikista Lovelaceista yhden Lovelacen. Tämän jälkeen algoritmi tarkastelee, kuka on tämän Lovelacen omistaja, ja hänet valitaan vetäjäksi kyseiseen slot:iin. Samalla periaatteella valitaan vetäjät jokaiseen epoch:n slottiin.

Lovelace viittaa Augusta Ada King (1815-1852), Lovelacen kreivittäreen, joka oli englantilainen matemaatikko. Hän kirjoitti kuvauksen Charles Babbagen varhaisesta mekaanisesta yleistietokoneesta eli analyyttisestä koneesta. Hän kirjoitti koneelle myös ohjelman, minkä ansiosta häntä kutsutaan joskus ensimmäiseksi tietokoneohjelmoijaksi.

Follow the Satoshi taas viittaa Bitcoinin pieninpään yksikköön Satoshiin (Bitcoinin keksijää kutsutaan Satoshi Nakamotoksi). Kyllä, Cardanossa on minunkin makuuni hieman nörtihkö tunnelma.


Oikeuksien valtuutus (delegation) Cardanossa

Cardano perustuu olettamaan, minkä mukaan uutta lohkoa luomaan valitun tahon on oltava online sillä hetkellä, jolloin hänet valitaan slot vetäjäksi. Lisäksi suuri osa tahoista jotka omistavat enemmän tokeneita osallistuvat myös PVSS protokollan pyörittämiseen. Tilisiirtoihin liittyvillä maksuilla (transaction fee) mm. palkitaan tahoja, jotka osallistuvat protokollan pyörittämiseen. Cardanossa on järjestelmä, jolla voi valtuuttaa toisen tahon hoitamaan tämän protokollaan osallistumisen valtuuttajan puolesta. Tässä on kaksi keskeistä hyötyä. Ensinnäkin jokaisen noden ei tarvitse olla koko ajan online pystyäkseen hyötymään omistuksistaan. Aktiivinen node voi perustaa yhtymän (ns. stake pool), kerätä valtuutuksia muilta jäseniltä luoda uusia lohkoja, ja osallistua protokollaan heidän puolestaan. Tämä on yhtymän hoitajan ja jäsenten välinen sopimus ja protokollaan osallistumisesta saatu palkkio jaetaan sovitusti yhtymän hoitajan ja jäsenten kesken. Varsinkin mikäli node aikoo olla vain pienen osan ajasta online, voi yhtymään osallistuminen olla taloudellisesti hyvinkin kannattavaa.

Toinen etu yhtymäjärjestelmästä liittyy protokollan jouhevuuteen. Laskennallisesti raskain osuus protokollan pyörittämisessä on Multi Party Computation vaihe, eli PVSS järjestelmä. Satunnaisluvun luomisessa jokainen node joutuu keskustelemaan jokaisen toisen noden kanssa, joten kommunikaation määrä kasvaa nopeasti, mitä enemmän nodeja laskentaan osallistuu. Yhtymä järjestelmä mahdollistaa suurempien keskittymien synnyn, jolloin PVSS vaihe kevenee. Yhtymä järjestelmän avulla voi valtuuttaa toisen myös osallistumaan protokollan päivityksiin liittyviin äänestyksiin (näistä lisää edellä).

Heavyweight delegation

Cardanossa on kaksi eri tapaa valtuuttaa toinen node toimimaan omasta puolesta. Heavyweight delegation vaatii, että valtuuttavalla taholla on raja-arvon ylittävä määrä tokeneita (esim. yli 0.03% tokeneiden kokonaismäärästä). Tällöin valtuuttaja luo sertifikaatin valtuutuksesta ja tämä tallennetaan lohkoketjuun. Valtuuttaja voi luoda yhden sertifikaatin epochin aikana. Valtuutuksessa valtuutetaan koko oma äänivalta lohkon luomisessa ja muissa protokollaan liittyvissä äänestyksissä ja valtuutus on määräaikainen. Valtuuttaja voi edelleen käyttää tokeneita vapaasti, ja valtuutetulla ei ole mahdollisuutta käyttää valtuutetun tokeneita. Mikäli A valtuuttaa äänivaltansa B:lle ja B valtuuttaa edelleen äänivallan C:lle, saa C sekä A:n että B:n äänivallan. Mikäli epoch:n alussa valtuuttajalla ei ole raja-arvoa ylitävää määrää tokeneita valtuutus raukeaa.


Lightweight delegation mahdollistaa kaikille nodeille äänivallan siirron, mutta sertifikaattia ei tällöin tallenneta lohkoketjuun, vaan välitetään nodelta toiselle, kunnes se tavoittaa valtuutetun. Heavyweigh valtuutus tallennetaan lohkoketjuun, ja valtuutettu voi käyttää saamaansa valtuutusta kaikissa äänestyksissä, myös MPC ja protokollan päivityksiin liittyvissä äänestyksissä. Sen sijaan lightweight valtuutus koskee vain lohkon luomista.'


Sopimuksen raukeaminen: Heavyweight valtuutus voidaan perua lähettämällä sopimuksen peruuttava määräys lohkoketjuun. Valtuutuksen antanut taho voi tehdä tämän milloin tahansa, myös samassa epochissa kuin on valtuutuksen antanut, tai ennen kuin valtuutusta on ehditty tallettaa lohkoketjuun. Myöskin mikäli valtuutuksen antaneen tahon tokeneiden omistus laskee alle raja-arvon, voi hän silti peruuttaa sopimuksen, vaikkei voikaan antaa uutta valtuutusta.

Lightweight valtuutus peruutetaan välittämällä pyyntö valtuutetulle. Valtuutettu voi tällöin palauttaa äänivalla, mutta on myös mahdollista, että valtuutettu kieltäytyy. Tällöin äänivalta säilyy valtuutetulla kunnes valtuutuksen voimassaoloaika päättyy.

Transaktiomaksujen jako


Kaikki epoch:in transaktiomaksut kerätään virtuaaliseen pooliin, ja tämän jälkeen tokenit jaetaan niille nodeille, jotka loivat lohkoja kyseisen epoch:n aikana. Lisäksi tulevaisuudessa on tarkoitus, että pieni osa maksuista ohjataa yhteiseen rahastoon jota hallinnoidaan hajautetusti nodejen toimesta yhteisten äänestysten perusteella. Tällä pyritään turvaamaan hajautettu protokollan hallinto ja tulevaisuuden kehityksen rahoitus.

Tällä hetkellä lohkoja luovat keskitetyt IOHK:n nodet, ja transaktiomaksut ”poltetaan” (=tokeneiden kokonaismäärä vähenee transaktiomaksun verran).

Järjestelmän päivitys

Cardanoon liittyy järjestelmä mikä mahdollistaa asteittaiset järjestelmäpäivitykset ilman järjestelmän hajoamista kahdeksi erilliseksi ketjuksi.

Lohkoketjun päivitykset voidaan jakaa kahdeksi eri tyypiksi:


•Soft fork -päivitys sisältää uusia sääntöjä tai rajoitteita luotaville lohkoille. Tämä tapahtuu kuitenkin niin että kaikki tilisiirrot/lohkot jotka olivat aiemmassa versiossa sääntöjen vastaisia pysyvät sääntöjen vastaisina. Kuitenkin jotkin tilisiirrot/lohkot jotka olivat aiemmassa versiossa hyväksyttyjä voivat olla päivityksen jälkeen kiellettyjä. Toisin sanoen mikäli node ei päivitä järjestelmäänsä, hän voi silti vastaanottaa uuden päivityksen tilisiirtoja/lohkoja.


•Hard fork päivityksen jälkeen aiemmin kielletyt lohkot/transaktiot ovat sallittuja ja näin kaksi eri versiota eivät kykene toimimaan keskenään.

Tällä hetkellä Cardano esittää mekanismin soft fork -päivitysten käyttöön ottoon. Hard fork -päivityksille on tulossa erillinen mekanismi.


Soft fork –päivityksissä ei ole keskitettyä tahoa, joka ylläpitäisi tai jakaisi päivityksen, vaan päivityksen käyttöönotosta muodostetaan konsensus. Päivityksen arviointi tapahtuu CL tasolla. Järjestelmässä päivitykset tapahtuvat automaattisesti (ei vaadi ihmistä asentamaan päivitystä), ja päivitysehdotukset julkistetaan lohkoketjun kautta.

Itse päivityksen data jaetaan P2P periaatteella Bittorrent tyyppisellä ratkaisulla.

Päivitys alkaa siitä, että esitettään ehdotus uudesta protokollan versiosta. Uudesta ehdotuksesta muodostetaan äänestys PoS mukaisesti. Ehdotus voidaan hyväksyä, mikäli vähintään toinen seuraavista kriteereistä täyttyy:


1. Enemmistö tokenien omistajista (tokien omissuhteiden perusteella) kannattaa päivitystä.

2. Päivitystä kannattaa suurempi osuus kuin mitä sitä vastustaa, ja se on ollut lohkoketjussa riittävän monen slot:n ajan. (Lisäksi tietty kannatuksen alaraja täyttyy.)


On myös mahdollista luoda vaihtoehtoisia versioita käyttöjärjestelmästä, mikäli ne saavat riittävän enemmistön.


Mikäli järjestelmässä on useampia hyväksyttyjä päivitysehdotuksia yhtä aikaa, järjestelmä kykenee estämään lohkoketjun hajoamisen useaksi versioksi, tämä tapahtuu seuraavasti:

Kun ehdotus on hyväksytty (kohdat 1. tai 2. täyttyvät), on järjestelmässä päivitysehdotus joka sisältää vahvistetun version päivityksestä, ja tämä tallennetaan tiettyyn lohkoon. Jokaiseen päivitykseen liittyy versionumero ja mikäli edellinen voimassa oleva versio oli esim. 1.3, voi yhtä aikaa olla ehdolla esimerkiksi versiot 1.4 ja 1.7. Uuden ehdotuksen havaittuaan käyttäjät päivittävät järjestelmiään ja jatkavat lohkojen luomista. Aina kun luodaan uusi lohko, tarkastetaan lohkon luoneen noden järjestelmäversio. Kun tiettyä versiota käyttävien (lohkoja luoneiden) nodejen osuus on riittävän suuri, todetaan että päivitys on otettu käyttöön ja tällöin kaikki muutkin voivat siirtyä kyseiseen päivitykseen. Näin eri versioiden välinen konflikti raukeaa.

Tarkemmin sanottuna: Otetaan kaikki (stabiilit, eli riittävän kauan lohkoketjussa olleet) lohkot, jotka on luotu käyttäen järjestelmän versiota X. Nämä lohkot valitaan ja lasketaan näitä luoneiden node:jen yhteenlaskettu Ada omistus. Mikäli tietyllä versiolla on yli 75% osuus (edellä kuvatusti laskettuna), lasketaan tämä versio käyttöönotetuksi.


Sidechains


Sivuketjut (sidechains) ratkaisussa useampia lohkoketjua toimii rinnakkain niin, että arvo/data voi siirtyä myös lohkoketjusta toiseen. Cardanon PoS-lohkoketju tekniikan myötä yksittäisen lohkoketjun konsensukseen osallistuminen on hyvin energiatehokasta suhteessa PoW järjestelmiin. Näin ollen on mahdollista kohtalaisen pienellä energialla/kuluilla pyörittää useita lohkoketjuja samanaikaisesti. Sivuketjujärjestelmä tarvitsee lisäksi keinon jolla arvoa/dataa vastaanottava lohkoketju voi varmistua siitä että lähettävä ketju on todella tehnyt kyseisen tilisiirron. Tässä on muutamia vaihtoehtoja. Vastaanottavaa ketjua pyörittävä taho (node) voi seurata kahta tai useampaa lohkoketjua yhtä aikaa. Toinen vaihtoehto on tiivistää lähettävästä lohkoketjusta riittävä määrä tietoa, jotta pystytään varmentamaan transaktion tapahtuneen kuvatulla tavalla, seuraamatta/tallentamatta kuitenkaan koko lähettävää ketjua. Tämä tiivistetty data voidaan silloin myös tallentaa vastaanottavaan ketjuun ja todistaa että lähetetty transaktio on aito.

Periaatteessa Ouroboros yhdistettynä sivuketjujärjestelmään mahdollistaa lähes rajattoman määrän sivuketjua mikäli nodeja on riittävästi. Kuitenkaan sivuketjut eivät ole pitkälle menevä ratkaisu skaalautuvuuteen tai korkesiin tps-lukuihin, sillä jokainen sivuketju vaatii oman konsensuksen (vrt. sharding, josta edellä lisää). Toisin sanoen, lohkoketju on turvallinen vain jos sitä pyörittävien nodejen enemmistön on rehellisiä. Mikäli käytössä on lukuisia sivuketjuja, voi pienikin määrä epärehellisiä nodeja keskittää voimansa yhteen sivuketjuun, ja saada haltuunsa kyseisen ketjun enemmistön ja päätäntävallan. Tällöin epärehelliset nodet pystyvät myös muuttamaan kyseisen ketjun aiemmin luotua konsensusta. Todellinen (lähes) rajaton skaalautuvuus vaatisi siis kyllä sivuketjujärjestelmän kaltaisen datan tallentamisen ja konsensuksen muodostamisen pienissä ryhmissä, mutta lisäksi tarvitaan keino linkittää pienen ryhmän konsensus osaksi suurempaa koko ryhmän konsensusta. Tällöin pienen ryhmän konsensuksen muuttaminen jälkeen päin ei ole merkittävästi helpompaa, kuin koko järjestelmän konsensuksen. Tätä kutsutaan sharding-ratkaisuksi ja ensimmäisiä shardin ratkaisuja on jo kehitelty muutamissa kryptovaluutoissa (mm. Ethereumin tuleva Serenity päivitys). Kuitenkin riittävän hyvää shardin ratkaisua, joka takaisi riittävän skaalautuvuuden ei ole vielä tämän tekstin kirjoitusvaiheessa esitelty. (Tai ainakaan tällaista ei ole kirjoittajan tiedossa.)

Kuitenkin sivuketju järjestelmällä voidaan saada lisää skaalautuvuutta, mikäli järjestelmää ei viedä liian pitkälle niin että konsensuksen turvallisuus kärsii. Cardanon kehittäjät ovat visioineet esim. omaa sivuketjua eri teollisuuden aloille.

Toinen sivuketjujärjestelmän käyttötarkoitus on erottaa toisistaan tilisiirtoja välittävä kerros (SL = settlement layer), ja smart contract kerros (CL = computational layer). Tämä ratkaisu tuo monia hyötyjä. SL pystytään pitämään yksinkertaisena ja mahdollisimman nopeana omana lohkoketjunaan, jossa riski järjestelmän sisäiselle virheelle on pieni ja koodi on yksinkertaista. CL kerrokseen pystytään rakentamaan monimutkaisia ja eri tarkoituksiin sopivia smart contract järjestelmiä, riskeeramatta kuitenkaan protokollan perustason SL:n turvallisuutta.

Keskeinen ominaisuus on lisäksi ns. firewall property. Tämä on suojamekanismi, jossa SL pitää kirjaa siitä paljonko tokeneita on siirretty eri sivuketjuihin. Mikäli joku sivuketjuista yrittää siirtää tokeneita takaisin enemmän kuin mitä sivuketjuun on siirretty, SL estää siirron. Tällainen tilanne voisi tulla esimerkiksi jos CL sisältäisi kriittisen virheen mikä mahdollistaisi tokeneiden luomisen tyhjästä. SL on niin sanottu pääketju (main chain) ja sitä kautta tokenit siirretään sivuketjuihin.

Cardanolla on ajatuksena yhdistää monet maailman merkittävistä lohkoketjujärjestelmistä yhdessä toimivaksi verkoksi ja toimia verkon yhdistävänä järjestelmänä. Näin olle Cardano on kehittänyt sivuketjujärjestelmiä niin PoW, kuin PoS perustuville lohkoketjuille. Tavoitteena on että esimerkiksi Ethereumin tai Bitcoinin tokeneita voisi siirtää Cardanon lohkoketjuun.

Seuraavaksi yksinkertaistettuna PoW-sivuketjujärjestelmän toiminta:

- Ensimmäinen transaktio pääketjun tililtä A tuhoaa halutun määrän tokeneita pääketjussa ja luo tästä todisteen (proof-of-burn)

- Toinen transaktio sivuketjussa luo rahaa tyhjästä tilille B. Louhijoiden täytyy vahvistaa transaktio. Ensinnäkin proof-of-burn täytyy olla tarpeeksi syvällä pääketjussa, jotta voidaan ajatellan sen olevan peruuttamaton. Tämän jälkeen proof-of-burn liitetään itsenäiseen todisteeseen siitä, että se todella on osa kyseistä pääketjua ja että proof-of-burn jälkeen on luotu riittävän monta lohkoa. Sekä proof-of-burn että tämä luotu todiste tallennetaan sivuketjuun kaikkien sivuketjun nodejen nähtäville.

- Ongelman ydin on: miten luoda todiste ensimmäisestä lohkosta (=genesis) viimeiseen luotuun lohkoon? Tällaisia todistuksia kutsutaan nimellä Poorf-of-proof-of-work = PoPoW, ja ne voivat olla kooltaan vain muutamia satoja kilotavuja.

- Sivuketjun louhijoiden tulisi siis kyetä varmistamaan PoPoW:n aitous itsenäisesti, seuraamatta pääketjua.

Cardano esittelee uuden tavan tehdä PoPoW, nimeltään Non-interactive PoPoW (NIPoPoW)

Interaktiivinen tarkoittaa että tarvitaan useita transaktioita osoittamaan, että yksittäinen transaktio on validi. NIPoPoW:n avulla on mahdollista luoda pääketjusta lyhyt tiedosto ja liittämään se varmistettavaan transaktioon. Tämä tiedosto riittää osoittamaan transaktion aitouden.

NIPoPoW-tiedostoon sisällytetään kyseisen pääketjun lohkon n hash. Proof-of-burn transaktio kuuluu siis lohkoon n. Lisäksi liitetään data jolla osoitetaan proof-of-burn transaktion olevan osa lohkon n merkle hash puuta. Lisäksi osoitettaan että lohkon n jälkeen on riittävän monta lohkoa. Tämä lisäksi täytyy osoittaa yhteys genesis lohkon ja lohkon n välillä, ja tässä kohtaa ongelma muuttuu kinkkiseksi.

Yhteyden osoittamiseen genesis-lohkon ja lohkon n välillä käytetään ns. superblock tekniikkaa.

Ajatellaan että kaikki ketjun lohkot asetetaan järjestykseen niiden hash:n mukaisesti pienimmästä suurimpaan. Mikäli rivi jaetaan kahtia on kummallakin puolella 50 % lohkoista ja tätä kutsutaan 1-superblock ryhmäksi. Mikäli tämä 1-superblock ryhmä jaetaan edelleen puoliksi hash:n suuruuden mukaan saadaan 2-superblock ryhmä, mikä kattaa 25% lohkoista.

Osoitettaessa että lohko kuuluu tiettyyn ketjuun, todistetaan että ketjun luomisessa on käytetty niin suuri määrä työtä, ettei mahdollinen huijaava taho olisi mitenkään voinut tällaista työmäärää suorittamaan. Näin ollen huijaavat taho ei olisi kyennyt rakentamaan vastaavaa kopiota kyseisestä ketjusta, vaan ketjun on oltava aito. Mikäli otetaan halutun lohkon ympäriltä esim. 15-superblock ryhmä ja todetaan että tämäkin ryhmä sisältää useamman lohkon, voidaan ajatella että vaatisi kaikilta maailman bitcoinia louhivilta tahoilta pitkällisen ponnistuksen, jotta tällainen superblock ryhmä saataisiin laskettua. Näin ollen mikäli 15-superblock ryhmästä löytyy riittävä määrä lohkoja, voidaan lohkon ajatella kuuluvan kyseiseen ketjuun, ja ketjun olevan aito.

En päässyt täyteen selvyyteen siitä minkä verran transaktiota vahvistavalla taholla täytyy olla ennakkotietoa kyseisestä lohkoketjusta. Kuitenkin nopeasti ajateltuna tulisi todennäköisesti olla jonkinlainen käsitys siitä mihin kohtaan uusin lohko on luotu ja kuinka pitkä ketju on. Montakin lohkoa on mahdollista luoda yhden lohkon perään, mikäli on riittävän pitkä aika käytössä. Joka tapauksessa supeblock tekniikka on Cardanon keskeinen mekanismi PoW sivuketjujen luomiseen ja PoPoW tekniikalla saadaan tiivistettyä todiste pääketjun aitoudesta lyhyeen transaktioon.

Käytännössä PoPoW liitetään yksinkertaiseen smart contractiin joka tarkastaa sen aitouden. Näin ollen louhija joka suorittaa transaktionin sisältämän smart contractin varmistuu samalla transaktion aitoudesta.

Seuraavaksi yksinkertaistettuna PoS-sivuketjujärjestelmän toiminta:

SL nodet seuraavat vain SL lohkoketjun toimintaa

CL nodet seuraavat SL ja CL lohkoketjujen toimintaa

Tällöin tokenin siirtäminen SL lohkoketjusta CL ketjuun on yksinkertaista:

- Erityinen transaktio tuhoaa rahan SL ketjusta

- CL node huomaa tämän SL ketjun transaktion ja luo uuden transaktion joka sisältää saman määrän tokeneita CL ketjuun. Erityistä todistusta transaktion aitoudesta ei siis tarvita.

Kuitenkin mikäli tokeneita siirretään CL ketjusta SL ketjuun, siirto tapahtuu seuraavasti:

- SL ja CL ketjujen epoch:it synkronoidaan

- CL ketjussa jokaisen epoch:in yhteydessä valitaan erillinen komitea nodeja, joka edustavat sen hetkistä ketjun rehellistä enemmistöä. Komitea toimii luotettuna tahona joka siirtää tiedon ketjusta toiseen.

Komitean muodostus tapahtuu seuraavasti. Käydään läpi 2k viimeisintä slot vetäjää, missä k on se määrä lohkoja mikä on luotava, jotta luotuja lohkoja edeltävä lohko voidaan katsoa olevan peruuttamaton.

Nämä 2k slot vetätäjää muodostavat komitean. Ouroboros konsensusprotokolla luo matemaattisesti todistetusti rehellisen enemmistön pisimmän ketjun lohkojen vetäjiksi. Tämä ominaisuus siirtyy siis kätevästi myös komitean jäsenien ominaisuudeksi silloin kun komitean muodostetaan edeltäviä lohkoja luoneista nodeista. Näin ollen ei tarvita erillistä mekanismia rehellisen enemmistön löytämiseen kaikista nodeista. Komitea on jatkuvasti muuttuva ja vaihtuu joka epoch.

Jokaisen epochin aikana ne CL ketjun transaktiot, jotka tuhoavat tokenit kerätään tiivistettyyn merkle hash puuhun ja tämä merkle hash puu allekirjoitetaan komitean jäsenten toimesta. Tämä sertifikaatti siirreltään SL ketjuun transaktiona. Allekirjoitukset siirtyvät SL ketjuun siis jokaisen epochin yhteydessä.

Mistä SL ketjun nodet tietävät, että sertifikaatti on aito, ja että komitea on todella kyseisen ketjun jäsenistä muodostettu? Hyökkääjä voisi muodostaa kuvitteellisen ketjun joka jäljittelisi aitoa ketjua.

SL nodet tietävät CL ketjun ensimmäisen epoch:n komitean (tämä tieto annetaan SL ketjun jäsenille CL ketjun luomisen yhteydessä). Edeltävä komitea allekirjoittaa tokeneita tuhoavien transaktioneiden lisäksi myös seuraavan komitean jäsenet sertifikaattiin. Näin ollen valta siirtyy komitealta toiselle jokaisen epochin vaihtumisen yhteydessä.

Tilannetta voisi kuvata dynastiana missä edellinen keisari kuuluttaa seuraavan keisarin ennen luopumistaan vallasta.



Ouroboros Hydra

Ouroboros Hydra (= Fast Isomorphic State Channels) on 2. kerroksen skaalautuvuus ratkaisu, jota voidaan soveltaa eri lohkoketjuihin, myös Ouroboros Genesikseen. Ouroboros Hydra mahdollistaa transaktioiden ja smart contractien suorittamisen pienemmissä yksiköissä lohkoketjun ulkopuolella ja lopputuloksen liittämisen takaisin lohkoketjuun.

Ouroboros Hydran whitepaper käsittelee alussa mallin kansankielellä ja on poikkeuksellisen ymmärrettävää tekstiä, joten mikäli aihe kiinnostaa tarkemmin kyseisen whitepaperin alun lukemista voi suositella. Kuitenkin tässä vielä ratkaisu yksinkertaistettuna:

1. Yhteisymmärryksessä sovitaan ryhmä nodeja (=head) joka irrottautuu lohkoketjusta.

2. Ryhmän tiedot tallennetaan transaktiona lohkoketjuun

3. Jokainen jäsen saa lähettää tokeneita tai smart contract koodia head:iin.

4. Lähtötilanne hyväksytään jokaisen jäsenen toimesta (ja allekirjoitetaan jokaisen noden omalla allekirjoituksella).

5. Tämän jälkeen jokainen lähetetty transaktion ja smart contractin suoritus sovitaan (ja allekirjoitetaan) yhteisymmärryksessä ja jokainen jäsen hyväksyy jokaisen tapahtuman

6. Tietyin väliajoin ryhmän ”johtaja” kerää yhteen sen hetkisen tilanteen (snapshot) ja tämä hyväksytetään ryhmän jokaisella jäsenellä.

7. Mikäli jossain vaiheessa joku jäsenistä on erimieltä jostain tapahtumasta, head loppuu, ja viimeisin snapshot, sekä sen jälkeiset kaikkien hyväksymät transaktiot/tapahtumat tallentuvat takaisin alkuperäiseen lohkoketjuun.

Erinäiset lisäominaisuudet parantavat järjestelmän käytettävyyttä, kuten mahdollisuus lisätä pääketjuun tallennetulla transaktiolla head:iin lisää rahaa kesken head toiminnan, etc.

Ouroboros hydraa mainostetaan ratkaisuna, mikä mahdollistaa tuhansia tilisiirtoja sekunnissa. Lisäksi protokollaa optimoidessa voidaan joidenkin arvioiden mukaan saavuttaa jopa miljoona tilisiirtoa sekunnissa. Tässä kohtaa on kuitenkin tarkasteltava asiaa tarkemmin ja kysyttävä minkä ongelman Ouroboros Hydra ratkaisee?

Hajautetuissa järjestelmissä on yleisesti tunnettu ongelma nimeltä Byzantine Generals Problem. Tämä ongelma esitetään perinteisesti suurin piirtein seuraavalla tavalla:

Sotajoukko on hajaantunut laajalle alueelle ja kykenee kommunikoimaan toistensa kanssa vain kahden kenraalin välisillä viesteillä. Kenraalien tulisi sopia yhteinen hyökkäysstrategia (esim. mennäänkö itään, vai länteen). Kuitenkin kenraalien joukossa on kenraaleiksi naamioituneita vihollisten yksiköitä jotka kykenevät muuttamaan välitettävää viestiä edukseen. Rehelliset kenraalit eivät kykene tunnistamaan korruptoituneita yksiköitä ulkoisista tekijöistä. Miten rehelliset kenraalit kykenevät sopimaan yhteisestä hyökkäysstrategiasta?

Kun “hyökkäysstrategia“-sanan välille vaihtaa kaksi keskenään ristiriidassa olevaa tilisiirtoa, ollaan hyvin lähellä DLT järjestelmien double spend ongelmaa. Skaalautuvan DLT systeemin tulisi kyetä varmistamaan yksittäinen totuus kaikkien rehellisten tahojen kesken, huolimatta siitä että toimintaa häiritsee epärehellinen vähemmistö. Mikäli rehellinen kenraali lähettää viestin: nyt mennään länteen, kaikkien rehellisten kenraalien tulisi lähteä länteen, vaikka epärehelliset kenraalit välittäisivätkin viestin “itään“. Ouroboros Hydra ei toimi tällä tavalla. Kuvainnollisesti Ouroboros Hydra eroaa ratkaisussaan siinä että mikäli kaikki kenraalit huutavat toisilleen “länteen“, mutta yksikin kenraali sanoo: “jos kuitenkin mentäisiin itään“, todetaan tällöin yhteisymmärryksessä että: “Ei tästä mitään tule, mennään kotiin.“

Mitä tämä tarkoittaa käytännössä? Mikäli Ouroboros Hydraa käytettäisiin esimerkiksi IoT ympäristössä järjestelmästä aiheutuisi konkreettisia käytännön ongelmia. Ajatellaan että auto on IoT laite, ja se pyrkii kommunikoimaan ympäröivän maailman kanssa monella eri tavalla. Auto voi mm. maksaa parkkimaksuja, kaupata ajon aikaista dataa esim. lähellä oleville siivousautoille ja kertoa tien varsien roskista, välittää tietoa ajonopeuksista ja turvavälin pitämisestä vakuutusyhtiölle, jotta vakuutusyhtiö voi todeta kuskin ajavan maltillisesti ja tästä hyvästä palkita pienemmällä vakuutusmaksulla. Kaikki tämä tiedon- ja arvonsiirto tulisi tapahtua reaaliajassa ja osin tuntemattomien tahojen kanssa. Mikäli järjestelmässä on yksikin node, jonka yhteys katkeaa, tai joka ei hyväksy yhdessä sovittuja tilisiirtoja joudutaan aina purkamaan muodostettu ryhmä ja luomaan uusi. Järjestelmä ei siis siedä häiriötä/eriäviä mielipiteitä lainkaan. Aina kun ryhmä luodaan tai puretaan tarvitaan lisäksi alku- ja lopputilanteiden tallentaminen lohkoketjuun. Näin ollen vaikka teoriassa Ouroboros Hydralla päästään valtaviin tps nopeuksiin, kyseessä on eri tps kuin tavanomaisessa DLT järjestelmässä, eikä näitä voida suoraan verrata. Hydralla on varmasti moniakin käyttätarkoituksia joissa se kykenee lisäämään suoritettujen tilisiirtojen määrää, mutta kryptotrilemmaa se ei yksinään ratkaise.

Optimaalinen ratkaisu tilisiirtojen skaalautuvuuden ratkaisemiseksi Ouroboroksessa olisi aiemmin mainittu sharding, jossa verkko jaetaan useampaan pieneen osaan (shard), ja näiden osien itsenäinen kompromissi siirtyisi jollain mekanismilla osaksi suurempaa, koko järjestelmän kompromissia. Kts. yst. sidechain kohta tarkemman kuvauksen suhteen.

Toisaalta Ouroborors Hydra on ennemminkin suunniteltu smart contract:ien skaalautuvuuteen kuin puhtaasti tps lisäämiseen. Jos ajatellaan Hydraa hajautetun laskennan kannalta, on järkevää että laskenta saadaan toteutettua pienemmissä yksiköissä. Smart contractien pyörittämisen kova hinta johtuu paljolti siitä, että niin moni kone tekee saman laskentatyön.

Muita syitä suurille kuluille nykyisissä smart contract järjestelmissä on mm. lohkoketjun pyörittämiseen tarvittava valtava laskentamäärä (PoW järjestelmissä), sekä se että lohkoketjuun tallennettavat transaktiot joutuvat kilpailemaan hinnalla silloin kun verkossa on ruuhkaa. Nämä kustannukset saadaan Hydralla painettua selvästi matalammalle.

Useimmiten smart contractien toteuttamiseen ei tarvita koko verkkoa, mikäli keskeiset tahot ovat asiasta yhteisymmärryksessä. Smart contract ratkaisuna Hydra siis on todennäköisesti toimivampi kuin mitä tilisiirtojen skaalautuvuusratkaisuna. Kuitekin tässäkin on ongelmia. Smart contractien ajatuksena on että ne pyörivät silloinkin kun niiden pyöriminen ei ole kaikkien edun mukaista. Hydrassa smart contractit saadaan pyörimään jouhevasti mikäli tämä sopii kaikille, mutta ensimmäisen ristiriidan kohdalla sen hetkinen sopimuksen tila tallennetaan takaisin pääketjuun. Voidaan varmastikin järjestää ratkaisu niin että pääketju suorittaa smart contractin loppuun, silloin kun head ei siihen kykene. Toinen vaihtoehto on että sopimus loppuu siihen, ja se tila mistä edellisen kerran eri tahot olivat samaa mieltä jää voimaan. Mikäli pääketju suorittaa smart contractin loppuu, se kuormittaa kovasti pääketjua. Mikäli taas sopimus “pysähtyy“, se rajoittaa hyvin paljon järjestelmän mahdollisuuksia luoda käytännöllisiä ja järkeviä smart contracteja. Smart contractit eivät silloin ole itsenäisiä riippumattomia yksiköitä jotka toimivat ennalta sovittujen sääntöjen mukaan. Sen sijaan ne ovat alustoja luoda yhteisiä kompromisseja eri tahojen välillä, mikä on selvästi kapeampi käyttökohde.

Toinen tapa tehdä smart contracteista skaalautuvampia on määrittää sopimksen alussa kuinka suuri osa verkon koneista suorittaa sopimusta ja kuinka suuri konsensus vaaditaan että sopimus jatkaa pyörimistään. Tällainen järjestelmä antaa smart contractin luojalle mahdollisuuden itse määrittää kuinka paljon koneita riittää luotettavan smart contractin luomiseen. Tällöin sopimus ei ole herkkä pysähtymään, mutta ei myöskään vaadi kohtuuttomasti kulujua. Iota:n Qubic projekti pyrkii tällaiseen ratkaisuun, ja pidän tällaista ratkaisua parempana, vaikka pienempi validoijien joukko aiheuttaakin silloin suuremman riskin smart contractin korruptoitumiseen. Tätä voidaan osin ehkäistä erillisellä palkkio ja mainejärjestelmällä, ja kenties rajoittamalla smart contractia pyörittävien koneiden mahdollisuutta siirtää varoja valtoimenaan SL tasolle asetetuilla rajoitteilla. Tämä on laaja aihe ja ei suoraan liity Cardanoon. Keskeinen sanoma kuitenkin on että mielestäni on parempiakin tapoja saada smart contractit skaalautumaan.


Transaktiomaksut

Cardanon transaktioihin liittyy maksu minkä transaktion lähettäjä maksaa taholle joka transaktion vahvistaa. Transaktiomaksu lasketaan kaavasta: a + b*transktion koko. Tässä a on transaktion minimimaksu, b on kerroin ja transaktion koko on se määrä bittejä minkä transaktio sisältää.

Transaktiomaksut ovat yksi suurin kritiikki minkä keksin Cardanon pidempiaikaista menestymistä ajatellen ja siihen nähden asiaa on kommentoitu vain hyvin lyhyesti Cardanon sivuilla. Kuluja perustellaan kahdella syyllä:

1. Transaktiokulut estävät DDoS hyökkäykset

2. Transaktiokulut ovat ainoa tapa, millä nodeille kompensoidaan transaktion vahvistamiseen käytettyä aikaa, kuluja ja vaivaa.

Tällä hetkellä transaktiomaksut ”poltetaan” (hävitetään), sillä kaikki nodet jotka vahvistavat transaktioita kuuluvat tällä hetkellä IOHK:lle ja heidän yhtiökumppaneilleen. Jatkossa kuitenkin on tarkoituksena että transaktiomaksut siirtyvät suurimmalta osin transaktion vahvistaneelle nodelle, ja lisäksi pieni osa kuluista on jatkossa tarkoitus ohjata yhteiseen rahastoon jolla rahoitetaan Cardanon kehitystä. Tarkoituksena on, että rahastoa hallinnoidaan demokraattisesti PoS periaatteiden perusteella käyttäjien toimesta. Tällöin äänestettäessä siitä mikä projekti, päivitys tai toiminta saa rahoitusta on päätäntävalta käyttäjillä Ada:n omistussuhteiden mukaisesti.

Koska on olemassa myös järjestelmiä joissa ei ole transaktiokuluja (mm. Iota), on helppoa kysyä miksi transaktiokuluja ylipäätään halutaan järjestelmään, ja voidaanko tulevaisuudessa transaktiokulut saada niin alas että ne kykenisivät kilpailemaan transaktiokuluttomien järjestelmien kanssa. Transaktiokuluttomissakin järjestelmissä syntyy käyttäjille kuluja itse järjestelmän pyörittämisestä, joten mikäli kulut saadaan riittävän alas voi transaktiokuluja sisältävä järjestelmä olla kilpailukykyinen. Mikäli kulut kuitenkin jäävät korkealle, on epätodennäköistä että käyttäjät suostuisivat käyttämään kallista järjestelmää mikäli (lähes) ilmainen järjestelmä on saatavilla.

Ensinnäkin DDoS hyökkäyksien estäminen transaktiomaksuilla on vain yksi vaihtoehto ongelman ratkaisuun. DDoS hyökkäys on mahdollista torjua esim. pienellä PoW algoritmilla joka on ratkaistava aina ennen transaktion lähettämistä. Tämä ei tarkoita, että konsensus olisi PoW pohjainen, vaan jokainen node tekee pienen laskutehtävän ennen transaktion lähettämistä. Modernimpi ratkaisu on käyttää VDF:ää (verifiable delay function). VDF tarkoittaa lyhyttä laskutehtävää, jonka ratkaisemiseen menee suurin piirtein samanlainen aika huolimatta siitä, onko käytössä tavallinen tietokone (CPU) vai esim. tehtävää varten suunniteltu ASIC. Tämä johtuu siitä että tehtävä vaatii peräkkäisiä suorituksia, ja sitä ei siis voi laskea rinnakkain (Parallelizable vs Sequential Work). Toisaalta DDoS hyökkäystä voi myös estää liittämällä transaktion lähettämisen itse tokeniin. Käyttäjällä täytyisi olla tietty määrä tokeneita lähettääkseen transaktionin ja mitä enemmän tokeneita käyttäjällä on, sen nopeammin käyttäjä voi transaktioineita lähettää. Vaihtoehtoisesti käyttäjän täytyy lainata ”oikeus” lähettää transaktion joltain toiselta tokenin omistajalta (yleensä pientä korvausta vastaan). Kaikkia ylläolevia voi käyttää DDoS hyökkäysten torjunnassa.

Cardanossa on monia ratkaisuja jotka alentavat transaktiomaksuja. PoS järjestelmä vaatii vähemmän energiaa kuin PoW, joten myös vaadittavat transaktiomaksut maksut voivat olla pienempiä. Lisäksi on olemassa PoS järjestelmiä joissa transaktion vahvistava taho joutuu laittamaan pantin, jotta pääsee liittymään ryhmään jolla on oikeus vahvistaa transaktioita. Tällaisissa järjestelmissä sääntöjä rikkova taho menettää rangaistuksena pantin, mutta toisaalta transaktioita varmistava taho vaatii myös rahallista korvausta siitä että lepuuttaa tokeneitansa ns. tyhjän panttina. Ouroboros ei vaadi panttia, ja tämä laskee vaadittavaa transaktiomaksua. Sivuketjut ja Ouroboros Hydra mahdollistavat suuremma tps nopeuden, ja mikäli ajatellaan että kysynnän ja tarjonnan lait määrittävät transaktiomaksun suuruutta, Cardano voi laskea yksittäisen transaktiomaksun hyvinkin alas ja silti järjestelmän pyörittäminen on siihen osallistuville kannattavaa (vrt. Bitcoin).

Kohta 2. kuvastaa hyvin suppeasti sitä mistä transaktion kuluista on Cardanossa kyse. Protokollassa transaktionin lähettäjä ja vastaanottaja on osittain irtikytketty toisistaan (vrt. Iota), joten transaktionin vahvistava node tosiaan tarvitsee jonkinlaisen kompensaation tehdystä työstä. Kuitenkin transaktiokulu on paljon muutakin kuin vain maksu tehdystä työstä.


DLT protokollissa yleisesti käytetään olettamaa rehellisestä enemmistöstä (honest majority). Yleisiä rajoja enemmistölle on mm. yli 50% tai yli 2/3 nodeista.

Silloin kun protokollassa on riittävä enemmistö rehellisiä protokollan sääntöjä noudattavia nodeja, voidaan todistaa tai perustella protokollan toimivuus ja turvallisuus. Vaikka prosenttuaalisesti enemmistö määritelläänkin usein hyvinkin yhtenevästi, on enemmistön merkitys käytännössä hyvinkin erilainen eri protokollissa.

Käytännössä protokollan määrittämä totuus säilyy vain, mikäli protokollan enemmistö (mikä voidan eri protokollissa määritellä eri tavalla) suostuu noudattamaan protokollaa. Se haluaako yksittäinen node noudattaa protokollaa vai ei, on yhtä monimutkainen kysymys kuin se ketä puoluetta yksittäinen ihminen haluaa äänestää. Asiaan vaikuttaa taloudelliset, psykologiset, sosiaaliset, yms. tekijät. Kuitenkin asiasta voidaan tehdä seuraava yksinkertaistus menettämättä liikaa kosketusta todelliseen elämään:

-Protokollan määrittämä totuus säilyy, mikäli protokollan määrittelemällä tavalla kuvattu enemmistö hyötyy taloudellisesti sääntöjen noudattamisesta enemmän kuin sääntöjen rikkomisesta.

Tämän teorian toimivuus on nähty usein eri kryptovaluutoissa. Mikäli taloudelliset edut ja protokollan säännöt ovat ristiriidassa, taloudelliset edut voittavat lähes aina. Esimerkiksi mikäli hakkeri onnistuu varastamaan rahaa protokollassa olevasta virheestä johtuen, on toistuvasti nähty miten protokollamuutoksella on palautettu rahat oikeille omistajilleen. Tällainen päivitys on saanut suuren enemmistön hyväksynnän, vaikka hyväksyntä on protokollan sääntöjen rikkomista, ja sillä perutaan protokollan aiemmin hyväksytty totuus (=transaktio).


Missä sitten on protokollan enemmistön taloudellinen etu? Bitcoinin voidaan perustella olevan hyvinkin turvallinen protokolla huolimatta siitä, että suuret louhijat ovat onnistuneet keskittämään paljon valtaa itselleen. Nämä tahot ovat investoineet fyysistä omaisuutta (mm. ASIC-laitteita) valtavien summien edestä ja tavoitteena on saada pidemmän ajan kuluessa sijoituksille tuottoa. Hyökkäävän tahon pitäisi maksaa todella suuri summa louhijoille, jotta louhijat suostuisivat esimerkiksi tekemään double spend hyökkäyksen hyökkääjän puolesta. Tällainen hyökkäys romauttaisi Bitcoinin arvon ja samalla myös louhijoiden saaman tuoton. Sosiaalinen hyökkäys jossa hyökääjä ostaa tilapäisesti verkon enemmistön, on yksi hyökkäyskeino muiden joukossa, mutta sen realistisuuden arvioimien voi olla välillä hyvinkin vaikeaa.

Cardanossa transaktionin vahvistavat Adan omistajat, omistussuhteiden mukaisesti. Voidaan ajatella ettei valuutan haltijoilla ole kovin suurta motivaatiota romuttaa omistamansa valuutan arvoa. Mutta kuinka paljon täytyy maksaa että enemmistö lähtee mukaan? Mikäli hyökkäävä taho alkaa tehdä tarjouksia, on sopivan tarjouksen raja epäselvä ja riippuu mm. siitä, kuinka todennäköiseksi valuuttaa omistava taho arvioi hyökkäyksen onnistumisen.

Mieti tilannetta jossa hyökkääjä kysyy: “Oletko mukana, vai et?“

Mikäli et ole, voit silti menettää valuutan arvoa, mikäli riittävän monta muuta nodea on mukana. Toisaalta, mikäli osallistut hyökkäykseen saat tietää hyökkäyksen ajankohdan ja mahdollisesti kykenet myymään ensimmäisten joukossa valuuttaa, ennen kuin valuutan arvo laskee. Lisäksi pääset tietysti toteutuneen hyökkäyksen palkinnon jakoon mukaan. Hyökkäyksessä oleville Ouroboros protokolla ei aiheuta mitään suoraa sanktiota (ei panttia), vaikka he rikkovatkin sääntöjä.

Tällainen hyökkäys voi olla realistinen tai sitten ei. Joka tapauksessa transaktiokulut antavat mahdollisuuden linkittää hyökkäys myös konkreettisiin summiin. Hyökkääjän tulee kyetä tarjoamaan jotain, mikä on samassa suhteessa kuin mitä Adan omistaja hyötyy kun ei romauta kurssia hyökkäyksellä.

Vaikka yllä kuvattu skenaario ei olisikaan käytännössä todennäköinen, on hyvin vaikeaa todistaa, ettei niin voisi käydä mikäli transaktion maksut olisivat hyvin matalat. Mukana on liikaa myös psykologisia ja protokollan ulkopuolisia tekijöitä yksinkertaista matemaattista todistusta ajatellen. Toisaalta Adaa runsaasti omistava on todennäköisesti tyytyväinen korkeampiin transaktiomaksuihin. Nämä tahot ovat myös niitä jotka tulevaisuudessa tulevat päättämään protokollan päivityksistä, joten jää nähtäväksi pystyykö yhteinen konsensus pitämään maksut sellaisella tasolla joka pitää protokollan kilpailukykyisenä. Perusteluja korkeampien maksujen puolesta voi esittää yllä olevaan uhkaan vedoten. Toki myös lisääntyvä käyttäjämäärä lisää tuloja Ada:n omistajille. Mikäli transaktiomaksut ovat korkeita ja käyttäjä määrät eivät laske liikaa, tämä voi myös lisätä Cardanon markkina-arvoa, sillä monet tahot pyrkivät saamaan hyvin tuottavaa Adaa käsiinsä. Pohtiessa Cardanon transaktiokulujen tulevaisuutta muotoutuu mieleen eri suuntaan venkoilevia vektoreita ja niiden keskinäistä suhdetta on hyvin vaikea arvioida tai ennakoida. Mikäli tilannetta vertaa esim. Iota kryptovaluuttaan, vektoreita on siinä vain yksi. Kaikki hyötyvät protokollan tehostumisesta ja sitä kautta tapahtuvista käyttökulujen vähenemisestä.

Kaikki yllä oleva huomioiden pidän kohtalaisen suurena riskinä, että Cardanon transaktiokulut eivät painu tulevaisuudessa niin alas, että se kykenisi kilpailemaan ainakaan hinnalla esim. Iotan tai muiden ilmaista transaktiota tarjoavien protokollien kanssa.


5. Oma analyysi

Kaiken yllä olevan jälkeen en itse päätynyt suoraan ostamaan Cardanoa salkkuuni, vaikka aion pitää hyvin tarkalla silmällä sen kehitystä. Cardano on ratkaissut monia lohkoketjun pitkäaikaisia ongelmia, ja sopivan sharding-ratkaisun kanssa se voisi päästä hyvin suureenkin skaalautuvuuteen. Se on myös yksi aktiivisimmin kehitetyistä kryptovaluutoista, ja sen taloudellinen tilanne vaikuttaa myös hyvältä (ei varma tieto).

Yllä kuvattujen syiden (transaktiomaksut, epäselvä skaalautuvuus suunnitelma, IOHK:n suuri osuus Cardano-projektissa) lisäksi jäin pohtimaan kahta asiaa. Ensinnäkin tieteellinen lähestymistapa vaikuttaa tuottaneen suuren määrän julkaisuja ja akateemista mielenkiintoa, mutta kehitys on ollut pirstaleista ja vain osa kehitysaskeleista hyödyntää itse Cardano projektia. Tämä akateeminen vapaus osin on juuri Cardanon menestyksen taustalla, mutta se myös hidastaa roadmap toteutumista.

Toinen käytännön ongelma on se että osittain transaktiomaksuista johtuen Cardanossa datatransaktiot ja valuutta eivät ole suoraan erotettuja toisistaan. Hyvässä DLT protokollassa tulisi olla mahdollisuus tallentaa sekä dataa, että transaktioita ja on suuri etu mikäli nämä voivat olla erillisiä transaktioita. Datan tallennus vaatii erilaisen lähestymistavan kuin transaktioiden, sillä osa datasta voidaan unohtaa hetken kuluttua ja osa vaatii pitkäaikaista hajautettua säilytystä ollakseen hyödyksi. Toki tämä kohta voidaan mahdollisesti ratkaista sivuketju järjestelyllä.

Kuitenkaan en pidä Cardanoon sijoittamista typerä ratkaisuna, mikäli sijoittaja huomioi yllä olevat kohdat. Cardano on selvästi yksi vakavimmin otettavia projekteja tällä hetkellä.

78 views0 comments
bottom of page