اکنون که ایده ای در مورد نحوه فراخوانی API ذخیره سازی پایدار مناسب هنگام توسعه قرارداد هوشمند با استفاده از پایتون در شبکه Ontology دارید، بیایید به یادگیری نحوه استفاده بپردازیم. Runtime API (API اجرای قرارداد). Runtime API دارای 8 API مرتبط است که رابط های مشترکی را برای اجرای قرارداد فراهم می کند و به توسعه دهندگان کمک می کند تا داده ها را بازیابی، تبدیل و اعتبار سنجی کنند.
در زیر توضیح مختصری از داده های 8 API آورده شده است:
بیایید نگاهی دقیق تر به نحوه استفاده از داده های 8 API بیندازیم. قبل از این، می توانید یک قرارداد جدید در ابزار توسعه قرارداد هوشمند Ontology ایجاد کنید SmartX و دستورالعمل های زیر را دنبال کنید.
نحوه استفاده از Runtime API
دو راه برای واردات وجود دارد Runtime API: ontology.interop.System.Runtime и ontology.interop.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
تابع Notify رویداد را در سراسر شبکه پخش می کند. در مثال زیر، تابع Notify رشته هگزا "Hello word" را برمی گرداند و آن را در سراسر شبکه پخش می کند.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
این را می توانید در لاگ ها ببینید:
GetTime API
تابع GetTime مُهر زمان فعلی را برمیگرداند، که زمان یونیکس را که در آن تابع فراخوانی شده است، برمیگرداند. واحد اندازه گیری دوم است.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
تابع GetCurrentBlockHash هش بلوک فعلی را برمی گرداند.
این یک جفت توابع سریال سازی و سریال زدایی است. تابع Serialize یک شی را به یک شی بایت آرایه تبدیل می کند و تابع 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 یک آدرس کدگذاری شده base58 را به یک آدرس بایت آرایه تبدیل می کند و AddressToBase58 یک آدرس بایت آرایه را به یک آدرس کدگذاری شده base58 تبدیل می کند.
بررسی کنید که آیا تماس گیرنده تابع فعلی از Acct است یا خیر. اگر بله (یعنی تأیید امضا تصویب شد)، تابع برمی گردد.
بررسی کنید که آیا شیء فراخوانی تابع فعلی یک قرارداد است یا خیر. اگر یک قرارداد باشد و کارکرد از قرارداد اجرا شود، تأیید می شود. یعنی بررسی کنید که fromAcct مقدار بازگشتی 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 بومیبرای یادگیری نحوه انتقال دارایی در قراردادهای هوشمند Ontology.
مقاله توسط ویراستاران ترجمه شده است Hashrate&Shares مخصوصاً برای OntologyRussia.
آیا شما یک ارتقاء دهنده هستید؟ به جامعه فناوری ما بپیوندید در اختلاف. همچنین، نگاهی به مرکز توسعه دهندگان هستی شناسی، شما می توانید ابزارها، اسناد و مدارک بیشتری را در آنجا پیدا کنید.