
Introduccion
Anteriormente, introduje el contrato inteligente de ontología en
Parte 1: Blockchain y Block API y
Parte 2: API de almacenamientoAhora, cuando tenga una idea sobre cómo llamar a la API relevante para el almacenamiento persistente al desarrollar el contrato inteligente de Python en Ontology, pasemos a
Runtime API (Contract Execution API). Runtime API tiene 8 API relacionadas que proporcionan interfaces comunes para la ejecución de contratos y ayudan a los desarrolladores a obtener, convertir y validar datos. Aquí hay una breve descripción de estas 8 API:

Echemos un vistazo más de cerca a cómo usar estas 8 API. Antes de eso, puede crear un nuevo contrato en la herramienta de desarrollo de contratos inteligentes Ontology
SmartX y seguir las instrucciones a continuación. Como de costumbre, al final del artículo, proporcionaré un enlace al código fuente.
Cómo usar la API de tiempo de ejecución
Hay 2 rutas para importar la API de tiempo de ejecución,
ontology.interop.System.Runtime y
ontology.interop.Ontology.Runtime . La ruta de Ontology contiene API recién agregadas. Las siguientes líneas importan estas API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Notificar API
La función
Notificar transmite eventos a toda la red. En el siguiente ejemplo, la función
Notificar devolverá una cadena hexadecimal "hola mundo" y la transmitirá a toda la red.
from ontology.interop.System.Runtime import Notify def demo(): Notify("hello world")
Puede verlo en los
registros :

GetTime API
La función
GetTime devuelve la marca de tiempo actual, que devuelve la hora de Unix en la que se llamó a la función. La unidad es la segunda.
from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time
API GetCurrentBlockHash
La función
GetCurrentBlockHash devuelve el hash del bloque actual.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash
Serializar y deserializar
Este es un par de funciones de serialización y deserialización. La función
Serializar serializa un objeto en un objeto de matriz de bytes, y la función
Deserializar deserializa la matriz de bytes en el objeto original. El siguiente ejemplo de código implementa la serialización de los parámetros entrantes y los almacena en el almacenamiento persistente del contrato. También extrae datos del almacenamiento persistente del contrato y lo deserializa.
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
Este es un par de funciones de conversión de direcciones. La función
Base58ToAddress convierte la dirección codificada en base58 en una dirección de formulario de matriz de bytes, y AddressToBase58 convierte la dirección del formulario de matriz de bytes en una dirección codificada en 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)
Testigo
La función
CheckWitness (fromAcct) tiene dos funcionalidades:
- Verifique si la persona que llama la función actual es de Acct. En caso afirmativo (es decir, verificación de firma aprobada), la función vuelve.
- Compruebe si la función actual de la persona que llama es un contrato. Si es un contrato y la función se ejecuta desde el contrato, se pasa la verificación. Es decir, verifique si fromAcct es el valor de retorno de GetCallingScriptHash (). La función GetCallingScriptHash () puede obtener el valor hash del contrato del contrato inteligente actual.
GetCallingScriptHash () :
Ontology Python compiler
from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Encuentra el tutorial completo
aquí .
Resumen
En este artículo,
presenté la API de
tiempo de
ejecución de la cadena de bloques de Ontology, que es muy importante en el contrato inteligente de Ontology Python. En el próximo artículo, veremos la
API nativa para explorar cómo transferir activos en los contratos inteligentes de Ontology.
Este es un tutorial oficial publicado anteriormente en el blog Ontology Medium
¿Eres desarrollador? Asegúrate de unirte a nuestra comunidad tecnológica en
Discord . Además, eche un vistazo al
Centro de desarrolladores en nuestro sitio web, donde puede encontrar herramientas de desarrollador, documentación y más.
Encuentra ontología en otro lugar
Sitio web de ontologíaGithub /
discordiaTelegram
Inglés /
RusoTwitter /
Reddit