Como escrever um contrato Python inteligente na rede Ontology. Parte 2: API de armazenamento

imagem

Esta é a segunda parte de uma série de tutoriais sobre a criação de contratos inteligentes em Python na rede blockchain da Ontology. Em um artigo anterior, nos encontramos com a API de contrato inteligente da Ontology Blockchain & Block API .

Hoje discutiremos como usar o segundo módulo - a API de armazenamento . A API de armazenamento possui cinco APIs relacionadas que permitem adicionar, excluir e modificar o armazenamento persistente em contratos inteligentes na blockchain.

Abaixo está uma breve descrição dessas cinco APIs:

imagem

Vamos dar uma olhada em como usar essas cinco APIs.

0. Crie um novo contrato SmartX

1. Como usar a API de armazenamento


GetContext & GetReadOnlyContext


GetContext e GetReadOnlyContext obtêm o contexto em que o contrato inteligente atual é executado. O valor de retorno é o inverso do hash atual do contrato inteligente. Como o nome indica, GetReadOnlyContext usa um contexto de modo somente leitura. No exemplo abaixo, o valor de retorno é o inverso do hash do contrato exibido no canto superior direito.

imagem

Coloque


A função Put é responsável por armazenar dados no blockchain na forma de um dicionário. Como mostrado, Put usa três parâmetros. O GetContext usa o contexto do contrato inteligente em execução no momento, key é o valor da chave necessário para salvar os dados e value é o valor dos dados que precisam ser salvos. Observe que, se o valor da chave já estiver no repositório, a função atualizará seu valor correspondente.

imagem hashrate-and-shares.ru/images/obzorontology/python/functionput.png

Obter


A função Get é responsável pela leitura de dados no blockchain atual por meio de um valor-chave. No exemplo abaixo, você pode preencher o valor da chave no painel de parâmetros à direita para executar a função e ler os dados correspondentes ao valor da chave na blockchain.

imagem

Excluir


A função Excluir é responsável por excluir dados no blockchain por meio de um valor-chave. No exemplo abaixo, você pode preencher o valor da chave para executar a função no painel de parâmetros à direita e excluir os dados correspondentes ao valor da chave na blockchain.

imagem

2. Código da API de armazenamento de amostra


O código abaixo fornece um exemplo detalhado do uso das cinco APIs: GetContext, Get, Put, Delete e GetReadOnlyContext. Você pode tentar executar os dados da API no SmartX .

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext from ontology.interop.System.Runtime import Notify def Main(operation,args): if operation == 'get_sc': return get_sc() if operation == 'get_read_only_sc': return get_read_only_sc() if operation == 'get_data': key=args[0] return get_data(key) if operation == 'save_data': key=args[0] value=args[1] return save_data(key, value) if operation == 'delete_data': key=args[0] return delete_data(key) return False def get_sc(): return GetContext() def get_read_only_sc(): return GetReadOnlyContext() def get_data(key): sc=GetContext() data=Get(sc,key) return data def save_data(key, value): sc=GetContext() Put(sc,key,value) def delete_data(key): sc=GetContext() Delete(sc,key) 

Posfácio


O armazenamento em blockchain é o núcleo de todo o sistema blockchain. A API de armazenamento da Ontology é fácil de usar e conveniente para os desenvolvedores.

Por outro lado, os ataques de hackers estão focados no armazenamento, por exemplo, no risco de segurança mencionado em um dos artigos anteriores, ataque de injeção de armazenamento , os desenvolvedores devem prestar atenção especial à segurança ao escrever o código associado ao armazenamento. Você pode encontrar o guia completo no nosso github aqui.

No próximo artigo, discutiremos como usar a API Runtime .


O artigo foi traduzido por Hashrate & Shares especificamente para OntologyRussia. clique

Você é desenvolvedor? Participe da nossa comunidade de tecnologia no Discord . Além disso, consulte o Ontology Developer Center para obter mais ferramentas, documentação e muito mais.


Tarefas abertas para desenvolvedores. Feche a tarefa - receba uma recompensa.

Inscreva-se no Programa de Talentos para Estudantes de Ontologia

Ontologia


Site de ontologia - GitHub - Discord - Telegram Russian - Twitter - Reddit

Source: https://habr.com/ru/post/pt475618/


All Articles