Como escrever um contrato inteligente com Python ontologia? Parte 2: API de armazenamento

imagem
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:

imagem

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.

imagem

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.

imagem

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:

imagem

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:

imagem

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 ontologia
Github / discord
Telegrama ( inglês / russo )
Twitter / Reddit /

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


All Articles