ProHoster > blogg > administration > Hur man skriver ett smart kontrakt i Python på ontologinätverket. Del 3: Runtime API
Hur man skriver ett smart kontrakt i Python på ontologinätverket. Del 3: Runtime API
Detta är den tredje delen i en serie utbildningsartiklar om att skapa smarta kontrakt i Python på Ontology blockchain-nätverket. I tidigare artiklar har vi bekantat oss med
Nu när du har en idé om hur du anropar lämpligt beständig lagrings-API när du utvecklar ett smart kontrakt med Python på Ontology-nätverket, låt oss gå vidare till att lära oss hur man använder Runtime API (Contract Execution API). Runtime API har 8 relaterade API:er som tillhandahåller gemensamma gränssnitt för kontraktsutförande och hjälper utvecklare att hämta, transformera och validera data.
Nedan följer en kort beskrivning av de 8 API-data:
Låt oss ta en närmare titt på hur man använder 8 API-data. Innan detta kan du skapa ett nytt kontrakt i Ontologys smarta kontraktsutvecklingsverktyg SmartX och följ instruktionerna nedan.
Hur man använder Runtime API
Det finns två sätt att importera Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontologisökvägen innehåller de nyligen tillagda API:erna. Raderna nedan importerar API-data.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Meddela API
Meddelandefunktionen sänder händelsen i hela nätverket. I exemplet nedan kommer Notify-funktionen att returnera hex-strängen "hej ord" och sända den i hela nätverket.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Du kan se detta i loggarna:
GetTime API
Funktionen GetTime returnerar den aktuella tidsstämpeln, som returnerar den Unix-tid då funktionen anropades. Måttenheten är andra.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Funktionen GetCurrentBlockHash returnerar hashen för det aktuella blocket.
Detta är ett par serialiserings- och deserialiseringsfunktioner. Funktionen Serialize konverterar ett objekt till ett bytearray-objekt och funktionen Deserialize konverterar en bytearray till det ursprungliga objektet. Kodexemplet nedan konverterar de inkommande parametrarna och lagrar dem i kontraktets beständiga lagring. Den hämtar också data från kontraktets beständiga lagring och omvandlar den till det ursprungliga objektet.
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 och AddressToBase58
Detta par av adressöversättningsfunktioner. Base58ToAddress-funktionen konverterar en base58-kodad adress till en bytearray-adress, och AddressToBase58 konverterar en bytearray-adress till en base58-kodad adress.
Funktionen CheckWitness(fromAcct) har två funktioner:
Verifiera om den aktuella funktionens uppringare är från Acct. Om ja (det vill säga signaturverifiering godkänd) returnerar funktionen.
Kontrollera om objektet som anropar den aktuella funktionen är ett kontrakt. Om det är ett kontrakt och funktionen utförs från kontraktet, är verifieringen godkänd. Det vill säga verifiera om fromAcct är returvärdet för GetCallingScriptHash(). Funktionen GetCallingScriptHash() kan ta kontraktshashvärdet för det aktuella smarta kontraktet.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Mer information finns på Guthub. I nästa artikel kommer vi att presentera Native APIför att lära dig hur man överför tillgångar i Ontology smarta kontrakt.
Artikeln översattes av redaktionen Hashrate & Aktier speciellt för OntologyRussia.
Är du en utvecklare? Gå med i vår tekniska community på Discord. Ta också en titt på Utvecklarcenter Ontologi, du kan hitta fler verktyg, dokumentation och mycket mer där.