一、准备
合约在开源时提示无法获取构造函数输入参数的ABI码,导致开源失败。报错如下:Error! Invalid constructor arguments provided. Please verify that they are in ABI-encoded format
正常来说在开源时是可以自动捕获到合约部署时输入的构造函数参数值的,但是最近bscscan升级原因,导致莫名其妙的异常。因此需要及时的处理这种开源异常问题。
在合约部署完成后的开源阶段,因为在合约部署时通过构造函数输入参数传递变量到合约中。所以,在开源阶段需要把构造函数的输入参数转变为ABI字节码,在开源阶段验证。通常来说在开源时bscscan区块链浏览器会自动捕获并填充输入参数的ABI字节码到开源界面的构造函数输入框中。
但是,因为bscscan的编译器版本升级导致无法自动捕获构造函数参数,因此,必须手动完善相关的ABI码,否则开源会失败。
转换构造函数输入参数到ABI字节码可以通过相关的java工具,自动完成编码方式的转换。
【附注20230125】
开源是校验合约代码并且产生ABI的必须过程。与合约进行动态交易一般来说必须开源产生ABI码,然后才能在区块链浏览器上直接执行合约。但是如果在合约部署初期完成后,直接提交编译完成后产生的ABI码到区块链浏览器后也是可以的,也可以产生相关的合约接口,并对外暴露,戒借助相关接口直接传递相关的动态参数,以此来配置合约。
二、解决方法
1、故障再现
以下以开源合约 0x748xxxxxxxxxxxxxxxxxxxx83a5fc5440dfexx 为例,演示故障处理过程
进入合约开源页面如下:
ABI码的格式要符合相关的规则,并不是经过java程序转换后直接填写到该位置,还需要考虑参数的类型,数据格式,长度等相关要求,最终将整合好的ABI填充到该位置,执行后续的合约开源操作。
2、需要补充ABI码,把构造函数输入参数填充到以上位置
因为构造函数输入的四个参数类型分别为:string,string,uint8,uint
3、将ABI码补充到开源页面中的构造函数ABI码处。
完成后续的合约开源操作。
注:构造函数如果包含多个输入参数,需要将输入参数按照统一的方式传入java程序,完成ABI码的转换,删除参数开头和结尾多余的符号。
至此,完成解决合约开源时无法获取构造函数输入参数的ABI码问题的所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册