Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API

Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API

Dyma ran 3 o gyfres o sesiynau tiwtorial ar greu contractau smart yn Python ar rwydwaith blockchain Ontology. Mewn erthyglau blaenorol, rydym wedi gweld

  1. Blockchain & Block API
  2. API Storio.

Nawr bod gennych chi syniad o sut i alw'r API storio parhaus priodol wrth ddatblygu contract smart gyda Python ar y rhwydwaith Ontology, gadewch i ni symud ymlaen i ddysgu sut i ddefnyddio Runtime API (API Cyflawni Contract). Mae gan API Runtime 8 API cysylltiedig sy'n darparu rhyngwynebau cyffredin ar gyfer gweithredu contract ac yn helpu datblygwyr i gael, trawsnewid a dilysu data.

Isod mae disgrifiad byr o ddata 8 API:

Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API

Gadewch i ni edrych yn agosach ar sut i ddefnyddio'r 8 API hyn. Cyn hynny, gallwch greu contract newydd yn yr offeryn datblygu contract smart Ontology SmartX a dilynwch y cyfarwyddiadau isod.

Sut i ddefnyddio Runtime API

Mae dwy ffordd i fewnforio Runtime API: ontology.interop.System.Runtime ΠΈ ontoleg.interop.Ontoleg.Runtime. Mae llwybr Ontoleg yn cynnwys APIs sydd newydd eu hychwanegu. Mae'r llinellau isod yn mewnforio'r data API.

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

Hysbysu API

Mae'r swyddogaeth Hysbysu yn darlledu'r digwyddiad ledled y rhwydwaith. Yn yr enghraifft isod, bydd y swyddogaeth Hysbysu yn dychwelyd y llinyn hecs "helo word" a'i ddarlledu ledled y rhwydwaith.

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

Gallwch weld hyn yn y logiau:

Sut i ysgrifennu contract smart yn Python ar y rhwydwaith Ontoleg. Rhan 3: Runtime API

GetTime API

Mae'r swyddogaeth GetTime yn dychwelyd y stamp amser cyfredol, sy'n dychwelyd yr amser Unix y cafodd y swyddogaeth ei galw. Yr uned fesur yw'r ail.

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

GetCurrentBlockHash API

Mae swyddogaeth GetCurrentBlockHash yn dychwelyd stwnsh y bloc cyfredol.

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

Serialize a Deserialize

Mae hwn yn bΓ’r o swyddogaethau serialization a deserialization. Mae'r ffwythiant Serialize yn trosi gwrthrych yn wrthrych bytearray, ac mae'r ffwythiant Deserialize yn trosi bytearray i'w wrthrych gwreiddiol. Mae'r cod sampl canlynol yn trosi paramedrau sy'n dod i mewn ac yn eu storio yn storfa barhaus y contract. Mae hefyd yn adfer y data o storfa barhaus y contract ac yn ei drawsnewid i'r gwrthrych gwreiddiol.

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

Mae'r pΓ’r hwn o swyddogaethau cyfieithu cyfeiriad. Mae swyddogaeth Base58ToAddress yn trosi cyfeiriad wedi'i amgodio base58 i gyfeiriad bytearray, ac mae AddressToBase58 yn trosi cyfeiriad bytearray i gyfeiriad base58 wedi'i amgodio.

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)

GwirioTyst

Mae gan y swyddogaeth CheckWitness (fromAcct) ddwy swyddogaeth:

  • Gwiriwch a yw'r gwrthrych sy'n galw'r ffwythiant cyfredol yn dod oAcct. Os oes (hynny yw, dilysiad llofnod wedi'i basio), mae'r swyddogaeth yn dychwelyd.
  • Gwiriwch a yw'r gwrthrych sy'n galw'r swyddogaeth gyfredol yn gontract. Os yw'n gontract a bod y swyddogaeth yn cael ei chyflawni o'r contract, yna caiff y dilysu ei basio. Hynny yw, gwiriwch ai fromAcct yw gwerth dychwelyd GetCallingScriptHash(). Gall swyddogaeth GetCallingScriptHash() gymryd gwerth stwnsh contract y contract clyfar cyfredol.

GetCallingScriptHash():

Mwy am 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

Ceir rhagor o wybodaeth yn Guthub. Yn yr erthygl nesaf, byddwn yn cyflwyno API Brodoroli ddysgu sut i drosglwyddo asedau mewn contractau smart Ontology.

Cyfieithwyd yr erthygl gan y golygyddion Hashrate a Chyfraniadau yn enwedig ar gyfer OntologyRwsia.

Ydych chi'n ddatblygwr? Ymunwch Γ’'n cymuned dechnoleg yn Discord. Hefyd, cymerwch olwg ar Canolfan Datblygwyr Ontoleg am fwy o offer, dogfennaeth, a mwy.

Tasgau agored i ddatblygwyr. Caewch y dasg - cael gwobr.

Ymgeisiwch ar gyfer y rhaglen dalent Ontoleg i fyfyrwyr

Ontoleg

Gwefan Ontoleg - GitHub - Discord - Telegram Rwsieg - Twitter - reddit

Ffynhonnell: hab.com

Ychwanegu sylw