es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de contrato con transacción

Tengo una pregunta sobre programación con VB.NET y Nethereum.

La dirección del contrato funciona perfectamente. Para fines de prueba, he incorporado una función de pausa en el rastreo principal que se puede establecer mediante una función.

En la herramienta Remix + Metamask, la función de pausa y reanudación funciona perfectamente.

He estado buscando desesperadamente una solución para VB.NET (o bien C#) durante días:

La función del contrato (he eliminado la variable OnlyOwner en este contrato para realizar pruebas):

“`c#
function SetPause() external returns (string memory) {
if (paused) {
paused = false;
emit Unpause();
Unpause;
return "Pausa desactivada";
} else {
paused = true;
Pause;
emit Pause();
return "Pausa activada";
}
}

<pre><code><br />Cuando llamo a la función desde VB.NET, obtengo los mensajes de retorno como de costumbre, pero mi billetera no realiza una transacción. Por lo tanto, el estado no cambia. Otras funciones como transferencia, consulta de nombres de tokens y saldo funcionan correctamente.

El código de VB.NET:

“`vb.net
Dim changeFunction As Task(Of String) = Contract.GetFunction(“SetPause”).SendTransactionAsync(senderAddress, gas)
changeFunction.Wait()
Textbox1.Text = changeFunction.Result

Como dije, obtengo todos los comentarios correctos, pero no se realizan transacciones (cambios), solo consultas de lectura. También probé otros códigos de VB.NET. Sin éxito…

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en que la transacción no se ejecuta a pesar de recibir la respuesta correcta en VB.NET. Una posible solución podría ser verificar si el límite de gas es suficiente para que la transacción se ejecute correctamente. Otra opción podría ser agregar una función de retorno que escuche la confirmación de la transacción y actualice el estado en consecuencia. También podrías intentar utilizar un proveedor web3 diferente o verificar que la dirección y la clave privada utilizadas para firmar la transacción sean correctas. Puede ser útil depurar el código y recorrer la ejecución para identificar dónde se está produciendo el problema.

Comments are closed.