Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Samankaltaiset tiedostot
Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

TIEA1000: LOHKOKETJUTEKNOLO GIAT JA SOVELLUTUKSET

Terveiset IBM:n lohkoketjukoulutustilaisuudesta

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

11/20: Konepelti auki

Kryptovaluuttoista ja lohkoketjuista osa 3. Jyväskylä Henri Heinonen

EU Login. EU Login kirjautuminen. EU Login tilin luominen

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmoinnin peruskurssien laaja oppimäärä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Lohkoketjuteknologian hyödyntäminen tiedon oikeellisuuden todistamisessa. Joel Kaartinen,

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Alustatalous ja lohkoketjuteknologia

Timo Seppälä & Juri Mattila Tiedosta palveluja / TraFi Alustatalous ja lohkoketjuteknologia Kolmas aalto rantautuu neljäs aalto nousee?

TIE Principles of Programming Languages CEYLON

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Järjestelmäarkkitehtuuri (TK081702)


Kryptovaluuttoista ja lohkoketjuista osa 1. Jyväskylä Henri Heinonen

Ohjelmointi 1 / syksy /20: IDE

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Projektinhallintaa paikkatiedon avulla

UCOT-Sovellusprojekti. Testausraportti

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Hajautetun luottamuksen teknologiat

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Lohkoketjuteknologian hyödyntäminen terveysalalla

1. Omat operaatiot 1.1

Laiska laskenta, korekursio ja äärettömyys. TIEA341 Funktio ohjelmointi Syksy 2005

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Hyvän digitaalisen yhteiskunnan perusta

Omia appeja AppInventorilla. Jenna Tuominen Resurssikeskus Linkki, LumA, HY

Interfacing Product Data Management System

CUDA. Moniydinohjelmointi Mikko Honkonen

Maventa Connector Käyttöohje

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Tutoriaaliläsnäoloista

T Rinnakkaiset ja hajautetut digitaaliset järjestelmät Prosessialgebra

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Tähtitieteen käytännön menetelmiä Kevät 2009

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

add_action( wordcamp_jkl, johdatus_filttereihin );

Qt kaikkialla?

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

812341A Olio-ohjelmointi, I Johdanto

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Käyttöjärjestelmät. 1pJÄKÄ1 KÄYTTÖJÄRJESTELMÄN HALLINTA, 12 OSP

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

Ohje Ravitsemuspassi.fi palveluun - Organisaation rekistero ityminen

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Ohjelmoinnin peruskurssien laaja oppimäärä

Tiina Partanen. Koodaamassa Matikantunnilla

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Kryptovaluuttoista ja lohkoketjuista osa 2. Jyväskylä Henri Heinonen

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmistojen mallintaminen. Luento 11, 7.12.

7/20: Paketti kasassa ensimmäistä kertaa

58160 Ohjelmoinnin harjoitustyö

4. Lausekielinen ohjelmointi 4.1

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Tietorakenteet ja algoritmit - syksy

IR-lämpömittarityypit

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Kryptovaluuttoista ja lohkoketjuista osa 4. Jyväskylä Henri Heinonen

IR-lämpömittarityypit

4. Olio-ohjelmoinista lyhyesti 4.1

Nokia Kartat -käyttöohje

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

8/20: Luokat, oliot ja APIt

Office 365 palvelujen käyttöohje Sisällys

Digitaalisuus alustojen mahdollistajana

T harjoitustyö, kevät 2012

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Java-kielen perusteet

Virtuaalikoneiden generointi Vmgen-kääntäjällä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Klikit Myynniksi. Raahe Jaakko Suojanen

UML -mallinnus TILAKAAVIO

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Transkriptio:

Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi

There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys

Älysopimus alustat q Ethereum q Älysopimusalustojen standardi, julkinen lohkoketju q Ohjelmointikielet: Solidity, Vyper, LLL, Bamboo q Hyperledger Fabric q Älysopimusmoottori, luvanvarainen lohkoketju q Ohjelmointikielet: GO (Golang), Java* q Lisk q Keskittyy sivuketjujen rakentamiseen q Ohjelmointikielet: Javascript

Sopivan kehitysalustan valitseminen

Projektin tarve

Tekninen toteutus

Alustan kypsyys

Kehitysyhteisö

Hyperledger Fabric

Ethereum

Ethereum Virtual Machine (EVM) on suuri hajautettu virtuaalikone, joka sisältää miljoonia tilejä, jotka pystyvät suorittamaan koodia, keskustelemaan keskenään ja ylläpitämään omaa sisäistä tietokantaa

Ulkoinen tili Tiliä hallinnoidaan yksityisellä avaimella

Sopimustili Tilillä oleva koodi hallinnoi tiliä

Toimintaympäristössä ei tapahdu mitään ennen kun ulkoinen tili tekee jonkinlaisen herätteen lohkoketjuun.

Sopimukset q Sopimuskoodi pystyy: q Lähettämään Etheriä q Lukemaan ja kirjoittamaan muistiin q Vastaanottamaan ja lukemaan kutsuja q Lähettämään kutsuja toiselle sopimukselle q Sopimuksia käytetään pääosin neljään eri tarkoitukseen q Ylläpitämään dataa q Tarjoamaan hyödyllisiä funktioita q Toimimaan enemmän säännösteltynä ulkoisena tilinä q Ylläpidetyn sopimuksen/suhteen hallitsemiseen

Jokainen verkon täysi solmu suorittaa jokaisen transaktion ja varastoi sen tilan lohkoketjuun

Kaasumaksut Tahallisten hyökkäysten ja väärinkäytön estämiseksi Ethereum protokolla perii maksun jokaisesta laskentaa suorittavasta vaiheesta ja tilaa vievästä operaatioista

Transaktio q nonce: Pitää yllä transaktioiden määrää ja suojaa toisto-hyökkäyksiltä q gaslimit: Käytettävän kaasun maksimimäärä q gasprice: Yhden kaasu-yksikön hinta (ether) q to: Transaktion määränpään osoite q value: Lähetettyjen Ethereiden määrä q data: Sopimukselle luettava tieto

Lokit & tapahtumat q Tapa tallettaa tietoa lohkoketjun tapahtumista halvemmalla q Append only q Sopimukset eivät pysty lukemaan q Tapa etsiä ja esittää lohkoketjun eri tapahtumien tietoja tehokkaasti q Bloom suodatus protokolla helpottaa lokien etsimistä tiettyyn aiheeseen liittyen

Merkle-puu Mahdollistaa tehokkaan tavan varmistaa lohkon transaktioita

Älysopimusten ohjelmointi q Sopimus (engl. contract) on uusi abstraktio q Toimii pohjimmiltaan kuin oliot/objektit muutamalla eroavaisuudella: q Pysyvä / Muuttumaton q Julkinen (mm. data, funktiot) q Koodin testaaminen ja auditointi älysopimuksia ohjelmoitaessa on erityisen tärkeää q Tämän lisäksi on hyvä seurata älysopimusten ohjelmoinnin perusperiaatteita

Uusi abstraktio Uudet käytänteet - Peter Borah -

Tuo data näkyväksi

Älä tee erottelua viestinlähettäjien kesken

Pidä sopimukset lyhyinä

Erottele logiikka ja data

Korkean tason kielet Solidity, Viper, LLL ja Bamboo kääntyvät EVM koodiksi

Solidity q Korkean tason älysopimus ohjelmointikieli q Muistuttaa olio-ohjelmointia Javalla q Sopimuskoodi on suunniteltu ajettavaksi Ethereum virtuaalikoneessa (EVM) q Sopimukset itsessään toimivat yleensä tilakoneina q Käyttäytyvät ja toimivat erilailla eri vaiheissa q Funktiokutsut yleensä siirtävät sopimuksen eri vaiheeseen q Vaiheet voivat myös muuttua automaattisesti ilman herätteitä

Tekninen harjoitustyö q 1 op suoritus: q Luo oma ERC20 rahake käyttäen Solidityä q Rakenna hajautettu sovellus, jonka avulla pystyt siirtämään luomaasi rahaketta tililtä toiselle käyttöliittymän kautta q Käytä tapahtumalokia hyödyksi rahakkeen siirtotapahtuman kaappaamisessa q 2 op suoritus: q Kaikki tehtävät, jotka vaadittu myös 1 op suorituksessa q Luo älysopimus, joka vaatii kahden tai useamman osapuolen hyväksynnän toteutuakseen q Suunnittele ja rakenna osapuolten väliseen sopimukseen soveltuva hajautettu sovellus