Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 3: Runtime API

Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 3: Runtime API

Is e seo an 3mh pàirt ann an sreath de artaigilean foghlaim mu bhith a’ cruthachadh chùmhnantan snasail ann am Python air lìonra blockchain Ontology. Ann an artaigilean roimhe seo fhuair sinn eòlas

  1. Blockchain & Block API
  2. Stòradh API.

A-nis gu bheil beachd agad air mar as urrainn dhut an API stòraidh seasmhach iomchaidh a ghairm nuair a bhios tu a ’leasachadh cùmhnant snasail a’ cleachdadh Python air lìonra Ontology, gluaisidh sinn air adhart gu bhith ag ionnsachadh mar a chleachdas tu Runtime API (API Cur gu bàs Cùmhnant). Tha 8 APIan co-cheangailte ris an Runtime API a bheir seachad eadar-aghaidh cumanta airson coileanadh cùmhnantan agus a chuidicheas luchd-leasachaidh gus dàta fhaighinn air ais, atharrachadh agus a dhearbhadh.

Gu h-ìosal tha tuairisgeul goirid air an dàta 8 API:

Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 3: Runtime API

Bheir sinn sùil nas mionaidiche air mar a chleachdas tu an dàta 8 API. Ron àm seo, faodaidh tu cùmhnant ùr a chruthachadh anns an inneal leasachaidh cùmhnant smart Ontology SmartX agus lean an stiùireadh gu h-ìosal.

Mar a chleachdas tu an Runtime API

Tha dà dhòigh air a thoirt a-steach Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Anns an t-slighe Ontology tha na APIan ùra a chaidh a chur ris. Bidh na loidhnichean gu h-ìosal a’ toirt a-steach an dàta API.

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

Cuir fios gu API

Bidh an gnìomh Notify a’ craoladh an tachartais air feadh an lìonra. Anns an eisimpleir gu h-ìosal, tillidh an gnìomh Notify an sreang hex “hello word” agus ga chraoladh air feadh an lìonra.

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

Chì thu seo anns na logaichean:

Mar a sgrìobhas tu cùmhnant snasail ann am Python air lìonra Ontology. Pàirt 3: Runtime API

API GetTime

Bidh an gnìomh GetTime a’ tilleadh an clàr-ama gnàthach, a thilleas an ùine Unix aig an deach an gnìomh a ghairm. Tha an aonad tomhais san dàrna àite.

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

GetCurrentBlockHash API

Bidh an gnìomh GetCurrentBlockHash a’ tilleadh hash a’ bhloca gnàthach.

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

Serialize agus deserialize

Is e seo paidhir de ghnìomhan serialization agus deserialization. Bidh an gnìomh Serialize ag atharrachadh rud gu rud bytearray, agus bidh an gnìomh Deserialize ag atharrachadh bytearray chun rud tùsail. Bidh an sampall còd gu h-ìosal a 'tionndadh nam paramadairean a tha a' tighinn a-steach agus gan stòradh ann an stòradh leantainneach a 'chùmhnant. Bidh e cuideachd a 'faighinn dàta air ais bho stòradh leantainneach a' chùmhnant agus ga thionndadh gu bhith na rud tùsail.

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

Base58Gu Seòladh agus SeòladhToBase58

Tha am paidhir seo de ghnìomhan eadar-theangachaidh sheòlaidh. Bidh gnìomh Base58ToAddress ag atharrachadh seòladh còd base58 gu seòladh bytearray, agus bidh AddressToBase58 ag atharrachadh seòladh bytearray gu seòladh còdaichte base58.

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)

Thoir sùil air Fianais

Tha dà fheart aig a’ ghnìomh CheckWitness (fromAcct):

  • Dèan cinnteach a bheil neach-fios na gnìomh làithreach bhoAcct. Ma tha (is e sin, chaidh dearbhadh ainm-sgrìobhte seachad), tillidh an gnìomh.
  • Dèan cinnteach an e cùmhnant a th’ anns an nì a tha a’ gairm an gnìomh gnàthach. Mas e cùmhnant a th’ ann agus gu bheil an gnìomh air a choileanadh bhon chùmhnant, thèid an dearbhadh seachad. Is e sin, dearbhaich an e bhoAcct an luach tilleadh aig GetCallingScriptHash (). Faodaidh gnìomh GetCallingScriptHash() luach hash cùmhnant a’ chùmhnant smart gnàthach a ghabhail.

GetCallingScriptHash():

Leugh tuilleadh air 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

Gheibhear tuilleadh fiosrachaidh aig Guthub. Anns an ath artaigil bheir sinn a-steach API dùthchasachgus ionnsachadh mar a ghluaiseas tu maoin ann an cùmhnantan snasail Ontology.

Chaidh an artaigil eadar-theangachadh leis an luchd-deasachaidh Hashrate & Shares gu sònraichte airson OntologyRussia.

A bheil thu nad leasaiche? Thig còmhla ris a’ choimhearsnachd theicnigeach againn aig Cuir fàilte air. Cuideachd, thoir sùil air Ionad luchd-leasachaidh Ontology, gheibh thu barrachd innealan, sgrìobhainnean agus mòran a bharrachd an sin.

Gnìomhan fosgailte do luchd-leasachaidh. Cuir crìoch air an obair agus faigh duais.

Cuir a-steach airson prògram tàlant Ontology airson oileanaich

Ontology

Làrach-lìn Ontology - GitHub - Cuir fàilte air - Telegram ann an ruisis - Twitter - reddit

Source: www.habr.com

Cuir beachd ann