Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 3. daļa: izpildlaika API

Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 3. daļa: izpildlaika API

Šī ir 3. daļa no pamācību sērijas par viedo līgumu izveidi Python valodā Ontology blokķēdes tīklā. Iepriekšējos rakstos mēs uzzinājām par

  1. Blockchain & Block API
  2. Krātuves API.

Tagad, kad jums ir priekšstats par to, kā izsaukt atbilstošo API pastāvīgai glabāšanai, izstrādājot viedlīgumu ar Python Ontology tīklā, pāriesim pie tā lietošanas apguves. Izpildlaika API (Līguma izpildes API). Izpildes laika API ir astoņas saistītas API, kas nodrošina kopīgas saskarnes līgumu izpildei un palīdz izstrādātājiem izgūt, pārveidot un validēt datus.

Zemāk ir sniegts īss šo 8 API apraksts:

Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 3. daļa: izpildlaika API

Aplūkosim tuvāk, kā izmantot šīs 8 API. Pirms sākam, varat izveidot jaunu līgumu Ontology viedlīgumu izstrādes rīkā. SmartX un izpildiet tālāk sniegtos norādījumus.

Kā lietot izpildlaika API

Ir divi importēšanas veidi Izpildes laika API: ontology.interop.System.Runtime и ontoloģija.interop.Ontoloģija.Izpildes laiksOntoloģijas ceļā ir nesen pievienotas API. Šajās rindās tiek importēti API dati.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Paziņojumu API

Funkcija Notify pārraida notikumu visā tīklā. Tālāk redzamajā piemērā funkcija Notify atgriezīs heksadecimālo virkni "sveiks vārds" un pārraidīs to visā tīklā.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

To var redzēt žurnālos:

Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 3. daļa: izpildlaika API

GetTime API

Funkcija GetTime atgriež pašreizējo laika zīmogu, kas ir Unix laiks, kurā funkcija tika izsaukta. Mērvienība ir sekundes.

from ontology.interop.System.Runtime import GetTime
def demo():
    time=GetTime()
    return time # return a uint num

GetCurrentBlockHash API

Funkcija GetCurrentBlockHash atgriež pašreizējā bloka jaucējkodu.

from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
    block_hash = GetCurrentBlockHash()
    return block_hash

Serializēt un deserializēt

Šis ir serializācijas un deserializācijas funkciju pāris. Funkcija Serialize konvertē objektu par bytearray, un funkcija Deserialize konvertē bytearray atpakaļ par tā sākotnējo objektu. Zemāk redzamais koda paraugs konvertē ienākošos parametrus un saglabā tos līguma pastāvīgajā atmiņā. Tā arī izgūst datus no līguma pastāvīgās atmiņas un konvertē tos atpakaļ par tā sākotnējo objektu.

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 un AddressToBase58

Šis adrešu konvertēšanas funkciju pāris. Base58ToAddress konvertē base58 kodētu adresi par bytearray adresi, un AddressToBase58 konvertē bytearray adresi par base58 kodētu adresi.

from 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

Funkcijai CheckWitness(fromAcct) ir divas iespējas:

  • Pārbaudiet, vai pašreizējās funkcijas izsaucējs ir fromAcct. Ja tā (t. i., paraksta pārbaude ir veiksmīga), funkcija atgriež vērtību.
  • Pārbaudiet, vai objekts, kas izsauc pašreizējo funkciju, ir līgums. Ja tas ir līgums un funkcija tiek izpildīta no līguma iekšienes, tad verifikācija ir pabeigta. Tas ir, pārbaudiet, vai fromAcct ir GetCallingScriptHash() atgrieztā vērtība. Funkcija GetCallingScriptHash() var izmantot pašreizējā viedlīguma līguma jaucējvērtību.

GetCallingScriptHash():

Lasīt vairāk vietnē Guthub

from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
    addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
    res=CheckWitness(addr)
    return res

Vairāk informācijas var atrast vietnē GuthubNākamajā rakstā mēs iepazīstināsim Vietējā APIlai uzzinātu, kā pārskaitīt aktīvus Ontology viedlīgumos.

Rakstu tulkoja redaktori Hashrate&Shares speciāli OntologyRussia.

Vai jūs esat izstrādātājs? Pievienojieties mūsu tehnoloģiju kopienai vietnē Neatbilstība. Apskatiet arī Izstrādātāju centrs Ontoloģija, tur var atrast vairāk rīku, dokumentāciju un daudz ko citu.

Atvērtie uzdevumi izstrādātājiem. Pabeidziet uzdevumu un saņemiet atlīdzību.

Piesakies ontoloģijas talantu programmai studentiem

Ontoloģiju

Ontoloģijas vietne Sākot no GitHub Sākot no Neatbilstība Sākot no Telegramma krievu valodā Sākot no Twitter Sākot no Reddit

Avots: www.habr.com

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster