预编译合约错误码及应对措施

标签:预编译合约 预编译错误码 错误信息 RetCode


预编译合约主要有两种传递错误的方式,一种是在接口返回具体的数字值,错误时一般是小于0的负数;另外一种则是抛异常,在回执的状态码为15,这时用户可以主动解析回执中的message字段,做进一步的错误分析。

下表主要展示在接口会返回的错误码,以及遇到对应错误码时所需要做的措施。

错误码 错误信息 错误信息/应对措施
0 Success 成功
-53006 错误的文件类型 在调用BFS touch接口时才会出现,使用了错误的文件类型
-53005 错误的文件路径 在调用BFS接口传入绝对路径时会出现这样的错误,BFS的绝对路径总长度不能超过56,路径的总级数不能超过6级,且不能带有特殊字符
-53003 创建文件夹失败 在调用BFS link接口时创建文件夹出现异常,比如合约名对应的父文件夹已经存在
-51202 传入的版本号或者地址是错误的 在调用BFS link接口时会出现,版本号不能带有'/',合约地址也必须存在
-53002 文件已经存在 在调用BFS 写接口时,创建的文件名已经存在
-53001 文件不存在 在调用BFS读接口时,绝对路径对应的文件不存在
-51800 环签名验证失败 在调用ring precompiled的验证接口失败时会出现,检查传入的参数是否正确
-51700 群签名验证失败 在调用group precompiled的验证接口失败时会出现,检查传入的参数是否正确
-51508 Remove的key不存在 在调用Table预编译合约的remove接口时会出现,remove的key不存在
-51507 Update的key不存在 在调用Table预编译合约的update接口时会出现,update的key不存在
-51506 Insert的key已经存在 在调用Table预编译合约的insert接口时会出现,insert的key已经存在
-51103 节点ID不存在 在调用Consensus预编译合约时会出现,传入的node id参数不存在
-51102 错误的节点权重值 在调用Consensus预编译合约的setWeight和addSealer接口时会出现,设置的权重不能小等于0
-51101 不能删除最后一个共识节点 在调用Consensus预编译合约的removeNode和addObserver接口时会出现,不能将链上最后一个共识节点删除
-51100 错误的节点ID 节点ID必须是128长度的16进制字符串
-51004 合约方法的ACL map解码错误 在调用合约权限预编译合约时会出现,权限方法的ACL map解码错误,要考虑存储是否写坏了
-51003 错误的权限类型 在调用合约权限预编译合约的设置权限类型时会出现,目前支持的类型只有白名单和黑名单两种
-51002 合约方法的ACL 类型不存在 在调用合约权限预编译合约的读接口会出现,类型不存在一般是因为没有设置,默认当作所有用户都可以调用
-51001 合约方法的ACL 不存在 在调用合约权限预编译合约的读接口会出现,ACL不存在一般是因为没有设置,默认当作所有用户都可以调用
-50105 Open table error 内部错误,打开存储表失败
-50104 Create table error 内部错误,创建存储表失败
-50103 Table set row error 内部错误,写存储表失败
-50102 Invalid address format 内部错误,地址的格式错误
-50101 Undefined function 内部错误,调用的预编译合约方法不存在
-50100 Table not exist 内部错误,访问的表不存在
-50007 Table存在字段重复 在调用TableManager预编译合约的createTable和appendColumn接口时会出现,存在重复的字段
-50006 Table的字段值超长 在调用Table预编译合约的写接口时会出现,写入的字段值太长了,超过了16MB
-50005 Table的键值超长 在调用Table预编译合约的写接口时会出现,写入的键值太长了,超过了255
-50003 Table的字段名超长 在调用TableManager预编译合约的createTable和appendColumn接口时会出现,字段名超过了64
-50002 Table的表名超长 在调用TableManager预编译合约的createTable接口时会出现,表名超过了50
-50001 表已经存在 在调用TableManager预编译合约的createTable接口时会出现,表名已经存在
-50000 没有访问权限 在开启权限模式下,直接访问System、Consensus、AuthManager预编译合约将会出现,没有直接访问的权限