
1. Introdução
Anteriormente, introduzi o Contrato inteligente de ontologia em
Parte 1: Blockchain e API de bloco e
Parte 2: API de armazenamentoAgora, quando você tiver uma idéia sobre como chamar a API relevante para armazenamento persistente ao desenvolver o contrato inteligente do Python na Ontologia, vamos para a
API Runtime (API de execução de contrato). A API Runtime possui 8 APIs relacionadas que fornecem interfaces comuns para execução de contratos e ajudam os desenvolvedores a obter, converter e validar dados. Aqui está uma breve descrição dessas 8 APIs:

Vamos dar uma olhada em como usar essas 8 APIs. Antes disso, você pode criar um novo contrato na ferramenta de desenvolvimento de contratos inteligentes Ontology
SmartX e siga as instruções abaixo. Como de costume, no final do artigo, fornecerei um link para o código-fonte.
Como usar a API de tempo de execução
Existem 2 caminhos para importar a API Runtime,
ontology.interop.System.Runtime e
ontology.interop.Ontology.Runtime . O caminho Ontology contém APIs recém-adicionadas. As linhas a seguir importam essas APIs.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
API de notificação
A função
Notify transmite eventos para toda a rede. No exemplo a seguir, a função
Notify retornará uma string hexadecimal “hello world” e a transmitirá para toda a rede.
from ontology.interop.System.Runtime import Notify def demo(): Notify("hello world")
Você pode visualizá-lo em
Logs :

API GetTime
A função
GetTime retorna o registro de data e hora atual, que retorna o horário do Unix no qual a função foi chamada. A unidade é a segunda.
from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time
API GetCurrentBlockHash
A função
GetCurrentBlockHash retorna o hash do bloco atual.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash
Serializar e desserializar
Este é um par de funções de serialização e desserialização. A função
Serialize serializa um objeto em um objeto de matriz de bytes e a função
Deserialize desserializa a matriz de bytes no objeto original. O exemplo de código a seguir implementa a serialização dos parâmetros recebidos e os armazena no armazenamento persistente do contrato. Ele também extrai dados do armazenamento persistente do contrato e os desserializa.
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 é um par de funções de conversão de endereço. A função
Base58ToAddress converte o endereço codificado base58 em um endereço de formulário da matriz de bytes e AddressToBase58 converte o endereço do formulário da matriz de bytes em um endereço codificado de 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
A função
CheckWitness (fromAcct) possui duas funcionalidades:
- Verifique se o chamador da função atual é de Accct. Se sim (ou seja, a verificação da assinatura foi aprovada), a função retornará.
- Verifique se o chamador da função atual é um contrato. Se for um contrato e a função for executada no contrato, a verificação será aprovada. Ou seja, verifique se fromAcct é o valor de retorno de GetCallingScriptHash (). A função GetCallingScriptHash () pode obter o valor do hash do contrato atual inteligente.
GetCallingScriptHash ():
Compilador de Ontologia Python
from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Encontre o tutorial completo
aqui .
Sumário
Neste artigo, apresentei a
API Runtime da blockchain Ontology, que é muito importante no contrato inteligente do Ontology Python. No próximo artigo, veremos a
API nativa para explorar como transferir ativos em contratos inteligentes de Ontologia.
Este é um tutorial oficial publicado anteriormente no blog Ontology Medium
Você é desenvolvedor? Verifique se você se juntou à nossa comunidade de tecnologia no
Discord . Além disso, dê uma olhada no
Developer Center em nosso site. Lá você encontra ferramentas, documentação e muito mais para desenvolvedores.
Encontre ontologia em outro lugar
Site de ontologiaGithub /
discordTelegrama
Inglês /
RussoTwitter /
Reddit