Estoy tratando de hacer un ejemplo de transferencia de propiedad transfiriendo la propiedad enviando ether. He estado tratando de usar msg.value y transfer() para enviar ether del propietario B al propietario A para que el propietario B pueda tomar posesión.
address public previousOwner;
address public currentOwner;
uint public txTimeStamp;
event transferred();
function transfer() external payable onlyOwnerB {
require (msg.value == 1 ether);
ownerA.transfer(1 ether);
previousOwner = ownerA;
currentOwner = ownerB;
txTimeStamp = now;
emit transferred();
}
También tengo una función alternativa para recibir fondos:
function receiveTxPay() public payable returns (bool) {
return true;
}
Estoy usando el compilador Remix en una máquina virtual Javascript, donde el propietario A es una de las direcciones y el propietario B es otra. Me aseguré de llamar a la función de transferencia () como propietario B. Pero cada vez que llamo a la función obtengo un "transact to Contract.transfer() error: VM error: revert". error. También probé usando la línea require(msg.value == 1 ether), y también usando la línea transfer(). Probar todo esto devuelve el mismo mensaje de error.
Ambas líneas fallarán si no ha enviado 1 ether al contrato como parte de su transacción, así que asumo que no lo está haciendo. Debe configurar el campo "valor" en la esquina superior derecha en 1 éter. (Asegúrese de escribir 1
en el campo de texto y elegir ether
del menú desplegable a su derecha).