tondev传payload参数报错Param params (tuple) expect name如何解决
tondev携带payload参数调用合约报错解决方案
报错原因
- 核心原因为
tondev解析--input参数的键值对时,payload对应的base64字符串值未做引号包裹,解析器无法识别该内容为完整的参数值,误判为新的参数名称,触发tuple参数格式校验失败。 - 部分Shell环境下双引号内的base64结尾
=等特殊字符也会进一步干扰参数解析,加剧格式识别错误。
解决方法
方案1:参数值增加单引号包裹
在外层双引号内部,给payload的字符串值增加单引号做边界标识,避免解析歧义,修正后的命令如下:
tondev contract run Wallet sendTransaction --input "dest: 0x5074b87aa1ece77b28f652ccd43db00b83c20da606529d2fdf7bb0f4ce9704a3, payload: 'te6ccgEBAQEABgAACETLeAA='"
方案2:使用JSON格式传参(兼容性最优)
直接传入标准JSON格式的参数串,彻底规避键值对解析规则的歧义问题,修正后的命令如下:
# macOS/Linux 环境执行 tondev contract run Wallet sendTransaction --input '{"dest":"0x5074b87aa1ece77b28f652ccd43db00b83c20da606529d2fdf7bb0f4ce9704a3","payload":"te6ccgEBAQEABgAACETLeAA="}' # Windows CMD 环境执行 tondev contract run Wallet sendTransaction --input "{\"dest\":\"0x5074b87aa1ece77b28f652ccd43db00b83c20da606529d2fdf7bb0f4ce9704a3\",\"payload\":\"te6ccgEBAQEABgAACETLeAA=\"}"
内容的提问来源于stack exchange,提问作者Nikolai Kushpela
相关产品推荐
相关产品推荐

