
Toto je třetí část ze série vzdělávacích článků o vytváření smart kontraktů v Pythonu v blockchainové síti Ontology. V předchozích článcích jsme se seznámili s
- .
Nyní, když máte představu o tom, jak zavolat vhodné API pro trvalé úložiště při vývoji smart kontraktu pomocí Pythonu v síti Ontology, přejděme k tomu, jak využít Runtime API (API pro provádění kontraktu). Runtime API má 8 souvisejících API, která poskytují obecné rozhraní pro provádění kontraktu a pomáhají vývojářům získávat, převádět a ověřovat data.
Níže je stručný popis těchto 8 API:

Podívejme se podrobněji, jak používat těchto 8 API. Než začneme, můžete vytvořit nový kontrakt v nástroji pro vývoj smart kontraktů Ontology a řídit se níže uvedenými pokyny.
Jak používat Runtime API
Existují dvě cesty pro importování Runtime API: ontology.interop.System.Runtime a ontology.interop.Ontology.Runtime. Cesta Ontology obsahuje nedávno přidaná API. Následující řádky importují tato API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funkce Notify přenáší událost po celé síti. V následujícím příkladu funkce Notify vrátí hexadecimální řetězec "hello world" a předá ho po celé síti.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Můžete to vidět v logách:

GetTime API
Funkce GetTime vrací aktuální časovou značku, která vrací Unix-čas, kdy byla funkce vyvolána. Jednotka měření— sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Funkce GetCurrentBlockHash vrací hash aktuálního bloku.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize a Deserialize
To jsou dva funkce pro serializaci a deserializaci. Funkce Serialize převádí objekt na objekt bytearray, zatímco funkce Deserialize převádí bytearray na původní objekt. Následující ukázka kódu provádí převod vstupních parametrů a ukládá je do trvalého úložiště kontraktu. Také získává data z trvalého úložiště kontraktu a převádí je zpět na původní objekt.
z ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
z 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 a AddressToBase58
Tato dvojice funkcí slouží k převodu adres. Funkce Base58ToAddress převádí zakódovanou adresu base58 na adresu ve formátu bytearray, zatímco AddressToBase58 převádí adresu ve formátu bytearray na zakódovanou adresu base58.
z 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
Funkce CheckWitness(fromAcct) má dvě funkce:
- Ověřit, zda je volající této funkce objekt fromAcct. Pokud ano (tedy pokud byla ověřena podpis), funkce vrátí hodnotu.
- Ověřit, zda je volající této funkce objekt kontrakt. Pokud je to kontrakt a funkce je volána z kontraktu, pak byla verifikace úspěšná. To znamená, ověřit, zda fromAcct odpovídá hodnotě vrácené funkcí GetCallingScriptHash(). Funkce GetCallingScriptHash() může vrátit hash aktuálního smart kontraktu.
GetCallingScriptHash():
Více na
z ontology.interop.System.Runtime import CheckWitness
z ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resVíce informací lze nalézt na . V následujícím článku představíme Native API, abychom se naučili, jak převádět aktiva v smart kontraktech Ontology.
Článek přeložila redakce speciálně pro OntologyRussia.
Jste vývojář? Připojte se k naší technické komunitě na . Navíc se podívejte na Ontology, kde můžete najít více nástrojů, dokumentaci a další informace.
Uzavři úkol — získej odměnu.
do programu talentů Ontology pro studenty
Ontology
— — — — —
Zdroj: habr.com
