Contrato en Solidity que permite transferir fondos entre dos cuentas

Código del contrato

[crayon-6a617d9929fad338892965/]

Explicación del código

  1. Mapping de balances: Almacena los balances de cada dirección que interactúa con el contrato.
  2. deposit: Permite a los usuarios depositar Ether en el contrato y actualiza su balance.
    function deposit() public payable { balances[msg.sender] += msg.value; }
  3. withdraw: Permite a los usuarios retirar Ether de su balance.
    function withdraw(uint _amount) public { require(balances[msg.sender] >= _amount, "Insufficient balance"); balances[msg.sender] -= _amount; payable(msg.sender).transfer(_amount); }
  4. transfer: Permite a los usuarios transferir Ether a otra cuenta.
    function transfer(address _to, uint _amount) public { require(balances[msg.sender] >= _amount, "Insufficient balance"); require(_to != address(0), "Invalid address"); balances[msg.sender] -= _amount; balances[_to] += _amount; }
  5. getBalance: Devuelve el balance del usuario que llama a la función.
    function getBalance() public view returns (uint) { return balances[msg.sender]; }

Ejemplo de Uso

  1. Depositar fondos: Una cuenta deposita Ether en el contrato llamando a deposit con un valor en Ether.
    Wallet.deposit{value: 1 ether}();
  2. Transferir fondos: Una cuenta transfiere parte de sus fondos a otra cuenta.s
    Wallet.transfer(address_recipient, 0.5 ether);
  3. Retirar fondos: Una cuenta retira parte de sus fondos llamando a withdraw.
    Wallet.withdraw(0.5 ether);

Este contrato es una implementación básica y segura de una billetera en Solidity que permite depósitos, retiros y transferencias.

Capturas de pantalla

Depositar fondos

Fondos depositados

Realizar operaciones (transferir y retirar fondos)