• gary rong's avatar
    all: seperate consensus error and evm internal error (#20830) · b9df7ecd
    gary rong authored
    * all: seperate consensus error and evm internal error
    
    There are actually two types of error will be returned when
    a tranaction/message call is executed: (a) consensus error
    (b) evm internal error. The former should be converted to
    a consensus issue, e.g. The sender doesn't enough asset to
    purchase the gas it specifies. The latter is allowed since
    evm itself is a blackbox and internal error is allowed to happen.
    
    This PR emphasizes the difference by introducing a executionResult
    structure. The evm error is embedded inside. So if any error
    returned, it indicates consensus issue happens.
    
    And also this PR improve the `EstimateGas` API to return the concrete
    revert reason if the transaction always fails
    
    * all: polish
    
    * accounts/abi/bind/backends: add tests
    
    * accounts/abi/bind/backends, internal: cleanup error message
    
    * all: address comments
    
    * core: fix lint
    
    * accounts, core, eth, internal: address comments
    
    * accounts, internal: resolve revert reason if possible
    
    * accounts, internal: address comments
    b9df7ecd
abi.go 8.82 KB