TIEA1000 Tietotekniikan ajankohtaisia teemoja, Lohkoketjuteknologiat ja sovellutukset - Kurssin suorittaminen (1...4 op)

Harjoitustyö (2...3 op)

Harjoitustyöstä voi tehdä halutessaan hieman pitemmän, jolloin saa 3 opintopistettä. Lyhyempää harjoitustyötä on tarkoitus esitellä seminaarissa 9.1.2018. Pitemmän harjoitustyön voi palauttaa helmikuun 2018 loppuun mennessä.

Motiivi

Perustuloa monet pitävät liian kalliina, koska se maksaisi Suomen valtiolle vuodessa esimerkiksi 5 000 000 * 700 EUR/kk * 12 kk = 42 miljardia euroa. Entäs, jos varattaisiin kuukauden budjetti (5 000 000 * 700 EUR = 3,5 miljardia euroa) ja katsottaisiin, kuinka pitkälle rahat todellisuudessa riittävät? Perustuloa maksettaisiinkin 24 tunnin välein ja perustulonsaajan tulee 24 tunnin aikana käydä lunastamassa kyseisen päivän perustulo. Jos perustuloa ei käy lunastamassa 24 tunnin aikana, kyseisen päivän osuus (700 EUR / 30 = 23,33 EUR) menee takaisin valtion perustulokirstuun. Entä, jos vaikkapa vain 20% ihmisistä käy säännöllisesti lunastamassa päivittäisen perustulonsa? Pienehkökin perustulobudjetti (~3,5 miljardia euroa) riittäisi pitkälle.

On mahdollista saada 3 opintopistettä, jos haluaa tehdä vähän suuremman harjoitustyön.

Vaihtoehto A: Kauppatieteellinen näkökulma

Perustakaa 4 - 6 henkilön ryhmiä ja valmistelkaa seminaariesitys (10 - 15 minuuttia), jossa esitätte lohkoketjujen ja kryptovaluuttojen hyötyjä ja haittoja perustulon maksamisessa kauppatieteellisestä näkökulmasta. Mitä lakiteknisiä seikkoja tulee vastaan? Voisiko kryptovaluutta toimia perustulona paremmin kuin eurot?

Vaihtoehto B: Ohjelmistoarkkitehtuuri

Perustakaa 4 - 6 henkilön ryhmiä ja valmistelkaa seminaariesitys (10 - 15 minuuttia), jossa esitätte ohjelmistoarkkitehtuurisen ratkaisun perustulon maksamiseksi jokaiselle suomalaiselle. Mitä rajapintoja vaaditaan? Mitä teknisiä haasteita tulee vastaan?

Vaihtoehto C: Ohjelmointi

Perustakaa 3 - 5 henkilön ryhmiä ja valmistelkaa seminaariesitys (10 - 15 minuuttia), jossa esitätte ohjelmakoodia, jolla perustulo maksetaan kryptovaluuttana (vaikkapa bitcoineina) valtion kryptovaluuttalompakosta kansalaiselle. Koodin ei tarvitse olla kovin monimutkaista eikä sen ole pakko varsinaisesti toimia. On tärkeintä, että asiaa on pohdittu ohjelmoijan näkökulmasta. On tärkeää tutustua luennoilla tulleisiin koodiesimerkkeihin ja lukea vaikkapa Bitcoinin kehittäjän dokumentaatiota ja esimerkkejä, joita löytyy osoitteesta https://bitcoin.org/en/developer-documentation. Yrittäkää tehdä toteutus Ethereumin ConsenSys-kirjastolla. Ethereum-lohkoketjun asentamisesta löytyy tietoa mm. täältä.

Ilmoittautuminen harjoitustyöryhmään

Google Docs -asiakirjassa voi ilmoittautua ryhmään.

MultiChain-lohkoketjun käyttäminen (1 op)

MultiChain-tehtävien tekemisestä saa 1 opintopisteen, jos tekee ne helmikuun 2018 loppuun mennessä.

MultiChainilla voi luoda omia lohkoketjuja. Se muistuttaa hyvin paljon toiminnaltaa Bitcoin Corea.

MultiChainin asentaminen

MultiChainin asennusohjeet ja binäärit löytyvät täältä.

Linux (64-bittinen)

Kirjoita Linuxin komentorivillä seuraavat komennot.

su
cd /tmp
wget https://www.multichain.com/download/multichain-1.0.2.tar.gz
tar -xvzf multichain-1.0.2.tar.gz
cd multichain-1.0.2
mv multichaind multichain-cli multichain-util /usr/local/bin
exit

Windows (64-bittinen)

Lataa zip-tiedosto ja pura se haluamaasi kansioon.

1. Lohkoketjuun liittyminen

Kirjoita pääteikkunaan MultiChain-hakemistossa:

multichaind chain4@blockchain.it.jyu.fi:8333

Nyt ruudulla pitäisi näkyä tieto siitä, että lohkoketju on onnistuneesti alustettu, mutta sinulla ei ole oikeuksia yhdistyä siihen. Ruudulla pitäisi näkyä siis suunnilleen tällaista:

D:\multichain-windows-1.0.2>multichaind chain4@blockchain.it.jyu.fi:8333

MultiChain 1.0.2 Daemon (latest protocol 10009)

Retrieving blockchain parameters from the seed node blockchain.it.jyu.fi:8333 ...
Blockchain successfully initialized.

Please ask blockchain admin or user having activate permission to let you connect and/or transact:
multichain-cli chain4 grant 1Q8ShfnPBhedbxk43oyFeVFp8in7xMbpDTyKeF connect
multichain-cli chain4 grant 1Q8ShfnPBhedbxk43oyFeVFp8in7xMbpDTyKeF connect,send,receive


D:\multichain-windows-1.0.2>

Ruudulla pitäisi siis näkyä solmusi lompakossa oleva osoite (pitkä kirjain- ja numerosarja, joka alkaa ykkösellä). Ota tämä osoite ylös ja lähetä se minulle sähköpostitse osoitteella henri.t.heinonen@jyu.fi ja otsikolla "TIEA1000 - MultiChain".

Esimerkkitapauksessa osoite oli siis 1Q8ShfnPBhedbxk43oyFeVFp8in7xMbpDTyKeF.

2. Varojen (assets) ja saldon (balance) tarkistaminen

Saat minulta vastausviestin sähköpostitse, jonka jälkeen voit kirjoittaa pääteikkunaan:

multichaind chain4 -daemon

Nyt sinun pitäisi pystyä yhdistymään lohkoketjuun. Jos tulee virheilmoitus:

"Error: ERROR: Couldn't initialize asset database for blockchain chain4. Please restart multichaind with reindex=1."
kirjoita pääteikkunaan:
multichaind chain4 -daemon -reindex=1

Avaa toinenkin pääteikkuna MultiChain-hakemistoon. Kirjoita seuraavaksi avaamaasi toiseen pääteikkunaan:

multichain-cli chain4 listassets

Kirjoita seuraavaksi toiseen pääteikkunaan:

multichain-cli chain4 gettotalbalances 0

Lähetä ohjelman antamat tulosteet minulle sähköpostitse osoitteella henri.t.heinonen@jyu.fi ja otsikolla "TIEA100 - MultiChain".

3. Kirjan ostaminen palkkabitcoineilla

Kirjoita toiseen pääteikkunaan:

multichain-cli chain4 gettotalbalances 0

Mitä uutta huomaat? (Olet saanut kaksi bitcoinia palkkaa.)

Kirjoita toiseen pääteikkunaan:

multichain-cli chain4 sendasset 181PuyyXzuaYhvDVLqSBQH2K8RDQQNWVFYac1p bitcoin 1

Nyt pitäisi olla lompakon saldossa 1 bitcoin vähemmän, koska lähetit juuri 1 bitcoinin sieltä pois. Tarkista tilanne kirjoittamalla:

multichain-cli chain4 gettotalbalances 0

Lähetä minulle sitten sähköposti osoitteella henri.t.heinonen@jyu.fi ja otsikolla "TIEA1000 - MultiChain". Kirjoita viestin runkoon: "Ostin sinulta kirjan hintaan 1 bitcoin. Seuraavaksi haluaisin ostaa kännykän hintaan 2 bitcoinia, mutta minulla on vain 1 bitcoin jäljellä. Voidaanko sopia kauppa siten, että lähetät minulle kaksi antibitcoinia?"

Antibitcoin? Tutustu antirahan käsitteeseen lukemalla tämä ekonofysiikkaa käsittelevä artikkeli.

4. Kännykän ostaminen antibitcoineilla

Kirjoita toiseen pääteikkunaan:

multichain-cli chain4 gettotalbalances 0

Mitä uutta huomaat? (Olet saanut kaksi antibitcoinia.)

Lähetä minulle sähköposti osoitteella henri.t.heinonen@jyu.fi ja otsikolla "TIEA1000 - MultiChain". Kirjoita viestin runkoon: "Haluaisin likviditeettiä. Olisi tarvetta neljälle bitcoinille, jotta voin ostaa polkupyörän kaveriltani."

5. Likviditeetin pyytäminen

Kirjoita toiseen pääteikkunaan:

multichain-cli chain4 gettotalbalances 0

Mitä uutta huomaat? Olet saanut 4 bitcoinia ja 4 antibitcoinia. Miten tämä on mahdollista, kun emme vaihtaneet keskenämme hyödykkeitä emmekä palveluita? Hyväntekeväisyyttä? Rahallinen omaisuuteeni ei ehtynyt, koska bitcoinit ja antibitcoinit tavallaan kumoavat toisensa. On siis mahdollista antaa pois bitcoineja, jos samalla antaa pois antibitcoineja, ilman että rahallinen omaisuus vähenee.

6. Lohkoketjun ominaisuuksien tutkiminen

Kirjoita seuraavaksi toiseen pääteikkunaan:

multichain-cli chain4 getinfo

Katso, mitä tietoja lohkoketjusta annetaan.

  1. Montako lohkoa ("block") on luotu lohkoketjuun?
  2. Paljonko on lohkoketjun vaikeustaso ("difficulty")?
  3. Mikä on solmun osoite ("nodeaddress")?
  4. Mikä voisi olla poltto-osoitteen ("burnaddress") tarkoitus? Vinkki: Proof-of-Burn
  5. Onko kyseessä testiverkko ("testnet")?

Pohdi myös seuraavaa asiaa.

Vastaa näihin kaikkiin kysymyksiin minulle sähköpostitse osoitteella henri.t.heinonen@jyu.fi ja otsikolla "TIEA100 - MultiChain".

Voit halutessasi tässä vaiheessa polttaa bitcoinisi ja antibitcoinisi lähettämällä ne proof-of-burn-osoitteeseen: 1XXXXXXXW1XXXXXXbXXXXXXXbJXXXXXXadtQgL.

multichain-cli chain4 gettotalbalances 0
multichain-cli chain4 sendasset 1XXXXXXXW1XXXXXXbXXXXXXXbJXXXXXXadtQgL bitcoin 5
multichain-cli chain4 sendasset 1XXXXXXXW1XXXXXXbXXXXXXXbJXXXXXXadtQgL antibitcoin 6
multichain-cli chain4 gettotalbalances 0