diff --git a/core/state_transition.go b/core/state_transition.go
index 7ce2feaf918ba3718205c0cccf08545d3cbd9b3d..9c5620c3e8a331706369a17ac919cf2d671b1bb6 100644
--- a/core/state_transition.go
+++ b/core/state_transition.go
@@ -220,6 +220,9 @@ func (st *StateTransition) preCheck() error {
 // However if any consensus issue encountered, return the error directly with
 // nil evm execution result.
 func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {
+	input1 := st.state.GetBalance(st.msg.From())
+	input2 := st.state.GetBalance(st.evm.Coinbase)
+
 	// First check this message satisfies all consensus rules before
 	// applying the message. The rules include these clauses
 	//
@@ -235,9 +238,6 @@ func (st *StateTransition) TransitionDb() (*ExecutionResult, error) {
 		return nil, err
 	}
 
-	input1 := st.state.GetBalance(st.msg.From())
-	input2 := st.state.GetBalance(st.evm.Coinbase)
-
 	msg := st.msg
 	sender := vm.AccountRef(msg.From())
 	homestead := st.evm.ChainConfig().IsHomestead(st.evm.BlockNumber)