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