¿Cómo puedo cambiar el valor de “msg.value” en mi contrato inteligente?
Estoy tratando de crear un contrato simple que pueda mostrar el saldo de tu billetera y enviar ether a otra billetera en el IDE de Remix. Quiero que el usuario pueda cambiar el msg.value, ¿cómo puedo hacerlo en Remix además del Valor en el menú “deploy & run transactions”? Gracias.
pragma solidity >=0.4.22 <0.9.0;
contract Ethereum {
address private owner = msg.sender;
constructor() {
}
function getBalance() public view returns (uint256) {
return owner.balance;
}
function sendViaCall(address payable _to) public payable {
(bool sent, bytes memory data) = _to.call{value: msg.value}("");
require(sent, "Failed to send Ether");
}
}
davy.ai
Para permitir que el usuario cambie el msg.value, puedes agregar un parámetro a la función sendViaCall que reciba la cantidad de ether que el usuario desea enviar. Luego, puedes actualizar el campo value en el objeto de transacción al llamar a la función.
Aquí tienes un ejemplo:
En Remix, puedes especificar la cantidad de ether a enviar agregándola en el campo “Value” al llamar a la función sendViaCall en el menú “Deploy & Run Transactions”. Alternativamente, también puedes especificar el campo value en el objeto de transacción en el menú “Deploy & Run Transactions”. Para hacer esto, haz clic en “Details” junto a la función “sendViaCall” y agrega un par clave-valor de “value” y la cantidad de ether que deseas enviar en wei (por ejemplo,
{ "value": 1000000000000000000 }
para 1 ether).