Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Samankaltaiset tiedostot
Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

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

Rajapinta (interface)

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

15. Ohjelmoinnin tekniikkaa 15.1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

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

13/20: Kierrätys kannattaa koodaamisessakin

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

Tutoriaaliläsnäoloista

TIEA1000: LOHKOKETJUTEKNOLO GIAT JA SOVELLUTUKSET

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

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

Ohjelmoinnin perusteet Y Python

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmoinnin perusteet Y Python

1. Omat operaatiot 1.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

C-ohjelmointi, syksy Modulaarinen ohjelmointi. Luento C-ohjelmointi Syksy

Modulaarinen ohjelmointi

C# ja.net. Juha Järvensivu 2007

etunimi, sukunimi ja opiskelijanumero ja näillä

.NET ajoympäristö. Juha Järvensivu 2007

Metodien tekeminen Javalla

Ohjelmointi 1. Kumppanit

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmoinnin peruskurssi Y1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

3. Muuttujat ja operaatiot 3.1

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

8. Näppäimistöltä lukeminen 8.1

Kertaus: yleistys-erikoistus ja perintä

Ohjelmoinnin peruskurssi Y1

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)


T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

P e d a c o d e ohjelmointikoulutus verkossa

Sisällys. 15. Lohkot. Lohkot. Lohkot

Luokat. Luokat ja olio-ohjelmointi

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Tietueet. Tietueiden määrittely

Harjoitustyö: virtuaalikone

Ohjelmoinnin jatkokurssi, kurssikoe

4. Luokan testaus ja käyttö olion kautta 4.1

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

815338A Ohjelmointikielten periaatteet

Osoitin ja viittaus C++:ssa

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

4. Lausekielinen ohjelmointi 4.1

Järjestelmäarkkitehtuuri (TK081702)

ITKP102 Ohjelmointi 1 (6 op)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

815338A Ohjelmointikielten periaatteet

T harjoitustyö, kevät 2012

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohjelmoinnin peruskurssi Y1

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Python-ohjelmointi Harjoitus 5

UML -mallinnus TILAKAAVIO

CUDA. Moniydinohjelmointi Mikko Honkonen

TIE Principles of Programming Languages CEYLON

Java kahdessa tunnissa. Jyry Suvilehto

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

9. Periytyminen Javassa 9.1

Ohjelmoinnin perusteet Y Python

13. Loogiset operaatiot 13.1

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

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

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

Ohjelmoinnin peruskurssi Y1

Olio-ohjelmointi Javalla

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

11/20: Konepelti auki

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä Projektiryhmä Keimo

18. Abstraktit tietotyypit 18.1

Sisällys. 16. Lohkot. Lohkot. Lohkot

Transkriptio:

Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi

Merkle puu

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

Sopimuksen rakenne Sopimus siis muistuttavat rakenteeltaan hyvinkin paljon luokkaa olio-ohje lmoinnis ta Sopimuksen pystyy myös luokkien tavalla perimään toisesta sopimuksesta Sopimuksessa on mahdollista määrittää: tilamuuttujia (state variable) funktioita (function) funktio määritteitä (function modifier) tapahtumia (event) rakenteita (struct) arvojoukkoja (enum)

Tilamuuttuja Tilamuuttujan arvot tallennetaan pysyvästi sopimuksen tallennustilaan Solidityssä on useita eri pe rus tyyppe jä muuttujille Tyyppejä voidaan yhdistellä myös monimutkaisemmiksi muuttujiksi Tyyppien käytössä on myös vertailu- ja aritmeettisia operaatioita, jotka ovat tuttuja muista ohjelmointikielistä

Funktiot Funktiot ovat sopimuksessa suoritettavia koodipätkiä Funktiokutsut voivat tapahtua sisäisesti tai ulkoisesti Sisäisesti funktiokutsut tapahtuvat sopimuksen sisällä Ulkoiset funktiokutsut kutsuvat toista sopimusta

Näkyvyys Funktiolle voidaan asettaa neljä eri näkyvyysmuotoa external public private Internal Tilamuuttujille voidaan näistä asettaa public, private tai internal

Perintä ja konstruointi Sopimukset pystyvät periytymään yhdestä tai useammasta sopimuksesta Useammasta sopimuksesta perittäessä luodaan yksi sopimus, johon on kopioitu perittyjen sopimuksien sisältö Konstruoinnissa voidaan alustaa sopimuksen tila muuttujia

Funktio määritteet Funktio määritteiden avulla pystytään tarkistamaan jokin ehto ennen koodin suorittamista Määritteissä alaviiva merkkaa aluetta mistä määritettä käyttävän funktion koodi alkaa Määritteitä voidaan myös periä ja korvata uusilla ehdoilla johdetuissa sopimuksissa

Tapahtumat EVM lokin avulla pystytään lähettämään herätteitä lohkoketjussa tapahtuneista tapahtumista esimerkiksi kä yttöliittymä n puole lle Indexed avainsanalla varustettujen parametrien saamia arvoja voidaan käyttää hyväksi toimintalokin suodattamisessa

Rakenteet ja kuvaajat Rakenteet ovat muuttujien yhdistelmiä Yhdistelemällä eri muuttujia voidaan muodostaa uudenlaisia tyyppejä Rakenteita voidaan käyttää niin taulukoissa kuin kuvaajissa Kuvaajista voi myös saada yksinkertaisesti getterin lisäämällä siihen avainsanan public

Arvojoukot Arvojoukkojen avulla voidaan luoda omia tyyppejä Solidityssä. Arvojoukossa pitää olla ainakin yksi arvo Arvojoukot soveltuu hyvin kuvaamaan sopimuksen tilan siirtymisiä

Abstrakti sopimus S opimukset ovat abstrakteja mikäli yksi tai useampi funktio ei ole toteutettu sopimuksessa S opimuksia missä kaikkia funktioita ei ole toteutettu ei voida kääntää Abstraktit sopimukset toimivat hyvin pohjana sopimuksille J ohdettu sopimus on myös abstrakti jos se ei toteuta kaikkia funktioita peritystä abstraktista sopimuksesta

Rajapinta Rajapinta käyttäytyy samalla tavalla kuin abstraktit sopimukset, mutta rajapinnoissa ei saada toteuttaa yhtäkään funktiota Tämän lisäksi rajapintoja koskee seuraavat säännöt: Ei voi periä toisia sopimuksia tai rajapintoja Ei voi konstruoida Ei voi alustaa muuttujia Ei voi alustaa rakenteita Ei voi alustaa arvojoukkoja

Kirjastot Kirjasto on sopimus jolla ei ole omaa tallennustilaa ja ei voi omistaa E theriä Kirjasto on pala koodia E VM:n sisällä jota jokainen sopimus voi kutsua ilman että sitä tarvitsee uudelleen luoda Tämä säästää esimerkiksi kaasukustannuksissa Hyvä tapa parantaa koodin uudelleenkäytettävyyttä S afemath kirjasto voidaan käyttää esimerkiksi uint tyyppisissä laskutoimituksissa: using SafeMathLib for uint;

Tutustu Solidityn dokumentointiin Enemmän tavaraa, esimerkkejä ja tietoa

Koodataan! tai ainakin yritetään