Como escrever um contrato inteligente com Python ontologia? Parte 5: API nativa

imagem

Nas postagens anteriores do tutorial em Python, introduzi o Contrato inteligente de ontologia em
Parte 1: Blockchain e API de bloco e
Parte 2: API de armazenamento
Parte 3: API de tempo de execução
Parte 4: API nativa e descreveu como usar contratos inteligentes para transferência de ONT / ONG.

Hoje falaremos sobre como usar a API de atualização para atualizar o contrato inteligente. Existem 2 APIs: Destruir e Migrar .

Eles são usados ​​da seguinte maneira:

imagem

Agora vamos entrar em mais detalhes sobre como usar essas 2 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, anexarei o link ao código fonte.

Como usar a API de atualização


Como de costume, você precisa importar as 2 funções da seguinte maneira antes de usá-las.

from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Contract import Destroy 

API de destruição


A API Destroy é usada para destruir e excluir um contrato inteligente na cadeia. Abaixo está um exemplo de código da API.

 from ontology.interop.System.Contract import Destroy from ontology.interop.System.Runtime import Notify def Main(operation, args): if operation == "destroy_contract": return destroy_contract() return False def destroy_contract(): Destroy() Notify(["The contract has been destoryed"]) return True 

API de migração


A API Migrar é usada para migrar contratos inteligentes. O contrato existente será substituído pelo contrato recém-migrado. Os dados salvos pelo contrato antigo também serão migrados para o novo contrato. O contrato antigo será excluído após a migração.
Observe que os ativos no contrato inteligente não serão migrados automaticamente, portanto, é necessário transferi-los com antecedência. Caso contrário, você não poderá recuperar seus ativos.

A lista de parâmetros da função Migrar é a seguinte:

imagem

Veja abaixo o exemplo de código da função Migrar:

 from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Runtime import Notify from ontology.libont import AddressFromVmCode def Main(operation, args): if operation == "migrate_contract": if len(args) != 7: return False avm_code = args[0] need_storage = args[1] name = args[2] version = args[3] author = args[4] email = args[5] description = args[6] return migrate_contract(avm_code, need_storage, name, version, author, email, description) return False def migrate_contract(avm_code, need_storage, name, version, author, email, description): res = Migrate(avm_code, need_storage, name, version, author, email, description) if res: Notify(["Migrate successfully"]) new_contract_hash=AddressFromVmCode(avm_code) Notify(new_contract_hash) return True else: return False 

Você pode seguir as etapas abaixo para ver o resultado da execução do exemplo de código no SmartX:

1. Copie e cole o código acima no SmartX e compile antes de inserir os parâmetros. Preste atenção especial a dois problemas ao inserir parâmetros:

  • Verifique se avm_code não existe na cadeia, caso contrário, um erro será retornado;
  • A migração requer um limite alto de gás, portanto, você precisa ajustar o limite de gás ao executar a função.

imagem

2. Após a implantação, você pode obter o novo hash do contrato no painel. Neste exemplo, o novo hash do contrato é be4606c4663081b70f745ed9fc64d4c3b0d9c183.

imagem

Sumário


Neste artigo, apresentamos a API de atualização da blockchain Ontology. Os desenvolvedores podem usar essa API para atualizar contratos inteligentes. A API Destroy é usada para destruir contratos inteligentes na cadeia e a Migrate API é para migrar contratos inteligentes. No próximo artigo, apresentaremos a API estática e dinâmica para explorar como implementar a chamada estática e dinâmica dos contratos inteligentes de Ontologia com o Python.

Encontre o tutorial no GitHub aqui .

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/pt474970/


All Articles