Kuinka kirjoittaa älykäs sopimus Pythonissa ontologiaverkossa. Osa 3: Runtime API

Kuinka kirjoittaa älykäs sopimus Pythonissa ontologiaverkossa. Osa 3: Runtime API

Tämä on kolmas osa opetusartikkeleiden sarjassa älykkäiden sopimusten luomisesta Pythonissa Ontology-lohkoketjuverkostossa. Aiemmissa artikkeleissa olemme tutustuneet

  1. Blockchain & Block API
  2. Tallennussovellusliittymä.

Nyt kun sinulla on idea siitä, kuinka kutsua sopiva pysyvä tallennussovellusliittymä, kun kehität älykästä sopimusta Pythonilla ontologiaverkossa, siirrytään käyttämään Runtime API (Contract Execution API). Runtime API:ssa on 8 liittyvää sovellusliittymää, jotka tarjoavat yhteisiä rajapintoja sopimusten toteuttamiseen ja auttavat kehittäjiä hakemaan, muuttamaan ja vahvistamaan tietoja.

Alla on lyhyt kuvaus 8 API-tiedoista:

Kuinka kirjoittaa älykäs sopimus Pythonissa ontologiaverkossa. Osa 3: Runtime API

Katsotaanpa tarkemmin, miten 8 API-tietoja käytetään. Ennen tätä voit luoda uuden sopimuksen Ontologyn älykkäiden sopimusten kehitystyökalussa SmartX ja noudata alla olevia ohjeita.

Runtime API:n käyttäminen

Tuomiseen on kaksi tapaa Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontologiapolku sisältää äskettäin lisätyt API:t. Alla olevat rivit tuovat API-tiedot.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Ilmoita API

Ilmoita-toiminto lähettää tapahtuman koko verkossa. Alla olevassa esimerkissä Ilmoita-toiminto palauttaa heksadesimaalisen merkkijonon "hello word" ja lähettää sen koko verkossa.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

Voit nähdä tämän lokeista:

Kuinka kirjoittaa älykäs sopimus Pythonissa ontologiaverkossa. Osa 3: Runtime API

GetTime API

GetTime-funktio palauttaa nykyisen aikaleiman, joka palauttaa Unix-ajan, jolloin funktiota kutsuttiin. Mittayksikkö on toinen.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

GetCurrentBlockHash-funktio palauttaa nykyisen lohkon tiivisteen.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Sarjaa ja deserialoi

Tämä on pari serialisointi- ja deserialisointifunktioita. Serialize-funktio muuntaa objektin bytearray-objektiksi ja Deserialize-funktio muuntaa tavutaulukon alkuperäiseksi objektiksi. Alla oleva koodiesimerkki muuntaa saapuvat parametrit ja tallentaa ne sopimuksen pysyvään tallennustilaan. Se myös hakee tiedot sopimuksen pysyvästä tallennustilasta ja muuntaa sen alkuperäiseksi objektiksi.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext

def Main(operation, args):
    if operation == 'serialize_to_bytearray':
        data = args[0]
        return serialize_to_bytearray(data)
    if operation == 'deserialize_from_bytearray':
        key = args[0]
        return deserialize_from_bytearray(key)
    return False


def serialize_to_bytearray(data):
    sc = GetContext()
    key = "1"
    byte_data = Serialize(data)
    Put(sc, key, byte_data)


def deserialize_from_bytearray(key):
    sc = GetContext()
    byte_data = Get(sc, key)
    data = Deserialize(byte_data)
    return data

Base58ToAddress ja AddressToBase58

Tämä osoitteenkäännöstoimintopari. Base58ToAddress-funktio muuntaa base58-koodatun osoitteen bytearray-osoitteeksi, ja AddressToBase58 muuntaa bytearray-osoitteen base58-koodatuksi osoitteeksi.

from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
    base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
    addr=Base58ToAddress(base58_addr)
    Log(addr)
    base58_addr=AddressToBase58(addr)
    Log(base58_addr)

Tarkista todistaja

CheckWitness(fromAcct) -toiminnolla on kaksi toimintoa:

  • Tarkista, onko nykyisen funktion soittaja fromAcct. Jos kyllä ​​(eli allekirjoituksen vahvistus on hyväksytty), funktio palauttaa.
  • Tarkista, onko nykyistä funktiota kutsuva objekti sopimus. Jos kyseessä on sopimus ja toiminto suoritetaan sopimuksesta, niin tarkastus on läpäissyt. Toisin sanoen tarkista, onko fromAcct GetCallingScriptHash():n palautusarvo. GetCallingScriptHash()-funktio voi ottaa nykyisen älykkään sopimuksen sopimushajautusarvon.

GetCallingScriptHash():

Lisää Guthub

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

Lisätietoja löytyy osoitteesta Guthub. Seuraavassa artikkelissa esittelemme Alkuperäinen sovellusliittymäoppia siirtämään omaisuutta ontologian älykkäissä sopimuksissa.

Artikkelin on käännetty toimittajan toimesta Hashrate ja osakkeet erityisesti OntologyRussialle.

Oletko kehittäjä? Liity tekniikkayhteisöömme osoitteessa Epäsopu. Katso myös Kehittäjäkeskus Ontologiasta löydät lisää työkaluja, dokumentaatiota ja paljon muuta.

Avoimet tehtävät kehittäjille. Suorita tehtävä ja saat palkinnon.

Käytä opiskelijoiden ontologian lahjakkuusohjelmaa varten

Ontologia

Ontologian verkkosivusto - GitHub - Epäsopu - Telegram venäjäksi - Twitter - Reddit

Lähde: will.com

Lisää kommentti