
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:

Vamos dar uma olhada em como usar essas cinco APIs.
0. Crie um novo contrato
SmartX1. 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.

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.
hashrate-and-shares.ru/images/obzorontology/python/functionput.pngObter
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.

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.

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