抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

1. 自定义错误类型这是在solidity 0.8.4新加的内容,方便且高效(省gas)地向用户解释操作失败的原因,同时还可以在抛出异常的同时携带参数,帮助开发者更好地调试。 在执行中,error必须搭配revert使用。 自定义错误: 1error InsufficientBalance(address requested, uint256 available); 两种调用方式: 123...

前言 在刷chainflag-opcode-BoxGame发现这个很有趣,记录下。 Log1用法 log1(offset, size, topic): offset: byte offset in the memory in bytes. size: byte size to copy. topic1: 32-byte value. 以 event NewValue(uint256)...

bytecode, initcode,deploycode bytecode = type(Contract_Name).creationCode = init code + runtimeCode type(Contract_Name).runtimeCode = runtimeCode extcodecopy => runtimecode ...

1. 重入攻击 📌 重入攻击是智能合约中最常见的一种攻击,攻击者通过合约漏洞(例如fallback函数)循环调用合约,将合约中资产转走或铸造大量代币。 1.1 复现Bank.sol 123456789101112131415161718192021222324contract Bank { mapping (address => uint256) public ba...

前言 📌 在做 damn defi的 backdoor挑战时,关于如何才能让 proxy合约给 hacker执行 approve授权操作,引发的深思。 我们知道,delegatecall是很特殊的调用方式,委托调用,代码是在逻辑合约 Proxy中执行。 如果我们通过这种方式执行 Caller --call--> Proxy --delegatecall--> Logic1 ...

delegatecall关键字在代理合约中的妙用 就感觉很很神奇~ 逻辑合约12345678910111213141516171819202122232425contract Logic { address owner; uint public a = 8; constructor() { owner = msg.sender; ...

1.语法1using A for * // 效果是,库A中的函数被附着在做任意的类型上 指令using A for B;用来附着库里定义的函数(从库A)到任意类型B。这些函数将会默认接收调用函数对象的实例作为第一个参数。 2. 示例代码2.1 Math库合约:123456789101112// 声明一个库合约library Math { // 定义一个加法函数 f...

官方文档✈注:solidity内联汇编中都是以字节为单位的,[0x00,0x20)表示的范围是2^32-1,但在计算机中占了256位,256 /8=32=0x20 1. 语法和 solidity一样,Assembly 也会解析注释、文字和标识符,所以你可以使用通常的 // 和 /* */ 来进行注释。 内联汇编程序由 assembly { ... &#...

calAddressByCreate21. 【使用python】这里是借鉴张学长的🤣 1.1 安装web3库1pip install web3 1.2 计算代码12345678910111213141516171819202122232425262728from web3 import Web3# value of your address(this) # must delet 0x# ...

abi编码的详解1.abi.encode abi.encode 将它的每个参数填充为32字节【32 * 8 =256位】(1byte = 8bit)的数据,并拼接在一起。 注:如果要和合约交互,使用的是abi.encode(实践操作) 1.1 abi.encode编码演示定义的变量: 12345uint8 num1 = 1;uint256 num2 = 1;addres...



政策 · 统计 | 本站使用 Volantis 主题设计