
Dette er den tredje del af en serie af vejledninger om oprettelse af smart kontrakter i Python på Ontology blockchain-netværket. I de tidligere artikler har vi lært om
- .
Nu hvor du har en idé om, hvordan du kalder det relevante API til permanent opbevaring, når du udvikler en smart kontrakt med Python på Ontology-netværket, lad os lære, hvordan man bruger Runtime API (Contract Execution API). Runtime API har 8 relaterede API'er, som giver generelle grænseflader til at udføre kontrakten og hjælper udviklere med at hente, konvertere og validere data.
Nedenfor er en kort beskrivelse af de 8 API'er:

Lad os se nærmere på, hvordan vi bruger disse 8 API'er. Før dette kan du oprette en ny kontrakt i Ontology smart kontrakt udviklingsværktøjet og følge nedenstående instruktioner.
Sådan bruger du Runtime API
Der er to måder at importere Runtime API: ontology.interop.System.Runtime og ontology.interop.Ontology.Runtime. Ontology-stien indeholder for nylig tilføjede API'er. Nedenstående linjer importerer disse API'er.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Notify-funktionen sender en begivenhed over hele netværket. I det følgende eksempel vil Notify-funktionen returnere hex-strengen “hello world” og sende den over hele netværket.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Du kan se dette i loggene:

GetTime API
GetTime-funktionen returnerer det aktuelle tidsstempel, der returnerer Unix-tidspunktet, hvor funktionen blev kaldt. Enheden er sekunder.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
GetCurrentBlockHash-funktionen returnerer hashværdien af den aktuelle blok.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize og Deserialize
Dette er et par funktioner til serialisering og deserialisering. Serialize-funktionen konverterer et objekt til et bytearray-objekt, mens Deserialize-funktionen konverterer bytearray tilbage til det oprindelige objekt. Det følgende kodeeksempel udfører konverteringen af inputparametre og gemmer dem i kontraktens permanente opbevaring. Det henter også data fra den permanente opbevaring af kontrakten og konverterer dem til det oprindelige objekt.
fra ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
fra ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
hvis operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
hvis 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 dataBase58ToAddress og AddressToBase58
Dette er et sæt af konverteringsfunktioner for adresser. Funktionen Base58ToAddress konverterer en base58-kodet adresse til en adresse i bytearray-form, og AddressToBase58 konverterer en adresse i bytearray-form til en base58-kodet adresse.
fra 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)CheckWitness
Funktionen CheckWitness(fromAcct) har to funktionaliteter:
- Bekræft, om objektet fromAcct, der kalder den aktuelle funktion, er gyldigt. Hvis ja (det vil sige, at signaturchecket er bestået), returneres funktionen.
- Tjek, om objektet, der kalder den aktuelle funktion, er et kontrakt. Hvis det er en kontrakt, og funktionen udføres fra kontrakten, er checket bestået. Det vil sige, bekræft om fromAcct er værdien returneret af GetCallingScriptHash(). Funktionen GetCallingScriptHash() kan tage værdien af kontraktens hash i den aktuelle smart-kontrakt.
GetCallingScriptHash():
Læs mere på
fra ontology.interop.System.Runtime import CheckWitness
fra ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMere information kan findes på . I den næste artikel vil vi præsentere Native API, for at lære hvordan man overfører aktiver i Ontology smart-kontrakter.
Artiklen blev oversat af redaktionen specielt for OntologyRussia.
Er du udvikler? Tilmeld dig vores tekniske fællesskab på . Tjek også Ontology, hvor du kan finde flere værktøjer, dokumentation og meget mere.
Luk opgaven — få belønning.
til Ontology talentprogram for studerende
Ontology
— — — — —
Kilde: habr.com
