ProHoster > Blog > Ma'muriyat > 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
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:
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:
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.
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.
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.
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.