
Dit is het derde deel van een serie informatieve artikelen over het creƫren van smart contracts met Python binnen het Ontology blockchain netwerk. In de vorige artikelen hebben we kennisgemaakt met
- .
Nu je een idee hebt van hoe je de juiste API voor de permanente opslag kunt aanroepen bij het ontwikkelen van een smart contract met Python in het Ontology netwerk, laten we ons richten op hoe we Runtime API de (Contract Execution API) gebruiken. De Runtime API heeft 8 gerelateerde API's die algemene interfaces bieden voor het uitvoeren van contracten en helpen ontwikkelaars bij het verkrijgen, converteren en controleren van gegevens.
Hieronder vindt u een kort overzicht van deze 8 API's:

Laten we dieper ingaan op hoe we deze 8 API's kunnen gebruiken. Voordat we dat doen, kun je een nieuw contract aanmaken in de Ontology smart contract ontwikkeltool en de onderstaande instructies volgen.
Hoe de Runtime API te gebruiken
Er zijn twee manieren om de Runtime API te importeren: ontology.interop.System.Runtime en ontology.interop.Ontology.Runtime. Het Ontology pad bevat recent toegevoegde API's. Onderstaande regels importeren deze API's.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
De Notify functie zendt een gebeurtenis door het hele netwerk. In het onderstaande voorbeeld zal de Notify functie de hex-reeks āhello worldā retourneren en deze door het hele netwerk verzenden.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Dit kun je zien in de logs:

GetTime API
De functie GetTime retourneert de huidige tijdstempel, die de Unix-tijd retourneert waarop de functie werd aangeroepen. Eenheid is seconden.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return een uint nummerGetCurrentBlockHash API
De functie GetCurrentBlockHash retourneert de hash van de huidige blok.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize en Deserialize
Dit is een paar functies voor serialisatie en deserialisatie. De Serialize functie converteert een object naar een bytearray object, terwijl de Deserialize functie een bytearray terug omzet naar het oorspronkelijke object. Het onderstaande codevoorbeeld voert de conversie van de invoerparameters uit en slaat deze op in de permanente opslag van het contract. Het haalt ook gegevens op uit de permanente opslag van het contract en zet deze om in het oorspronkelijke object.
van ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
van 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 dataBase58ToAddress en AddressToBase58
Deze functie-paar converteert adressen. De functie Base58ToAddress converteert een gecodeerd base58-adres naar een bytearray-formaat, terwijl AddressToBase58 een adres in bytearray-formaat naar een gecodeerd base58-adres converteert.
van 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
De functie CheckWitness(fromAcct) heeft twee functionaliteiten:
- Verificeren of de oproepende functie-object fromAcct. Als dat zo is (dat wil zeggen, de handtekening is geldig), retourneert de functie.
- Controleer of het oproepende functie-object een contract is. Als dit een contract is en de functie wordt uitgevoerd vanuit een contract, is de verificatie goedgekeurd. Dat wil zeggen, verifiƫren of fromAcct de waarde teruggegeven door GetCallingScriptHash() is. De functie GetCallingScriptHash() kan de hashwaarde van het huidige slimme contract verkrijgen.
GetCallingScriptHash():
Meer informatie op
van ontology.interop.System.Runtime import CheckWitness
van ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMeer informatie is te vinden op . In het volgende artikel zullen we introduceren Native API, om te leren hoe activa kunnen worden overgedragen in slimme contracten op Ontology.
Het artikel is vertaald door de redactie speciaal voor OntologyRussia.
Bent u een ontwikkelaar? Sluit u aan bij onze technische gemeenschap op . Bekijk ook ons Ontology, waar u meer tools, documentatie en meer kunt vinden.
Sluit de taak af ā ontvang een beloning.
voor het Ontology talentprogramma voor studenten
Ontology
ā ā ā ā ā
Bron: habr.com
