欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

solidity实战练习1

最编程 2024-07-12 12:58:45
...
//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);//触发事件2
        owner.transfer(address(this).balance);//将合约中的所有余额转入到拥有者账户中
    } 
}

点击红色按钮部署

点击蓝色按钮可以查看部署者(合约拥有者)

切换为另一个账户

调用withdraw函数发现报错

切换为部署函数发现调用成功,将合约里面的余额转到owner中了

推荐阅读