Bii o ṣe le kọ iwe adehun ọlọgbọn ni Python lori nẹtiwọọki Ontology. Apá 3: API Runtime

Bii o ṣe le kọ iwe adehun ọlọgbọn ni Python lori nẹtiwọọki Ontology. Apá 3: API Runtime

Это 3-я часть из серии обучающих статей о создании смарт-контрактов на Python в блокчейн сети Ontology. В предыдущих статьях мы познакомились с

  1. Blockchain & Àkọsílẹ API
  2. API ipamọ.

Теперь, когда Вы имеете представление о том, как вызвать подходящее API для постоянного хранилища при разработке смарт-контракта с помощью Python в сети Ontology, давайте перейдём к знакомству с тем, как использовать API asiko isise (Contract Execution API). Runtime API имеет 8 связанных API, которые предоставляют общие интерфейсы для выполнения контракта и помогают разработчикам получать, преобразовывать и проверять данные.

Ниже краткое описание данных 8 API:

Bii o ṣe le kọ iwe adehun ọlọgbọn ni Python lori nẹtiwọọki Ontology. Apá 3: API Runtime

Давайте более подробно разберём, как использовать данные 8 API. Перед этим Вы можете создать новый контракт в инструменте разработки смарт-контрактов Ontology SmartX и следовать нижеприведённым инструкциям.

Как использовать Runtime API

Существует два пути для импорта Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ontology путь содержит недавно добавленные API. Нижеприведённые строки импортируют данные API.

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

Notify API

Функция Notify транслирует событие по всей сети. В нижеприведённом примере функция Notify вернёт hex- строку “hello word” и передаст её по всей сети.

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

Вы можете увидеть это в логах:

Bii o ṣe le kọ iwe adehun ọlọgbọn ni Python lori nẹtiwọọki Ontology. Apá 3: API Runtime

GetTime API

Функция GetTime возвращает текущую метку времени, которая возвращает Unix- время, в которое функция была вызвана. Единица измерения— секунда.

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 и Deserialize

Это пара функций сериализации и десериализации. Функция 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

Функция CheckWitness(fromAcct) имеет две функциональности:

  • Верифицировать, если вызывающий текущую функцию объект fromAcct. Если да (то есть пройдена проверка подписи), функция возвращается.
  • Проверить, если вызывающий текущую функцию объект является контрактом. Если это контракт и функция выполняется из контракта, тогда верификация пройдена. То есть, верифицировать, если fromAcct возвращаемое значение GetCallingScriptHash(). Функция GetCallingScriptHash() может взять значение хеша контракта текущего смарт- контракта.

GetCallingScriptHash():

Ka diẹ sii ni 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

Больше информации можно найти на Guthub. В следующей статье мы представим API abinibi, чтобы освоить, как передавать активы в смарт-контрактах Ontology.

Статья была переведена редакцией Hashrate&Shares специально для OntologyRussia.

Ṣe o jẹ olupilẹṣẹ bi? Darapọ mọ agbegbe imọ-ẹrọ wa ni Iwa. Bakannaa, wo Olùgbéejáde Center Ontology, o le wa awọn irinṣẹ diẹ sii, iwe ati pupọ diẹ sii nibẹ.

Ṣii awọn iṣẹ-ṣiṣe fun awọn olupilẹṣẹ. Pari iṣẹ-ṣiṣe naa ki o gba ere kan.

Waye fun eto talenti Ontology fun awọn ọmọ ile-iwe

Imọlẹ

Ontology aaye ayelujara - GitHub - Iwa - Telegram English - twitter - Reddit

orisun: www.habr.com

Fi ọrọìwòye kun