Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 11 additions & 29 deletions simplebank.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,38 @@
pragma solidity ^0.8.0;

contract SimpleBank {
// TODO: Declare a public variable 'owner' of type address
address public ____;
address public owner;
mapping(address => uint) public balances;

// TODO: Create a mapping 'balances' that maps address to uint
mapping(address => ____) public ____;

// Modifier to allow only owner to access certain functions
modifier onlyOwner() {
// TODO: Require that msg.sender is the owner
require(msg.sender == ____, "Not the owner");
require(msg.sender == owner, "Not the owner");
_;
}

// TODO: Create a constructor that sets the msg.sender as owner
constructor() {
____ = msg.sender;
owner = msg.sender;
}

// Function to deposit ether into the contract
function deposit() public payable {
// TODO: Increment the sender's balance with msg.value
____[msg.sender] += ____;
balances[msg.sender] += msg.value;
}

// Function to check balance
function getBalance() public view returns (uint) {
// TODO: Return the balance of the sender
return ____[msg.sender];
return balances[msg.sender];
}

// Function to withdraw amount
function withdraw(uint amount) public {
// TODO: Check if sender has enough balance
require(____[msg.sender] >= amount, "Insufficient balance");

// TODO: Deduct the amount from sender's balance
____[msg.sender] -= amount;

// TODO: Transfer the amount to sender
payable(msg.sender).transfer(____);
require(balances[msg.sender] >= amount, "Insufficient balance");
balances[msg.sender] -= amount;
payable(msg.sender).transfer(amount);
}

// Owner-only function to check contract's total balance
function contractBalance() public view onlyOwner returns (uint) {
// TODO: Return address(this).balance
return ____;
return address(this).balance;
}

// Fallback function to receive ether
receive() external payable {
deposit();
}
}