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

Solidity调用mintToken报string无法转换为bytes memory[]类型错误

错误信息
Invalid type for argument in function call. Invalid implicit conversion from string storage ref to bytes memory[] memory requested.
问题根因

HederaTokenService.mintToken 函数要求的第三个入参metadata类型为bytes[] memory(字节类型的内存动态数组),用于批量传入NFT铸造时每个代币的元数据。你直接传入单个string类型的uri变量,不存在Solidity默认支持的隐式类型转换,因此触发报错。
结合函数定义补充参数使用规则:

  • 铸造同质化代币(FT)时:仅使用amount参数传入铸造数量,metadata传入空数组即可
  • 铸造非同质化代币(NFT)时:amount参数必须传0,metadata数组长度等于本次铸造的NFT数量,数组每个元素对应一个NFT的元数据字节内容,单个元数据长度不能超过100字节
    另外原始代码还存在基础语法问题:状态变量定义末尾缺少分号、调用函数时未接收全部返回值、函数体未闭合。
修复后代码
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0;

import "./hip-206/HederaTokenService.sol";
import "./hip-206/HederaResponseCodes.sol";

contract Mint is HederaTokenService{
    address tokenAddress;
    string public uri = "abc";

    /**
     * 铸造同质化代币示例
     * @param _amount 要铸造的FT数量
     */
    function mintFungible(uint64 _amount) external {
        bytes[] memory emptyMetadata = new bytes[](0);
        (
            int256 response,
            uint64 newTotalSupply,
            int64[] memory serialNumbers
        ) = HederaTokenService.mintToken(tokenAddress, _amount, emptyMetadata);
        if (response != HederaResponseCodes.SUCCESS) {
            revert("Mint Failed");
        }
    }

    /**
     * 铸造非同质化代币示例
     * 单次铸造1个NFT,元数据使用合约中存储的uri
     */
    function mintNonFungible() external {
        bytes[] memory nftMetadata = new bytes[](1);
        // string转bytes后存入元数据数组
        nftMetadata[0] = bytes(uri);
        (
            int256 response,
            uint64 newTotalSupply,
            int64[] memory serialNumbers
        ) = HederaTokenService.mintToken(tokenAddress, 0, nftMetadata);
        if (response != HederaResponseCodes.SUCCESS) {
            revert("Mint Failed");
        }
    }
}
关键转换逻辑说明

string类型转bytes类型直接使用Solidity内置转换方法bytes(字符串变量)即可,转换后得到的bytes值按顺序放入bytes[]数组,就能满足mintToken函数的参数类型要求。
如果需要一次铸造多个NFT,只需要初始化对应长度的bytes[]数组,给每个索引位置赋值对应NFT的元数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:39:27