contract MyContract {
address payable[] recipients;
function sendEther(address payable recipient) external payable {
recipient.transfer(1 ether);
}
}
Error: transacción a MyContract.sendEther con error: error de VM: revertir. revert La transacción ha sido revertida al estado inicial. Nota: La función llamada debe pagarse si envía valor y el valor que envía debe ser menor que su saldo actual.
El contrato no puede tomar éteres de la dirección de la billetera y transferirlos, debe pasar la cantidad que desea transferir como VALOR . Entonces tu código debería verse así:
function sendEther(address payable recipient) public payable {
recipient.transfer(msg.value);
}
Luego, si desea transferir solo un éter exacto, puede tener la siguiente condición en su lógica justo encima de la transferencia de éter:
function sendEther(address payable recipient) public payable {
require(msg.value == 1 ether, 'Only 1 ether allowed to be transfered.');
recipient.transfer(msg.value);
}
Sumeet Suryawanshi
Miroslav Nedelchev
Sumeet Suryawanshi