智能合约 合约开源验证:浏览器显示 Verified 就安全吗? 区块浏览器上的 Verified 标记,证明的是源码与链上代码之间的对应关系,不是安全认证。本文讲清编译验证、代理实现、权限与审计范围,给出普通用户也能执行的核查顺序。
智能合约 什么是 SafeERC20?调用成功为何不等于代币转账成功 ERC-20 转账可能返回 true、false,也可能没有返回值。本文讲清 SafeERC20 如何处理这些差异,以及调用状态、实际到账、手续费代币、授权与重入风险之间的区别,帮助读懂合约里的转账逻辑。
智能合约 什么是交易模拟?eth_call 成功后,为什么上链仍会失败 钱包在签名前能预览资产变化,靠的是交易模拟等技术。本文讲清 eth_call、Gas 估算、区块状态、调用者和授权条件,解释模拟成功为什么不保证实际成交,也不等于资产安全。
智能合约 abi.encode 与 encodePacked:省掉边界会发生什么 abi.encode 和 abi.encodePacked 都输出字节,但只有理解编码边界,才能正确计算哈希和构造调用。本文用两组字符串演示拼接歧义,并讲清解码、函数选择器与签名场景的区别。
智能合约 Solidity 的 bytes 和 string:字节长度为什么不等于字数 bytes、bytes32 和 string 看起来都能装文字,实际类型和用途并不相同。本文讲清 UTF-8 字节长度、十六进制表示、拼接与截断,以及合约和前端如何约定一致的数据格式。
智能合约 什么是 Struct 和 Enum?智能合约如何组织数据、表达有限状态 Struct 用字段组合数据,Enum 用有限选项表达状态。本文讲清默认值、存储位置、ABI、状态转换、升级布局和常见智能合约安全误区。
智能合约 什么是 Solidity Array?动态数组如何增删,为什么 delete 不会自动缩短长度 Solidity Array 按索引保存同类元素。本文讲清固定与动态数组、数据位置、push/pop、delete、删除中间元素、Gas、遍历与索引风险。
智能合约 什么是 call 和 staticcall?合约互相调用时,谁能修改状态 call 和 staticcall 都返回成功标记与原始数据。本文讲清执行上下文、ETH 转账、错误处理、只读约束、返回值和重入风险。
智能合约 什么是 Interface 和抽象合约?Solidity 如何约定能力、复用实现 Interface 描述外部调用形状,抽象合约提供共同骨架。本文讲清两者的限制、继承、ABI、类型转换、代理合约与安全检查。
智能合约 什么是 Permit 签名授权?不用先发 Approve,为什么也能花你的代币 Permit 能用结构化签名设置或使用代币权限。本文讲清 ERC-2612、Permit2、nonce、期限、spender、撤销方式与盲签风险。
智能合约 什么是整数溢出和 unchecked?Solidity 0.8 为什么默认让交易失败 Solidity 0.8 默认在整数溢出或下溢时回退,unchecked 会恢复绕回行为。本文讲清边界、类型转换、位移、Gas 与安全证明。
智能合约 什么是 Modifier?onlyOwner 和 nonReentrant 前面的修饰器做了什么 Modifier 会把检查和前后处理包进函数。本文讲清下划线位置、执行顺序、权限、重入保护、继承与代理中的真实行为。
智能合约 什么是 Mapping?链上余额表为什么不能直接遍历所有地址 Mapping 用 Key 直接查 Value,却没有长度和内置键列表。本文讲清默认值、嵌套授权、索引、删除、事件与代理存储风险。
智能合约 什么是 view、pure 和 payable?合约函数为什么能读、能写或能收 ETH view、pure 和 payable 描述函数与链上状态及 ETH 的关系。本文讲清只读调用、Gas、STATICCALL、msg.value 和收款风险。
智能合约 什么是 constant 和 immutable?合约里的值真的永远不能改吗 constant 在编译期确定,immutable 在部署构造阶段确定。本文讲清存储、Gas、初始化、错误部署和代理升级中的真实边界。
智能合约 什么是 public、external、internal 和 private?合约函数可见性怎么选 Solidity 四种函数可见性决定调用边界,却不等于访问控制或链上保密。本文讲清外部调用、继承、自调用、ABI 与代理风险。
智能合约 什么是 block.timestamp?合约里的“时间”为什么不是精确时钟 block.timestamp 是交易所在区块的时间戳,不是实时倒计时。本文讲清 slot、截止边界、交易延迟、时间锁和随机数风险。
智能合约 什么是 storage、memory 和 calldata?数据放在哪里,为何影响修改和 Gas storage、memory 和 calldata 决定数据的生命周期、可修改性与复制方式。本文用对比和实例讲清引用、副本、Gas 与常见代码风险。
智能合约 什么是 receive 和 fallback?给合约转账时,到底会执行哪个函数 receive 处理空 calldata 的原生币转账,fallback 承接无法匹配的调用。本文讲清入口分流、payable、代理转发、Gas 与排查方法。
智能合约 什么是 revert 和自定义错误?交易失败时,那串提示从哪里来 Revert 会撤销合约状态变化并返回错误数据。本文讲清 require、assert、Custom Error、错误冒泡、低级调用和失败交易排查。
智能合约 什么是 ABI 和函数选择器?钱包为什么能把十六进制翻成合约操作 ABI 是钱包与智能合约之间的编码说明书,函数选择器决定调用入口。本文讲清 calldata、参数解码、代理、碰撞与核查方法。
智能合约 什么是 tx.origin 和 msg.sender?合约判断调用者时为什么不能混用 msg.sender 表示当前调用者,tx.origin 表示交易最初发起者。本文讲清调用链身份、钓鱼授权、代理、元交易和安全检查方法。
智能合约 什么是 Multicall?钱包里一笔交易,为什么能连续做多件事 Multicall 把多个函数调用打包进同一笔交易,可组合原子操作,也可能隐藏授权与资产变化。本文讲清原理、失败模式与核查方法。
智能合约 什么是 Event 和 Log?区块浏览器为什么能找到每笔代币转账 Event 是合约执行时留下的链上日志,钱包和浏览器通过 Topics 与 Data 建立历史。本文讲清日志结构、状态区别、索引与仿冒风险。