¿Cómo llamo a una función de contrato desde una cuenta requerida?

Estoy usando geth en una cadena privada. Tengo una función de solidez en un contrato de la siguiente manera:

function check()  public constant returns (string) {

    // if caller is not who it should be don't do anything
    if ( msg.sender != expectedSender )
                return;

    // if caller is expected return some information
    return someInformation;

}

Tengo el contrato implementado e instanciado y llamo al método en la consola geth como:

myContract.check();

Obtengo una cadena vacía, "", cuando realizo esta llamada desde la consola geth. Desbloqueé una cuenta con personal.unlockAccount() usando la cuenta esperada para "expectedSender" pero la prueba msg.sender aún no funciona.

¿Debería haber funcionado esto? ¿Cómo me aseguro de llamar a esta función en el contexto de la cuenta correcta?

Respuestas (2)

Puede configurar la cuenta eth.default para la que desea que se ejecute el contrato.

Todavía no podemos ver su remitente esperado. Entonces, no sabemos qué es eso, pero en la mayoría de los casos, si se usa como propietario del contrato, entonces es la cuenta que lo publicó. Revisa qué cuenta lo publicó. Puede ver el registro de transacciones desde su consola.

Puede comprobar el número de cuentas que tiene por

personal.listAccounts;

Y ver cuál de las direcciones coincide con el registro de transacciones

Puedes myContract.call.check();usar Sin embargo, esto lo llamará solo en su nodo y no se extraerá. Para ejecutar en Blockchain, debe enviar una transacción a la función de llamada