¿Cómo escribir un contrato inteligente con Python en ontología? Parte 5: API nativa

imagen

En las publicaciones anteriores del tutorial de Python, presenté el Contrato inteligente de ontología en
Parte 1: Blockchain y Block API y
Parte 2: API de almacenamiento
Parte 3: API de tiempo de ejecución
Parte 4: API nativa y describe cómo usar contratos inteligentes para la transferencia ONT / ONG.

Hoy hablaremos sobre cómo usar la API de actualización para actualizar el contrato inteligente. Hay 2 API: destruir y migrar .

Se usan de la siguiente manera:

imagen

Ahora veamos más detalles sobre cómo usar estas 2 API. Antes de eso, puede crear un nuevo contrato en la herramienta de desarrollo de contratos inteligentes Ontology SmartX y seguir las instrucciones a continuación. Como de costumbre, al final del artículo, adjuntaré el enlace al código fuente.

Cómo usar la API de actualización


Como de costumbre, debe importar las 2 funciones de la siguiente manera antes de usarlas.

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

Destruir API


Destroy API se utiliza para destruir y eliminar un contrato inteligente en la cadena. A continuación se muestra una muestra de código de la 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 

Migrar API


La API de Migrate se utiliza para migrar contratos inteligentes. El contrato existente será reemplazado por el contrato recién migrado. Los datos guardados por el antiguo contrato también se migrarán al nuevo contrato. El antiguo contrato se eliminará después de la migración.
Tenga en cuenta que los activos del contrato inteligente no se migrarán automáticamente, por lo que debe transferirlos con anticipación. De lo contrario, no podrá recuperar sus activos.

La lista de parámetros de la función Migrar es la siguiente:

imagen

Vea a continuación el ejemplo de código de la función 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 

Puede seguir los pasos a continuación para ver el resultado de la ejecución del ejemplo de código en SmartX:

1. Copie y pegue el código anterior en SmartX y compílelo antes de poner los parámetros. Preste especial atención a dos problemas al ingresar parámetros:

  • Asegúrese de que avm_code no exista en la cadena, de lo contrario se devolverá un error;
  • La migración requiere un límite de gas alto, por lo que debe ajustar el límite de gas al ejecutar la función.

imagen

2. Después de la implementación, puede obtener el nuevo hash de contrato desde el tablero. En este ejemplo, el nuevo hash de contrato es be4606c4663081b70f745ed9fc64d4c3b0d9c183.

imagen

Resumen


En este artículo, presentamos la API de actualización de la cadena de bloques Ontology. Los desarrolladores pueden usar esta API para actualizar contratos inteligentes. Destroy API se utiliza para destruir contratos inteligentes en la cadena y Migrate API es para migrar contratos inteligentes. En el próximo artículo, presentaremos la API estática y dinámica para explorar cómo implementar la llamada estática y dinámica de los contratos inteligentes de Ontology con Python.

Encuentra el tutorial en GitHub aquí .

¿Eres desarrollador? Asegúrate de unirte a nuestra comunidad tecnológica en Discord . Además, eche un vistazo al Centro de desarrolladores en nuestro sitio web, donde puede encontrar herramientas de desarrollador, documentación y más.



Encuentra ontología en otro lugar


Sitio web de ontología
Github / discordia
Telegram Inglés / Ruso
Twitter / Reddit

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


All Articles