ווי צו שרייַבן אַ קלוג קאָנטראַקט אין פּיטהאָן אויף די אָנטאָלאָגי נעץ. טייל 3: רונטימע אַפּי

ווי צו שרייַבן אַ קלוג קאָנטראַקט אין פּיטהאָן אויף די אָנטאָלאָגי נעץ. טייל 3: רונטימע אַפּי

דאָס איז די 3 טייל אין אַ סעריע פון ​​בילדונגקרייז אַרטיקלען וועגן קריייטינג קלוג קאַנטראַקץ אין פּיטהאָן אויף די אָנטאָלאָגי בלאָקטשיין נעץ. אין פריערדיגע ארטיקלען האבן מיר זיך באקענט מיט

  1. Blockchain & Block API
  2. סטאָרידזש API.

איצט אַז איר האָט אַ געדאַנק פון ווי צו רופן די צונעמען פּערסיסטענט סטאָרידזש אַפּי ווען איר אַנטוויקלען אַ קלוג קאָנטראַקט ניצן פּיטהאָן אויף די אָנטאָלאָגי נעץ, לאָזן אונדז פאָרזעצן צו לערנען ווי צו נוצן רונטימע אַפּי (קאָנטראַקט עקסעקוטיאָן אַפּי). די רונטימע אַפּי האט 8 פֿאַרבונדענע אַפּיס וואָס צושטעלן פּראָסט ינטערפייסיז פֿאַר קאָנטראַקט דורכפירונג און העלפֿן דעוועלאָפּערס צוריקקריגן, יבערמאַכן און וואַלאַדייט דאַטן.

ונטער איז אַ קורץ באַשרייַבונג פון די 8 API דאַטן:

ווי צו שרייַבן אַ קלוג קאָנטראַקט אין פּיטהאָן אויף די אָנטאָלאָגי נעץ. טייל 3: רונטימע אַפּי

זאל ס נעמען אַ נעענטער קוק ווי צו נוצן די 8 API דאַטן. איידער דעם, איר קענען מאַכן אַ נייַע קאָנטראַקט אין די Ontology סמאַרט קאָנטראַקט אַנטוויקלונג געצייַג סמאַרטקס און נאָכגיין די ינסטראַקשאַנז אונטן.

ווי צו נוצן די Runtime API

עס זענען צוויי וועגן צו אַרייַנפיר רונטימע אַפּי: אָנטאָלאָגי.ינטעראָפּ.סיסטעם.רונטימע и אָנטאָלאָגי.ינטעראָפּ.אָנטאָלאָגי.רונטימע. דער אָנטאָלאָגי דרך כּולל די ניי צוגעלייגט אַפּיס. די שורות אונטן אַרייַנפיר די API דאַטן.

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

געבנ צו וויסן API

די נאָטיפיקאַטיאָן פונקציע בראָדקאַסץ די געשעעניש איבער די נעץ. אין דעם בייַשפּיל אונטן, די אָנזאָג פונקציע וועט צוריקקומען די העקס שטריקל "העלא וואָרט" און בראָדקאַסט עס איבער די נעץ.

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

איר קענען זען דעם אין די לאָגס:

ווי צו שרייַבן אַ קלוג קאָנטראַקט אין פּיטהאָן אויף די אָנטאָלאָגי נעץ. טייל 3: רונטימע אַפּי

GetTime API

די GetTime פֿונקציע קערט דעם קראַנט צייט סטאַמפּ, וואָס קערט די יוניקס צייט אין וואָס די פֿונקציע איז גערופן. די אַפּאַראַט פון מעזשערמאַנט איז רגע.

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

GetCurrentBlockHash API

די GetCurrentBlockHash פֿונקציע קערט די האַש פון דעם קראַנט בלאָק.

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

סיריאַליזע און דעסעריאַליזירן

דאָס איז אַ פּאָר פון סיריאַליזאַטיאָן און דעסעריאַליזיישאַן פאַנגקשאַנז. די סעריאַליזע פֿונקציע קאַנווערץ אַ כייפעץ צו אַ בייטעאַררייַ כייפעץ, און די Deserialize פֿונקציע קאַנווערץ אַ בייטעררייַ צו דער אָריגינעל כייפעץ. דער קאָד מוסטער אונטן קאַנווערץ די ינקאַמינג פּאַראַמעטערס און סטאָרז זיי אין די פּערסיסטענט סטאָרידזש פון די אָפּמאַך. עס אויך ריטריווז דאַטן פון די פּערסיסטענט סטאָרידזש פון די אָפּמאַך און פארוואנדלען עס אין דער אָריגינעל כייפעץ.

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 און AddressToBase58

דעם פּאָר פון אַדרעס איבערזעצונג פאַנגקשאַנז. די Base58ToAddress פונקציע קאַנווערץ אַ בייטעאַררייַ אַדרעס צו אַ בייטעאַררייַ אַדרעס, און AddressToBase58 קאַנווערץ אַ בייטעאַררייַ אַדרעס צו אַ בייטעאַררייַ אַדרעס.

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 (fromAcct) פונקציע האט צוויי פאַנגקשאַנאַליטי:

  • באַשטעטיקן אויב די קאַללער פון די קראַנט פֿונקציע איז פֿון אַקט. אויב יאָ (דאָס איז, כסימע וועראַפאַקיישאַן דורכגעגאנגען), די פֿונקציע קערט.
  • קוק אויב די כייפעץ וואָס רופט דעם קראַנט פֿונקציע איז אַ קאָנטראַקט. אויב עס איז אַ קאָנטראַקט און די פֿונקציע איז עקסאַקיוטאַד פֿון דעם קאָנטראַקט, די וועראַפאַקיישאַן איז דורכגעגאנגען. אַז איז, באַשטעטיקן אויב fromAcct איז דער צוריקקער ווערט פון GetCallingScriptHash (). די GetCallingScriptHash () פֿונקציע קענען נעמען די קאָנטראַקט האַש ווערט פון דעם קראַנט קלוג קאָנטראַקט.

GetCallingScriptHash():

מער אויף גוטהוב

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

מער אינפֿאָרמאַציע קענען זיין געפֿונען אין גוטהוב. אין דער ווייַטער אַרטיקל מיר וועלן פאָרשטעלן געבוירן אַפּיצו לערנען ווי צו אַריבערפירן אַסעץ אין אָנטאָלאָגי קלוג קאַנטראַקץ.

דער אַרטיקל איז איבערגעזעצט געוואָרן דורך די רעדאַקציע האַשראַטע & שאַרעס ספּעציעל פֿאַר אָנטאָלאָגי רוסלאַנד.

זענט איר אַ דעוועלאָפּער? פאַרבינדן אונדזער טעק קהל אין דיסקאָרד. אויך, נעמען אַ קוק בייַ דעוועלאָפּער צענטער אָנטאָלאָגי, איר קענען געפֿינען מער מכשירים, דאַקיומענטיישאַן און פיל מער.

עפענען טאַסקס פֿאַר דעוועלאָפּערס. פאַרענדיקן די אַרבעט און באַקומען אַ באַלוינונג.

צולייגן איצט פֿאַר די אָנטאָלאָגי טאַלאַנט פּראָגראַם פֿאַר סטודענטן

אָנטאָלאָלאָגי

אָנטאָלאָגי וועבזייַטל - גיטהוב - דיסקאָרד - טעלעגראַם רוסיש - טוויטטער - רעדדיט

מקור: www.habr.com

קויפן פאַרלאָזלעך האָסטינג פֿאַר זייטלעך מיט DDoS שוץ, VPS VDS סערווערס 🔥 קויפט פאַרלעסלעכע וועבזייטל האָסטינג מיט DDoS שוץ, VPS VDS סערווערס | ProHoster