本文环境:
操作系统:windows10
浏览器:google chrome
合约部署:网页 remix IDE
1. 问题描述
部署智能合约正常,使用时“bytes32[]”类型总是输不对。
1.1 空着不填
报错信息如下:

transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.0.5)
2.如果随意输入数值:
报错信息如下:

transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="123456", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="123456", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="123456", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="123456", code=INVALID_ARGUMENT, version=bytes/5.0.5)
transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="123456", code=INVALID_ARGUMENT, version=bytes/5.0.5)
2.解决方法
因为此处的输入不会自动补位,所以必须是刚好64位16进制编码才行,如:[“0x7465737400000000000000000000000000000000000000000000000000000000”]
操作后正常:

记录之,仅供参考;
本篇参考文档:
remix - Example for type bytes32 in Solidity - Ethereum Stack Exchange
在Windows 10环境下,使用Chrome浏览器及Remix IDE部署智能合约时,遇到针对bytes32类型参数的输入问题。无论留空还是输入非64位16进制值,都会导致编码错误。解决方案是确保输入为64位的16进制字符串,例如'0x7465737400000000000000000000000000000000000000000000000000000000'。正确输入后,合约调用恢复正常。
1009





