feat: event
This commit is contained in:
parent
83e0c67ea6
commit
2f70767578
@ -6,16 +6,17 @@ import "./Bank.sol";
|
||||
|
||||
contract ATM is BaseContract{
|
||||
Bank bank;
|
||||
event Withdraw(address from, uint amount, uint balance );
|
||||
constructor(address bank_addr) {
|
||||
bank = Bank(payable(bank_addr));
|
||||
}
|
||||
|
||||
function withdraw(uint amount) public {
|
||||
require(amount<=0.1 ether, "You cannot withdraw more than 0.1 ether");
|
||||
if(address(this).balance <= 0.1 ether) {
|
||||
bank.withdraw(0.5 ether);
|
||||
}
|
||||
require(amount<=0.1 ether, "You request amount cannot bigger than 0.1 ether");
|
||||
require(amount<=address(this).balance, "This ATM doesn't have enough ETH to withdraw");
|
||||
payable(msg.sender).transfer(amount);
|
||||
emit Withdraw(msg.sender, amount, address(this).balance);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,10 @@ pragma solidity >=0.4.22 <0.9.0;
|
||||
import "./BaseContract.sol";
|
||||
|
||||
contract Bank is BaseContract{
|
||||
address[] private atms;
|
||||
address[] public atms;
|
||||
event NoMoney(address from, uint amount, uint balance);
|
||||
event Withdraw(address from, uint amount, uint balance);
|
||||
event AddATM(address atm);
|
||||
constructor() {}
|
||||
|
||||
modifier onlyATM() {
|
||||
@ -21,10 +24,15 @@ contract Bank is BaseContract{
|
||||
|
||||
function addATM(address atm) public onlyOwner {
|
||||
atms.push(atm);
|
||||
emit AddATM(atm);
|
||||
}
|
||||
|
||||
function withdraw(uint amount) public onlyATM {
|
||||
require(amount<=address(this).balance, "Bank doesn't have enough money to withdraw.");
|
||||
if(amount<=address(this).balance){
|
||||
emit NoMoney(msg.sender, amount, address(this).balance);
|
||||
revert("Bank doesn't have enough money to withdraw");
|
||||
}
|
||||
payable(msg.sender).transfer(amount);
|
||||
emit Withdraw(msg.sender, amount, address(this).balance);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user