Ejecutar un contrato

Puede utilizar Blockchain App Builder para consultar un token desplegado o un proxy de cuenta/identidad, o para llamar a una función de contrato que cambie de estado.

Después de compilar un proyecto, puede utilizar el separador Ejecutar en el formulario Desplegar/Ejecutar para consultar o llamar a funciones. La extensión lee el contrato seleccionado ABI, presenta las funciones disponibles, codifica los parámetros y envía la solicitud a través del transporte adecuado para el entorno seleccionado. Para proyectos compuestos, despliegue y active los proxies de token y cuenta antes de intentar operaciones de token que cambien de estado.

La herramienta Execute detecta las funciones de los artefactos compilados. Para los proyectos compuestos, el manifiesto generado también identifica la ABI de cuenta/identidad compatible para el token seleccionado. Para acceder a la herramienta Ejecutar:
  1. Abra la vista Contratos.
  2. Seleccione el proyecto Hardhat y, a continuación, abra Desplegar / Ejecutar.
  3. Seleccione el separador Ejecutar.
  4. Si el formulario incluye un selector de proyectos, seleccione el proyecto propietario del contrato y sus artefactos compilados.

Debe completar los siguientes campos para seleccionar un destino y una función antes de ejecutar una llamada.

  • Token: contrato de token compilado cuya ABI desea utilizar.
  • Destino de llamada: seleccione Token para llamar al proxy de token o Cuenta/Identidad para llamar al proxy de cuenta emparejada. Seleccione Token como destino de llamada para el comportamiento del token, como balances, acuñación, transferencias, configuración y operaciones de clase de activo. Seleccione Cuenta/Identidad para las funciones de identidad, permiso o política del contrato de cuenta complementaria.
  • ABI de destino: ABI utilizado para mostrar y codificar funciones. Un manifiesto generado bloquea la ABI de la cuenta asociada; de lo contrario, seleccione una manualmente.
  • toAddress: dirección de proxy desplegada para el destino seleccionado. No introduzca una dirección de implementación o una biblioteca auxiliar.
  • Entorno: entorno en el que se despliega ese proxy.
  • Función: función de ABI que se va a consultar o llamar. La lista incluye el origen de la función para ayudar a distinguir las capacidades heredadas.

Ruta de ejecución

La extensión selecciona o restringe el modo disponible según el entorno que seleccione.

Modo de entorno y API Comportamiento de la consulta Comportamiento de invocación Información de firmante necesaria
Nodo local Hardhat u otro EVM con JSON-RPC Llama al nodo mediante la clave privada local seleccionada como from. Firma y difunde directamente a través de JSON-RPC. Una cuenta de emisor de llamada configurada o una clave privada de 32 bytes introducida manualmente.
Oracle Blockchain Platform Besu con API JSON-RPC Llama al punto final de JSON-RPC de Oracle Blockchain Platform mediante la dirección de cuenta de servicio de cartera seleccionada como from. Crea una transacción, solicita una firma de servicio de cartera y, a continuación, la transmite a través de JSON-RPC de Oracle Blockchain Platform. URL de signo de servicio de cartera, JSON de cuentas, token de autorización y cuenta de cartera seleccionada.
Oracle Blockchain Platform Besu con API REST rpc-proxy Publicaciones en la API de consultas de Oracle Blockchain Platform. Publicaciones en la API de transacciones de Oracle Blockchain Platform. Dirección de origen; opcionalmente, configuración de espera de recepción y gas. No se ha introducido ningún firmante de clave privada local ni de servicio de cartera en este modo.

El modo rpc-proxy REST solo está disponible para un entorno Besu de Oracle Blockchain Platform. El host de URL de RPC del entorno, el token de autenticación y la configuración de TLS se utilizan para las llamadas REST. Otros entornos de EVM y Hardhat locales utilizan JSON-RPC con firma local.

Consulta de una función

Utilice Query para una llamada de lectura o para simular una función con el estado de cadena actual.

  1. Seleccione el destino, el entorno, la función y los parámetros.
  2. Configure la información de emisor de llamada o cartera que necesita la ruta de ejecución seleccionada.
  3. Haga clic en Consultar.
  4. Revise el campo Salida. La salida de JSON-RPC incluye el resultado de llamada raw y el resultado de ABI descodificado cuando la descodificación se realiza correctamente. La salida de REST incluye la respuesta de API.

Las consultas utilizan una solicitud de llamada; no difunden una transacción ni mantienen el estado. Una consulta aún se puede revertir si las condiciones de la función seleccionada, los permisos del emisor de llamada o los parámetros proporcionados no son válidos para el estado del contrato actual.

Llamada a una función

Utilice Llamada para una transacción que cambia de estado.
  1. Seleccione el destino, el entorno, la función y los parámetros.
  2. Configure el método de firma necesario.
    • Para Otro EVM o Nodo local de Hardhat, seleccione una cuenta de emisor de llamada configurada o introduzca la clave privada autorizada.
    • Para Oracle Blockchain Platform Wallet Service, proporcione la URL de firma, el JSON de cuentas, el token de autorización y seleccione la cuenta de cartera.
    • En REST rpc-proxy, introduzca la dirección de origen y, cuando sea necesario, la configuración de límite de gas y espera de recepción.
  3. Seleccione Llamada.
  4. Espere el resultado en Salida. Las llamadas correctas de JSON-RPC y el servicio de cartera incluyen hash de transacción, número de bloque, gas utilizado, remitente, destino y estado de recepción.
El transporte puede aceptar una llamada, pero aún así revertir en cadena. Tratar un estado de recepción distinto de 1 o una respuesta de error como una operación fallida e inspeccionar la salida en busca de un error personalizado descodificado o detalles de error de RPC.

Introducir Parámetros

Seleccione el botón … junto a Parámetros para abrir el editor de parámetros. Muestra el nombre del parámetro ABI, la propiedad anidada, el tipo y un campo de entrada. Seleccione la acción de aplicación del editor para generar la matriz de parámetros JSON que utilizará la función Ejecutar.

Los parámetros se envían como una matriz JSON en el mismo orden que las entradas ABI de la función seleccionada.

Entrada de ABI Parámetro pegable JSON
No hay entradas []
balanceOf(address) ["0x1111111111111111111111111111111111111111"]
transfer(address,uint256) ["0x1111111111111111111111111111111111111111", "1000"]
Una sola tupla [{"fieldA":"value","fieldB":"1000"}]
Una entrada tuple[] independiente [[{"userAddress":"0x1111111111111111111111111111111111111111","approvalSequence":1}]]

En los campos ABI enteros, introduzca una cadena decimal como "1000" para evitar la pérdida de precisión numérica de JavaScript. Utilice JSON true o false para valores booleanos. Las direcciones deben ser direcciones 0x válidas.

Para las tuplas y las entradas de matriz de tuplas, utilice objetos JSON con nombre cuyos nombres de propiedad coincidan con los nombres de componentes ABI. No utilice la sintaxis de tupla posicional Solidity en el editor de parámetros.

Por ejemplo, cuando el editor muestra una propiedad approverDetails tuple[] con los componentes userAddress y approvalSequence, pegue el siguiente valor en el editor JSON de esa propiedad:

[
  {
    "userAddress": "0x1111111111111111111111111111111111111111",
    "approvalSequence": 1
  }
]

El editor de parámetros coloca ese valor dentro de la matriz de argumentos de función externa. Para una tupla completa, introduzca todos los componentes mostrados por la ABI seleccionada. Los campos exactos varían según la versión del contrato, por lo que debe utilizar las propiedades que se muestran en el editor de parámetros en lugar de copiar una unidad de tupla de un proyecto de token diferente.

Formato de entrada de servicio de cartera

Para el modo JSON-RPC de Oracle Blockchain Platform, introduzca cuentas de servicio de cartera como matriz de JSON. Cada entrada debe tener una dirección y puede incluir un ID de cartera como se muestra en el siguiente ejemplo.

[
  {
    "address": "0x1111111111111111111111111111111111111111",
    "walletId": "0x1111111111111111111111111111111111111111"
  }
]

Seleccione una de las cuentas analizadas en Cuenta de cartera. Las consultas utilizan su dirección como from; las llamadas solicitan al servicio de cartera que firme esa cuenta. El token de autorización del servicio de cartera no se almacena en el borrador guardado del formulario.

Guardar y reutilizar entradas

Seleccione Guardar entrada para conservar las selecciones de ejecución no secretas actuales y el parámetro JSON para el proyecto. Seleccione Borrar entrada guardada para eliminar el estado del formulario guardado. Vuelva a comprobar las direcciones proxy, la función seleccionada y los parámetros antes de una llamada; las entradas guardadas no prueban que un destino aún está desplegado en el entorno seleccionado actualmente.

Solución de problemas

Condición Resolución
Después de un cambio de versión, un método recién agregado no aparece en la lista ABI de la página Ejecutar. Actualice el archivo de manifiesto de Blockchain App Builder (generated.manifest.json) para cambiar contractClassName y contractRelativePath para que apunten al contrato recién actualizado.
No se ha encontrado ninguna función ABI Compile el proyecto y confirme que el artefacto de token/cuenta seleccionado existe. Para un destino de cuenta sin un manifiesto, seleccione manualmente la ABI de cuenta correcta.
La dirección de destino no tiene código de contrato Compruebe el entorno seleccionado e introduzca la dirección de proxy desplegada, no una biblioteca auxiliar o una dirección de implementación.
Parámetros JSON no válidos Utilice el editor … para volver a generar la matriz de argumentos. Asegúrese de que las matrices y los objetos utilizan un JSON válido con nombres de propiedades con comillas dobles.
La selección de cuenta de servicio de cartera es necesaria Introduzca una matriz de JSON de cuentas válida y seleccione una cuenta de cartera.
Las API rpc-proxy de REST necesitan un entorno de Oracle Blockchain Platform Cambie a un entorno de Oracle Blockchain Platform Besu con una URL de RPC solo para host o utilice JSON-RPC para otro EVM/Hardhat.
Llamante no autorizado o error personalizado descodificado Verifique la cuenta de emisor de llamada/cartera seleccionada, el proxy de destino, el estado de gobernanza activo, los requisitos previos de rol/política y los parámetros de ABI.
Consulta o Llamada no están disponibles Complete los campos de destino, entorno, función y firmante necesarios para el modo de API seleccionado.