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中了
上一篇: 差异基因表达--基因包
推荐阅读
-
LeetCode 问题练习和总结:二叉树的序列化和反序列化 - 297 - 输入:根 = [1,2] 输出: 根[1,2] 提示
-
LeetCode 问题练习和总结:区域和检索 - 可修改数组 - 307 - 输入: ["NumArray", "sumRange", "update", "sumRange"] [[[1, 3, 5]], [0, 2], [1, 2], [0, 2]] 输出: [空,9,空,8] 说明 NumArray numArray = new NumArray([1, 3, 5]); numArray.sumRange(0, 2); // 返回 1 + 3 + 5 = 9 numArray.update(1, 2); // nums = [1,2,5]; numArray.sumRange(0, 2); // 返回 1 + 3 + 5 = 9 numArray.sumRange(0, 2); // 返回 1 + 2 + 5 = 8 小贴士
-
LeetCode 问题练习与摘要:窥视迭代器 - 284 - 输入: ["PeekingIterator"、"next"、"peek"、"next"、"next"、"hasNext"] [[[1, 2, 3]], , , , , , ] 输出: [空,1,2,2,3,false] 说明: PeekingIterator peekingIterator = new PeekingIterator([1, 2, 3]); // [1,2,3]. peekingIterator.next; // 返回 1,指针移动到下一个元素 [1,2,3]. peekingIterator.peek; // 返回 2,指针没有移动 [1,2,3] peekingIterator.next; // 返回 2,指针移动到下一个元素 [1,2,3] peekingIterator.next; // 返回 3,指针移动到下一个元素 [1,2,3] peekingIterator.hasNext; // 返回 False 小贴士
-
练习 1 编程和 C 语言
-
掌握 OpenCV 的实战项目:计算机视觉进阶(1~5)
-
用16个实战练习,深入理解.NET的Linq和Lambda技术
-
实战体验:轻松上手mxGraph与drawio的使用教程(第1部分)
-
安卓逆向工程:动态调试AliCrackme_1的实战指南
-
实战演练:Java文件操作练习题
-
MSF内网渗透实战教程第1步:创建木马