EOS错误总结

1、开启nodeos时,报了一个如下错误

171101ms thread-0 chain_plugin.cpp:209 plugin_initialize ] initializing chain plugin 
171102ms thread-0 main.cpp:123 main ] database dirty flag set (likely due to unclean shutdown): re play required

这是因为nodeos没有正确关闭,在再次开启前需要清理数据。解决办法: 

2、在创建一个账户demo后,再次创建demo,会报错

这时要删除这个用户的办法,只有清理区块链数据:

rm -rf ~/.local/share/eosio/nodeos/data

3、在部署合约时出现了这样一个问题,如下:

  原因是我之前将这个合约部署到sodfans用户。现在如果要再次部署,只能两种解决方式:

1)将合约修改后再部署
2)合约可以不用修改,但需要部署到另一个用户

  注意:只能将同一个合约部署到同一个账户一次,两次也没意义。

4、合约文件中的一个方法如下:

void increase(account_name actor){
  eosio::require_auth(actor);
  eosio::print(eosio::name{actor}," INCREASE => ",value++);
}

  第2行表示,验证传入的账户名(即合约的调用者)是否出现在授权账户里,只有在actor参数与授权账户一致时才会执行,否则就会抛出异常。如我伪造一个用户fake来调用合约,则报如下错误: 

4、将合约部署到sodfans后,创建了一个新账户jack,然后通过jack向计数器合约发送increase动作:

cleos push action sodfans increase '["jack"]' -p sodfans

结果报错:

报错原因是:-p指定了发起账户为sodfans,然后系统会用sodfans这个账户的私钥签名交易,但是传入的参数又是jack,所以报错。这两个参数应该一样。 但是修改了之后又报了一个新的错误,如下: 这是因为在我合约文件的increase方法中,引用了两个方法,这两个方法的scope都应该将_self改成actor。 

8、在我将合约代码改来改去,甚至部署到不同的账户时,为什么这里的值还能接着来,还能共享???

9、注意:在获取区块的详细信息时get_block不要写成get-block,汇网教程上就有这个错,然后$1可以是任意一个区块号。

curl http://127.0.0.1:8888/v1/chain/get_block -X POST -s -d '{"block_num_or_id": '$1'}' | jq 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值