
To jest trzecia część serii artykułów edukacyjnych na temat tworzenia smart kontraktów w Pythonie w ramach sieci blockchain Ontology. W poprzednich artykułach zapoznaliśmy się z
- .
Teraz, gdy masz pojęcie o tym, jak wywołać odpowiednie API do przechowywania danych podczas tworzenia smart kontraktu w Pythonie w sieci Ontology, przejdźmy do zapoznania się z tym, jak używać Runtime API (API wykonania kontraktu). Runtime API ma 8 powiązanych API, które zapewniają wspólne interfejsy do wykonywania kontraktu i pomagają deweloperom uzyskiwać, przekształcać i weryfikować dane.
Poniżej znajduje się krótkie opis tych 8 API:

Przyjrzyjmy się bliżej, jak używać tych 8 API. Zanim to zrobimy, możesz stworzyć nowy kontrakt w narzędziu do tworzenia smart kontraktów Ontology i postępować zgodnie z poniższymi instrukcjami.
Jak używać Runtime API
Istnieją dwa sposoby na importowanie Runtime API: ontology.interop.System.Runtime i ontology.interop.Ontology.Runtime. Ścieżka Ontology zawiera niedawno dodane API. Poniższe linie importują te API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funkcja Notify transmituje zdarzenie w sieci. W poniższym przykładzie funkcja Notify zwróci łańcuch hex „hello world” i przekaże go przez całą sieć.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Możesz to zobaczyć w logach:

GetTime API
Funkcja GetTime zwraca aktualny znacznik czasu, który zwraca czas Unix, w którym funkcja została wywołana. Jednostką pomiaru jest sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Funkcja GetCurrentBlockHash zwraca hash aktualnego bloku.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize i Deserialize
To para funkcji serializacji i deserializacji. Funkcja Serialize przekształca obiekt w obiekt bytearray, a funkcja Deserialize przekształca bytearray w pierwotny obiekt. Poniższy przykład kodu przekształca przychodzące parametry i zapisuje je w trwałej pamięci kontraktu. Wyciąga on również dane z trwałej pamięci kontraktu i przekształca je w pierwotny obiekt.
z ontologii.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
z ontologii.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 i AddressToBase58
Ta para funkcji konwersji adresów. Funkcja Base58ToAddress przekształca zakodowany adres base58 w adres w formie bytearray, a AddressToBase58 przekształca adres w formie bytearray w zakodowany adres base58.
z ontologii.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
Funkcja CheckWitness(fromAcct) ma dwie funkcjonalności:
- Weryfikować, czy obiekt wywołujący bieżącą funkcję jest fromAcct. Jeśli tak (tj. podpis został zweryfikowany), funkcja zwraca wartość.
- Sprawdzić, czy obiekt wywołujący bieżącą funkcję jest kontraktem. Jeśli jest to kontrakt i funkcja jest wywoływana z kontraktu, wtedy weryfikacja została zakończona. To znaczy, weryfikować, czy fromAcct odpowiada wartości GetCallingScriptHash(). Funkcja GetCallingScriptHash() może pobrać wartość hash kontraktu bieżącego smart kontraktu.
GetCallingScriptHash():
Więcej na
z ontologii.interop.System.Runtime import CheckWitness
z ontologii.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resWięcej informacji można znaleźć na . W następnym artykule przedstawimy Native API, aby nauczyć się, jak przekazywać aktywa w smart kontraktach Ontology.
Artykuł został przetłumaczony przez redakcję specjalnie dla OntologyRussia.
Jesteś programistą? Dołącz do naszej społeczności technicznej na . Ponadto zajrzyj do Ontology, tam można znaleźć więcej narzędzi, dokumentację i wiele więcej.
Zamknij zadanie — zdobądź nagrodę.
o program talentów Ontology dla studentów
Ontology
— — — — —
Źródło: habr.com
