美文网首页
EOS开发中遇到的问题

EOS开发中遇到的问题

作者: liuchungui | 来源:发表于2018-11-14 23:36 被阅读0次

    最近在编写EOS合约代码的时候,遇到的一些问题,现在放在一起做一个笔记。

    1、inline action调用时没有权限

    Error Details:
    transaction declares authority '{"actor":"testtestmine1","permission":"active"}', but does not have signatures for it under a provided delay of 0 ms, provided permissions [{"actor":"testtesttest","permission":"eosio.code"}], provided keys [], and a delay max limit of 3888000000 ms
    pending console output: 
    

    意思是,在action内部调用合约执行其它的action时,需要给testtesttest账户添加testtestmine1eosio.code权限。

    如下设置即可:

    cleos set account permission testtestmine1 active '{"threshold": 1,"keys": [{"key": "testtestmine1账户的私钥","weight": 1}], "accounts": [{"permission":{"actor":"testtesttest","permission":"eosio.code"},"weight":1}]}' -p testtestmine1@owner
    

    2、调用action时,参数传递错误

    assertion failure with message: read
    pending console output: 
    

    上面遇到这个错误,是因为我在内部调用action时参数传递错误导致。这个错误我不止犯了一次,最印象深刻的是在transfer时,传递memo参数一定要转换成std::string类型,直接给"is transfer"这样不行。

    3、Failed with error: Parse Error (4)Couldn't parse uint64_t

    详细错误信息如下:

    error 2018-11-12T03:28:23.314 thread-0  main.cpp:3151                 main                 ] Failed with error: Parse Error (4)Couldn't parse uint64_t
    

    这个错误是因为我将结构体的名字方法名写成一样导致。

    4、错误:iterator out of range

    遇到这个错误,是因为我在遍历参数时进行修改,传递了一个另外类型数据导致。报一个这样不知名的错误,我总以为是循环的问题,找了很久。

    5、rpc的api 接口中,在获取table中数据时,通过lower_bound进行搜索


    参考:https://github.com/EOSIO/eosjs/issues/154

    5、方法调用成功了,内部没有任何反应

    碰到一个问题,在类中声明了action,却在apply中没有添加对应调用,导致外部看起来调用成功,其实内部根本没有调用到对应方法。

    6、Assertion failure: multiplication overflow

    这个问题是因为在处理asset乘法时,由于乘以一个很大的乘数导致溢出了。(错误的原因还是因为我前面以为合约中不能使用double型,现在发现是可以的。

    解决的办法很简单,先使用double计算好除法,再进行乘法就行了。
    参考:https://github.com/EOSIO/eos/issues/4872

    相关文章

      网友评论

          本文标题:EOS开发中遇到的问题

          本文链接:https://www.haomeiwen.com/subject/zfasfqtx.html