
Anteriormente, introduje el contrato inteligente de ontología en
Parte 1: Blockchain y Block API y
Parte 2: API de almacenamientoParte 3: API de tiempo de ejecuciónHoy, hablemos sobre cómo invocar un contrato inteligente nativo de Ontology a través de la
API nativa . Una de las funciones más típicas de invocar un contrato nativo es la transferencia de activos.
Introduccion
La API nativa tiene solo una API. Cuando usa la función Invocar, debe usar la función de estado incorporada para ayudarlo a encapsular los parámetros. Consulte a continuación para aprender a usar las funciones.

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, proporcionaré un enlace al código fuente.
Cómo usar la API nativa
Como de costumbre, debe importar las 2 funciones de la siguiente manera antes de usarlas.
from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state
Lista de contratos nativos de ontología
Actualmente hay 6 contratos nativos de Ontology disponibles para desarrolladores. A continuación se muestra la lista de los 6 contratos nativos que puede invocar la API nativa.

En el contrato, solo necesita convertir la dirección del contrato en formato bytearray e invocarla.
Por ejemplo , cuando necesita llamar a un contrato de Token ONT, primero puede convertir la dirección del contrato de Token ONT a formato bytearray y luego llamar a la función Invocar. Al llamar a la función Invoke, los parámetros importados son el número de versión, la dirección del contrato, el método del contrato invocado y los parámetros relacionados con la transferencia encapsulados por la función de estado.
Un punto particular a tener en cuenta aquí es que cuando se realiza una transferencia de contrato para ONG, la cantidad llena es 10⁹ veces la cantidad real. Es decir, si necesita transferir 10 ONG, la cantidad que debe completarse es 10¹⁰. Al usar una billetera, como ONTO o Cyano para transferir, la cantidad que ingresa es el monto de la transferencia.
contract_address_ONT = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01') param = state(from_acct, to_acct, ont_amount) res = Invoke(1, contract_address_ONT, 'transfer', [param])
Código de contrato de transferencia
A continuación damos un ejemplo detallado de cómo usar Python para
transferir ONT y ONG . En el siguiente código, el tipo de parámetro de la cuenta de envío y la dirección de recepción importadas es una cadena. Además, también se puede entregar con un tipo de dirección de parámetro de cuenta, ahorrando así la tarifa de Gas por invocar el contrato. El proceso es el siguiente:
- Defina las variables de dirección del contrato contract_address_ONT y contract_address_ONG;
- Convierta la dirección de envío y recepción del formato base58 al formato bytearray;
- Verifique la firma y confirme que la dirección de envío es la misma que la dirección de invocación del contrato;
- La función de estado encapsula los parámetros relacionados con la transferencia;
- La función Invocar llama al contrato nativo ONT Token y ONG Token para la transferencia;
- Determine si la transferencia se realizó correctamente devolviendo res. Si el valor de retorno es b '\ x01', entonces la transferencia es exitosa y el evento "transferencia exitosa" será expulsado.
from ontology.interop.System.Runtime import Notify, CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state
Practica en SmartX
También puede compilar y ejecutar el ejemplo de código anterior en
SmarX siguiendo los pasos a continuación:
- Compilar el contrato. Primero, cree un proyecto en SmartX y compile el código en este proyecto.

- Implementar el contrato. Si necesita un token de prueba para implementar el contrato, solicite aquí . El resultado de la implementación es el siguiente:

- Ejecute la función de transferencia. Antes de ejecutar la función de transferencia, debe configurar los parámetros según sea necesario. En el siguiente ejemplo, debe ingresar la dirección de envío, la dirección de recepción y la cantidad de ONT y ONG transferida:

- Transferencia exitosa. Después de haber configurado los parámetros correctamente, la transferencia será exitosa al ejecutar la función de transferencia. El token transferido se mostrará en la dirección de recepción anterior:

Resumen
En este artículo, presentamos la
API nativa de la cadena de bloques Ontology. Los desarrolladores pueden usar esta API para invocar contratos nativos de Ontology. En el próximo artículo, presentaremos la
API de actualización para explorar cómo actualizar el contrato en los contratos inteligentes de Ontology.
Encuentra el tutorial en GitHub
aquí .
Este es un tutorial oficial publicado anteriormente en el blog Ontology Medium
¿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íaGithub /
discordiaTelegram
Inglés /
RusoTwitter /
Reddit