
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 armazenamentoParte 3: API de tempo de execuçãoParte 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:

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:

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.
2. Após a implantação, você pode obter o novo hash do contrato no painel. Neste exemplo, o novo hash do contrato é be4606c4663081b70f745ed9fc64d4c3b0d9c183.

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 ontologiaGithub /
discordTelegrama
Inglês /
RussoTwitter /
Reddit