Cómo escribir un contrato inteligente sobre ontología con Python – (Parte 5)

En el anterior Tutorial de Python, presentamos la API nativa de contrato inteligente y describimos cómo usar los 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 Emigrar. Se usan de la siguiente manera:

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 de Ontology SmartX y siga las instrucciones a continuación. Como de costumbre, al final del artículo, proporcionaremos el enlace del código fuente.

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
de ontology.interop.System.Runtime import Notifydef Main (operación, argumentos):
si operación == "destroy_contract":
return destroy_contract ()
return Falsedef destroy_contract ():
Destruir()
Notificar (("El contrato ha sido cancelado"))
volver verdadero

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 en el 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:

Vea a continuación el ejemplo de código de la función Migrar:

from ontology.interop.Ontology.Contract import Migrate
de ontology.interop.System.Runtime import Notify
de ontology.libont import AddressFromVmCode

def Main (operación, args):
si operación == "migrate_contract":
if len (args)! = 7:
falso retorno
avm_code = args (0)
need_storage = args (1)
nombre = args (2)
version = args (3)
autor = args (4)
correo electrónico = args (5)
descripción = args (6)
return migrate_contract (avm_code, need_storage, name, version, author, email, description)

falso retorno

def migrate_contract (avm_code, need_storage, name, version, author, email, description):
res = Migrar (avm_code, need_storage, nombre, versión, autor, correo electrónico, descripción)
si res:
Notificar (("Migrar correctamente"))
new_contract_hash = AddressFromVmCode (avm_code)
Notificar (new_contract_hash)
volver verdadero
más:
falso retorno

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

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:

a. Asegúrese de que avm_code no exista en la cadena, de lo contrario se devolverá un error;

si. 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.

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.

En este artículo, presentamos el Mejorar API 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 el 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í.