Untitled
unknown
plain_text
2 years ago
1.8 kB
41
Indexable
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.7;
contract Bank {
uint256 addressCount;
mapping(uint256 => address) addressIndex;
mapping(address => uint256) balanceLedger;
modifier balanceCheck(uint256 amt) {
require(amt <= balanceLedger[msg.sender], "Insufficient Balance");
_;
}
function deposit() public payable {
if (balanceLedger[msg.sender] == 0) {
addressIndex[addressCount++] = msg.sender;
}
balanceLedger[msg.sender] = balanceLedger[msg.sender] + msg.value;
}
function withdraw(uint256 amt) public balanceCheck(amt) {
//require(balanceLedger[msg.sender] >= amt, "insufficient balance");
balanceLedger[msg.sender] = balanceLedger[msg.sender] - amt;
payable(msg.sender).transfer(amt);
//casting msg.sender as payable allowing it to receive ether
}
function transferToAnother(address recipient, uint256 amt)
public
balanceCheck(amt)
{
//require(balanceLedger[msg.sender] >= amt, "insufficient balance");
balanceLedger[msg.sender] = balanceLedger[msg.sender] - amt;
payable(recipient).transfer(amt);
}
function getMaxvalues() public view returns (address, uint256) {
address maxAddress;
uint256 maxBalance;
address indexAddress;
for (uint256 i = 0; i < addressCount; i++) {
indexAddress = addressIndex[i];
if (maxBalance < balanceLedger[indexAddress]) {
maxBalance = balanceLedger[indexAddress];
maxAddress = indexAddress;
}
}
return (maxAddress, maxBalance);
}
function getMyBalance() public view returns (uint256) {
return balanceLedger[msg.sender];
}
}Editor is loading...
Leave a Comment