آنٽولوجي نيٽ ورڪ تي پٿون ۾ سمارٽ معاهدو ڪيئن لکجي. حصو 3: Runtime API

آنٽولوجي نيٽ ورڪ تي پٿون ۾ سمارٽ معاهدو ڪيئن لکجي. حصو 3: Runtime API

اهو ٽيون حصو آهي تعليمي مضمونن جي هڪ سيريز ۾ پٿون ۾ سمارٽ معاهدو ٺاهڻ تي آنٽولوجي بلاڪچين نيٽ ورڪ تي. گذريل مضمونن ۾ اسان سان واقف ٿي چڪا آهيون

  1. Blockchain & Block API
  2. اسٽوريج API.

هاڻي ته توهان وٽ هڪ خيال آهي ته مناسب مسلسل اسٽوريج API کي ڪيئن ڪال ڪجي جڏهن آنٽولوجي نيٽ ورڪ تي پٿون استعمال ڪندي سمارٽ ڪانٽريڪٽ ٺاهي رهيا آهن، اچو ته اڳتي وڌون ته ڪيئن استعمال ڪجي. رن ٽائم API (Contract Execution API). Runtime API وٽ 8 لاڳاپيل APIs آھن جيڪي عام انٽرفيس مهيا ڪن ٿا معاهدي جي عمل لاءِ ۽ ڊولپرز کي ڊيٽا واپس آڻڻ، تبديل ڪرڻ ۽ تصديق ڪرڻ ۾ مدد ڪن ٿا.

هيٺ ڏنل 8 API ڊيٽا جو مختصر بيان آهي:

آنٽولوجي نيٽ ورڪ تي پٿون ۾ سمارٽ معاهدو ڪيئن لکجي. حصو 3: Runtime API

اچو ته هڪ ويجھو نظر رکون ته ڪيئن استعمال ڪجي 8 API ڊيٽا. ان کان اڳ، توھان ٺاھي سگھوٿا ھڪڙو نئون معاهدو آنٽولوجي سمارٽ ڪانٽريڪٽ ڊولپمينٽ ٽول ۾ SmartX ۽ هيٺ ڏنل هدايتن تي عمل ڪريو.

Runtime API ڪيئن استعمال ڪجي

درآمد ڪرڻ جا ٻه طريقا آهن Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. آنٽولوجي جو رستو نئون شامل ٿيل APIs تي مشتمل آھي. هيٺيون لائينون 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: Runtime API

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

سيريلائيز ۽ ڊيسيريلائز

هي سيريلائيزيشن ۽ ڊيسيريلائيزيشن افعال جو هڪ جوڙو آهي. Serialize فنڪشن هڪ اعتراض کي bytearray اعتراض ۾ تبديل ڪري ٿو، ۽ Deserialize فنڪشن هڪ bytearray کي اصل اعتراض ۾ تبديل ڪري ٿو. هيٺ ڏنل ڪوڊ جو نمونو ايندڙ پيٽرولر کي تبديل ڪري ٿو ۽ انهن کي معاهدي جي مسلسل اسٽوريج ۾ محفوظ ڪري ٿو. اهو پڻ ڊيٽا کي ٻيهر حاصل ڪري ٿو معاهدي جي مسلسل اسٽوريج مان ۽ ان کي اصل اعتراض ۾ تبديل ڪري ٿو.

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 فنڪشن هڪ base58 انڪوڊ ٿيل ايڊريس کي bytearray ايڊريس ۾ تبديل ڪري ٿو، ۽ AddressToBase58 هڪ bytearray ايڊريس کي 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)

شاھد چيڪ ڪريو

CheckWitness (fromActt) فنڪشن ۾ ٻه ڪارڪردگي آهن:

  • تصديق ڪريو ته موجوده فنڪشن جو ڪالر Acct کان آهي. جيڪڏهن ها (اهو آهي، دستخط جي تصديق منظور)، فنڪشن واپسي.
  • چيڪ ڪريو ته موجوده فنڪشن کي سڏڻ وارو اعتراض هڪ معاهدو آهي. جيڪڏهن اهو هڪ معاهدو آهي ۽ فنڪشن کي معاهدي کان عمل ڪيو ويو آهي، پوء تصديق منظور ڪئي وئي آهي. اهو آهي، تصديق ڪريو ته جيڪڏهن 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

وڌيڪ معلومات تي ڳولهي سگهجي ٿو گوتم. ايندڙ مضمون ۾ اسان کي متعارف ڪرايو ويندو اصلي APIاونٽولوجي سمارٽ معاهدن ۾ اثاثن کي ڪيئن منتقل ڪرڻ سکڻ لاءِ.

مضمون ايڊيٽرن پاران ترجمو ڪيو ويو حشرات ۽ حصيداري خاص طور تي آنٽولوجي روس لاءِ.

ڇا توهان ڊولپر آهيو؟ اسان جي ٽيڪنيڪل ڪميونٽي ۾ شامل ٿيو رعايت. پڻ، هڪ نظر وٺو ڊولپر سينٽر آنٽولوجي، توهان ڳولي سگهو ٿا وڌيڪ اوزار، دستاويز ۽ گهڻو ڪجهه اتي.

ڊولپرز لاءِ ڪم کوليو. ڪم مڪمل ڪريو ۽ انعام حاصل ڪريو.

لاڳو ڪريو شاگردن لاءِ آنٽولوجي ٽيلينٽ پروگرام لاءِ

آنٽالوجي

آنٽولوجي ويب سائيٽ - GitHub - رعايت - ٽيليگرام روسي - Twitter - Reddit

جو ذريعو: www.habr.com

تبصرو شامل ڪريو