You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Apparently if there is no gas limit set on a message whatsoever, the execute_message method of the FVM fails, instead of returning an ApplyRet. I'm not sure how Lotus handles it, but we can do a multitude of things
encode the result as an ApplyRet in the FvmExecState, or
introduce a special error case checked in the interpreters (both query and signed are affected), or
use ABCI++ to filter such messages in the prepare_proposal, and reject such blocks in the process_proposal method
Not sure which is the best approach yet 🤔
The text was updated successfully, but these errors were encountered:
aakoshh
changed the title
Reject blocks with messages that would run to error on the FVM
Handle messages that would result in execution error
Jun 26, 2023
I actually started with option 1) in consensus-shipyard/fendermint#128, but later thought option 3) would be better. Then I realised that the way I discovered this problem was with with an eth_call, which would not be filtered out with ABCI++
So the only option is to handle it with an error, and perhaps penalize the validator who put it into a block, or also use ABCI++ to never vote for a block which contains such messages.
We must also add this check to the check interpreter to get fast feedback, although, again, queries would not be affected by that.
Apparently if there is no gas limit set on a message whatsoever, the
execute_message
method of the FVM fails, instead of returning anApplyRet
. I'm not sure how Lotus handles it, but we can do a multitude of thingsApplyRet
in theFvmExecState
, orquery
andsigned
are affected), orprepare_proposal
, and reject such blocks in theprocess_proposal
methodNot sure which is the best approach yet 🤔
The text was updated successfully, but these errors were encountered: