
Este é um tutorial oficial publicado anteriormente no blog Ontology Medium
Animado para publicá-lo para os leitores da Habr. Sinta-se à vontade para fazer qualquer pergunta relacionada e sugerir um formato melhor para os materiais do tutorial
Prefácio
Anteriormente, na Parte 1, introduzimos o contrato inteligente da
Blockchain & Block API do Ontology. Hoje discutiremos como usar o segundo módulo:
API de armazenamento . A API de armazenamento possui cinco APIs relacionadas que permitem adição, exclusão e alterações no armazenamento persistente em contratos inteligentes de blockchain. Aqui está uma breve descrição das cinco APIs:

Vamos dar uma olhada em como usar essas cinco APIs. Primeiro, crie um novo contrato
SmartX e siga as etapas abaixo. Como de costume, no final do artigo, forneceremos o link GitHub do código-fonte.
2 Como usar a API de armazenamento
2.1 GetContext & GetReadOnlyContext
GetContext & GetReadOnlyContext obtém o contexto em que o contrato inteligente atual é executado. O valor de retorno é o inverso do hash do contrato inteligente atual. Como o nome indica,
GetReadOnlyContext obtém o contexto do modo somente leitura. No exemplo abaixo, o valor de retorno é o inverso do hash do contrato exibido no canto superior direito.

2.2 Put
A função
Put é responsável por armazenar os dados no blockchain na forma de um dicionário. Como mostrado, Put aceita três parâmetros.
GetContext coloca o contexto do contrato inteligente atual em execução, a chave é o valor da chave que precisa armazenar dados e value é o valor dos dados que precisam ser armazenados. Observe que, se o valor da chave já estiver armazenado, a função atualizará seu valor correspondente.

2.3 Obter
A função
Get é responsável por ler os dados na blockchain existente por meio do valor da 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:

2.4 Excluir
A função de exclusão é responsável por excluir os dados na blockchain através do valor da 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:

3 Código de exemplo da API de armazenamento
O código a seguir fornece um exemplo detalhado do uso de cinco APIs:
GetContext; Obter Coloque; Excluir e GetReadOnlyContext . Você pode tentar executar essas APIs 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.
O uso da API de armazenamento da Ontology é muito simples e amigável ao desenvolvedor.Por outro lado, o armazenamento é o foco dos hackers, como a ameaça à segurança mencionada em um artigo anterior:
ataque por injeção de armazenamento , os desenvolvedores devem prestar atenção especial à segurança do código ao escrever o código relacionado ao armazenamento.
Encontre o tutorial detalhado no GitHub
aqui .
No próximo artigo, discutiremos como usar a
API Runtime . Fique atento!
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 /
russo )
Twitter /
Reddit /