Contenidos
Código del contrato
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleWallet { mapping(address => uint) public balances; // Función para depositar fondos en el contrato function deposit() public payable { balances[msg.sender] += msg.value; } // Función para retirar fondos del contrato function withdraw(uint _amount) public { require(balances[msg.sender] >= _amount, "Insufficient balance"); balances[msg.sender] -= _amount; payable(msg.sender).transfer(_amount); } // Función para transferir fondos 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; } // Función para obtener el balance del usuario function getBalance() public view returns (uint) { return balances[msg.sender]; } } |
Explicación del código
- Mapping de balances: Almacena los balances de cada dirección que interactúa con el contrato.
- deposit: Permite a los usuarios depositar Ether en el contrato y actualiza su balance.
function deposit() public payable { balances[msg.sender] += msg.value; }
- 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); }
- 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; }
- 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
- Depositar fondos: Una cuenta deposita Ether en el contrato llamando a
deposit
con un valor en Ether.Wallet.deposit{value: 1 ether}();
- Transferir fondos: Una cuenta transfiere parte de sus fondos a otra cuenta.s
Wallet.transfer(address_recipient, 0.5 ether);
- 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)

