如何在Etherscan中传递结构体数组作为函数参数
在Etherscan中正确传递结构体数组的方法
你的结构体定义如下:
struct PricingOption { uint208 price; uint40 numberOfEntries; }
pricingOptions 为 PricingOption[] 类型。
你之前用嵌套数组的传参方式在Remix可行,但Etherscan不支持这种简化格式,需要改用键值对形式的对象数组传递,具体格式如下:
[{"price":1000000000000,"numberOfEntries":10},{"price":1700000000000,"numberOfEntries":20}]
原因说明
Etherscan的ABI解析器对结构体(tuple)的解析要求更严格,必须显式指定每个字段的名称和对应值,不能仅靠字段顺序映射。Remix会自动根据结构体定义的字段顺序匹配数组中的值,但Etherscan需要明确的键值对结构才能正确解析每个结构体元素,避免出现你遇到的「invalid tuple value」解析错误。
内容的提问来源于stack exchange,提问作者GorgeousPuree
相关产品推荐
相关产品推荐

