Dentro de Remix, estoy usando una dirección (addr1) para implementar el contrato y otra (addr2) para llamar a una función dentro del contrato. La función es una función de transferencia simple. Estoy transfiriendo 1000000000000000000 Wei (1 éter) de addr2 a addr1. Sin embargo, no se puede transferir y mi salida sigue siendo falsa. ¿Que esta mal aquí?
También estoy usando la biblioteca SafeMath para el sub
, es lo mismo que restar.
function transferToOwner() payable returns (bool) {
owner.transfer(msg.value.sub(1000000000000000000));
return true;
}
La forma correcta de hacerlo sería así:
function transferToOwner() payable returns (bool) {
owner.transfer(msg.value);
return true;
}
Esto reenviará cualquier cantidad de eth que haya enviado la persona que llama a esta función.
Si solo desea enviar 1 eth independientemente de lo que enviaron cuando llamaron a la función, se vería así:
function transferToOwner() payable returns (bool) {
//Sender should forward at least 1 ether.
require(msg.value > 1 ether);
uint amountToSend = 1 ether;
uint change = msg.value - amountToSend; // Do something with the change. Return it to sender, maybe?
//If you don't do anything with the change, it will be stuck on this contract
owner.transfer(1 ether);
return true;
}
JorahFriendzone
pabloruiz55
JorahFriendzone
pabloruiz55
JorahFriendzone
pabloruiz55
cortacésped