ProHoster > Blogi > antaminen > 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
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:
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:
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.
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.
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.
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.