es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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");
    }

}
Tags:  , ,

Answer

  1. Avatar for 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:

    pragma solidity >=0.4.22 <0.9.0;
    
    contract Ethereum {
      address private owner = msg.sender;
    
      function getBalance() public view returns (uint256) {
        return owner.balance;
      }
    
      function sendViaCall(address payable _to, uint256 _amount) public payable {
        (bool sent, bytes memory data) = _to.call{value: _amount}("");
        require(sent, "Failed to send Ether");
      }
    }
    

    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).

Comments are closed.