
Det hÀr Àr den tredje delen av en serie utbildningsartiklar om hur man skapar smarta kontrakt pÄ Python i blockchain-nÀtverket Ontology. I de tidigare artiklarna har vi blivit bekanta med
- .
Nu nÀr du har en uppfattning om hur du anropar det lÀmpliga API:t för permanent lagring nÀr du utvecklar ett smart kontrakt med Python i 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 erbjuder allmÀnna grÀnssnitt för att köra kontrakt och hjÀlper utvecklare att hÀmta, omvandla och verifiera data.
Nedanför finns en kort beskrivning av dessa 8 API:er:

LÄt oss ta en nÀrmare titt pÄ hur vi anvÀnder dessa 8 API:er. Innan dess kan du skapa ett nytt kontrakt i Ontology:s utvecklingsverktyg för smarta kontrakt och följa de nedanstÄende instruktionerna.
Hur man anvÀnder Runtime API
Det finns tvÄ sÀtt att importera Runtime API: ontology.interop.System.Runtime och ontology.interop.Ontology.Runtime. Ontology-sökvÀgen innehÄller nyligen tillagda API:er. De följande raderna importerar dessa API:er.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funktionen Notify sĂ€nder ett hĂ€ndelse genom hela nĂ€tverket. I det följande exemplet kommer funktionen Notify att returnera hex-strĂ€ngen âhello worldâ och sprida den över 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, vilket ger Unix-tiden dÄ funktionen anropades. Enheten Àr sekunder.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Funktionen GetCurrentBlockHash returnerar hash av den aktuella block.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize och Deserialize
Detta Àr ett par funktioner för serialisering och deserialisering. Funktionen Serialize omvandlar ett objekt till ett bytearray-objekt, medan funktionen Deserialize omvandlar bytearray tillbaka till det ursprungliga objektet. Det följande kodexemplet genomför omvandlingen av inkommande parametrar och sparar dem i kontraktets permanenta lagring. Det hÀmtar ocksÄ data frÄn kontraktets permanenta lagring och omvandlar dem tillbaka till det ursprungliga objektet.
frÄn ontology.interop.System.Runtime importera GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
frÄn ontology.interop.System.Storage importera Put, Get, GetContext
def Main(operation, args):
om operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
om 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 och AddressToBase58
Detta Àr ett par funktioner för konvertering av adresser. Funktionen Base58ToAddress konverterar en base58-kodad adress till en adress i form av bytearray, medan AddressToBase58 konverterar en adress i form av bytearray till en base58-kodad adress.
frÄn ontology.interop.Ontology.Runtime importera 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 tvÄ funktioner:
- Verifiera om objektet fromAcct som anropar den aktuella funktionen. Om sÄ Àr fallet (dvs. underskriftskontrollen Àr godkÀnd), returneras funktionen.
- Kontrollera om objektet som anropar den aktuella funktionen Àr ett kontrakt. Om det Àr ett kontrakt och funktionen anropas frÄn kontraktet, sÄ Àr verifieringen godkÀnd. Det vill sÀga, verifiera om fromAcct Àr vÀrdet som returneras av GetCallingScriptHash(). Funktionen GetCallingScriptHash() kan ta vÀrdet av hashkoden för det aktuella smarta kontraktet.
GetCallingScriptHash():
Mer information finns pÄ
frÄn ontology.interop.System.Runtime importera CheckWitness
frÄn ontology.interop.Ontology.Runtime importera Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMer information kan hittas pÄ . I nÀsta artikel kommer vi att presentera Native API, för att förstÄ hur man överför tillgÄngar i Ontologys smarta kontrakt.
Artikeln har översatts av redaktionen speciellt för OntologyRussia.
Ăr du utvecklare? GĂ„ med i vĂ„rt tekniska samhĂ€lle pĂ„ . Dessutom, kolla in Ontology, dĂ€r du kan hitta fler verktyg, dokumentation och mycket mer.
StĂ€ng uppgiften â fĂ„ en belöning.
till Ontologys talangprogram för studenter
Ontology
â â â â â
KĂ€lla: habr.com
