PlatONnetwork/PlatON-Go

发起提案接口预估gas时提示余额不足

Closed this issue · 3 comments

发起提案接口预估gas时提示余额不足

System information

PlatON version: platon version
OS & Version: Windows/Linux/OSX
Commit hash : (if develop)

Expected behaviour

成功并返回正确的gas

Actual behaviour

失败了,报余额不足,但实际余额充足

Steps to reproduce the behaviour

~/zzl/0408/platon_mtool$ platon_mtool submit_textproposal --pid_id 100 --keystore $PLATON_MTOOLDIR/keystore/staking.json --config $PLATON_MTOOLDIR/validator/validator_config.json
please input keystore password: 
com.platon.contracts.ppos.exception.EstimateGasException: err: insufficient balance to pay for gas (supplied gas 4722887)
 at com.platon.contracts.ppos.BaseContract.getDefaultGasProviderRemote(BaseContract.java:229)
 at com.platon.contracts.ppos.BaseContract.getDefaultGasProvider(BaseContract.java:215)
 at com.platon.contracts.ppos.ProposalContract.getSubmitProposalGasProvider(ProposalContract.java:285)
 at com.platon.mtool.client.execute.SubmitTextProposalExecutor.execute(SubmitTextProposalExecutor.java:61)
 at com.platon.mtool.client.execute.SubmitTextProposalExecutor.execute(SubmitTextProposalExecutor.java:29)
 at com.platon.mtool.client.CliExecutor.execute(CliExecutor.java:40)
 at com.platon.mtool.client.MtoolClient.run(MtoolClient.java:313)
 at com.platon.mtool.client.MtoolClient.run(MtoolClient.java:102)
 at com.platon.mtool.client.MtoolClient.main(MtoolClient.java:46)

err: insufficient balance to pay for gas (supplied gas 4722887)
juzix@juzix:~/zzl/0408/platon_mtool$ platon_mtool account list
staking.json:
address: lat1k0xtzm2gc67msm6wz5zwcmkkry8zrlctuud9z6


staking_observed.json:
address: lat1k0xtzm2gc67msm6wz5zwcmkkry8zrlctuud9z6


reward.json:
address: lat1pjamdzkg2vvu5ssd8clv6a5mscr0uq34ael6ad


juzix@juzix:~/zzl/0408/platon_mtool$ platon_mtool account balance -a  lat1k0xtzm2gc67msm6wz5zwcmkkry8zrlctuud9z6  --config $PLATON_MTOOLDIR/validator/validator_config.json
Balanceof: lat1k0xtzm2gc67msm6wz5zwcmkkry8zrlctuud9z6
LAT:1987.996544604

预估gas时,会采用二分法将当前块的gas逐渐缩小来执行交易直到交易因为gas不够而无法被执行。由于提案接口存在最小gasprice的限制,所以预估EstimateGas接口时会将此gasprice作为参数传入。此时用户的余额<当前区块的gas*gasprice,导致余额不足预估gas无法成功。
解决办法:提案接口在预估交易时不进行最小gasprice的限制。预估提案接口gas消耗时无需传入参数gasprice。

close by done