You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Solidity中初始化空字节数组?解决Slither告警问题

解决Slither提示“局部变量从未初始化”的问题

你这段代码里的bytes memory data;只是声明了变量但没显式初始化,尽管Solidity会默认将内存字节数组初始化为空,但Slither的静态分析工具会严格要求显式初始化,避免代码意图模糊或潜在的误操作。

以下是两种正确的实现方式:

  • 显式初始化空字节数组后传递:
function mintTo(address to, uint256 tokenId, uint256 amount) 
{
    bytes memory data = ""; // 显式初始化为空字节数组
    _mint(to, tokenId, amount, data);
}
  • 直接在调用_mint时传入空字节数组,省去局部变量:
function mintTo(address to, uint256 tokenId, uint256 amount) 
{
    _mint(to, tokenId, amount, ""); // 空字符串等价于空字节数组
}

这两种写法都能通过Slither的检查,同时完全保留原有功能——向OpenZeppelin的_mint函数传递空字节数组。显式初始化的写法能让代码意图更清晰,方便后续维护。

内容的提问来源于stack exchange,提问作者delete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:55:16