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?
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