addKhatianFromOld函数输入类型及报错问题咨询
Solidity函数
addKhatianFromOld参数格式说明及错误修复 错误信息
Error: expected array value (argument=null, value="1", code=INVALID_ARGUMENT, version=abi/5.5.0)
这个错误的核心原因是:你传入的数组类型参数(_user或_percentage)是单个值(比如"1"),但函数要求传入数组格式的数据。
各参数的正确输入格式
基础类型参数
uint64 _khatianiId:输入0到18446744073709551615之间的整数,例如12345uint16 _percentOwn:输入0到65535之间的整数,例如50(代表50%持有比例)bytes32 _plotHash:必须是已存在地块的哈希值,格式为0x开头的66位十六进制字符串,例如0x1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890
重点参数说明
1. bytes32 _buyFrom
- 类型为
bytes32,必须是合约中已存在的khatian对应的哈希值(即khatianMapping的key) - 输入格式:
0x开头的66位十六进制字符串,可通过keccak256(abi.encodePacked(_khatianiId, _plotHash))生成(对应之前创建khatian时的哈希计算逻辑)
2. uint[] _user
- 这是uint类型的数组,每个元素是已注册用户的NID(必须在
userMapping中存在) - 输入格式:
- 在Remix/钱包调用界面:输入数组形式,例如
[1001, 1002, 1003] - 在web3.js/ethers.js代码中:传入JS数组,例如
[1001, 1002]
- 在Remix/钱包调用界面:输入数组形式,例如
3. uint16[] _percentage
- 这是uint16类型的数组,数组长度必须和
_user完全一致(每个元素对应_user中用户的持有比例) - 输入格式:
- 在界面中:输入数组形式,例如
[30, 20](总和应等于_percentOwn,比如30+20=50) - 在代码中:传入JS数组,例如
[30, 20]
- 在界面中:输入数组形式,例如
内容的提问来源于stack exchange,提问作者Fab
相关产品推荐
相关产品推荐

