top of page

KRYPTOKEISARIT

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

2. Iotan teknologian "lyhyt" kuvaus

Updated: Jun 11, 2020



//Huom! Iotan teknologinen roadmap ja visio on osin muuttunut tekstin kirjoitushetkestä. Tätä tekstiä ei ole päivitetty, joten teksti saattaa sisältää selvästi vanhentunutta ja täten virheellistä tietoa. Suunnitelmana on päivittää teksti, kun aikataulu sallii. Kiitos ymmärryksestä.//


Kun alkaa perehtymään Iotaan törmää moniin erittäin vieraisiin ja vaikeasti käsitettäviin termeihin ja ajatuksiin. Vaikka olisi jo syvällä lohkoketjujen maailmassa Iota on ratkaisuiltaan vaikeasti lähestettyvä ja vieras. Tässä kirjoituksessa yritän hyvin yksinkertaistetusti antaa kuvaa siitä mistä Iotan teknologiassa on kyse, ja vielä selittää asiaa niin ettei etukäteen tarvitse olla syvää käsitystä perinteisemmistä lohkoketjuista. Väistämättä joudun vetämään mutkia suoraksi ja todennäköisesti kuvailu on sekä epäeksakti että osin virheellinenkin. Iota Foundationin sivuilta pääsee lukuisiin blogi postauksiin joissa tekniikan eri osa-alueita käydään läpi huomattavasti perusteellisemmin ja enemmän oikein. Enää ei tarvitse olla matematiikan tohtori että tekniikkaa voi hyvin ymmärtää. Kuitenkin ennen kuin alkaa investoida enempää aikaa tai rahaa asiaan, on tässä lyhyt suomenkielinen selostus siitä mistä Iotassa on kyse.


Ensin voisin kuitenkin aloittaa lohkoketjuista ja DLT:stä. DLT (Distributed ledger technology) tarkoittaa verkkoa jossa sama data on jaettu useammalle koneelle tai laitteelle (=node). Verkko kommunikoi keskenään datan tilasta ja mikäli joku node yrittää muuttaa dataa verkko huomaa eriävän version ja äänestää kahden eriävän version väliltä kumpi jää voimaa. Pelkkä datan säilyttäminen useassa paikassa ei siis riitä vaan verkon täytyy myös pystyä muodostamaan konsensus kahden eriävän datan version välillä ja päättää kumpi versioista jää voimaa. Kantava ajatus on että enemmistön päätös jää voimaan ja näin ollen koska enemmistö on aiemmin hyväksynyt tietyn version datasta, ei muokattu tai uusi versio datasta jää voimaan ellei uudempi versio jostain syystä saa enemmistöä taakseen. Tämä voi tapahtua mikäli uuden version luoja omistaa suuremman osuuden verkosta kuin kaikki muut yhteensä joko hakkeroimalla muita koneita, tai omistamalla yksinkertaisen enemmistön nodeista. Nodejen enemmistön omistaminen on yleensä liian kallista hyvin suunnitellussa DLT-verkossa ja usean node:n yhtäaikainen hakkerointi taas on vaikeaa sillä nodet ovat heterogeeninen ryhmä hyvin erilaisia laitteita, joten ei riitä että onnistuu murtamaan yhdenlaisen suojauksen. DLT-verkkoon on olemassa suuri määrä erilaisia hyökkäystapoja, ja konsensus mekanismi on se tapa jolla päätös voimaan jäävästä datan versiosta tehdään. Konsensus mekanismin tulisi pystyä torjumaan mahdollisimman tehokkaasti erilaiset hyökkäykset.


Lohkoketju on yksi tapa järjestää data ja muodostaa DLT-verkon konsensus. Yksi perinteinen tapa hyökätä DLT-verkkoon on esittää yhdellä laitteella lukuisia nodeja. Mikäli laskettaisiin vain montako nodea on mitäkin mieltä, tällaisen hyökkäyksen järjestäminen olisi hyvin helppoa. Muiden nodejen on hyvin vaikeaa tietää pyörittääkö yksi laite yhtä vai tuhatta nodea. DLT-verkot pyrkivät estämään tällaisen hyökkäyksen määrittämällä verkon enemmistön jonkin sellaisen resurssin avulla mitä ei pysty, tai on hyvin vaikeaa jäljitellä. Perinteinen lohkoketjuverkko käyttää resurssina laskentatehoa (=Proof of Work, eli PoW). Lohkoketjussa verkon jäsenet on jaettu kahteen ryhmään. Toinen ryhmä laskee vaikeita yhtälöitä, ja toinen ryhmä käyttää verkkoa esimerkiksi tehden tilisiirtoja. Verkon tieto on jaettu palikoihin (=block), eli jos haluat tehdä tilisiirron se täytyy mahduttaa yhteen palikkaan. Laskija ryhmässä se joka saa ensimmäisenä ratkaistua yhtälön luo uuden palikan käyttöönsä ja saa valita mitkä tilisiirrot ottaa mukaansa palikkaan. Tämä palikka linkittyy edelliseen ratkaistuun palikkaan, ja tällöin tulee mahdolliseksi laskea uutta vaikeaa yhtälöä tästä juuri luodusta palikasta eteenpäin.


Uuden palikan luomisen jälkeen muut laskijat voivat joko jatkaa aiempaa tehtäväänsä ja yrittää luoda nopeasti toisen kilpailevan palikan hiljattain luodun palikan rinnalle, tai vaihtoehtoisesti laskijat voivat hypätä laskemaan sitä yhtälöä joka alkaa tästä juuri luodusta palikasta. Palikat muodostavat ketjun ja se ketju joka on pisin muodostaa verkon sen hetkisen totuuden. Voit yrittää muuttaa 10 palikkaa aiemmin kirjoitettua tilisiirtoa ja luoda siihen kohtaa vierelle oman kilpailevan palikan ja oman version 10 palikkaa aiemmasta tilisiirrosta, mutta silloin sinun täytyy luoda nopeasti 10:n palikan ketju päästäksesi muiden ohi, ja se vaatisi valtavan määrän laskentatehoa. Sen tähden lähes kaikki hyppäävät aina viimeisimpään palikkaan ja yrittävät siitä löytää seuraavan palikan itselleen. Mikäli tilisiirto on painunut jo neljän tai viiden palikan päähän kärjestä on hyvin vaikeaa luoda toista versiota tästä tilisiirrosta. Toisaalta jos yrität luoda mahdottoman tilisiirron kärkeen ja esimerkiksi siirtää rahaa tililtä jossa sitä ei ole, tämä tilisiirto todetaan vääräksi ja torjutaan verkosta. Tästä on hyviä videoita youtubessa jos selitys oli liian epäselvä. Verkkoa käyttävät ihmiset sitten taas odottavat että joku huolisi heidän tilisiirtonsa juuri luotuun palikkaan ja ovat valmiita maksamaan siitä. Usein myös lohkoketjuissa palikkoja luovat laskijat palkitaan ajoittain uusilla tyhjästä ilmestyneillä valuutoilla. Näin ollen esimerkiksi bitcoinissa luodessa uutta palikkaa on tietty todennäköisyys että saa siitä hyvästä bitcoinin.




Tähän on hyvä pysähtyä hetkeksi. Mitä tarkoittaa jos verkko on jaettu laskijoihin ja käyttäjiin? Ensinnäkin jossain kohti verkon käyttäjien osuuden kasvaessa ei laskijoiden saamat uudet kolikot riitä vaan käyttäjien on alettava maksaa laskijoille. Jokin aika sitten mikäli olisit halunnut ostaa bitcoinilla pizzan olisi pizza maksanut 9€ ja tilisiirto 20€. Tällainen jako ei siis koskaan voi toimia IoT maailmassa, mikäli tarkoituksena on tehdä sentin tuhannesosan tilisiirtoja. Toisaalta Bitcoin käyttää Sveitsin verran sähköä, ja kaikki tämä vain jotta voidaan välttyä tuolta alussa kuvatulta hyökkäykseltä. On myös hyvä hahmottaa mitä tarkoittaa että verkko on jaettu laskijoihin ja käyttäjiin. Laskijat eivät nykyään enää ole nörttien pöytäkoneita, sillä pöytäkoneella pyöritettynä esim. Bitcoinin algoritmit kuluttavat paljon enemmän rahaa sähkönä, kuin mitä laskentatyöstä saa rahaa. Sen sijaan Bitcoinin algoritmeja pyörittävät ns. ASIC:it. ASIC tarkoittaa suurin piirtein mikrosirulle suoraan kirjoitettua koodia josta on siis poistettu jokainen ylimääräinen transistori. Tällöin päästää yli 100x tehokkuutteen nopeudessa ja paljon myös energiankulutuksessa, mutta tällainen piiri ei pysty suorittamaan kuin yhtä ainoaa tehtävää. Mikäli Bitcoinin algoritmi muuttuisi vähääkään, nämä Sveitsin energiamäärän kuluttavat erittäin kalliit piirit eivät kelpaisi edes taskulaskimeksi. Laskijat lopulta määräävät mitä versiota ohjelmistosta haluavat laskea, näin ollen mikäli verkko on jaettu laskijoihin ja käyttäjiin sen teknologinen kehitys on sidottu myös laskijoihin. Vain ne kehitysaskeleet jotka eivät uhkaa laskijoita, voidaan hyväksyä.


Nyt päästään vihdoinkin Iotaan ja IoT maailmaan. Iota:n datastruktuuri ei ole ketju vaan Directed Acyclic Graph (=DAG). Tästä on hyviä youtube videoita ja paljon parempia selityksiä olemassa, mutta perusidea on että verkkoa ei ole jaettu laskijoihin ja käyttäjiin, vaan jokainen käyttäjä laskee verkkoa vähän eteenpäin. Kun teet tilisiirron, tarkistat kaksi aiempaa tilisiirtoa ja varmistat että niiden välillä ei ole konfliktia. Tämän jälkeen linkität oman tilisiirtosi näihin kahteen ja odotat että joku tulee ja varmistaa sinun tilisiirtosi ja linkittyy sinuun. Jos lasket väärin ja liityt tilisiirtoon jossa on konflikti seuraava huomaa sen eikä linkity enää sinuun. Tällöin sinun haarasi ei kasva. Oikein laskettuna hiljalleen muut siirrot linkittyvät kaikki toisiinsa nauhamaiseksi verkoksi. Kannattaa katsoa video tästä. Oleellinen ero tässä on että ei tarvita maksuja, ainoastaan vähän laskentatehoa ja ei ole tahoa joka hyötyisi verkon pyörittämisestä muutoin kuin että pääsee tekemään tilisiirtoja. Mikäli löytyy tapa tehdä verkosta tehokkaampi ja vähemmän energiaa kuluttava, kaikki ottavat päivityksen mielellään vastaan.

(Tarkennus: lohkoketjuissa päätäntävalta jakautuu mm. käyttäjien, laskijoiden, kryptopörssien, kehittäjien ja ekosysteemin kesken. Iotassa puuttuu erikseen laskijat joten konflikteja on vähemmän päivitysten hyväksymisen suhteen. Kuitenkin mikäli Iota:sta tulee yleinen IoT standardi IoT laitteiden kehittäjät luovat paljon ASIC pohjaisia IoT laitteita jolloin muodostuu uusi ryhmä joka ei siedä muutosta. Tuolloin Iotan kehitys voi hyvin alkaa olla yhtä jäykkää muutokselle kuin nykyisen Bitcoinin. On siis tärkeää että suurimmat kehitysaskeleet on saavutettu ennen kuin Iotasta voi tulla yleinen standardi.)


Alussa luultiin että riittävän suuri käyttäjämäärä riittäisi yksinään tekemään verkkoon luotettavan konsensuksen, mutta nyt asiaa on tutkittu enemmän ja parhaillaan ollaan viimeistelemässä uutta konsensus mekanismia joka yhdistää monta eri mekanismia erilaisten hyökkäysten torjumiseksi. Testiversio tästä uudesta konsensus mekanismista on tulossa uuden vuoden/alkuvuoden tienoilla. (Tämän jälkeen koodataan huolella virallinen versio joka validoidaan ennen nykyisen pääverkon siirtämistä uuteen verkkoon.)


Iota lähti liikkeelle alkuun IoT maailmaan suunnatusta uudenlaisesta hardwaresta. Perustajat yrittivät luoda tavan tehdä hajautettua laskentaa tehokkaasti. Tämä on erittäin laaja aihe, mutta lyhyesti sanottuna: samalla tavalla kuin voi tehdä DLT-verkon datan pitämiseksi muuttumattomana, voi myös luoda verkon jossa koneet yhdessä laskevat tiettyä laskutoimitusta ja yhdessä luovat konsensuksen lopullisesta oikeasta vastauksesta. Kryptomaailmassa käytetään termiä "smart contract", jolla tarkoitetaan sitä että tietyt nodet sopivat jotain keskenään ja verkossa olevat muut nodet pitävät huolen siitä että sovittu asia tapahtuu laskemalla tähän sopimukseen liittyvän datan yhdessä. Esimerkiksi niin että kun kone lähettää verkkoon dataa, sen vastaanottava osapuoli on ennalta sopinut siirtävänsä tietyn määrän valuuttaa datan antajalle. Verkko voi huolehtia tällaisesta valuutan siirrosta kun pyydetty data on saapunut. Yleensä kryptomaailmassa smart contract tarkoittaa sitä että suuri osa verkosta on mukana laskemassa konsensusta ja lisäksi laskeminen tapahtuu nykyisillä tietokoneilla, nykyisellä hardwarella ja lähtökohtana on yksinkertainen: Jaetaan sama tehtävä kaikille ja saavutetaan verkon konsensus oikeasta vastauksesta. Tämä johtaa erittäin kankeaan systeemiin ja esim. yksinkertainen cryptokitties kissojen keräilypeli sai maailman kuuluisimman Ethereum smart contract verkon polvilleen kun hieman useampi ihminen innostui pelaamaan peliä. Ethereum mainosti alkuun olevansa maailman laajuinen tietokone, mutta ainakin tällä hetkellä sen teknologia on kaukana alkuperäisestä käyttötarkoituksesta.


Iota on lähtenyt siis liikkeelle tarpeesta saada hajautetun laskennan verkko IoT maailmaan. Kun tuli ilmi että tarvitaan myös erillinen verkko jossa välitetään maksut niille koneille jotka hajautettuun laskentaan osallistuvat syntyi Iotan Tangle (eli nykyinen DAG-verkko josta alussa puhuttiin). Itse hajautetun laskennan verkko on erikseen ja se kulkee nimellä Qubic. Qubicin ratkaisut ovat hyvin epäintuitiivisia ja outoja joten on syytä selittää hieman tarkemmin IoT maailmaa ensin. IoT laitteille on aivan olennaista energian kulutuksen minimointi. Suurin osa laitteista toimii akuilla, tai aurinkopaneelilla, tai ovat muutoin irti pääsähköverkosta ison osan ajasta. Dataa kerätään valtava määrä, mutta internetin kaistalaajuus ei riitä siihen että kaikki data laskettaisiin keskitetysti pilvessä. Kuitenkaan ei myöskään aina ole tarkoituksen mukaista että jokaisella hajalleen levitetyllä sensorilla olisi omat laskentayksiköt jotka toimivat harvakseltaan kun tehtäviä tulee. Jo nyt maailmassa on valtava määrä käyttämätöntä laskentatehoa ja suurimman osan ajastaan älylaitteet lepäävät odottaen.


Kätevintä olisi jos kevyet sensorit voitaisiin ripotella haluttuun sijaintiin ja vain liittää paikalliseen lähiverkkoon (= mesh-verkkoon). Verkosta etsittäisiin lähellä olevat laitteet joilla on riittävä laskentateho ja ne hoitaisivat sensorin datan käsittelyn ja valmiiksi käsitelty data välitettäisiin eteenpäin. Datasta kiinnostunut taho maksaisi sensorille ja sensori maksaisi datan käsittelijälle osuuden. Näin ollen laskentatehoa voisi keskittää, sillä mesh-verkon kaistalaajuus on riittävää ja energian kulutus riittävän vähäistä. Lähiverkko voi toimia vaikka LiFi:llä tai muulla modernilla tiedon siirtomekanismilla.


Tässä tulee vastaan kuitenkin jälleen luottamuksen ongelma sillä laskeva taho voi vain esittää laskevansa, keksiä tuloksia ja lunastaa rahat kuluttamatta aikaa tai energiaa. Niinpä tarvitaan useamman laitteen ryhmä jolloin voidaan todeta että mikäli riittävän suuri osa ryhmästä päätyy samaan tulokseen on tulos todennäköisemmin oikein. Ryhmän koon kasvaessa kulutetun energian määrä kuitenkin kasvaa joten ryhmän koon tulee olla suhteessa tiedon tärkeyteen. Qubic on tähän tarkoitukseen kehitetty järjestelmä. Kuten muihinkin verkkoihin myös tähän liittyy monia hyökkäysmahdollisuuksia, mutta sivuutan ne ja niiden torjuntamekanismit tässä.


IoT maailmassa jokainen pieni laite on todennäköisesti lähellä ASIC:ia sillä vain sillä tavalla on mahdollista luoda riittävän vähän energiaa kuluttavia laitteita. Toisin sanoen keksit laitteen, suunnittelet sen ja tilaat tehtaalta juuri sitä laitetta varten kaiverretun mikrosirun. Iota Foundation lähti IoT hardware:n kehittämisestä ja Qubic:iin liittyy vahvasti sekä kokonaan uusi jaettuun laskentaan suunnattu tapa tehdä mikrosirulla laskentaa, että uusi tapa tehdä binääri komponenteilla (eli tavallisilla ASIC sirun komponenteilla) trinäärilaskentaa jolla voidaan vähentää sirun energian kulutusta sirun koon kasvun kustannuksella. IoT laitteilla energia on niukin resurssi. Sen tähden radikaaleillakin ratkaisuilla on sijaa, mikäli päästään parempaan energia tehokkuuteen.



Ok, tässä kohtaa uudelleen lukiessa huomaan että putoan melkein itsekin kärryiltä. Siispä:

Qubic = Iota Foundationin hajautetun laskennan projekti

Qubic verkko = verkko ja kommunikaatiotapa hajautettuun laskentaan

QCM = Qubic computing model, Uusi tapa suunnitella mikrosiruja ja uusi tapa toteuttaa tietokoneella laskentaa.


Tämä uusi laskentatapa QCM siis on trinääri laskentaa eli siinä käytetään +,-, ja 0 arvoja. Kuitenkin sirut suunnitellaan niin että jännite on vain 0 tai + ja komponentit ovat tavallisia. Kahta bittiä käytetään koodaamaan yhtä trinääribittiä joten data vie enemmän tilaa. Sirut eivät siis ole oikeita trinäärisiruja vaan ainoastaan laskentatapa on trinäärinen. Kuitenkin laskenta tehdään uudella tavalla joten monesti kun tarvittaisiin transistoreita voidaan vetää vain kaksi johtoa ristiin ja laskutoimitus tapahtuu siinä. Johtoa tarvitaan enemmän (taas lisää tilaa) mutta energiaa kuluu vähemmän sillä energiahukka tapahtuu pääasiassa transistoreissa. (Huom. En ole sähköinsinööri, mutta pääpiirteittäin näin)


Lisäksi tavallisesti tietokone laskee jotain, siirtää sen välimuistiin ja laskee siitä sitten lisää. Suuri osa tietokoneen energiankulutuksesta liittyy tiedon siirtoon välimuistin ja laskennan välillä. QCM mallissa mitään ei siirretä välimuistiin vaan laskenta etenee ja haarautuu kunnes päädytään oikeaan tulokseen. Laskenta on tällöin vähän kuin puu joka haarautuu ja hiljalleen kolutaan haaroja kunnes löydetään oikea vastaus.


Tällä tavalla lisäksi jo pelkkä hardware ja laskentatapa tukee laskutoimituksen jakamista usealle eri laitteelle. Ei siis vain niin että kaikki laskisivat samaa tehtävää, vaan vaikean laskun voi jakaa eri osiin vaikka 10:lle eri ryhmälle ja jokainen ryhmä laskee omaa osuuttaan eteenpäin ja muodostaa omasta osuudestaan konsensuksen. Laitteiden ei tarvitse niin usein jäädä odottamaan muiden laitteiden synkronoitumista sillä itse laskutehtävä on suunniteltu niin että kysymys jaetaan useaan eri haaraan ja jokainen ryhmä selvittää löytyykö oikea vastaus heidän haarastaan.


Vaikea selittää asiaa lyhyesti, ja nimenomaan tuossa yllä on kielikuvia joissa eksaktius lensi romukoppaan, mutta pointti on että Qubic malliin liittyy sekä DLT-verkon kaltainen laskentaverkko nimeltä Qubic, mutta myös kokonaan uusi tapa tehdä tietokoneilla laskentaa (=QCM) ja vielä tähän sisältyvä binäärikomponenteilla trinäärilaskentaa tekevä hardware malli. Jos mietitään sitä kuinka moni jaksaa opetella näin paljon uutta ja vierasta, se on varmasti erittäin hyvä kysymys. Kuitenkin mikäli energian kulutus pienenee ja esim. akulla toimivan laitteen käyttöikä pitenee monin kertaisesti tuo se motivaatiota. Ja kuitenkin laitteen siru pitää tilata tehtaalta joten miksei tilata samalla hyvää?


Qubic- verkko on kehitysasteella ja tänä vuonna tai alkuvuodesta odotetaan että päästään näkemään hardware toimintaa käytännössä. QCM on pitkälti valmis ensimmäisen testiverkkoon, mutta kommunikaatio kerrosta (=Qubic-verkko) rakennetaan.


TLDR: pari vuotta saanee varautua odottamaan että Iotan uusi konsensus on pääverkossa ja Qubic-verkko lienee siinä kohden myös aika paketissa. (Ei virallinen tieto, =täysin oma arvio.) Tämä siis mikäli ei tule merkittäviä takaiskuja, tai uusia läpimurtoja jotka osaltaan hidastuttaisi kehitystä. Läpimurtojen suhteen voi sanoa että IF on aika päättäväinen viemään nykyiset suunnitelmat maalin ennen uuden palan haukkaamista.


Siinä siis oleellinen "lyhyesti".


70 views0 comments
bottom of page