//SPDX-License-Identifier:MIT
pragma solidity ^0.8.24;
contract PiggyBank{constructor()payable{emit Deposit(msg.value);//触发事件1//意味着在部署合约的时候,可以向合约发送以太币(不是通过调用函数,而是直接在部署合约时发送)}event Deposit (uint amount);//定义事件1:当事件被调用的时候能够显示某账户传入的余额event Withdraw(uint amount);//定义事件2:当部署者调用收取账户的时候,记录下来address payable public owner = payable(msg.sender);//定义owner为部署者receive()external payable {//这样合约就能够从任意地址接收到以太坊主币了emit Deposit(msg.value);//触发事件1}function withdraw() external {require(msg.sender==owner,"You can not call this fuction");//只有合约的拥有者才能调用次函数emit Withdraw(address(this).balance);//触发事件2owner.transfer(address(this).balance);//将合约中的所有余额转入到拥有者账户中}
}
点击红色按钮部署
点击蓝色按钮可以查看部署者(合约拥有者)
切换为另一个账户
调用withdraw函数发现报错
切换为部署函数发现调用成功,将合约里面的余额转到owner中了