Ontologiya tarmog'ida Python-da aqlli shartnomani qanday yozish mumkin. 3-qism: Runtime API

Ontologiya tarmog'ida Python-da aqlli shartnomani qanday yozish mumkin. 3-qism: Runtime API

Bu Ontology blokcheyn tarmog'ida Python-da aqlli shartnomalar yaratish bo'yicha bir qator o'quv maqolalarining 3-qismi. Oldingi maqolalarda biz tanishgan edik

  1. Blockchain & Block API
  2. Saqlash API.

Endi siz Ontologiya tarmog'ida Python-dan foydalangan holda aqlli shartnomani ishlab chiqishda tegishli doimiy saqlash API-ni qanday chaqirish haqida fikringiz bor, keling, qanday foydalanishni o'rganishga o'taylik. Runtime API (Shartnomani bajarish API). Runtime API-da 8 ta tegishli API mavjud bo'lib, ular shartnomani bajarish uchun umumiy interfeyslarni ta'minlaydi va ishlab chiquvchilarga ma'lumotlarni olish, o'zgartirish va tasdiqlashda yordam beradi.

Quyida 8 API ma'lumotlarining qisqacha tavsifi keltirilgan:

Ontologiya tarmog'ida Python-da aqlli shartnomani qanday yozish mumkin. 3-qism: Runtime API

Keling, 8 API ma'lumotlaridan qanday foydalanishni batafsil ko'rib chiqaylik. Undan oldin Ontology aqlli kontraktni ishlab chiqish vositasida yangi shartnoma yaratishingiz mumkin SmartX va quyidagi ko'rsatmalarga amal qiling.

Runtime API dan qanday foydalanish kerak

Import qilishning ikki yo'li mavjud Runtime API: ontology.interop.System.Runtime ΠΈ ontology.interop.Ontology.Runtime. Ontologiya yo'li yangi qo'shilgan API-larni o'z ichiga oladi. Quyidagi qatorlar API ma'lumotlarini import qiladi.

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

API haqida xabar bering

Xabar berish funksiyasi voqeani butun tarmoq bo'ylab translyatsiya qiladi. Quyidagi misolda Xabar berish funksiyasi "salom so'z" olti burchakli qatorni qaytaradi va uni butun tarmoqqa uzatadi.

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

Buni jurnallarda ko'rishingiz mumkin:

Ontologiya tarmog'ida Python-da aqlli shartnomani qanday yozish mumkin. 3-qism: Runtime API

GetTime API

GetTime funksiyasi joriy vaqt tamg'asini qaytaradi, bu funksiya chaqirilgan Unix vaqtini qaytaradi. O'lchov birligi ikkinchi.

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

GetCurrentBlockHash API

GetCurrentBlockHash funksiyasi joriy blokning xeshini qaytaradi.

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

Seriyalashtirish va seriyadan chiqarish

Bu ketma-ketlashtirish va seriyadan chiqarish funksiyalarining juftligi. Serialize funksiyasi ob'ektni baytarray ob'ektiga o'zgartiradi va Deserialize funktsiyasi baytarrayni asl ob'ektga aylantiradi. Quyidagi kod namunasi kiruvchi parametrlarni o'zgartiradi va ularni shartnomaning doimiy xotirasida saqlaydi. Shuningdek, u shartnomaning doimiy xotirasidan ma'lumotlarni oladi va uni asl ob'ektga aylantiradi.

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

Bu juft manzil tarjimasi funksiyalari. Base58ToAddress funktsiyasi baza58 kodlangan manzilni bayt-massiv manziliga o'zgartiradi va AddressToBase58 bayt-massiv manzilini base58 kodlangan manzilga o'zgartiradi.

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)

Guvohni tekshiring

CheckWitness(fromAcct) funksiyasi ikkita funksiyaga ega:

  • Joriy funktsiya chaqiruvchisi fromAcct ekanligini tekshiring. Ha bo'lsa (ya'ni, imzo tekshiruvi o'tdi), funktsiya qaytadi.
  • Joriy funktsiyani chaqiruvchi ob'ekt shartnoma ekanligini tekshiring. Agar bu shartnoma bo'lsa va funktsiya shartnomadan bajarilgan bo'lsa, tekshirish o'tkaziladi. Ya'ni fromAcct GetCallingScriptHash() ning qaytish qiymati ekanligini tekshiring. GetCallingScriptHash() funksiyasi joriy aqlli shartnomaning shartnoma xesh qiymatini olishi mumkin.

GetCallingScriptHash():

Qo'shimcha ma'lumot 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

Qo'shimcha ma'lumotni quyidagi manzildan olishingiz mumkin Guthub. Keyingi maqolada biz tanishtiramiz Mahalliy APIOntology aqlli shartnomalarida aktivlarni qanday o'tkazishni o'rganish.

Maqola tahririyat tomonidan tarjima qilingan Hashrate & Shares ayniqsa Ontologiya Rossiya uchun.

Siz dasturchimisiz? Bizning texnologik hamjamiyatimizga qo'shiling Tanqid. Bundan tashqari, ko'rib chiqing Dasturchilar markazi Ontologiya, siz u erda ko'proq vositalar, hujjatlar va boshqa ko'p narsalarni topishingiz mumkin.

Ishlab chiquvchilar uchun ochiq vazifalar. Vazifani bajaring va mukofot oling.

Ro'yxatdan o'tish talabalar uchun Ontologiya iste'dod dasturi uchun

Ontologiya

Ontologiya veb-sayti - GitHub - Tanqid - Telegram ruscha - Twitter - Digg

Manba: www.habr.com

a Izoh qo'shish