Ayuda usando msg.value y transfer()

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.

Respuestas (1)

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 1en el campo de texto y elegir etherdel menú desplegable a su derecha).