Erdpy发起ESDT代币发行交易返回internal_issue错误如何解决?
问题排查与解决步骤
- 优先修复交易
value字段的格式错误
你当前用str(0.05 * 10**18)计算发行所需的0.05 EGLD,浮点数运算会导致结果出现科学计数法或者非整数字符串(比如输出为5e+16而非正确的50000000000000000),Elrond网络要求value字段为原子单位的整数字符串,无法识别浮点数衍生的格式,直接修改为整数运算即可:
tx.value = str(5 * 10**16)
- 修正gasLimit配置
发行ESDT代币的系统合约调用所需gas远高于普通转账,你当前设置的50000完全不足,发行同质化ESDT的gasLimit至少设置为6000000,调整为:
tx.gasLimit = 6000000
- 修复十六进制编码的格式问题
你自定义的hex_int函数没有处理十六进制串长度为奇数的情况,Elrond的交易data字段要求所有参数的十六进制编码为偶数长度,修改该函数补全前导零:
def hex_int(i: int) -> str: assert type(i) == int, "Make sure everything is bytes data or utf-8 encoded" hex_str = hex(i)[2:] return hex_str if len(hex_str) % 2 == 0 else f"0{hex_str}"
- 确认基础依赖导入
检查代码开头是否导入了hexlify:from binascii import hexlify,避免编码环节出现隐式错误。
内容的提问来源于stack exchange,提问作者Mikko Ohtamaa
相关产品推荐
相关产品推荐

